Index: /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp
===================================================================
--- /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 3921)
+++ /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 3922)
@@ -16,4 +16,15 @@
 	VecToMPISerial(&serial_solution,solution);
 
+	/*Call overloaded form of UpdateInputsFromSolutionx: */
+	UpdateInputsFromSolutionx(  elements, nodes,  vertices,  loads,  materials,  parameters,serial_solution, analysis_type, sub_analysis_type);
+
+	/*Free ressources:*/
+	xfree((void**)&serial_solution);
+
+}
+
+
+void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int analysis_type, int sub_analysis_type){
+
 	/*First, get elements and loads configured: */
 	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
@@ -24,8 +35,5 @@
 	
 	/*Elements drive the update: */
-	elements->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
-
-	/*Free ressources:*/
-	xfree((void**)&serial_solution);
+	elements->UpdateInputsFromSolution(solution,analysis_type,sub_analysis_type);
 
 }
Index: /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h
===================================================================
--- /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h	(revision 3921)
+++ /issm/trunk/src/c/modules/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h	(revision 3922)
@@ -11,4 +11,5 @@
 /* local prototypes: */
 void		UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type);
+void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int analysis_type, int sub_analysis_type);
 
 #endif  /* _UPDATEINPUTSFROMSOLUTIONXX_H */
Index: /issm/trunk/src/c/objects/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/FemModel.cpp	(revision 3921)
+++ /issm/trunk/src/c/objects/FemModel.cpp	(revision 3922)
@@ -84,348 +84,2 @@
 }
 /*}}}*/
-
-/*object functions*/
-/*FUNCTION FemModel::Echo {{{1*/
-void FemModel::Echo(void){
-
-	printf("FemModels echo: \n");
-	printf("   elements: %p\n",elements);
-	printf("   nodes: %p\n",nodes);
-	printf("   vertices: %p\n",vertices);
-	printf("   loads: %p\n",loads);
-	printf("   materials: %p\n",materials);
-	printf("   parameters: %p\n",parameters);
-	
-	printf("   partition: %p\n",partition);
-	printf("   tpartition: %p\n",tpartition);
-	printf("   yg: %p\n",yg);
-	printf("   Rmg: %p\n",Rmg);
-	printf("   nodesets: %p\n",nodesets);
-	printf("   ys: %p\n",ys);
-	printf("   ys0: %p\n",ys0);
-	printf("   Gmn: %p\n",Gmn);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::DeepEcho {{{1*/
-void FemModel::DeepEcho(void){
-	
-	printf("FemModels echo: \n");
-	printf("   elements: \n");
-	elements->Echo();
-	printf("   nodes: \n");
-	nodes->Echo();
-	printf("   vertices: \n");
-	vertices->Echo();
-	printf("   loads: \n");
-	nodes->Echo();
-	printf("   materials: \n");
-	nodes->Echo();
-	printf("   parameters: \n");
-	nodes->Echo();
-	
-	printf("   partition: \n");
-	partition->Echo();
-	printf("   tpartition: \n");
-	tpartition->Echo();
-	printf("   yg: \n");
-	yg->Echo();
-	printf("   Rmg: \n");
-	MatView(Rmg,PETSC_VIEWER_STDOUT_WORLD);
-	printf("   nodesets: \n");
-	nodesets->Echo();
-	printf("   ys: \n");
-	VecView(ys,PETSC_VIEWER_STDOUT_WORLD);
-	printf("   ys0: \n");
-	VecView(ys0,PETSC_VIEWER_STDOUT_WORLD);
-	printf("   Gmn: \n");
-	MatView(Gmn,PETSC_VIEWER_STDOUT_WORLD);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::Id {{{1*/
-int   FemModel::Id(void){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::MyRank {{{1*/
-int   FemModel::MyRank(void){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::Marshall {{{1*/
-void  FemModel::Marshall(char** pmarshalled_dataset){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::MarshallSize {{{1*/
-int   FemModel::MarshallSize(void){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::Demarshall {{{1*/
-void  FemModel::Demarshall(char** pmarshalled_dataset){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::Enum {{{1*/
-int   FemModel::Enum(void){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::copy {{{1*/
-Object* FemModel::copy(void){
-	ISSMERROR("not implemented yet!");
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(bool* pinteger,int enum_type) {{{1*/
-int FemModel::FindParam(bool* pinteger,int enum_type){
-	
-	return parameters->FindParam(pinteger,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(int* pinteger,int enum_type) {{{1*/
-int FemModel::FindParam(int* pinteger,int enum_type){
-	
-	return parameters->FindParam(pinteger,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(double* pscalar,int enum_type) {{{1*/
-int FemModel::FindParam(double* pscalar,int enum_type){
-	
-	return parameters->FindParam(pscalar,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(char** pstring,int enum_type) {{{1*/
-int FemModel::FindParam(char** pstring,int enum_type){
-	
-	return parameters->FindParam(pstring,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(char*** pstringarray,int* pM,int enum_type) {{{1*/
-int FemModel::FindParam(char*** pstringarray,int* pM,int enum_type){
-	
-	return parameters->FindParam(pstringarray,pM,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(double** pdoublearray,int* pM,int* pN,int enum_type) {{{1*/
-int FemModel::FindParam(double** pdoublearray,int* pM,int* pN,int enum_type){
-	
-	return parameters->FindParam(pdoublearray,pM,pN,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(double** pdoublearray,int* pM,int enum_type) {{{1*/
-int FemModel::FindParam(double** pdoublearray,int* pM,int enum_type){
-	
-	return parameters->FindParam(pdoublearray,pM,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(Vec* pvec,int enum_type) {{{1*/
-int FemModel::FindParam(Vec* pvec,int enum_type){
-	
-	return parameters->FindParam(pvec,enum_type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::FindParam(Mat* pmat,int enum_type) {{{1*/
-int FemModel::FindParam(Mat* pmat,int enum_type){
-	
-	return parameters->FindParam(pmat,enum_type);
-
-}
-/*}}}*/
-
-/*access to internal data: */
-/*FUNCTION FemModel::get_elements {{{1*/
-DataSet* FemModel::get_elements(void){
-	return elements;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_nodes {{{1*/
-DataSet* FemModel::get_nodes(void){
-	return nodes;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_vertices {{{1*/
-DataSet* FemModel::get_vertices(void){
-	return vertices;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_constraints {{{1*/
-DataSet* FemModel::get_constraints(void){
-	return constraints;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_loads {{{1*/
-DataSet* FemModel::get_loads(void){
-	return loads;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_materials {{{1*/
-DataSet* FemModel::get_materials(void){
-	return materials;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_parameters {{{1*/
-Parameters* FemModel::get_parameters(void){
-	return parameters;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_partition {{{1*/
-DofVec* FemModel::get_partition(void){
-	return partition;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_tpartition {{{1*/
-DofVec* FemModel::get_tpartition(void){
-	return tpartition;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_yg {{{1*/
-DofVec* FemModel::get_yg(void){
-	return yg;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_Rmg {{{1*/
-Mat FemModel::get_Rmg(void){
-	return Rmg;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_nodesets {{{1*/
-NodeSets* FemModel::get_nodesets(void){
-	return nodesets;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_ys {{{1*/
-Vec FemModel::get_ys(void){
-	return ys;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_ys0 {{{1*/
-Vec FemModel::get_ys0(void){
-	return ys0;
-}
-/*}}}*/
-/*FUNCTION FemModel::get_Gmn {{{1*/
-Mat FemModel::get_Gmn(void){
-	return Gmn;
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromVector(Vec vector, int name, int type){{{1*/
-void FemModel::UpdateInputsFromVector(Vec vector, int name, int type){
-
-	double* serial_vector=NULL;
-
-	if(vector==NULL)return; //don't bother
-
-	VecToMPISerial(&serial_vector,vector);
-
-	this->UpdateInputsFromVector(serial_vector,name,type);
-
-	/*Free ressources:*/
-	xfree((void**)&serial_vector);
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromVector(double* vector, int name, int type){{{1*/
-void FemModel::UpdateInputsFromVector(double* vector, int name, int type){
-
-	if(vector==NULL)return; //don't bother
-
-	elements->UpdateInputsFromVector(vector,name,type);
-	nodes->UpdateInputsFromVector(vector,name,type);
-	vertices->UpdateInputsFromVector(vector,name,type);
-	loads->UpdateInputsFromVector(vector,name,type);
-	materials->UpdateInputsFromVector(vector,name,type);
-	parameters->UpdateInputsFromVector(vector,name,type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromVector(int* vector, int name, int type){{{1*/
-void FemModel::UpdateInputsFromVector(int* vector, int name, int type){
-
-	if(vector==NULL)return; //don't bother
-
-	elements->UpdateInputsFromVector(vector,name,type);
-	nodes->UpdateInputsFromVector(vector,name,type);
-	vertices->UpdateInputsFromVector(vector,name,type);
-	loads->UpdateInputsFromVector(vector,name,type);
-	materials->UpdateInputsFromVector(vector,name,type);
-	parameters->UpdateInputsFromVector(vector,name,type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromVector(bool* vector, int name, int type){{{1*/
-void FemModel::UpdateInputsFromVector(bool* vector, int name, int type){
-
-	if(vector==NULL)return; //don't bother
-
-	elements->UpdateInputsFromVector(vector,name,type);
-	nodes->UpdateInputsFromVector(vector,name,type);
-	vertices->UpdateInputsFromVector(vector,name,type);
-	loads->UpdateInputsFromVector(vector,name,type);
-	materials->UpdateInputsFromVector(vector,name,type);
-	parameters->UpdateInputsFromVector(vector,name,type);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromConstant(double constant, int name){{{1*/
-void    FemModel::UpdateInputsFromConstant(double constant, int name){
-	
-	elements->UpdateInputsFromConstant(constant,name);
-	nodes->UpdateInputsFromConstant(constant,name);
-	vertices->UpdateInputsFromConstant(constant,name);
-	loads->UpdateInputsFromConstant(constant,name);
-	materials->UpdateInputsFromConstant(constant,name);
-	parameters->UpdateInputsFromConstant(constant,name);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromConstant(int constant, int name){{{1*/
-void    FemModel::UpdateInputsFromConstant(int constant, int name){
-	
-	elements->UpdateInputsFromConstant(constant,name);
-	nodes->UpdateInputsFromConstant(constant,name);
-	vertices->UpdateInputsFromConstant(constant,name);
-	loads->UpdateInputsFromConstant(constant,name);
-	materials->UpdateInputsFromConstant(constant,name);
-	parameters->UpdateInputsFromConstant(constant,name);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromConstant(bool constant, int name){{{1*/
-void    FemModel::UpdateInputsFromConstant(bool constant, int name){
-	
-	elements->UpdateInputsFromConstant(constant,name);
-	nodes->UpdateInputsFromConstant(constant,name);
-	vertices->UpdateInputsFromConstant(constant,name);
-	loads->UpdateInputsFromConstant(constant,name);
-	materials->UpdateInputsFromConstant(constant,name);
-	parameters->UpdateInputsFromConstant(constant,name);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromSolution(Vec vector, int name, int type){{{1*/
-void FemModel::UpdateInputsFromSolution(Vec vector,int name, int type){
-
-	double* serial_vector=NULL;
-
-	VecToMPISerial(&serial_vector,vector);
-	elements->UpdateInputsFromSolution(serial_vector,name,type);
-
-	/*Free ressources:*/
-	xfree((void**)&serial_vector);
-
-}
-/*}}}*/
-/*FUNCTION FemModel::UpdateInputsFromSolution(double* vector, int name, int type){{{1*/
-void FemModel::UpdateInputsFromSolution(double* vector,int name, int type){
-	ISSMERROR(" not supported yet!");
-}
-/*}}}*/
Index: /issm/trunk/src/c/objects/FemModel.h
===================================================================
--- /issm/trunk/src/c/objects/FemModel.h	(revision 3921)
+++ /issm/trunk/src/c/objects/FemModel.h	(revision 3922)
@@ -16,5 +16,5 @@
 /*}}}*/
 
-class FemModel: public Object{
+class FemModel {
 
 	/*no private members, as we need access to these datasets quite often!:*/
@@ -44,52 +44,4 @@
 		FemModel(DataSet* elements,DataSet* nodes,DataSet* vertices, DataSet* constraints,DataSet* loads,DataSet* materials,Parameters* parameters,
 			              DofVec* partition,DofVec* tpartition,DofVec* yg,Mat Rmg,Mat Gmn,NodeSets* nodesets,Vec ys,Vec ys0);
-     
-		/*virtual resolves: */
-		void  Echo();
-		void  DeepEcho();
-		int   Id();
-		int   MyRank();
-		void  Marshall(char** pmarshalled_dataset);
-		int   MarshallSize();
-		void  Demarshall(char** pmarshalled_dataset);
-		int   Enum();
-		Object* copy();
-		
-		int FindParam(double* pscalar,int enum_type);
-		int FindParam(bool* pinteger,int enum_type);
-		int FindParam(int* pinteger,int enum_type);
-		int FindParam(char** pstring,int enum_type);
-		int FindParam(char*** pstringarray,int* pM,int enum_type);
-		int FindParam(double** pdoublearray,int* pM, int enum_type);
-		int FindParam(double** pdoublearray,int* pM, int* pN,int enum_type);
-		int FindParam(Vec* pvec,int enum_type);
-		int FindParam(Mat* pmat,int enum_type);
-		DataSet* get_elements(void);
-		DataSet* get_nodes(void);
-		DataSet* get_vertices(void);
-		DataSet* get_constraints(void);
-		DataSet* get_loads(void);
-		DataSet* get_materials(void);
-		Parameters* get_parameters(void);
-		DofVec*      get_partition(void);
-		DofVec*      get_tpartition(void);
-		DofVec*      get_yg(void);
-		Mat      get_Rmg(void);
-		NodeSets* get_nodesets(void);
-		Vec      get_ys(void);
-		Vec      get_ys0(void);
-		Mat      get_Gmn(void);
-
-		void    UpdateInputsFromVector(Vec vector, int name, int type);
-		void    UpdateInputsFromVector(double* vector, int name, int type);
-		void    UpdateInputsFromVector(bool* vector, int name, int type);
-		void    UpdateInputsFromVector(int* vector, int name, int type);
-
-		void    UpdateInputsFromConstant(double constant, int name);
-		void    UpdateInputsFromConstant(int constant, int name);
-		void    UpdateInputsFromConstant(bool constant, int name);
-
-		void    UpdateInputsFromSolution(Vec solution, int analysis_type, int sub_analysis_type);
-		void    UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
 
 };
Index: /issm/trunk/src/c/objects/Model.cpp
===================================================================
--- /issm/trunk/src/c/objects/Model.cpp	(revision 3921)
+++ /issm/trunk/src/c/objects/Model.cpp	(revision 3922)
@@ -220,5 +220,5 @@
 	if(!femmodel)return 0;
 
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 
 }
@@ -238,5 +238,5 @@
 	if(!femmodel)return 0;
 
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 
 }
@@ -255,5 +255,5 @@
 	if(!femmodel)return 0;
 	
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 
 
@@ -273,5 +273,5 @@
 	if(!femmodel)return 0;
 	
-	femmodel->FindParam(pparameter,pM, pN,enum_type);
+	femmodel->parameters->FindParam(pparameter,pM, pN,enum_type);
 
 
@@ -291,5 +291,5 @@
 	if(!femmodel)return 0;
 	
-	femmodel->FindParam(pparameter,pM, enum_type);
+	femmodel->parameters->FindParam(pparameter,pM, enum_type);
 
 
@@ -309,5 +309,5 @@
 	if(!femmodel)return 0;
 	
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 
 }
@@ -324,5 +324,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -338,5 +338,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -352,5 +352,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -366,5 +366,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,pM, pN,enum_type);
+	femmodel->parameters->FindParam(pparameter,pM, pN,enum_type);
 }
 /*}}}1*/
@@ -380,5 +380,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,pM, enum_type);
+	femmodel->parameters->FindParam(pparameter,pM, enum_type);
 }
 /*}}}1*/
@@ -394,5 +394,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -408,5 +408,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -422,5 +422,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -436,5 +436,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }
 /*}}}1*/
@@ -450,5 +450,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,pM,pN,enum_type);
+	femmodel->parameters->FindParam(pparameter,pM,pN,enum_type);
 }
 /*}}}1*/
@@ -464,5 +464,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,pM,enum_type);
+	femmodel->parameters->FindParam(pparameter,pM,enum_type);
 }
 /*}}}1*/
@@ -478,5 +478,5 @@
 
 	/*extract our parameter from the found formulation: */
-	femmodel->FindParam(pparameter,enum_type);
+	femmodel->parameters->FindParam(pparameter,enum_type);
 }	
 /*}}}1*/
@@ -500,6 +500,6 @@
 
 		femmodel=(FemModel*)femmodels->GetObjectByOffset(i);
-		femmodel->FindParam(&femmodel_analysis_type,AnalysisTypeEnum);
-		femmodel->FindParam(&femmodel_sub_analysis_type,SubAnalysisTypeEnum);
+		femmodel->parameters->FindParam(&femmodel_analysis_type,AnalysisTypeEnum);
+		femmodel->parameters->FindParam(&femmodel_sub_analysis_type,SubAnalysisTypeEnum);
 
 		if((analysis_type==femmodel_analysis_type) && (sub_analysis_type==femmodel_sub_analysis_type)){
@@ -529,5 +529,5 @@
 
 		femmodel=(FemModel*)femmodels->GetObjectByOffset(i);
-		femmodel->FindParam(&femmodel_analysis_type,AnalysisTypeEnum);
+		femmodel->parameters->FindParam(&femmodel_analysis_type,AnalysisTypeEnum);
 
 		if((analysis_type==femmodel_analysis_type)){
@@ -554,5 +554,5 @@
 	for(i=0;i<this->femmodels->Size();i++){
 		femmodel=(FemModel*)this->femmodels->GetObjectByOffset(i);
-		femmodel->UpdateInputsFromConstant(constant,name);
+		UpdateInputsFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,constant,name);
 	}
 
@@ -567,5 +567,5 @@
 	for(i=0;i<this->femmodels->Size();i++){
 		femmodel=(FemModel*)this->femmodels->GetObjectByOffset(i);
-		femmodel->UpdateInputsFromConstant(constant,name);
+		UpdateInputsFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,constant,name);
 	}
 
@@ -580,5 +580,5 @@
 	for(i=0;i<this->femmodels->Size();i++){
 		femmodel=(FemModel*)this->femmodels->GetObjectByOffset(i);
-		femmodel->UpdateInputsFromConstant(constant,name);
+		UpdateInputsFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,constant,name);
 	}
 
@@ -595,5 +595,5 @@
 	for(i=0;i<this->femmodels->Size();i++){
 		femmodel=(FemModel*)this->femmodels->GetObjectByOffset(i);
-		femmodel->UpdateInputsFromVector(vector,name,type);
+		UpdateInputsFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,vector,name,type);
 	}
 
@@ -626,5 +626,5 @@
 	for(i=0;i<this->femmodels->Size();i++){
 		femmodel=(FemModel*)this->femmodels->GetObjectByOffset(i);
-		femmodel->UpdateInputsFromSolution(vector,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,vector,analysis_type,sub_analysis_type);
 	}
 
Index: /issm/trunk/src/c/solutions/ControlInitialization.cpp
===================================================================
--- /issm/trunk/src/c/solutions/ControlInitialization.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/ControlInitialization.cpp	(revision 3922)
@@ -71,7 +71,7 @@
 
 	//specific parameters for specific models
-	fem_dh->FindParam(&numberofdofspernode_dh,NumberOfDofsPerNodeEnum);
-	fem_sl->FindParam(&numberofdofspernode_sl,NumberOfDofsPerNodeEnum);
-	fem_ds->FindParam(&numberofdofspernode_ds,NumberOfDofsPerNodeEnum);
+	fem_dh->parameters->FindParam(&numberofdofspernode_dh,NumberOfDofsPerNodeEnum);
+	fem_sl->parameters->FindParam(&numberofdofspernode_sl,NumberOfDofsPerNodeEnum);
+	fem_ds->parameters->FindParam(&numberofdofspernode_ds,NumberOfDofsPerNodeEnum);
 
 	/*if no Stokes, assign output and return*/
Index: /issm/trunk/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 3922)
@@ -89,13 +89,13 @@
 
 	//specific parameters for specific models
-	fem_dh->FindParam(&numberofdofspernode_dh,NumberOfDofsPerNodeEnum);
-	fem_sl->FindParam(&numberofdofspernode_sl,NumberOfDofsPerNodeEnum);
-	fem_ds->FindParam(&numberofdofspernode_ds,NumberOfDofsPerNodeEnum);
+	fem_dh->parameters->FindParam(&numberofdofspernode_dh,NumberOfDofsPerNodeEnum);
+	fem_sl->parameters->FindParam(&numberofdofspernode_sl,NumberOfDofsPerNodeEnum);
+	fem_ds->parameters->FindParam(&numberofdofspernode_ds,NumberOfDofsPerNodeEnum);
 
 	//for qmu analysis, be sure the velocity input we are starting from  is the one in the parameters: */
 	if(qmu_analysis){
-		fem_dh->FindParam(&vx,&dummy,VxEnum); model->UpdateInputsFromVector(vx,VxEnum,VertexEnum);
-		fem_dh->FindParam(&vy,&dummy,VyEnum); model->UpdateInputsFromVector(vy,VyEnum,VertexEnum);
-		fem_dh->FindParam(&vz,&dummy,VzEnum); model->UpdateInputsFromVector(vz,VzEnum,VertexEnum);
+		fem_dh->parameters->FindParam(&vx,&dummy,VxEnum); model->UpdateInputsFromVector(vx,VxEnum,VertexEnum);
+		fem_dh->parameters->FindParam(&vy,&dummy,VyEnum); model->UpdateInputsFromVector(vy,VyEnum,VertexEnum);
+		fem_dh->parameters->FindParam(&vz,&dummy,VzEnum); model->UpdateInputsFromVector(vz,VzEnum,VertexEnum);
 	}
 
Index: /issm/trunk/src/c/solutions/diagnostic_core_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core_nonlinear.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/diagnostic_core_nonlinear.cpp	(revision 3922)
@@ -99,5 +99,5 @@
 
 		//Update inputs using new solution:
-		fem->UpdateInputsFromSolution(ug,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,ug,analysis_type, sub_analysis_type);
 
 		//Deal with penalty loads
@@ -112,5 +112,5 @@
 		
 		/*add converged to inputs: */
-		fem->UpdateInputsFromConstant(converged,ConvergedEnum);
+		UpdateInputsFromConstantx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,converged,ConvergedEnum);
 
 		//rift convergence
Index: /issm/trunk/src/c/solutions/objectivefunctionC.cpp
===================================================================
--- /issm/trunk/src/c/solutions/objectivefunctionC.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/objectivefunctionC.cpp	(revision 3922)
@@ -88,10 +88,10 @@
 
 	/*Add new parameter to inputs: */
-	femmodel->UpdateInputsFromVector(param_g_copy,control_type,VertexEnum);
+	UpdateInputsFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,param_g_copy,control_type,VertexEnum);
 
 	/*Run diagnostic with updated parameters.*/
 	if(!control_steady){
 		diagnostic_core_nonlinear(&u_g,NULL,NULL,NULL,femmodel,DiagnosticAnalysisEnum,sub_analysis_type); 
-		femmodel->UpdateInputsFromSolution(u_g,DiagnosticAnalysisEnum,sub_analysis_type);
+		UpdateInputsFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,u_g,DiagnosticAnalysisEnum,sub_analysis_type);
 		VecFree(&u_g);
 	}
@@ -104,7 +104,7 @@
 		
 		SplitSolutionVectorx(u_g,numberofnodes,3,&vx,&vy,&vz);
-		femmodel->UpdateInputsFromVector(vx,VxEnum,VertexEnum);
-		femmodel->UpdateInputsFromVector(vy,VxEnum,VertexEnum);
-		femmodel->UpdateInputsFromVector(vz,VxEnum,VertexEnum);
+		UpdateInputsFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,vx,VxEnum,VertexEnum);
+		UpdateInputsFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,vy,VyEnum,VertexEnum);
+		UpdateInputsFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,vz,VzEnum,VertexEnum);
 		
 		delete diagnostic_results;
@@ -112,5 +112,5 @@
 
 	/*Compute misfit for this velocity field.*/
-	femmodel->UpdateInputsFromConstant(fit[n],FitEnum);
+	UpdateInputsFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,fit[n],FitEnum);
 	CostFunctionx( &J, femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters,analysis_type,sub_analysis_type);
 
Index: /issm/trunk/src/c/solutions/prognostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/prognostic_core.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/prognostic_core.cpp	(revision 3922)
@@ -44,5 +44,5 @@
 		
 	_printf_("update inputs:\n");
-	fem_p->UpdateInputsFromSolution(h_g,PrognosticAnalysisEnum,NoneAnalysisEnum);
+	UpdateInputsFromSolutionx( fem_p->elements,fem_p->nodes, fem_p->vertices, fem_p->loads, fem_p->materials, fem_p->parameters,h_g,PrognosticAnalysisEnum,NoneAnalysisEnum);
 
 	_printf_("extrude computed thickness on all layers:\n");
Index: /issm/trunk/src/c/solutions/thermal_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/thermal_core.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/thermal_core.cpp	(revision 3922)
@@ -53,9 +53,9 @@
 
 	//first recover parameters common to all solutions
-	fem_t->FindParam(&numberofnodes,NumberOfNodesEnum);
-	fem_t->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
-	fem_t->FindParam(&verbose,VerboseEnum);
-	fem_t->FindParam(&ndt,NdtEnum);
-	fem_t->FindParam(&dt,DtEnum);
+	fem_t->parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
+	fem_t->parameters->FindParam(&sub_analysis_type,SubAnalysisTypeEnum);
+	fem_t->parameters->FindParam(&verbose,VerboseEnum);
+	fem_t->parameters->FindParam(&ndt,NdtEnum);
+	fem_t->parameters->FindParam(&dt,DtEnum);
 
 	if(dt==0){
Index: /issm/trunk/src/c/solutions/thermal_core_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solutions/thermal_core_nonlinear.cpp	(revision 3921)
+++ /issm/trunk/src/c/solutions/thermal_core_nonlinear.cpp	(revision 3922)
@@ -56,5 +56,5 @@
 
 		if(count==1) reset_penalties=1; else reset_penalties=0;
-		fem->UpdateInputsFromConstant(reset_penalties,ResetPenaltiesEnum);
+		UpdateInputsFromConstantx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,reset_penalties,ResetPenaltiesEnum);
 
 		//*Generate system matrices
@@ -110,5 +110,6 @@
 		PenaltyConstraintsx(&constraints_converged, &num_unstable_constraints, fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,analysis_type,sub_analysis_type); 
 		
-		fem->UpdateInputsFromVector(tg,TemperatureEnum,VertexEnum);
+		UpdateInputsFromVectorx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,tg,TemperatureEnum,VertexEnum);
+
 
 		if (!converged){
