Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3968)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3969)
@@ -687,38 +687,4 @@
 }
 /*}}}*/
-/*FUNCTION DataSet::FieldAverageOntoVertices{{{1*/
-void DataSet::FieldAverageOntoVertices(Vec fieldsum,Vec connectivity,double* field){
-
-	vector<Object*>::iterator object;
-	Node* node=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if((*object)->Enum()==NodeEnum){
-			node=(Node*)(*object);
-			node->FieldAverageOntoVertices(fieldsum,connectivity,field);
-		}
-
-	}
-
-}
-/*}}}*/
-/*FUNCTION DataSet::FieldDepthAverageAtBase{{{1*/
-void  DataSet::FieldDepthAverageAtBase(Vec field,double* field_serial,char* fieldname){
-
-	vector<Object*>::iterator object;
-	Node* node=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if((*object)->Enum()==NodeEnum){
-
-			node=(Node*)(*object);
-			node->FieldDepthAverageAtBase(field,field_serial,fieldname);
-		}
-	}
-
-}
-/*}}}*/
 /*FUNCTION DataSet::FieldExtrude{{{1*/
 void  DataSet::FieldExtrude(Vec field,double* field_serial,char* field_name, int collapse){
@@ -744,21 +710,4 @@
 	}
 
-}
-/*}}}*/
-/*FUNCTION DataSet::DepthAverageInputAtBase(int enum_type) {{{1*/
-void  DataSet::DepthAverageInputAtBase(int enum_type){
-
-	vector<Object*>::iterator object;
-	Element* element=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if(EnumIsElement((*object)->Enum())){
-
-			element=(Element*)(*object);
-			element->DepthAverageInputAtBase(enum_type);
-		}
-	}
-	
 }
 /*}}}*/
@@ -776,72 +725,4 @@
 		}
 	}
-}
-/*}}}*/
-/*FUNCTION DataSet::InputToResult{{{1*/
-void  DataSet::InputToResult(Mat* psolution,int enum_type){
-
-	/*Output*/
-	Mat solution=NULL;
-
-	/*Intermediary*/
-	int i;
-	vector<Object*>::iterator object;
-	extern int num_procs;
-	extern int my_rank;
-	Element* element=NULL;
-	int  elemcols;
-	int  cols=0,lines=0;
-	int  local_cols=0;
-	int*   all_cols=NULL;
-	int  local_lines=0;
-	int*   all_lines=NULL;
-
-	ISSMERROR("not implemented yet");
-	/*First: Get number of columns to be allocated*/
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if(EnumIsElement((*object)->Enum())){
-
-			/*increase number of lines by 1*/
-			local_lines++;
-
-			/*Get number of columns required for this element*/
-			element=(Element*)(*object);
-			//elemcols=element->InputToResultAllocation(enum_type);
-
-			/*Increase number of columns if higher than previous value*/
-			//if(elemcols>local_cols) local_cols=elemcols;
-		}
-	}
-
-	/*OK, sum contributions of all cpus*/
-	all_lines=(int*)xmalloc(num_procs*sizeof(int));
-	MPI_Gather(&local_lines,1,MPI_INT,all_lines,1,MPI_INT,0,MPI_COMM_WORLD);
-	MPI_Bcast(all_lines,num_procs,MPI_INT,0,MPI_COMM_WORLD);
-	all_cols=(int*)xmalloc(num_procs*sizeof(int));
-	MPI_Gather(&local_cols,1,MPI_INT,all_cols,1,MPI_INT,0,MPI_COMM_WORLD);
-	MPI_Bcast(all_cols,num_procs,MPI_INT,0,MPI_COMM_WORLD);
-
-	for(i=0;i<num_procs;i++) if(all_cols[i]>cols) cols=all_cols[i];
-	for(i=0;i<num_procs;i++) lines+=all_lines[i];
-
-	/*Second: Create Dense matrix that has the right size*/
-	MatCreateMPIDense(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE,lines,cols,PETSC_NULL,&solution);
-
-	/*Finally, enter solution for every element*/
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if(EnumIsElement((*object)->Enum())){
-			element=(Element*)(*object);
-			//elemcols=element->InputToResult(&solution,enum_type);
-		}
-	}
-
-	/*Allocate output pointer*/
-	*psolution=solution;
-
-	/* Free ressources: */
-	xfree((void**)&all_cols);
-	xfree((void**)&all_lines);
 }
 /*}}}*/
@@ -1197,21 +1078,4 @@
 }
 /*}}}*/
-/*FUNCTION DataSet::UpdateInputsFromSolution{{{1*/
-void  DataSet::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
-
-	vector<Object*>::iterator object;
-	Element* element=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if(EnumIsElement((*object)->Enum())){
-
-			element=(Element*)(*object);
-			element->UpdateInputsFromSolution(solution,analysis_type,sub_analysis_type);
-		}
-		else ISSMERROR("%s%i%s"," object with id: ",(*object)->Id()," is not an element, in a function that deals only with elements!");
-	}
-}
-/*}}}*/
 /*FUNCTION DataSet::GetSolutionFromInputs{{{1*/
 void  DataSet::GetSolutionFromInputs(Vec solution, int analysis_type, int sub_analysis_type){
@@ -1288,18 +1152,2 @@
 }
 /*}}}*/
-/*FUNCTION DataSet::UpdateVertexPositions{{{1*/
-void  DataSet::UpdateVertexPositions(double* thickness,double* bed){
-
-	vector<Object*>::iterator object;
-	Vertex* vertex=NULL;
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		if((*object)->Enum()==VertexEnum){
-
-			vertex=(Vertex*)(*object);
-			vertex->UpdatePosition(thickness,bed);
-		}
-	}
-}
-/*}}}*/
Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 3968)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 3969)
@@ -81,12 +81,7 @@
 		void  MeltingConstraints(int* pconverged, int* pnum_unstable_constraints,int analysis_type,int sub_analysis_type);
 		DataSet* Copy(void);
-		void  FieldAverageOntoVertices(Vec fieldsum,Vec connectivity,double* field);
-		void  FieldDepthAverageAtBase(Vec field,double* field_serial,char* fieldname);
-		void  DepthAverageInputAtBase(int enum_type);
 		void  InputExtrude(int enum_type);
 		int   DeleteObject(Object* object);
 		void  FieldExtrude(Vec field,double* field_serial,char* field_name, int collapse);
-		void  InputToResult(Mat* psolution,int enum_type);
-		void  UpdateVertexPositions(double* thickness,double* bed);
 		void  OutputRifts(Vec riftproperties);
 		/*}}}*/
Index: /issm/trunk/src/c/modules/DepthAverageInputx/DepthAverageInputx.cpp
===================================================================
--- /issm/trunk/src/c/modules/DepthAverageInputx/DepthAverageInputx.cpp	(revision 3968)
+++ /issm/trunk/src/c/modules/DepthAverageInputx/DepthAverageInputx.cpp	(revision 3969)
@@ -12,9 +12,16 @@
 void DepthAverageInputx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,int enum_type){
 	
+	/*Intermediary*/
+	int i;
+	Element* element=NULL;
+
 	/*First, get elements*/
 	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
 
 	/*First depth-average inputs at base of the glacier*/
-	elements->DepthAverageInputAtBase(enum_type);
+	for (i=0;i<elements->Size();i++){
+		element=(Element*)elements->GetObjectByOffset(i);
+		element->DepthAverageInputAtBase(enum_type);
+	}
 
 	/*Then extrude vertically the new inputs*/
Index: /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp	(revision 3968)
+++ /issm/trunk/src/c/modules/FieldAverageOntoVerticesx/FieldAverageOntoVerticesx.cpp	(revision 3969)
@@ -12,11 +12,11 @@
 void FieldAverageOntoVerticesx(Vec* pfield, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters){
 
-	extern int my_rank;
-
 	/*Intermediary*/
+	int i;
 	int     numberofvertices,found;
 	Vec     connectivity=NULL;
 	Vec     fieldsum=NULL;
 	double* field_serial=NULL;
+	Node*   node=NULL;
 
 	/*Output*/
@@ -37,5 +37,8 @@
 
 	/*Compute summ of connectivity and summ of values: */
-	nodes->FieldAverageOntoVertices(fieldsum,connectivity,field_serial);
+	for (i=0;i<nodes->Size();i++){
+		node=(Node*)nodes->GetObjectByOffset(i);
+		node->FieldAverageOntoVertices(fieldsum,connectivity,field_serial);
+	}
 
 	/*Assemble vectors: */
Index: /issm/trunk/src/c/modules/FieldDepthAveragex/FieldDepthAveragex.cpp
===================================================================
--- /issm/trunk/src/c/modules/FieldDepthAveragex/FieldDepthAveragex.cpp	(revision 3968)
+++ /issm/trunk/src/c/modules/FieldDepthAveragex/FieldDepthAveragex.cpp	(revision 3969)
@@ -12,5 +12,8 @@
 void FieldDepthAveragex( Vec field, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,char* fieldname){
 
+	/*Intermediary*/
+	int i;
 	double* field_serial=NULL;
+	Node*   node=NULL;
 
 	/*First, get elements and nodes configured: */
@@ -23,5 +26,8 @@
 
 	/*Depth average field, onto base of mesh: */
-	nodes->FieldDepthAverageAtBase(field,field_serial,fieldname);
+	for (i=0;i<nodes->Size();i++){
+		node=(Node*)nodes->GetObjectByOffset(i);
+		node->FieldDepthAverageAtBase(field,field_serial,fieldname);
+	}
 
 	/*Assemble vector: */
Index: /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp
===================================================================
--- /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 3968)
+++ /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 3969)
@@ -17,5 +17,5 @@
 
 	/*Call overloaded form of UpdateInputsFromSolutionx: */
-	UpdateInputsFromSolutionx(  elements, nodes,  vertices,  loads,  materials,  parameters,serial_solution, analysis_type, sub_analysis_type);
+	UpdateInputsFromSolutionx( elements, nodes,  vertices,  loads,  materials,  parameters,serial_solution, analysis_type, sub_analysis_type);
 
 	/*Free ressources:*/
@@ -27,13 +27,19 @@
 void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int analysis_type, int sub_analysis_type){
 
+	/*Intermediary*/
+	int i;
+	Element* element=NULL;
+
 	/*First, get elements and loads configured: */
-	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
-	loads->Configure(elements, loads, nodes,vertices, materials,parameters);
-	nodes->Configure(elements, loads, nodes,vertices, materials,parameters);
+	elements->  Configure(elements,loads, nodes,vertices, materials,parameters);
+	loads->     Configure(elements,loads, nodes,vertices, materials,parameters);
+	nodes->     Configure(elements,loads, nodes,vertices, materials,parameters);
 	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
-
 	
 	/*Elements drive the update: */
-	elements->UpdateInputsFromSolution(solution,analysis_type,sub_analysis_type);
+	for (i=0;i<elements->Size();i++){
+		element=(Element*)elements->GetObjectByOffset(i);
+		element->UpdateInputsFromSolution(solution,analysis_type,sub_analysis_type);
+	}
 
 }
Index: /issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.cpp	(revision 3968)
+++ /issm/trunk/src/c/modules/UpdateVertexPositionsx/UpdateVertexPositionsx.cpp	(revision 3969)
@@ -13,4 +13,6 @@
 
 	/*intermediary: */
+	int i;
+	Vertex* vertex=NULL;
 	double* thickness_serial=NULL;
 	double* bed_serial=NULL;
@@ -20,6 +22,9 @@
 	VecToMPISerial(&bed_serial,bed);
 	
-	/*Update elements, nodes, loads and materials from new geometry: */
-	vertices->UpdateVertexPositions(thickness_serial,bed_serial);
+	/*Update verices new geometry: */
+	for (i=0;i<vertices->Size();i++){
+		vertex=(Vertex*)vertices->GetObjectByOffset(i);
+		vertex->UpdatePosition(thickness_serial,bed_serial);
+	}
 
 	/*Free ressources:*/
Index: /issm/trunk/src/c/objects/DofIndexing.h
===================================================================
--- /issm/trunk/src/c/objects/DofIndexing.h	(revision 3968)
+++ /issm/trunk/src/c/objects/DofIndexing.h	(revision 3969)
@@ -42,4 +42,2 @@
 };
 #endif //ifndef _DOFINDEXING_H_
-
-		
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 3968)
+++ /issm/trunk/src/c/objects/Node.h	(revision 3969)
@@ -14,5 +14,5 @@
 class  Hook;
 class  DofIndexing;
-class IoModel;
+class  IoModel;
 class  DataSet;
 /*}}}*/
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 3968)
+++ /issm/trunk/src/c/objects/objects.h	(revision 3969)
@@ -8,5 +8,4 @@
 /*Abstract classes: */
 #include "./Object.h"
-
 
 /*Objects: */
@@ -110,4 +109,3 @@
 #include "./Bamg/SetOfE4.h"
 
-
 #endif
Index: /issm/trunk/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk/src/c/shared/Elements/elements.h	(revision 3968)
+++ /issm/trunk/src/c/shared/Elements/elements.h	(revision 3969)
@@ -8,4 +8,5 @@
 #include "../../objects/objects.h"
 #include "../../DataSet/DataSet.h"
+#include "../../objects/Node.h"
 
 void ResolvePointers(Object** objects,int* object_ids,int* object_offsets,int num_objects,DataSet* dataset);
