Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4243)
+++ /issm/trunk/src/c/Makefile.am	(revision 4244)
@@ -77,4 +77,5 @@
 					./objects/Bamg/VertexOnVertex.h\
 					./objects/Bamg/VertexOnVertex.cpp\
+					./objects/Update.h\
 					./objects/Element.h\
 					./objects/FemModel.h\
@@ -619,4 +620,5 @@
 					./objects/Bamg/VertexOnGeom.cpp\
 					./objects/Bamg/VertexOnVertex.h\
+					./objects/Update.h\
 					./objects/Element.h\
 					./objects/FemModel.h\
Index: /issm/trunk/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp	(revision 4243)
+++ /issm/trunk/src/c/modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp	(revision 4244)
@@ -41,8 +41,4 @@
 		node->InputUpdateFromVector(vector,NameEnum,TypeEnum);
 	}
-	for(i=0;i<vertices->Size();i++){
-		Vertex* vertex=(Vertex*)vertices->GetObjectByOffset(i);
-		vertex->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
 	for(i=0;i<loads->Size();i++){
 		Load* load=(Load*)loads->GetObjectByOffset(i);
@@ -53,9 +49,4 @@
 		material->InputUpdateFromVector(vector,NameEnum,TypeEnum);
 	}
-	for(i=0;i<parameters->Size();i++){
-		Param* parameter=(Param*)parameters->GetObjectByOffset(i);
-		parameter->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-
 }
 
@@ -79,8 +70,4 @@
 		node->InputUpdateFromVector(vector,NameEnum,TypeEnum);
 	}
-	for(i=0;i<vertices->Size();i++){
-		Vertex* vertex=(Vertex*)vertices->GetObjectByOffset(i);
-		vertex->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
 	for(i=0;i<loads->Size();i++){
 		Load* load=(Load*)loads->GetObjectByOffset(i);
@@ -91,9 +78,4 @@
 		material->InputUpdateFromVector(vector,NameEnum,TypeEnum);
 	}
-	for(i=0;i<parameters->Size();i++){
-		Param* parameter=(Param*)parameters->GetObjectByOffset(i);
-		parameter->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
-
 }
 
@@ -117,8 +99,4 @@
 		node->InputUpdateFromVector(vector,NameEnum,TypeEnum);
 	}
-	for(i=0;i<vertices->Size();i++){
-		Vertex* vertex=(Vertex*)vertices->GetObjectByOffset(i);
-		vertex->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
 	for(i=0;i<loads->Size();i++){
 		Load* load=(Load*)loads->GetObjectByOffset(i);
@@ -129,7 +107,3 @@
 		material->InputUpdateFromVector(vector,NameEnum,TypeEnum);
 	}
-	for(i=0;i<parameters->Size();i++){
-		Param* parameter=(Param*)parameters->GetObjectByOffset(i);
-		parameter->InputUpdateFromVector(vector,NameEnum,TypeEnum);
-	}
 }
Index: /issm/trunk/src/c/objects/Constraints/Rgb.h
===================================================================
--- /issm/trunk/src/c/objects/Constraints/Rgb.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Constraints/Rgb.h	(revision 4244)
@@ -35,13 +35,4 @@
 		int    Id(); 
 		int    MyRank();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
-
 		/*non virtual: */
 		int    GetNodeId1();
Index: /issm/trunk/src/c/objects/Constraints/Spc.h
===================================================================
--- /issm/trunk/src/c/objects/Constraints/Spc.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Constraints/Spc.h	(revision 4244)
@@ -39,11 +39,4 @@
 		double GetValue();
 		Object* copy();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		bool    InAnalysis(int analysis_type);
 
Index: /issm/trunk/src/c/objects/ElementResults/BeamVertexElementResult.h
===================================================================
--- /issm/trunk/src/c/objects/ElementResults/BeamVertexElementResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ElementResults/BeamVertexElementResult.h	(revision 4244)
@@ -39,13 +39,4 @@
 		Object* copy();
 		int   EnumType();
-		
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*result virtual functions: {{{1*/
Index: /issm/trunk/src/c/objects/ElementResults/DoubleElementResult.h
===================================================================
--- /issm/trunk/src/c/objects/ElementResults/DoubleElementResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ElementResults/DoubleElementResult.h	(revision 4244)
@@ -41,14 +41,5 @@
 		Object* copy();
 		int   EnumType();
-
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
-				/*}}}*/
+		/*}}}*/
 		/*result virtual functions: {{{1*/
 		ElementResult* SpawnSingElementResult(int  index);
Index: /issm/trunk/src/c/objects/ElementResults/PentaVertexElementResult.h
===================================================================
--- /issm/trunk/src/c/objects/ElementResults/PentaVertexElementResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ElementResults/PentaVertexElementResult.h	(revision 4244)
@@ -40,13 +40,4 @@
 		Object* copy();
 		int   EnumType();
-		
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*result virtual functions: {{{1*/
Index: /issm/trunk/src/c/objects/ElementResults/SingVertexElementResult.h
===================================================================
--- /issm/trunk/src/c/objects/ElementResults/SingVertexElementResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ElementResults/SingVertexElementResult.h	(revision 4244)
@@ -39,13 +39,4 @@
 		Object* copy();
 		int   EnumType();
-		
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*result virtual functions: {{{1*/
Index: /issm/trunk/src/c/objects/ElementResults/TriaVertexElementResult.h
===================================================================
--- /issm/trunk/src/c/objects/ElementResults/TriaVertexElementResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ElementResults/TriaVertexElementResult.h	(revision 4244)
@@ -39,13 +39,4 @@
 		Object* copy();
 		int   EnumType();
-		
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*result virtual functions: {{{1*/
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4244)
@@ -43,5 +43,5 @@
 		void  UpdateGeometry(void){ISSMERROR("not implemented yet");};
 		/*}}}*/
-		/*object management: {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
 		void  Echo();
@@ -56,4 +56,9 @@
 		Object* copy();
 		void  SetClone(int* minranks);
+		void  InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");};
+		void  InputToResult(int enum_type,int step,double time);
+		void   ProcessResultsUnits(void);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
@@ -63,7 +68,4 @@
 		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void  InputUpdateFromSolution(double* solution);
-		void  InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");};
-		void  InputToResult(int enum_type,int step,double time);
-		void   ProcessResultsUnits(void);
 		/*}}}*/
 		/*numerics: {{{1*/
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 4244)
@@ -20,5 +20,5 @@
 /*}}}*/
 
-class Element: public Object{
+class Element: public Object,public Update{
 
 	public: 
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4244)
@@ -48,5 +48,5 @@
 		~Penta();
 		/*}}}*/
-		/*FUNCTION object management {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
 		Object* copy();
@@ -69,4 +69,22 @@
 		void  InputToResult(int enum_type,int step,double time);
 		void   ProcessResultsUnits(void);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
+		void  InputUpdateFromSolution(double* solutiong);
+		void  InputUpdateFromSolutionDiagnosticHoriz( double* solutiong);
+		void  InputUpdateFromSolutionDiagnosticStokes( double* solutiong);
+		void  InputUpdateFromSolutionSlopeCompute( double* solutiong);
+		void  InputUpdateFromSolutionPrognostic( double* solutiong);
+		void  InputUpdateFromSolutionPrognostic2(double* solutiong);
+		void  InputUpdateFromSolutionBalancedthickness( double* solutiong);
+		void  InputUpdateFromSolutionBalancedthickness2( double* solutiong);
+		void  InputUpdateFromSolutionBalancedvelocities( double* solutiong);
+		void  InputUpdateFromVector(double* vector, int name, int type);
+		void  InputUpdateFromVector(int* vector, int name, int type);
+		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromConstant(double constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  UpdateFromDakota(void* inputs);
 		/*}}}*/
 		/*FUNCTION element numerical routines {{{1*/
@@ -168,25 +186,4 @@
 		void  InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);
 		void  GetVectorFromInputs(Vec vector,int NameEnum);
-
-
-		/*updates: */
-		void  UpdateFromDakota(void* inputs);
-		void  InputUpdateFromSolution(double* solutiong);
-		void  InputUpdateFromSolutionDiagnosticHoriz( double* solutiong);
-		void  InputUpdateFromSolutionDiagnosticStokes( double* solutiong);
-		void  InputUpdateFromSolutionSlopeCompute( double* solutiong);
-		void  InputUpdateFromSolutionPrognostic( double* solutiong);
-		void  InputUpdateFromSolutionPrognostic2(double* solutiong);
-		void  InputUpdateFromSolutionBalancedthickness( double* solutiong);
-		void  InputUpdateFromSolutionBalancedthickness2( double* solutiong);
-		void  InputUpdateFromSolutionBalancedvelocities( double* solutiong);
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		
-	
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Elements/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4244)
@@ -43,5 +43,5 @@
 		void  UpdateGeometry(void){ISSMERROR("not implemented yet");};
 		/*}}}*/
-		/*object management: {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
 		Object* copy();
@@ -56,4 +56,9 @@
 		void  SetClone(int* minranks);
 		int   MyRank();
+		void  InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");};
+		void  InputToResult(int enum_type,int step,double time);
+		void   ProcessResultsUnits(void);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
@@ -63,8 +68,6 @@
 		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void  InputUpdateFromSolution(double* solutiong);
-		void  InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");};
-		void  InputToResult(int enum_type,int step,double time);
-		void   ProcessResultsUnits(void);
 		/*}}}*/
+
 		/*numerics: {{{1*/
 		void  CreateKMatrix(Mat Kggg);
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 4244)
@@ -43,5 +43,5 @@
 		~Tria();
 		/*}}}*/
-		/*FUNCTION object management {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Materials* materials,Parameters* parameters);
 		Object* copy();
@@ -61,4 +61,21 @@
 		void  InputToResult(int enum_type,int step,double time);
 		void   ProcessResultsUnits(void);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
+		void  InputUpdateFromSolution(double* solutiong);
+		void  InputUpdateFromSolutionDiagnosticHoriz( double* solution);
+		void  InputUpdateFromSolutionSlopeCompute( double* solution);
+		void  InputUpdateFromSolutionPrognostic( double* solution);
+		void  InputUpdateFromSolutionPrognostic2(double* solution);
+		void  InputUpdateFromSolutionBalancedthickness( double* solution);
+		void  InputUpdateFromSolutionBalancedthickness2( double* solution);
+		void  InputUpdateFromSolutionBalancedvelocities( double* solution);
+		void  InputUpdateFromVector(double* vector, int name, int type);
+		void  InputUpdateFromVector(int* vector, int name, int type);
+		void  InputUpdateFromVector(bool* vector, int name, int type);
+		void  InputUpdateFromConstant(double constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  UpdateFromDakota(void* inputs);
 		/*}}}*/
 		/*FUNCTION element numerical routines {{{1*/
@@ -149,21 +166,4 @@
 
 		/*}}}*/
-		/*FUNCTION updates{{{1*/
-		void  UpdateFromDakota(void* inputs);
-		void  InputUpdateFromSolution(double* solutiong);
-		void  InputUpdateFromSolutionDiagnosticHoriz( double* solution);
-		void  InputUpdateFromSolutionSlopeCompute( double* solution);
-		void  InputUpdateFromSolutionPrognostic( double* solution);
-		void  InputUpdateFromSolutionPrognostic2(double* solution);
-		void  InputUpdateFromSolutionBalancedthickness( double* solution);
-		void  InputUpdateFromSolutionBalancedthickness2( double* solution);
-		void  InputUpdateFromSolutionBalancedvelocities( double* solution);
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		/*}}}*/
 
 };
Index: /issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.h	(revision 4244)
@@ -54,12 +54,4 @@
 		int   MarshallSize();
 		int   MyRank();
-
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.h	(revision 4244)
@@ -54,12 +54,4 @@
 		int   MarshallSize();
 		int   MyRank();
-
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.h	(revision 4244)
@@ -54,12 +54,4 @@
 		int   MarshallSize();
 		int   MyRank();
-
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.h	(revision 4244)
@@ -53,12 +53,4 @@
 		int   MarshallSize();
 		int   MyRank();
-
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h	(revision 4244)
@@ -54,12 +54,4 @@
 		int   MarshallSize();
 		int   MyRank();
-
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.h	(revision 4244)
@@ -53,11 +53,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/ExternalResults/StringExternalResult.h
===================================================================
--- /issm/trunk/src/c/objects/ExternalResults/StringExternalResult.h	(revision 4243)
+++ /issm/trunk/src/c/objects/ExternalResults/StringExternalResult.h	(revision 4244)
@@ -53,12 +53,4 @@
 		int   MarshallSize();
 		int   MyRank();
-
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*ExternalResult methods: {{{1*/
Index: /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/BeamVertexInput.h	(revision 4244)
@@ -36,12 +36,4 @@
 		Object* copy();
 		int   EnumType();
-		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Inputs/BoolInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 4244)
@@ -36,12 +36,4 @@
 		Object* copy();
 		int   EnumType();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Inputs/DoubleInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 4244)
@@ -35,12 +35,4 @@
 		Object* copy();
 		int   EnumType();
-
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Inputs/IntInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 4244)
@@ -36,12 +36,4 @@
 		Object* copy();
 		int   EnumType();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 4244)
@@ -35,12 +35,4 @@
 		Object* copy();
 		int   EnumType();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Inputs/SingVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/SingVertexInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/SingVertexInput.h	(revision 4244)
@@ -35,12 +35,4 @@
 		Object* copy();
 		int   EnumType();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 4244)
@@ -36,11 +36,4 @@
 		Object* copy();
 		int   EnumType();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 
 		Input* SpawnSingInput(int  index);
Index: /issm/trunk/src/c/objects/Loads/Icefront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 4244)
@@ -39,5 +39,5 @@
 		Object* copy();
 		/*}}}*/
-		/*object management: {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elementsin,Loads* loadsin,DataSet* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin);
 		void  DeepEcho();
@@ -49,4 +49,6 @@
 		int   MarshallSize();
 		int   MyRank();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
Index: /issm/trunk/src/c/objects/Loads/Load.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Load.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Loads/Load.h	(revision 4244)
@@ -18,5 +18,5 @@
 /*}}}*/
 
-class Load: public Object{
+class Load: public Object,public Update{
 
 	public: 
Index: /issm/trunk/src/c/objects/Loads/Numericalflux.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Numericalflux.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Loads/Numericalflux.h	(revision 4244)
@@ -34,5 +34,5 @@
 		Object* copy();
 		/*}}}*/
-		/*Object management: {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
 		void  DeepEcho();
@@ -44,4 +44,6 @@
 		int   MarshallSize();
 		int   MyRank();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
@@ -51,8 +53,7 @@
 		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-		bool    InAnalysis(int analysis_type);
-
 		/*}}}*/
 		/*Numerics: {{{1*/
+		bool  InAnalysis(int analysis_type);
 		void  GetJacobianDeterminant(double* pJdet,double xyz_list[4][3], double gauss_coord);
 		void  GetNodalFunctions(double* l1l4, double gauss_coord);
@@ -62,5 +63,4 @@
 		void  GetNormal(double* normal,double xyz_list[4][3]);
 		void  GetParameterValue(double* pp, double* plist, double gauss_coord);
-		void  UpdateFromInputs(void* inputs);
 		
 		void  CreateKMatrix(Mat Kgg);
Index: /issm/trunk/src/c/objects/Loads/Pengrid.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Pengrid.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Loads/Pengrid.h	(revision 4244)
@@ -40,5 +40,5 @@
 		Object* copy();
 		/*}}}*/
-		/*FUNCTION object management {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elementsin,Loads* loadsin,DataSet* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin);
 		void  DeepEcho();
@@ -50,4 +50,6 @@
 		int   MarshallSize();
 		int   MyRank();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
@@ -57,8 +59,7 @@
 		void  InputUpdateFromConstant(bool constant, int name);
 		void  InputUpdateFromSolution(double* solution);
-		bool  InAnalysis(int analysis_type);
-
 		/*}}}*/
 		/*FUNCTION element numerical routines {{{1*/
+		bool  InAnalysis(int analysis_type);
 		void  CreateKMatrix(Mat Kgg);
 		void  CreatePVector(Vec pg);
Index: /issm/trunk/src/c/objects/Loads/Penpair.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Loads/Penpair.h	(revision 4244)
@@ -31,5 +31,5 @@
 		Object* copy();
 		/*}}}*/
-		/*object management: {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
 		void  DeepEcho();
@@ -41,4 +41,6 @@
 		int   MarshallSize();
 		int   MyRank();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void  InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
@@ -48,7 +50,7 @@
 		void  InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-		bool  InAnalysis(int analysis_type);
 		/*}}}*/
 		/*numerics: {{{1*/
+		bool  InAnalysis(int analysis_type);
 		void  CreateKMatrix(Mat Kgg);
 		void  CreatePVector(Vec pg);
Index: /issm/trunk/src/c/objects/Loads/Riftfront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 4244)
@@ -48,5 +48,5 @@
 		~Riftfront();
 		/*}}}*/
-		/*object management: {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(Elements* elements,Loads* loads,DataSet* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
 		Object* copy();
@@ -59,4 +59,6 @@
 		int   MarshallSize();
 		int   MyRank();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
@@ -66,10 +68,7 @@
 		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-		bool    InAnalysis(int analysis_type);
-
-
-
 		/*}}}*/
 		/*numerics: {{{1*/
+		bool  InAnalysis(int analysis_type);
 		void  GetDofList(int* doflist,int* pnumberofdofs);
 		void  CreateKMatrix(Mat Kgg);
Index: /issm/trunk/src/c/objects/Materials/Material.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Material.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Materials/Material.h	(revision 4244)
@@ -14,5 +14,5 @@
 /*}}}*/
 
-class Material: public Object{
+class Material: public Object,public Update{
 
 	public: 
@@ -25,10 +25,4 @@
 		virtual int   MarshallSize()=0;
 		virtual void  Demarshall(char** pmarshalled_dataset)=0;
-		virtual void  UpdateFromInputs(void* inputs)=0;
-		virtual void  InputUpdateFromVector(double* vector, int name, int type)=0;
-		virtual void  InputUpdateFromVector(int* vector, int name, int type)=0;
-		virtual void  InputUpdateFromVector(bool* vector, int name, int type)=0;
-		virtual void  InputUpdateFromSolution(double* solution)=0;
-		
 };
 #endif
Index: /issm/trunk/src/c/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Materials/Matice.cpp	(revision 4244)
@@ -441,11 +441,4 @@
 }
 /*}}}*/
-/*FUNCTION Matice::UpdateFromInputs {{{1*/
-void  Matice::UpdateFromInputs(void* inputs){
-	
-	//ISSMERROR(" not supported yet!");
-
-}
-/*}}}*/
 /*FUNCTION Matice::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
 void  Matice::InputUpdateFromVector(double* vector, int name, int type){
Index: /issm/trunk/src/c/objects/Materials/Matice.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matice.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Materials/Matice.h	(revision 4244)
@@ -27,5 +27,7 @@
 		~Matice();
 
+		/*Object virtual functions resolution: {{{1*/
 		void  Echo();
+		Object* copy();
 		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
@@ -35,13 +37,6 @@
 		int   Id(); 
 		int   MyRank();
-		void  UpdateFromInputs(void* inputs);
-		void  SetB(double B_param);
-		void  GetViscosity2d(double* pviscosity, double* pepsilon);
-		void  GetViscosity3d(double* pviscosity3d, double* pepsilon);
-		void  GetViscosity3dStokes(double* pviscosity3d, double* epsilon);
-		void  GetViscosityComplement(double* pviscosity_complement, double* pepsilon);
-		Object* copy();
-		double GetB();
-		double GetN();
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
@@ -51,5 +46,14 @@
 		void  InputUpdateFromConstant(bool constant, int name);
 		void  InputUpdateFromSolution(double* solution);
-
+		/*}}}*/
+		/*Numerics: {{{1*/
+		void   SetB(double B_param);
+		void   GetViscosity2d(double* pviscosity, double* pepsilon);
+		void   GetViscosity3d(double* pviscosity3d, double* pepsilon);
+		void   GetViscosity3dStokes(double* pviscosity3d, double* epsilon);
+		void   GetViscosityComplement(double* pviscosity_complement, double* pepsilon);
+		double GetB();
+		double GetN();
+		/*}}}*/
 };
 
Index: /issm/trunk/src/c/objects/Materials/Matpar.cpp
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Materials/Matpar.cpp	(revision 4244)
@@ -272,11 +272,4 @@
 }
 /*}}}1*/
-/*FUNCTION Matpar::UpdateFromInputs {{{1*/
-void  Matpar::UpdateFromInputs(void* inputs){
-	
-	//ISSMERROR(" not supported yet!");
-
-}
-/*}}}1*/
 /*FUNCTION Matpar::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
 void   Matpar::InputUpdateFromVector(double* vector, int name, int type){
Index: /issm/trunk/src/c/objects/Materials/Matpar.h
===================================================================
--- /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Materials/Matpar.h	(revision 4244)
@@ -36,4 +36,5 @@
 		~Matpar();
 
+		/*Object virtual functions resolution: {{{1*/
 		void  Echo();
 		void  DeepEcho();
@@ -43,6 +44,17 @@
 		int   Enum();
 		int   Id(); 
+		Object* copy();
 		int   MyRank();
-		void  UpdateFromInputs(void* inputs);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
+		void   InputUpdateFromVector(double* vector, int name, int type);
+		void   InputUpdateFromVector(int* vector, int name, int type);
+		void   InputUpdateFromVector(bool* vector, int name, int type);
+		void   InputUpdateFromConstant(double constant, int name);
+		void   InputUpdateFromConstant(int constant, int name);
+		void   InputUpdateFromConstant(bool constant, int name);
+		void   InputUpdateFromSolution(double* solution);
+		/*}}}*/
+		/*Numerics: {{{1*/
 		double GetG();
 		double GetRhoIce();
@@ -55,13 +67,5 @@
 		double GetBeta();
 		double GetMeltingPoint();
-		Object* copy();
-		void   InputUpdateFromVector(double* vector, int name, int type);
-		void   InputUpdateFromVector(int* vector, int name, int type);
-		void   InputUpdateFromVector(bool* vector, int name, int type);
-		void   InputUpdateFromConstant(double constant, int name);
-		void   InputUpdateFromConstant(int constant, int name);
-		void   InputUpdateFromConstant(bool constant, int name);
-		void   InputUpdateFromSolution(double* solution);
-
+		/*}}}*/
 
 };
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 4244)
@@ -790,11 +790,4 @@
 }
 /*}}}*/
-/*FUNCTION Node::UpdateFromInputs {{{2*/
-void  Node::UpdateFromInputs(void* vinputs){
-	
-	/*nothing updated for now*/
-
-}
-/*}}}*/
 /*FUNCTION Node::InputUpdateFromVector(double* vector, int name, int type){{{2*/
 void  Node::InputUpdateFromVector(double* vector, int name, int type){
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Node.h	(revision 4244)
@@ -16,7 +16,8 @@
 class  DataSet;
 class  Vertices;
+#include "./Update.h"
 /*}}}*/
 
-class Node: public Object{
+class Node: public Object ,public Update{
 
 	private: 
@@ -40,5 +41,5 @@
 		~Node();
 		/*}}}*/
-		/*FUNCTION object management {{{1*/
+		/*Object virtual functions resolution: {{{1*/
 		void  Configure(DataSet* nodes,Vertices* vertices);
 		void  DeepEcho();
@@ -48,10 +49,9 @@
 		int   Id(void); 
 		int   Sid(void); 
-		int   GetVertexDof(void);
-		int   GetVertexId(void);
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
 		int   MyRank(void);
-		void  SetVertexDof(int in_dof);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{1*/
 		void  InputUpdateFromVector(double* vector, int name, int type);
 		void  InputUpdateFromVector(int* vector, int name, int type);
@@ -61,8 +61,10 @@
 		void  InputUpdateFromConstant(bool constant, int name);
 		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-		bool  InAnalysis(int analysis_type);
-
 		/*}}}*/
 		/*FUNCTION numerical routines {{{1*/
+		int   GetVertexDof(void);
+		int   GetVertexId(void);
+		void  SetVertexDof(int in_dof);
+		bool  InAnalysis(int analysis_type);
 		int   GetNumberOfDofs();
 		int   IsClone();
@@ -81,5 +83,4 @@
 		double GetSigma();
 		Object* copy();
-		void  UpdateFromInputs(void* inputs);
 		Node* GetUpperNode();
 		int   IsOnBed();
Index: /issm/trunk/src/c/objects/Object.h
===================================================================
--- /issm/trunk/src/c/objects/Object.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Object.h	(revision 4244)
@@ -25,12 +25,4 @@
 		virtual int   Enum()=0;
 		virtual Object* copy()=0;
-		virtual void  InputUpdateFromVector(double* vector, int name, int type)=0;
-		virtual void  InputUpdateFromVector(int* vector, int name, int type)=0;
-		virtual void  InputUpdateFromVector(bool* vector, int name, int type)=0;
-		virtual void  InputUpdateFromConstant(double constant, int name)=0;
-		virtual void  InputUpdateFromConstant(int constant, int name)=0;
-		virtual void  InputUpdateFromConstant(bool constant, int name)=0;
-		virtual void  InputUpdateFromSolution(double* solution)=0;
-	
 };
 #endif
Index: /issm/trunk/src/c/objects/Params/BoolParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/BoolParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/BoolParam.cpp	(revision 4244)
@@ -139,33 +139,2 @@
 #endif
 /*}}}*/
-
-/*FUNCTION BoolParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  BoolParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION BoolParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  BoolParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION BoolParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  BoolParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION BoolParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  BoolParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION BoolParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  BoolParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION BoolParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  BoolParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Params/BoolParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/BoolParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/BoolParam.h	(revision 4244)
@@ -50,12 +50,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/DoubleMatParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleMatParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/DoubleMatParam.cpp	(revision 4244)
@@ -195,35 +195,4 @@
 #endif
 /*}}}*/
-
-/*FUNCTION DoubleMatParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  DoubleMatParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleMatParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  DoubleMatParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleMatParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  DoubleMatParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleMatParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  DoubleMatParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleMatParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  DoubleMatParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleMatParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  DoubleMatParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*FUNCTION DoubleMatParam::SetValue(double* doublearray,int M,int N);{{{1*/
 void  DoubleMatParam::SetValue(double* doublearray,int in_M,int in_N){
Index: /issm/trunk/src/c/objects/Params/DoubleMatParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleMatParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/DoubleMatParam.h	(revision 4244)
@@ -53,13 +53,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/DoubleParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/DoubleParam.cpp	(revision 4244)
@@ -160,33 +160,2 @@
 #endif
 /*}}}*/
-
-/*FUNCTION DoubleParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  DoubleParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  DoubleParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  DoubleParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  DoubleParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  DoubleParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  DoubleParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Params/DoubleParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/DoubleParam.h	(revision 4244)
@@ -51,13 +51,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/DoubleVecParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleVecParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/DoubleVecParam.cpp	(revision 4244)
@@ -185,35 +185,4 @@
 #endif
 /*}}}*/
-
-/*FUNCTION DoubleVecParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  DoubleVecParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleVecParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  DoubleVecParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleVecParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  DoubleVecParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleVecParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  DoubleVecParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleVecParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  DoubleVecParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION DoubleVecParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  DoubleVecParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*FUNCTION DoubleVecParam::SetValue(double* doublearray,int M);{{{1*/
 void  DoubleVecParam::SetValue(double* doublearray,int in_M){
Index: /issm/trunk/src/c/objects/Params/DoubleVecParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/DoubleVecParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/DoubleVecParam.h	(revision 4244)
@@ -51,12 +51,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/IntParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/IntParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/IntParam.cpp	(revision 4244)
@@ -140,33 +140,2 @@
 #endif
 /*}}}*/
-
-/*FUNCTION IntParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  IntParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION IntParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  IntParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION IntParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  IntParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION IntParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  IntParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION IntParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  IntParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION IntParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  IntParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/Params/IntParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/IntParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/IntParam.h	(revision 4244)
@@ -50,12 +50,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/PetscMatParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscMatParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/PetscMatParam.cpp	(revision 4244)
@@ -222,35 +222,4 @@
 #endif
 /*}}}*/
-
-/*FUNCTION PetscMatParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  PetscMatParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscMatParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  PetscMatParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscMatParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  PetscMatParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscMatParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  PetscMatParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscMatParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  PetscMatParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscMatParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  PetscMatParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*FUNCTION PetscMatParam::SetValue(Mat matrix){{{1*/
 void  PetscMatParam::SetValue(Mat matrix){
Index: /issm/trunk/src/c/objects/Params/PetscMatParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscMatParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/PetscMatParam.h	(revision 4244)
@@ -51,12 +51,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/PetscVecParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscVecParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/PetscVecParam.cpp	(revision 4244)
@@ -216,35 +216,4 @@
 #endif
 /*}}}*/
-
-/*FUNCTION PetscVecParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  PetscVecParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscVecParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  PetscVecParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscVecParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  PetscVecParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscVecParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  PetscVecParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscVecParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  PetscVecParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION PetscVecParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  PetscVecParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*FUNCTION PetscVecParam::SetValue(Vec vector){{{1*/
 void  PetscVecParam::SetValue(Vec vector){
Index: /issm/trunk/src/c/objects/Params/PetscVecParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/PetscVecParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/PetscVecParam.h	(revision 4244)
@@ -51,12 +51,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/StringArrayParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/StringArrayParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/StringArrayParam.cpp	(revision 4244)
@@ -245,35 +245,4 @@
 #endif
 /*}}}*/
-
-/*FUNCTION StringArrayParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  StringArrayParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringArrayParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  StringArrayParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringArrayParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  StringArrayParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringArrayParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  StringArrayParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringArrayParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  StringArrayParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringArrayParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  StringArrayParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*FUNCTION StringArrayParam::SetValue(char** stringarray, int M){{{1*/
 void  StringArrayParam::SetValue(char** stringarray,int M){
Index: /issm/trunk/src/c/objects/Params/StringArrayParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/StringArrayParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/StringArrayParam.h	(revision 4244)
@@ -53,12 +53,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: /issm/trunk/src/c/objects/Params/StringParam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Params/StringParam.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/StringParam.cpp	(revision 4244)
@@ -171,35 +171,4 @@
 #endif
 /*}}}*/
-
-/*FUNCTION StringParam::InputUpdateFromVector(double* vector, int name, int type) {{{1*/
-void  StringParam::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringParam::InputUpdateFromVector(int* vector, int name, int type) {{{1*/
-void  StringParam::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringParam::InputUpdateFromVector(bool* vector, int name, int type) {{{1*/
-void  StringParam::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringParam::InputUpdateFromConstant(double constant, int name) {{{1*/
-void  StringParam::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringParam::InputUpdateFromConstant(int constant, int name) {{{1*/
-void  StringParam::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION StringParam::InputUpdateFromConstant(bool constant, int name) {{{1*/
-void  StringParam::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*FUNCTION StringParam::SetValue(char* string){{{1*/
 void  StringParam::SetValue(char* string){
Index: /issm/trunk/src/c/objects/Params/StringParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/StringParam.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Params/StringParam.h	(revision 4244)
@@ -51,12 +51,4 @@
 		int   MarshallSize();
 		int   MyRank();
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
 		/*}}}*/
 		/*Param methods: {{{1*/
Index: sm/trunk/src/c/objects/SolPar.h
===================================================================
--- /issm/trunk/src/c/objects/SolPar.h	(revision 4243)
+++ 	(revision )
@@ -1,55 +1,0 @@
-/*! \file SolPar.h 
- *  \brief: header file for solpar object
- */
-
-#ifndef _SOLPAR_H_
-#define _SOLPAR_H_
-
-/*Headers:*/
-/*{{{1*/
-#include "./Object.h"
-/*}}}*/
-
-class SolPar: public Object{
-
-	private: 
-		/*no private data: this class is a container for quick access  to solution parameters, 
-		 * found in the parameters dataset: */
-
-	public:
-
-		/*public members that need to be quickly accessed. All these members are pointers 
-		 * within Param objects, so that if someone touches the Param object in the 
-		 * parameters dataset, every element sees thoses changes. 
-		 * */
-
-		double& dt=NULL;
-
-		SolPar();
-		~SolPar();
-
-		/*object derived functionality: */
-		void  Echo();
-		void  DeepEcho();
-		int   Id(); 
-		int   MyRank();
-		void  Marshall(char** pmarshalled_dataset);
-		int   MarshallSize();
-		void  Demarshall(char** pmarshalled_dataset);
-		int   Enum();
-		Object* copy();
-		void    InputUpdateFromVector(double* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(int* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
-
-		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
-		/*functionality: */
-		void  Configure(void* parameters,int analysis_type,int sub_analysis_type);
-
-			
-};
-#endif  /* _SOLPAR_H */
Index: /issm/trunk/src/c/objects/Update.h
===================================================================
--- /issm/trunk/src/c/objects/Update.h	(revision 4244)
+++ /issm/trunk/src/c/objects/Update.h	(revision 4244)
@@ -0,0 +1,28 @@
+/*!\file: Update.h: abstract class used by some objects to update their properties
+ * \brief prototypes for Update.h
+ */ 
+
+#ifndef _UPDATE_H_
+#define  _UPDATE_H_
+
+/*Headers:*/
+/*{{{1*/
+#include "../shared/shared.h"
+/*}}}*/
+
+class Update{
+
+	public:
+
+		virtual void  InputUpdateFromVector(double* vector, int name, int type)=0;
+		virtual void  InputUpdateFromVector(int* vector, int name, int type)=0;
+		virtual void  InputUpdateFromVector(bool* vector, int name, int type)=0;
+		virtual void  InputUpdateFromConstant(double constant, int name)=0;
+		virtual void  InputUpdateFromConstant(int constant, int name)=0;
+		virtual void  InputUpdateFromConstant(bool constant, int name)=0;
+		virtual void  InputUpdateFromSolution(double* solution)=0;
+
+};
+
+#endif //ifndef _UPDATE_H_
+
Index: /issm/trunk/src/c/objects/Vertex.cpp
===================================================================
--- /issm/trunk/src/c/objects/Vertex.cpp	(revision 4243)
+++ /issm/trunk/src/c/objects/Vertex.cpp	(revision 4244)
@@ -190,35 +190,4 @@
 }
 /*}}}*/
-
-/*FUNCTION Vertex::InputUpdateFromVector(double* vector, int name, int type) {{{2*/
-void  Vertex::InputUpdateFromVector(double* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION Vertex::InputUpdateFromVector(int* vector, int name, int type) {{{2*/
-void  Vertex::InputUpdateFromVector(int* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION Vertex::InputUpdateFromVector(bool* vector, int name, int type) {{{2*/
-void  Vertex::InputUpdateFromVector(bool* vector, int name, int type){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION Vertex::InputUpdateFromConstant(double constant, int name) {{{2*/
-void  Vertex::InputUpdateFromConstant(double constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION Vertex::InputUpdateFromConstant(int constant, int name) {{{2*/
-void  Vertex::InputUpdateFromConstant(int constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
-/*FUNCTION Vertex::InputUpdateFromConstant(bool constant, int name) {{{2*/
-void  Vertex::InputUpdateFromConstant(bool constant, int name){
-	/*Nothing updated yet*/
-}
-/*}}}*/
 /*}}}*/
 /* DofObject routines: {{{1*/
Index: /issm/trunk/src/c/objects/Vertex.h
===================================================================
--- /issm/trunk/src/c/objects/Vertex.h	(revision 4243)
+++ /issm/trunk/src/c/objects/Vertex.h	(revision 4244)
@@ -52,14 +52,4 @@
 		void  UpdateFromDakota(void* vinputs);
 		void  UpdatePosition(double* thickness,double* bed);
-		void  InputUpdateFromVector(double* vector, int name, int type);
-		void  InputUpdateFromVector(int* vector, int name, int type);
-		void  InputUpdateFromVector(bool* vector, int name, int type);
-		void  InputUpdateFromConstant(double constant, int name);
-		void  InputUpdateFromConstant(int constant, int name);
-		void  InputUpdateFromConstant(bool constant, int name);
-
-		void  InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
-
-
 		/*}}}*/
 		/*FUNCTION DofObject routines {{{1*/
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 4243)
+++ /issm/trunk/src/c/objects/objects.h	(revision 4244)
@@ -17,4 +17,5 @@
 #include "./IoModel.h"
 #include "./Patch.h"
+#include "./Update.h"
 
 /*Constraints: */
