Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3698)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3699)
@@ -1347,9 +1347,14 @@
 }
 /*}}}*/
-/*FUNCTION DataSet::UpdateInputs{{{2*/
-void  DataSet::UpdateInputs(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION DataSet::UpdateInputsFromVector{{{2*/
+void  DataSet::UpdateInputsFromVector(double* vector, int name, int type){
 
 	vector<Object*>::iterator object;
 	Element* element=NULL;
+	Node* node=NULL;
+	Vertex* vertex=NULL;
+	Load* load=NULL;
+	Material* material=NULL;
+	Param* param=NULL:
 
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
@@ -1358,5 +1363,47 @@
 
 			element=(Element*)(*object);
-			element->UpdateInputs(solution,analysis_type,sub_analysis_type);
+			element->UpdateInputsFromVector(vector,name,type);
+		}
+		else if(((*object)->Enum()==NodeEnum)){
+
+			node=(Node*)(*object);
+			node->UpdateInputsFromVector(vector,name,type);
+		}
+		else if(((*object)->Enum()==VertexEnum)){
+
+			vertex=(Vertex*)(*object);
+			vertex->UpdateInputsFromVector(vector,name,type);
+		}
+		else if(EnumIsLoad((*object)->Enum())){
+
+			load=(Load*)(*object);
+			load->UpdateInputsFromVector(vector,name,type);
+		}
+		else if(EnumIsMaterial((*object)->Enum())){
+
+			material=(Material*)(*object);
+			material->UpdateInputsFromVector(vector,name,type);
+		}
+		else if(((*object)->Enum()==ParamEnum)){
+
+			param=(Param*)(*object);
+			param->UpdateInputsFromVector(vector,name,type);
+		}
+		else ISSMERROR("%s%i%s"," object with id: ",(*object)->Id()," is not an element, in a function that deals only with elements!");
+	}
+}
+/*}}}*/
+/*FUNCTION DataSet::UpdateInputsFromSolution{{{2*/
+void  DataSet::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
+
+	vector<Object*>::iterator object;
+	Element* element=NULL;
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		if(EnumIsElement((*object)->Enum())){
+
+			element=(Element*)(*object);
+			element->UpdateInputsFromSolution(solution,analysis_type,sub_analysis_type);
 		}
 		else ISSMERROR("%s%i%s"," object with id: ",(*object)->Id()," is not an element, in a function that deals only with elements!");
Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 3698)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 3699)
@@ -71,5 +71,6 @@
 		void  CreateKMatrix(Mat Kgg, int analysis_type,int sub_analysis_type);
 		void  CreatePVector(Vec pg, int analysis_type,int sub_analysis_type);
-		void  UpdateInputs(double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromVector(double* vector,int name, int type);
+		void  UpdateInputsFromSolution(double* solution,int analysis_type,int sub_analysis_type);
 		void  AddInput(double value, int enum_type);
 		void  PenaltyCreateKMatrix(Mat Kgg,double kmax,int analysis_type,int sub_analysis_type);
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 3698)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 3699)
@@ -213,4 +213,5 @@
 	StabilizeConstraintsEnum,
 	PenaltyOffsetEnum,
+	ConstantEnum
 	/*}}}*/
 	/*Parameters{{{1*/
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 3698)
+++ /issm/trunk/src/c/Makefile.am	(revision 3699)
@@ -289,6 +289,8 @@
 					./Gradjx/Gradjx.h\
 					./Gradjx/Gradjx.cpp\
-					./UpdateInputsx/UpdateInputsx.h\
-					./UpdateInputsx/UpdateInputsx.cpp\
+					./UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h\
+					./UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp\
+					./UpdateInputsFromVectorx/UpdateInputsFromVectorx.h\
+					./UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp\
 					./UpdateGeometryx/UpdateGeometryx.h\
 					./UpdateGeometryx/UpdateGeometryx.cpp\
@@ -712,6 +714,8 @@
 					./Gradjx/Gradjx.h\
 					./Gradjx/Gradjx.cpp\
-					./UpdateInputsx/UpdateInputsx.h\
-					./UpdateInputsx/UpdateInputsx.cpp\
+					./UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h\
+					./UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp\
+					./UpdateInputsFromVectorx/UpdateInputsFromVectorx.h\
+					./UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp\
 					./UpdateGeometryx/UpdateGeometryx.h\
 					./UpdateGeometryx/UpdateGeometryx.cpp\
@@ -882,5 +886,6 @@
 bin_PROGRAMS = 
 else 
-bin_PROGRAMS = diagnostic.exe thermal.exe prognostic.exe prognostic2.exe balancedthickness.exe balancedthickness2.exe balancedvelocities.exe transient.exe steadystate.exe slopecompute.exe
+dnl bin_PROGRAMS = diagnostic.exe thermal.exe prognostic.exe prognostic2.exe balancedthickness.exe balancedthickness2.exe balancedvelocities.exe transient.exe steadystate.exe slopecompute.exe
+bin_PROGRAMS = diagnostic.exe 
 endif
 
Index: /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp
===================================================================
--- /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 3699)
+++ /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 3699)
@@ -0,0 +1,43 @@
+/*!\file UpdateInputsFromSolutionx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./UpdateInputsFromSolutionx.h"
+#include "../shared/shared.h"
+#include "../include/macros.h"
+#include "../toolkits/toolkits.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+
+int UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type){
+
+	int noerr=1;
+	int i;
+
+	int  found=0;
+	extern int num_procs;
+	extern int my_rank;
+	double* serial_solution=NULL;
+
+	/*First, get elements and loads configured: */
+	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+	loads->Configure(elements, loads, nodes,vertices, materials,parameters);
+	nodes->Configure(elements, loads, nodes,vertices, materials,parameters);
+	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	/*Serialize solution, so that elements can index into it on every CPU: */
+	VecToMPISerial(&serial_solution,solution);
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	elements->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
+	nodes->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
+	vertices->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
+	loads->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
+	materials->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
+	parameters->UpdateInputsFromSolution(serial_solution,analysis_type,sub_analysis_type);
+
+	/*Free ressources:*/
+	xfree((void**)&serial_solution);
+
+	return noerr;
+
+}
Index: /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h
===================================================================
--- /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h	(revision 3699)
+++ /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h	(revision 3699)
@@ -0,0 +1,15 @@
+/*!\file:  UpdateInputsFromSolutionx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSXX_H
+#define _UPDATEINPUTSXX_H
+
+#include "../objects/objects.h"
+#include "../DataSet/DataSet.h"
+
+/* local prototypes: */
+int		UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type);
+
+#endif  /* _UPDATEINPUTSXX_H */
+
Index: sm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsx.cpp
===================================================================
--- /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsx.cpp	(revision 3698)
+++ 	(revision )
@@ -1,38 +1,0 @@
-/*!\file UpdateInputsx
- * \brief: update datasets using  parameter inputs
- */
-
-#include "./UpdateInputsx.h"
-#include "../shared/shared.h"
-#include "../include/macros.h"
-#include "../toolkits/toolkits.h"
-#include "../EnumDefinitions/EnumDefinitions.h"
-
-int UpdateInputsx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type){
-
-	int noerr=1;
-	int i;
-
-	int  found=0;
-	extern int num_procs;
-	extern int my_rank;
-	double* serial_solution=NULL;
-
-	/*First, get elements and loads configured: */
-	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
-	loads->Configure(elements, loads, nodes,vertices, materials,parameters);
-	nodes->Configure(elements, loads, nodes,vertices, materials,parameters);
-	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
-
-	/*Serialize solution, so that elements can index into it on every CPU: */
-	VecToMPISerial(&serial_solution,solution);
-
-	/*Update elements, nodes, loads and materials from inputs: */
-	elements->UpdateInputs(serial_solution,analysis_type,sub_analysis_type);
-
-	/*Free ressources:*/
-	xfree((void**)&serial_solution);
-
-	return noerr;
-
-}
Index: sm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsx.h
===================================================================
--- /issm/trunk/src/c/UpdateInputsFromSolutionx/UpdateInputsx.h	(revision 3698)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/*!\file:  UpdateInputsx.h
- * \brief header file for updating datasets from inputs
- */ 
-
-#ifndef _UPDATEINPUTSXX_H
-#define _UPDATEINPUTSXX_H
-
-#include "../objects/objects.h"
-#include "../DataSet/DataSet.h"
-
-/* local prototypes: */
-int		UpdateInputsx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution, int analysis_type, int sub_analysis_type);
-
-#endif  /* _UPDATEINPUTSXX_H */
-
Index: /issm/trunk/src/c/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp
===================================================================
--- /issm/trunk/src/c/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp	(revision 3699)
+++ /issm/trunk/src/c/UpdateInputsFromVectorx/UpdateInputsFromVectorx.cpp	(revision 3699)
@@ -0,0 +1,29 @@
+/*!\file UpdateInputsFromVectorx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./UpdateInputsFromVectorx.h"
+#include "../shared/shared.h"
+#include "../include/macros.h"
+#include "../toolkits/toolkits.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
+
+int UpdateInputsFromVectorx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* vector, int NameEnum, int TypeEnum){
+
+	/*First, get elements and loads configured: */
+	elements->Configure(elements,loads, nodes,vertices, materials,parameters);
+	loads->Configure(elements, loads, nodes,vertices, materials,parameters);
+	nodes->Configure(elements, loads, nodes,vertices, materials,parameters);
+	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
+
+	/*Update elements, nodes, loads and materials from inputs: */
+	elements->UpdateInputsFromVector(serial_solution,analysis_type,sub_analysis_type);
+	nodes->UpdateInputsFromVector(serial_solution,analysis_type,sub_analysis_type);
+	vertices->UpdateInputsFromVector(serial_solution,analysis_type,sub_analysis_type);
+	loads->UpdateInputsFromVector(serial_solution,analysis_type,sub_analysis_type);
+	materials->UpdateInputsFromVector(serial_solution,analysis_type,sub_analysis_type);
+	parameters->UpdateInputsFromVector(serial_solution,analysis_type,sub_analysis_type);
+
+	return noerr;
+
+}
Index: /issm/trunk/src/c/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h
===================================================================
--- /issm/trunk/src/c/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h	(revision 3699)
+++ /issm/trunk/src/c/UpdateInputsFromVectorx/UpdateInputsFromVectorx.h	(revision 3699)
@@ -0,0 +1,15 @@
+/*!\file:  UpdateInputsFromVectorx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSXX_H
+#define _UPDATEINPUTSXX_H
+
+#include "../objects/objects.h"
+#include "../DataSet/DataSet.h"
+
+/* local prototypes: */
+int		UpdateInputsFromVectorx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,double* vector, int NameEnum,int TypeEnum);
+
+#endif  /* _UPDATEINPUTSXX_H */
+
Index: /issm/trunk/src/c/modules.h
===================================================================
--- /issm/trunk/src/c/modules.h	(revision 3698)
+++ /issm/trunk/src/c/modules.h	(revision 3699)
@@ -27,5 +27,6 @@
 #include "./ConfigureObjectsx/ConfigureObjectsx.h"
 #include "./SystemMatricesx/SystemMatricesx.h"
-#include "./UpdateInputsx/UpdateInputsx.h"
+#include "./UpdateInputsFromSolutionx/UpdateInputsFromSolutionx.h"
+#include "./UpdateInputsFromVectorx/UpdateInputsFromVectorx.h"
 #include "./UpdateGeometryx/UpdateGeometryx.h"
 #include "./UpdateVertexPositionsx/UpdateVertexPositionsx.h"
Index: /issm/trunk/src/c/objects/Elements/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 3699)
@@ -291,6 +291,6 @@
 }
 /*}}}*/
-/*FUNCTION Beam::UpdateInputs {{{1*/
-void  Beam::UpdateInputs(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Beam::UpdateInputsFromSolution {{{1*/
+void  Beam::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 3699)
@@ -58,5 +58,5 @@
 		void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
 		void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
-		void  UpdateInputs(double* solution, int analysis_type, int sub_analysis_type);
+		void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
 		void  GetDofList(int* doflist,int* pnumberofdofs);
 		void  GetDofList1(int* doflist);
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 3699)
@@ -28,5 +28,5 @@
 		virtual void   CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type)=0;
 		virtual void   CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type)=0;
-		virtual void   UpdateInputs(double* solution, int analysis_type, int sub_analysis_type)=0;
+		virtual void   UpdateInputsFromSolutionFromSolution(double* solution, int analysis_type, int sub_analysis_type)=0;
 		virtual void   GetNodes(void** nodes)=0;
 		virtual void*  GetMatPar()=0;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 3699)
@@ -358,11 +358,11 @@
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateInputs {{{1*/
-void  Penta::UpdateInputs(double* solution, int analysis_type, int sub_analysis_type){
-
-	/*Just branch to the correct UpdateInputs generator, according to the type of analysis we are carrying out: */
+/*FUNCTION Penta::UpdateInputsFromSolution {{{1*/
+void  Penta::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
+
+	/*Just branch to the correct UpdateInputsFromSolution generator, according to the type of analysis we are carrying out: */
 	if (analysis_type==ControlAnalysisEnum){
 		
-		UpdateInputsDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==DiagnosticAnalysisEnum){
@@ -370,5 +370,5 @@
 		if (sub_analysis_type==HorizAnalysisEnum){
 
-			UpdateInputsDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
+			UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
 		}
 		else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
@@ -377,25 +377,25 @@
 	else if (analysis_type==SlopecomputeAnalysisEnum){
 
-		UpdateInputsSlopeCompute( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionSlopeCompute( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==PrognosticAnalysisEnum){
 
-		UpdateInputsPrognostic( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionPrognostic( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==Prognostic2AnalysisEnum){
 
-		UpdateInputsPrognostic2(solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionPrognostic2(solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==BalancedthicknessAnalysisEnum){
 
-		UpdateInputsBalancedthickness( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionBalancedthickness( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==Balancedthickness2AnalysisEnum){
 
-		UpdateInputsBalancedthickness2( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionBalancedthickness2( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==BalancedvelocitiesAnalysisEnum){
 
-		UpdateInputsBalancedvelocities( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionBalancedvelocities( solution,analysis_type,sub_analysis_type);
 	}
 	else{
@@ -405,6 +405,6 @@
 }
 /*Object functions*/
-/*FUNCTION Penta::UpdateInputsDiagnosticHoriz {{{1*/
-void  Penta::UpdateInputsDiagnosticHoriz(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionDiagnosticHoriz {{{1*/
+void  Penta::UpdateInputsFromSolutionDiagnosticHoriz(double* solution, int analysis_type, int sub_analysis_type){
 	
 	
@@ -442,31 +442,31 @@
 
 /*}}}*/
-/*FUNCTION Penta::UpdateInputsSlopeCompute {{{1*/
-void  Penta::UpdateInputsSlopeCompute(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionSlopeCompute {{{1*/
+void  Penta::UpdateInputsFromSolutionSlopeCompute(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateInputsPrognostic {{{1*/
-void  Penta::UpdateInputsPrognostic(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionPrognostic {{{1*/
+void  Penta::UpdateInputsFromSolutionPrognostic(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateInputsPrognostic2 {{{1*/
-void  Penta::UpdateInputsPrognostic2(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionPrognostic2 {{{1*/
+void  Penta::UpdateInputsFromSolutionPrognostic2(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateInputsBalancedthickness {{{1*/
-void  Penta::UpdateInputsBalancedthickness(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionBalancedthickness {{{1*/
+void  Penta::UpdateInputsFromSolutionBalancedthickness(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateInputsBalancedthickness2 {{{1*/
-void  Penta::UpdateInputsBalancedthickness2(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionBalancedthickness2 {{{1*/
+void  Penta::UpdateInputsFromSolutionBalancedthickness2(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateInputsBalancedvelocities {{{1*/
-void  Penta::UpdateInputsBalancedvelocities(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Penta::UpdateInputsFromSolutionBalancedvelocities {{{1*/
+void  Penta::UpdateInputsFromSolutionBalancedvelocities(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 3699)
@@ -132,12 +132,12 @@
 		/*updates: */
 		void  UpdateFromDakota(void* inputs);
-		void  UpdateInputs(double* solution, int analysis_type, int sub_analysis_type);
-		void  UpdateInputsDiagnosticHoriz( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsSlopeCompute( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsPrognostic( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsPrognostic2(double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsBalancedthickness( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsBalancedthickness2( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsBalancedvelocities( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
+		void  UpdateInputsFromSolutionDiagnosticHoriz( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionSlopeCompute( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionPrognostic( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionPrognostic2(double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionBalancedthickness( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionBalancedthickness2( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionBalancedvelocities( double* solution,int analysis_type,int sub_analysis_type);
 		void AddInput(double value, int enum_type){ISSMERROR("not supporte yet!");}
 
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 3699)
@@ -238,6 +238,6 @@
 }
 /*}}}*/
-/*FUNCTION Sing::UpdateInputs {{{1*/
-void  Sing::UpdateInputs(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Sing::UpdateInputsFromSolution {{{1*/
+void  Sing::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
Index: /issm/trunk/src/c/objects/Elements/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.h	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Sing.h	(revision 3699)
@@ -57,5 +57,5 @@
 		void  CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type);
 		void  CreatePVector(Vec pg,  int analysis_type,int sub_analysis_type);
-		void  UpdateInputs(double* solution, int analysis_type, int sub_analysis_type);
+		void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
 		void  GetDofList(int* doflist,int* pnumberofdofs);
 		void  GetDofList1(int* doflist);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 3699)
@@ -357,11 +357,11 @@
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputs {{{1*/
-void  Tria::UpdateInputs(double* solution, int analysis_type, int sub_analysis_type){
-
-	/*Just branch to the correct UpdateInputs generator, according to the type of analysis we are carrying out: */
+/*FUNCTION Tria::UpdateInputsFromSolution {{{1*/
+void  Tria::UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type){
+
+	/*Just branch to the correct UpdateInputsFromSolution generator, according to the type of analysis we are carrying out: */
 	if (analysis_type==ControlAnalysisEnum){
 		
-		UpdateInputsDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==DiagnosticAnalysisEnum){
@@ -369,5 +369,5 @@
 		if (sub_analysis_type==HorizAnalysisEnum){
 
-			UpdateInputsDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
+			UpdateInputsFromSolutionDiagnosticHoriz( solution,analysis_type,sub_analysis_type);
 		}
 		else ISSMERROR("%s%i%s\n","sub_analysis: ",sub_analysis_type," not supported yet");
@@ -376,25 +376,25 @@
 	else if (analysis_type==SlopecomputeAnalysisEnum){
 
-		UpdateInputsSlopeCompute( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionSlopeCompute( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==PrognosticAnalysisEnum){
 
-		UpdateInputsPrognostic( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionPrognostic( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==Prognostic2AnalysisEnum){
 
-		UpdateInputsPrognostic2(solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionPrognostic2(solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==BalancedthicknessAnalysisEnum){
 
-		UpdateInputsBalancedthickness( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionBalancedthickness( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==Balancedthickness2AnalysisEnum){
 
-		UpdateInputsBalancedthickness2( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionBalancedthickness2( solution,analysis_type,sub_analysis_type);
 	}
 	else if (analysis_type==BalancedvelocitiesAnalysisEnum){
 
-		UpdateInputsBalancedvelocities( solution,analysis_type,sub_analysis_type);
+		UpdateInputsFromSolutionBalancedvelocities( solution,analysis_type,sub_analysis_type);
 	}
 	else{
@@ -404,6 +404,6 @@
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsDiagnosticHoriz {{{1*/
-void  Tria::UpdateInputsDiagnosticHoriz(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionDiagnosticHoriz {{{1*/
+void  Tria::UpdateInputsFromSolutionDiagnosticHoriz(double* solution, int analysis_type, int sub_analysis_type){
 	
 	
@@ -441,31 +441,31 @@
 
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsSlopeCompute {{{1*/
-void  Tria::UpdateInputsSlopeCompute(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionSlopeCompute {{{1*/
+void  Tria::UpdateInputsFromSolutionSlopeCompute(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsPrognostic {{{1*/
-void  Tria::UpdateInputsPrognostic(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionPrognostic {{{1*/
+void  Tria::UpdateInputsFromSolutionPrognostic(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsPrognostic2 {{{1*/
-void  Tria::UpdateInputsPrognostic2(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionPrognostic2 {{{1*/
+void  Tria::UpdateInputsFromSolutionPrognostic2(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsBalancedthickness {{{1*/
-void  Tria::UpdateInputsBalancedthickness(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionBalancedthickness {{{1*/
+void  Tria::UpdateInputsFromSolutionBalancedthickness(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsBalancedthickness2 {{{1*/
-void  Tria::UpdateInputsBalancedthickness2(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionBalancedthickness2 {{{1*/
+void  Tria::UpdateInputsFromSolutionBalancedthickness2(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
-/*FUNCTION Tria::UpdateInputsBalancedvelocities {{{1*/
-void  Tria::UpdateInputsBalancedvelocities(double* solution, int analysis_type, int sub_analysis_type){
+/*FUNCTION Tria::UpdateInputsFromSolutionBalancedvelocities {{{1*/
+void  Tria::UpdateInputsFromSolutionBalancedvelocities(double* solution, int analysis_type, int sub_analysis_type){
 	ISSMERROR(" not supported yet!");
 }
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 3698)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 3699)
@@ -117,12 +117,12 @@
 		/*updates:*/
 		void  UpdateFromDakota(void* inputs);
-		void  UpdateInputs(double* solution, int analysis_type, int sub_analysis_type);
-		void  UpdateInputsDiagnosticHoriz( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsSlopeCompute( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsPrognostic( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsPrognostic2(double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsBalancedthickness( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsBalancedthickness2( double* solution,int analysis_type,int sub_analysis_type);
-		void  UpdateInputsBalancedvelocities( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
+		void  UpdateInputsFromSolutionDiagnosticHoriz( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionSlopeCompute( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionPrognostic( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionPrognostic2(double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionBalancedthickness( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionBalancedthickness2( double* solution,int analysis_type,int sub_analysis_type);
+		void  UpdateInputsFromSolutionBalancedvelocities( double* solution,int analysis_type,int sub_analysis_type);
 		void  AddInput(double value, int enum_type){ISSMERROR("not supporte yet!");}
 
Index: /issm/trunk/src/c/objects/FemModel.h
===================================================================
--- /issm/trunk/src/c/objects/FemModel.h	(revision 3698)
+++ /issm/trunk/src/c/objects/FemModel.h	(revision 3699)
@@ -28,5 +28,5 @@
 		DataSet*            loads;
 		DataSet*            materials;
-		Parameters*            parameters;
+		Parameters*         parameters;
 
 		DofVec*             partition;
Index: /issm/trunk/src/c/parallel/diagnostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 3698)
+++ /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 3699)
@@ -3,5 +3,7 @@
  */ 
 
-#include "../issm.h"
+#include "../objects/objects.h"
+#include "../shared/shared.h"
+#include "../DataSet/DataSet.h"
 #include "./parallel.h"
 
@@ -33,13 +35,5 @@
 	
 	double waitonlock=0;
-	int    numberofnodes;
 	
-	double* u_g_initial=NULL;
-	double* u_g_obs=NULL;
-	double* weights=NULL;
-	Param*  param=NULL;
-	int      count;
-	Parameters* parameters=NULL;
-
 	/*time*/
 	double   start, finish;
@@ -90,22 +84,8 @@
 
 	/*get parameters: */
-	model->FindParam(&qmu_analysis,"qmu_analysis");
-	model->FindParam(&control_analysis,"control_analysis");
-	model->FindParam(&waitonlock,"waitonlock");
+	model->FindParam(&qmu_analysis,QmuAnalysisEnum);
+	model->FindParam(&control_analysis,ControlAnalysisEnum);
+	model->FindParam(&waitonlock,WaitOnLockEnum);
 
-	_printf_("initialize inputs:\n");
-	model->FindParam(&u_g_initial,NULL,NULL,"u_g",DiagnosticAnalysisEnum,HorizAnalysisEnum);
-	model->FindParam(&numberofnodes,"numberofnodes");
-
-	inputs=new ParameterInputs;
-	inputs->Add("velocity",u_g_initial,3,numberofnodes);
-
-	if(control_analysis){
-		model->FindParam(&u_g_obs,NULL,NULL,"u_g_obs",DiagnosticAnalysisEnum,HorizAnalysisEnum);
-		model->FindParam(&weights,NULL,NULL,"weights",DiagnosticAnalysisEnum,HorizAnalysisEnum);
-		inputs->Add("velocity_obs",u_g_obs,2,numberofnodes);
-		inputs->Add("weights",weights,1,numberofnodes);
-	}
-	
 	_printf_("initialize results:\n");
 	results=new DataSet(ResultsEnum);
@@ -118,5 +98,5 @@
 			_printf_("call computational core:\n");
 			MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
-			diagnostic_core(results,model,inputs);
+			diagnostic_core(results,model);
 			MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 
@@ -132,5 +112,5 @@
 			_printf_("call computational core:\n");
 			MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
-			control_core(results,model,inputs);
+			control_core(results,model);
 			MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 
@@ -156,5 +136,5 @@
 		#ifdef _HAVE_DAKOTA_ 
 		MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
-		Qmux(model,inputs,DiagnosticAnalysisEnum,NoneAnalysisEnum);
+		Qmux(model,DiagnosticAnalysisEnum,NoneAnalysisEnum);
 		MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
 	 	#else
@@ -174,5 +154,4 @@
 	xfree((void**)&control_type);
 	delete model;
-	delete inputs;
 	delete results;
 	delete processed_results;
Index: /issm/trunk/src/c/parallel/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 3698)
+++ /issm/trunk/src/c/parallel/diagnostic_core.cpp	(revision 3699)
@@ -10,5 +10,5 @@
 #include "../issm.h"
 
-void diagnostic_core(DataSet* results,Model* model, ParameterInputs* inputs){
+void diagnostic_core(DataSet* results,Model* model){
 
 	extern int my_rank;
@@ -37,9 +37,9 @@
 	/*flags: */
 	int verbose=0;
-	int qmu_analysis=0;
+	bool qmu_analysis=0;
 	int dim=-1;
-	int ishutter=0;
-	int ismacayealpattyn=0;
-	int isstokes=0;
+	bool ishutter=0;
+	bool ismacayealpattyn=0;
+	bool isstokes=0;
 	int numberofdofspernode_sl;
 	int numberofdofspernode_dh;
@@ -59,13 +59,13 @@
 
 	//first recover parameters common to all solutions
-	model->FindParam(&verbose,"verbose");
-	model->FindParam(&dim,"dim");
-	model->FindParam(&ishutter,"ishutter");
-	model->FindParam(&ismacayealpattyn,"ismacayealpattyn");
-	model->FindParam(&numberofnodes,"numberofnodes");
-	model->FindParam(&isstokes,"isstokes");
-	model->FindParam(&stokesreconditioning,"stokesreconditioning");
-	model->FindParam(&numrifts,"numrifts");
-	model->FindParam(&qmu_analysis,"qmu_analysis");
+	model->FindParam(&verbose,VerboseEnum);
+	model->FindParam(&dim,DimEnum);
+	model->FindParam(&ishutter,IsHutterEnum);
+	model->FindParam(&ismacayealpattyn,IsMacayealPattynEnum);
+	model->FindParam(&numberofnodes,NumberOfNodesEnum);
+	model->FindParam(&isstokes,IsStokesEnum);
+	model->FindParam(&stokesreconditioning,StokesReconditioningEnum);
+	model->FindParam(&numrifts,NumriftsEnum);
+	model->FindParam(&qmu_analysis,QmuAnalysisEnum);
 
 	/*recover fem models: */
@@ -77,12 +77,13 @@
 
 	//specific parameters for specific models
-	fem_dh->FindParam(&numberofdofspernode_dh,"numberofdofspernode");
-	fem_sl->FindParam(&numberofdofspernode_sl,"numberofdofspernode");
-	fem_ds->FindParam(&numberofdofspernode_ds,"numberofdofspernode");
+	fem_dh->FindParam(&numberofdofspernode_dh,NumberOfDofsPerNodeEnum);
+	fem_sl->FindParam(&numberofdofspernode_sl,NumberOfDofsPerNodeEnum);
+	fem_ds->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){
-		model->FindParam(&u_g_initial,NULL,NULL,"u_g",DiagnosticAnalysisEnum,HorizAnalysisEnum);
-		inputs->Add("velocity",u_g_initial,3,numberofnodes);
+		model->FindParam(&vx,VxEnum,DiagnosticAnalysisEnum,HorizAnalysisEnum); model->UpdateInputs(vx,VxEnum,VertexEnum);
+		model->FindParam(&vy,VyEnum,DiagnosticAnalysisEnum,HorizAnalysisEnum); model->UpdateInputs(vy,VyEnum,VertexEnum);
+		model->FindParam(&vz,VzEnum,DiagnosticAnalysisEnum,HorizAnalysisEnum); model->UpdateInputs(vz,VzEnum,VertexEnum);
 	}
 
@@ -90,6 +91,6 @@
 			
 		if(verbose)_printf_("%s\n","computing surface slope (x and y derivatives)...");
-		diagnostic_core_linear(&slopex,fem_sl,inputs,SlopecomputeAnalysisEnum,SurfaceXAnalysisEnum);
-		diagnostic_core_linear(&slopey,fem_sl,inputs,SlopecomputeAnalysisEnum,SurfaceYAnalysisEnum);
+		diagnostic_core_linear(&slopex,fem_sl,SlopecomputeAnalysisEnum,SurfaceXAnalysisEnum);
+		diagnostic_core_linear(&slopey,fem_sl,SlopecomputeAnalysisEnum,SurfaceYAnalysisEnum);
 
 		if (dim==3){
@@ -106,8 +107,8 @@
 
 		if(verbose)_printf_("%s\n"," computing hutter velocities...");
-		diagnostic_core_linear(&ug,fem_dhu,inputs,DiagnosticAnalysisEnum,HutterAnalysisEnum);
+		diagnostic_core_linear(&ug,fem_dhu,DiagnosticAnalysisEnum,HutterAnalysisEnum);
 
 		if(verbose)_printf_("%s\n"," computing pressure according to MacAyeal...");
-		ComputePressurex(&pg,fem_dhu->elements,fem_dhu->nodes, fem_dhu->vertices,fem_dhu->loads,fem_dhu->materials,fem_dhu->parameters,inputs,DiagnosticAnalysisEnum,HutterAnalysisEnum);
+		ComputePressurex(&pg,fem_dhu->elements,fem_dhu->nodes, fem_dhu->vertices,fem_dhu->loads,fem_dhu->materials,fem_dhu->parameters,DiagnosticAnalysisEnum,HutterAnalysisEnum);
 
 		if(verbose)_printf_("%s\n"," update boundary conditions for macyeal pattyn using hutter results...");
@@ -123,9 +124,9 @@
 		
 		if(verbose)_printf_("%s\n"," computing horizontal velocities...");
-		diagnostic_core_nonlinear(&ug,NULL,NULL,fem_dh->loads,fem_dh,inputs,DiagnosticAnalysisEnum,HorizAnalysisEnum);
+		diagnostic_core_nonlinear(&ug,NULL,NULL,fem_dh->loads,fem_dh,DiagnosticAnalysisEnum,HorizAnalysisEnum);
 
 		if(dim==2){
 			if(verbose)_printf_("%s\n"," computing pressure according to MacAyeal...");
-			ComputePressurex(&pg,fem_dh->elements,fem_dh->nodes, fem_dh->vertices,fem_dh->loads,fem_dh->materials,fem_dh->parameters,inputs,DiagnosticAnalysisEnum,HorizAnalysisEnum);
+			ComputePressurex(&pg,fem_dh->elements,fem_dh->nodes, fem_dh->vertices,fem_dh->loads,fem_dh->materials,fem_dh->parameters,DiagnosticAnalysisEnum,HorizAnalysisEnum);
 		}
 
@@ -140,5 +141,5 @@
 		if(verbose)_printf_("%s\n"," computing vertical velocities...");
 		inputs->Add("velocity",ug_horiz,numberofdofspernode_dh,numberofnodes);
-		diagnostic_core_linear(&ug_vert,fem_dv,inputs,DiagnosticAnalysisEnum,VertAnalysisEnum);
+		diagnostic_core_linear(&ug_vert,fem_dv,DiagnosticAnalysisEnum,VertAnalysisEnum);
 
 		if(verbose)_printf_("%s\n"," combining horizontal and vertical velocities...");
@@ -150,5 +151,5 @@
 
 		if(verbose)_printf_("%s\n"," computing pressure according to Pattyn...");
-		ComputePressurex(&pg,fem_dh->elements, fem_dh->nodes, fem_dh->vertices,fem_dh->loads,  fem_dh->materials,fem_dh->parameters,inputs,DiagnosticAnalysisEnum,HorizAnalysisEnum);
+		ComputePressurex(&pg,fem_dh->elements, fem_dh->nodes, fem_dh->vertices,fem_dh->loads,  fem_dh->materials,fem_dh->parameters,DiagnosticAnalysisEnum,HorizAnalysisEnum);
 		
 		if (isstokes){
@@ -158,6 +159,6 @@
 
 			if(verbose)_printf_("%s\n","computing bed slope (x and y derivatives)...");
-			diagnostic_core_linear(&slopex,fem_sl,inputs,SlopecomputeAnalysisEnum,BedXAnalysisEnum);
-			diagnostic_core_linear(&slopey,fem_sl,inputs,SlopecomputeAnalysisEnum,BedYAnalysisEnum);
+			diagnostic_core_linear(&slopex,fem_sl,SlopecomputeAnalysisEnum,BedXAnalysisEnum);
+			diagnostic_core_linear(&slopey,fem_sl,SlopecomputeAnalysisEnum,BedYAnalysisEnum);
 			FieldExtrudex( slopex, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopex",0);
 			FieldExtrudex( slopey, fem_sl->elements,fem_sl->nodes,fem_sl->vertices,fem_sl->loads,fem_sl->materials,fem_sl->parameters,"slopey",0);
@@ -182,5 +183,5 @@
 			if(verbose)_printf_("%s\n"," computing stokes velocities and pressure ...");
 			VecFree(&ug);
-			diagnostic_core_nonlinear(&ug,NULL,NULL,NULL,fem_ds,inputs,DiagnosticAnalysisEnum,StokesAnalysisEnum);
+			diagnostic_core_nonlinear(&ug,NULL,NULL,NULL,fem_ds,DiagnosticAnalysisEnum,StokesAnalysisEnum);
 		
 			//decondition" pressure
