Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 4024)
+++ /issm/trunk/src/c/Makefile.am	(revision 4025)
@@ -301,10 +301,10 @@
 					./modules/ModelProcessorx/NodesPartitioning.cpp\
 					./modules/ModelProcessorx/SortDataSets.cpp\
-					./modules/ModelProcessorx/UpdateCounter.cpp\
+					./modules/ModelProcessorx/UpdateCounters.cpp\
 					./modules/ModelProcessorx/CreateDataSets.cpp\
 					./modules/ModelProcessorx/CreateParameters.cpp\
 					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp\
 					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp\
-					./modules/ModelProcessorx/CreateElementsMaterialsAndVertices.cpp\
+					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\
 					./modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp\
 					./modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp \
@@ -770,46 +770,59 @@
 					./modules/ModelProcessorx/Partitioning.cpp\
 					./modules/ModelProcessorx/SortDataSets.cpp\
-					./modules/ModelProcessorx/UpdateCounter.cpp\
+					./modules/ModelProcessorx/UpdateCounters.cpp\
 					./modules/ModelProcessorx/CreateDataSets.cpp\
 					./modules/ModelProcessorx/CreateParameters.cpp\
 					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp\
 					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp\
-					./modules/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp\
+					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\
+					./modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp\
 					./modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp \
 					./modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp\
+					./modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp\
 					./modules/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp\
 					./modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp \
 					./modules/ModelProcessorx/DiagnosticVert/CreateLoadsDiagnosticVert.cpp\
+					./modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp\
 					./modules/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp\
 					./modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp \
 					./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp\
+					./modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp\
 					./modules/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp\
 					./modules/ModelProcessorx/DiagnosticStokes/CreateConstraintsDiagnosticStokes.cpp \
 					./modules/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp\
+					./modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp\
 					./modules/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp\
 					./modules/ModelProcessorx/SlopeCompute/CreateConstraintsSlopeCompute.cpp \
 					./modules/ModelProcessorx/SlopeCompute/CreateLoadsSlopeCompute.cpp\
+					./modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeCompute.cpp\
 					./modules/ModelProcessorx/Control/CreateParametersControl.cpp\
 					./modules/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp\
 					./modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp\
 					./modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp\
+					./modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp\
 					./modules/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp\
 					./modules/ModelProcessorx/Melting/CreateConstraintsMelting.cpp\
 					./modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp\
+					./modules/ModelProcessorx/Melting/CreateNodesMelting.cpp\
 					./modules/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp\
 					./modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp\
 					./modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp\
+					./modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp\
 					./modules/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp\
 					./modules/ModelProcessorx/Prognostic2/CreateConstraintsPrognostic2.cpp\
 					./modules/ModelProcessorx/Prognostic2/CreateLoadsPrognostic2.cpp\
+					./modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp\
 					./modules/ModelProcessorx/Balancedthickness/CreateElementsNodesAndMaterialsBalancedthickness.cpp\
 					./modules/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp\
 					./modules/ModelProcessorx/Balancedthickness/CreateLoadsBalancedthickness.cpp\
+					./modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp\
 					./modules/ModelProcessorx/Balancedthickness2/CreateElementsNodesAndMaterialsBalancedthickness2.cpp\
 					./modules/ModelProcessorx/Balancedthickness2/CreateConstraintsBalancedthickness2.cpp\
 					./modules/ModelProcessorx/Balancedthickness2/CreateLoadsBalancedthickness2.cpp\
+					./modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp\
 					./modules/ModelProcessorx/Balancedvelocities/CreateElementsNodesAndMaterialsBalancedvelocities.cpp\
 					./modules/ModelProcessorx/Balancedvelocities/CreateConstraintsBalancedvelocities.cpp\
 					./modules/ModelProcessorx/Balancedvelocities/CreateLoadsBalancedvelocities.cpp\
+					./modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp\
 					./modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp\
 					./modules/VerticesDofx/VerticesDofx.h\
Index: /issm/trunk/src/c/modules/Dux/Dux.cpp
===================================================================
--- /issm/trunk/src/c/modules/Dux/Dux.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/Dux/Dux.cpp	(revision 4025)
@@ -11,6 +11,6 @@
 #include "../SurfaceAreax/SurfaceAreax.h"
 
-void Dux( Vec* pdu_g, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,
-			int analysis_type,int sub_analysis_type){
+void Dux( Vec* pdu_g, DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, 
+		DataSet* materials, Parameters* parameters,int analysis_type,int sub_analysis_type){
 
 	/*Intermediary*/
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/CreateNodesBalancedthickness.cpp	(revision 4025)
@@ -46,5 +46,5 @@
 
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,BalancedthicknessAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/UpdateElementsBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/UpdateElementsBalancedthickness.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness/UpdateElementsBalancedthickness.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsBalancedthickness(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsBalancedthickness(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -45,5 +45,5 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp	(revision 4025)
@@ -16,6 +16,8 @@
 
 	/*Intermediary*/
-	int i;
+	int i,j;
 	bool continuous_galerkin=false;
+	int  vertex_index;
+	int node_index;
 
 	/*DataSets: */
@@ -58,5 +60,5 @@
 
 				/*Add node to nodes dataset: */
-				nodes->AddObject(new Node(iomodel->nodecounter+i+1,vertex_index,node_index,iomodel));
+				nodes->AddObject(new Node(iomodel->nodecounter+i+1,vertex_index,node_index,iomodel,Balancedthickness2AnalysisEnum));
 
 			}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/UpdateElementsBalancedthickness2.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/UpdateElementsBalancedthickness2.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/UpdateElementsBalancedthickness2.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsBalancedthickness2(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsBalancedthickness2(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -42,5 +42,5 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/CreateNodesBalancedvelocities.cpp	(revision 4025)
@@ -46,5 +46,5 @@
 			
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,BalancedvelocitiesAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/UpdateElementsBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/UpdateElementsBalancedvelocities.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancedvelocities/UpdateElementsBalancedvelocities.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsBalancedvelocities(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsBalancedvelocities(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -44,5 +44,5 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp	(revision 4025)
@@ -12,5 +12,5 @@
 #include "../ModelProcessorx.h"
 
-void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
+void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type){
 	
 	int i;
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 4025)
@@ -33,5 +33,5 @@
 			CreateConstraintsDiagnosticHoriz(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsDiagnosticHoriz(ploads,iomodel,iomodel_handle);
-			UpdateElementsDiagnosticHoriz(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsDiagnosticHoriz(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 		
@@ -40,5 +40,5 @@
 			CreateConstraintsDiagnosticVert(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsDiagnosticVert(ploads,iomodel,iomodel_handle);
-			UpdateElementsDiagnosticVert(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsDiagnosticVert(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 	
@@ -47,5 +47,5 @@
 			CreateConstraintsDiagnosticStokes(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsDiagnosticStokes(ploads,iomodel,iomodel_handle);
-			UpdateElementsDiagnosticStokes(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsDiagnosticStokes(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 	
@@ -54,12 +54,12 @@
 			CreateConstraintsDiagnosticHutter(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsDiagnosticHutter(ploads,iomodel,iomodel_handle);
-			UpdateElementsDiagnosticHutter(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsDiagnosticHutter(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
-		case SlopecomputeAnalysisEnum:
+		case SlopeComputeAnalysisEnum:
 			CreateNodesSlopeCompute(pnodes, iomodel,iomodel_handle);
 			CreateConstraintsSlopeCompute(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsSlopeCompute(ploads,iomodel,iomodel_handle);
-			UpdateElementsSlopeCompute(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsSlopeCompute(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
@@ -68,5 +68,5 @@
 			CreateConstraintsThermal(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsThermal(ploads,iomodel,iomodel_handle);
-			UpdateElementsThermal(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsThermal(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
@@ -75,5 +75,5 @@
 			CreateConstraintsMelting(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsMelting(ploads,iomodel,iomodel_handle);
-			UpdateElementsMelting(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsMelting(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
@@ -82,5 +82,5 @@
 			CreateConstraintsPrognostic(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsPrognostic(ploads,iomodel,iomodel_handle);
-			UpdateElementsPrognostic(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsPrognostic(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
@@ -89,5 +89,5 @@
 			CreateConstraintsPrognostic2(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsPrognostic2(ploads,iomodel,iomodel_handle);
-			UpdateElementsPrognostic2(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsPrognostic2(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
@@ -96,5 +96,5 @@
 			CreateConstraintsBalancedthickness(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsBalancedthickness(ploads,iomodel,iomodel_handle);
-			UpdateElementsBalancedthickness(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsBalancedthickness(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 
@@ -103,5 +103,5 @@
 			CreateConstraintsBalancedthickness2(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsBalancedthickness2(ploads,iomodel,iomodel_handle);
-			UpdateElementsBalancedthickness2(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsBalancedthickness2(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 		case BalancedvelocitiesAnalysisEnum:
@@ -109,5 +109,5 @@
 			CreateConstraintsBalancedvelocities(pconstraints,iomodel,iomodel_handle);
 			CreateLoadsBalancedvelocities(ploads,iomodel,iomodel_handle);
-			UpdateElementsBalancedvelocities(elements,iomodel,iomodel_handle,analysis_counter);
+			UpdateElementsBalancedvelocities(elements,iomodel,iomodel_handle,analysis_counter,analysis_type);
 			break;
 		default:
@@ -116,8 +116,8 @@
 	
 	/*Generate objects that are not dependent on any analysis_type: */
-	CreateParameters(pparameters,iomodel,iomodel_handle);
+	CreateParameters(pparameters,iomodel,iomodel_handle,analysis_type);
 
 	/*Sort datasets: */
-	SortDataSets(elements,nodes,vertices, loads, materials, constraints, parameters);
+	SortDataSets(pelements,pnodes,pvertices, ploads, pmaterials, pconstraints, pparameters);
 
 	/*Update counters, because we have created more nodes, loads and constraints, and ids for objects created in next call to CreateDataSets
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 4025)
@@ -3,13 +3,13 @@
  */
 
-#include "../../../DataSet/DataSet.h"
-#include "../../../toolkits/toolkits.h"
-#include "../../../io/io.h"
-#include "../../../EnumDefinitions/EnumDefinitions.h"
-#include "../../../objects/objects.h"
-#include "../../../shared/shared.h"
-#include "../../MeshPartitionx/MeshPartitionx.h"
-#include "../../../include/include.h"
-#include "../ModelProcessorx.h"
+#include "../../DataSet/DataSet.h"
+#include "../../toolkits/toolkits.h"
+#include "../../io/io.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../objects/objects.h"
+#include "../../shared/shared.h"
+#include "../MeshPartitionx/MeshPartitionx.h"
+#include "../../include/include.h"
+#include "./ModelProcessorx.h"
 
 void	CreateElementsVerticesAndMaterials(DataSet** pelements,DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle,int nummodels){
@@ -31,7 +31,4 @@
 	materials = new DataSet(MaterialsEnum);
 	
-	/*Partition elements and vertices and nodes: */
-	Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);
-
 	/*First, partition elements and vertices. Nodes will partitioned on a per analysis_type basis. If partitining already done, ignore: */
 	ElementsAndVerticesPartitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_bordervertices, iomodel, iomodel_handle);
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 4025)
@@ -10,6 +10,7 @@
 #include "../MeshPartitionx/MeshPartitionx.h"
 #include "../../io/io.h"
+#include "./ModelProcessorx.h"
 
-void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
+void CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type){
 	
 	int i;
@@ -32,6 +33,4 @@
 	if (iomodel->dim==2) parameters->AddObject(new IntParam(DimEnum,2));
 	else parameters->AddObject(new IntParam(DimEnum,3));
-	parameters->AddObject(new    IntParam(AnalysisTypeEnum,iomodel->analysis_type));
-	parameters->AddObject(new    IntParam(SubAnalysisTypeEnum,iomodel->sub_analysis_type));
 	parameters->AddObject(new StringParam(OutputFileNameEnum,iomodel->outputfilename));
 	parameters->AddObject(new   BoolParam(IsHutterEnum,iomodel->ishutter));
@@ -68,11 +67,11 @@
 	/*Deal with more complex parameters*/
 	if (
-				iomodel->analysis_type==Prognostic2AnalysisEnum ||
-				iomodel->analysis_type==Balancedthickness2AnalysisEnum
+				analysis_type==Prognostic2AnalysisEnum ||
+				analysis_type==Balancedthickness2AnalysisEnum
 				)
 		parameters->AddObject(new    IntParam(NumberOfNodesEnum,3*iomodel->numberofelements));
 	else parameters->AddObject(new    IntParam(NumberOfNodesEnum,iomodel->numberofvertices));
 
-	DistributeNumDofs(&numberofdofspernode,iomodel->analysis_type,iomodel->sub_analysis_type);
+	DistributeNumDofs(&numberofdofspernode,analysis_type);
 	parameters->AddObject(new    IntParam(NumberOfDofsPerNodeEnum,numberofdofspernode));
 
@@ -116,6 +115,6 @@
 
 	/*Before returning, create parameters in case we are running Qmu or control types runs: */
-	CreateParametersControl(&parameters,iomodel,iomodel_handle);
-	CreateParametersQmu(&parameters,iomodel,iomodel_handle);
+	CreateParametersControl(&parameters,iomodel,iomodel_handle,analysis_type);
+	CreateParametersQmu(&parameters,iomodel,iomodel_handle,analysis_type);
 
 	/*Assign output pointer: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 4025)
@@ -79,5 +79,5 @@
 				count++;
 				
-				constraints->AddObject(new Rgb(iomodel->constraintcounter+count+1,node1,node2,2),DiagnosticHorizAnalysisEnum);  //add count'th Rgb on dof 1 between node1 and node2
+				constraints->AddObject(new Rgb(iomodel->constraintcounter+count+1,node1,node2,2,DiagnosticHorizAnalysisEnum));  //add count'th Rgb on dof 1 between node1 and node2
 
 			}
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 4025)
@@ -68,7 +68,5 @@
 	xfree((void**)&iomodel->uppernodes);
 
-	/*All our datasets are already order by ids. Set presort flag so that later on, when sorting is requested on these 
-	 * datasets, it will not be redone: */
-	nodes->Presort();
+	cleanup_and_return:
 
 	/*Assign output pointer: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsDiagnosticHoriz(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsDiagnosticHoriz(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -55,7 +55,8 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 		}
 	}
+	cleanup_and_return:
 
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp	(revision 4025)
@@ -52,5 +52,5 @@
 
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,DiagnosticHutterAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsDiagnosticHutter(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsDiagnosticHutter(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -30,5 +30,4 @@
 	IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
-	IoModelFetchData(&iomodel->uppergrids,NULL,NULL,iomodel_handle,"uppergrids");
 	IoModelFetchData(&iomodel->drag_coefficient,NULL,NULL,iomodel_handle,"drag_coefficient");
 	IoModelFetchData(&iomodel->rheology_B,NULL,NULL,iomodel_handle,"rheology_B");
@@ -47,8 +46,9 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
 	}
+	cleanup_and_return:
 
 	/*Free data: */
@@ -59,5 +59,4 @@
 	xfree((void**)&iomodel->gridonsurface);
 	xfree((void**)&iomodel->gridonbed);
-	xfree((void**)&iomodel->uppergrids);
 	xfree((void**)&iomodel->drag_coefficient);
 	xfree((void**)&iomodel->rheology_B);
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp	(revision 4025)
@@ -61,5 +61,5 @@
 
 		/*Create and  add load: */
-		loads->AddObject(new Icefront(iomodel->loadcounter+counter+1,i,iomodel,DiagnosticStokesAnalysisEnum));
+		loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,DiagnosticStokesAnalysisEnum));
 		count++;
 
@@ -85,5 +85,5 @@
 			if ((iomodel->gridonbed[i]) && (iomodel->gridonicesheet[i]) && (iomodel->gridonstokes[i])){
 				
-				loads->AddObject(new Pengrid(iomodel->loadcounter+counter+1,i,iomodel,DiagnosticStokesAnalysisEnum));
+				loads->AddObject(new Pengrid(iomodel->loadcounter+count+1,i,iomodel,DiagnosticStokesAnalysisEnum));
 				count++;
 			}
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/CreateNodesDiagnosticStokes.cpp	(revision 4025)
@@ -50,5 +50,5 @@
 
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,DiagnosticStokesAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/UpdateElementsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/UpdateElementsDiagnosticStokes.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticStokes/UpdateElementsDiagnosticStokes.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsDiagnosticHoriz(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsDiagnosticHoriz(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -55,7 +55,9 @@
 
 		element=(Element*)elements->GetObjectByOffset(i);
-		element->Update(iomodel,analysis_counter);
+		element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 
 	}
+
+	cleanup_and_return:
 
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp	(revision 4025)
@@ -47,5 +47,5 @@
 
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,DiagnosticVertAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsDiagnosticVert(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsDiagnosticVert(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -44,8 +44,9 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
 	}
+	cleanup_and_return:
 
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp	(revision 4025)
@@ -46,5 +46,5 @@
 			
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,MeltingAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsMelting(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsMelting(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -39,5 +39,5 @@
 	IoModelFetchData(&iomodel->rheology_n,NULL,NULL,iomodel_handle,"rheology_n");
 	IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
-	IoModelFetchData(&iomodel->melting_ratex,NULL,NULL,iomodel_handle,"melting_rate");
+	IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
 	IoModelFetchData(&iomodel->pressure,NULL,NULL,iomodel_handle,"pressure");
 	IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
@@ -49,9 +49,10 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
 	}
 
+	cleanup_and_return:
 	/*Free data: */
 	xfree((void**)&iomodel->elements);
Index: /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 4025)
@@ -16,7 +16,7 @@
 void  CreateDataSets(DataSet** pelements,DataSet** pnodes,DataSet** pvertices, DataSet** pmaterials, DataSet** pconstraints, DataSet** ploads,Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type,int nummodels,int analysis_counter);
 void  CreateElementsVerticesAndMaterials(DataSet** pelements,DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle,int nummodels);
-void  CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle);
+void  CreateParameters(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type);
+void  CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type);
+void  CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type);
 
 /*Creation of fem datasets: specialised drivers: */
@@ -26,70 +26,70 @@
 void	CreateConstraintsDiagnosticHoriz(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
 void  CreateLoadsDiagnosticHoriz(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElementsDiagnosticHoriz(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void	UpdateElementsDiagnosticHoriz(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*diagnostic vertical*/
 void	CreateNodesDiagnosticVert(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsDiagnosticVert(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsDiagnosticVert(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsDiagnosticVert(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsDiagnosticVert(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*diagnostic hutter*/
 void	CreateNodesDiagnosticHutter(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsDiagnosticHutter(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsDiagnosticHutter(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsDiagnosticHutter(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsDiagnosticHutter(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*diagnostic stokes*/
 void	CreateNodesDiagnosticStokes(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsDiagnosticStokes(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsDiagnosticStokes(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsDiagnosticStokes(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsDiagnosticStokes(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*slope compute*/
 void	CreateNodesSlopeCompute(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsSlopeCompute(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsSlopeCompute(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsSlopeCompute(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsSlopeCompute(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*thermal:*/
 void	CreateNodesThermal(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsThermal(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsThermal(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsThermal(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsThermal(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*melting:*/
 void	CreateNodesMelting(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsMelting(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsMelting(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsMelting(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsMelting(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*prognostic:*/
 void	CreateNodesPrognostic(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsPrognostic(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsPrognostic(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsPrognostic(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsPrognostic(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*prognostic2:*/
 void	CreateNodesPrognostic2(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsPrognostic2(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsPrognostic2(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsPrognostic2(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsPrognostic2(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*balancedthickness:*/
 void	CreateNodesBalancedthickness(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsBalancedthickness(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsBalancedthickness(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsBalancedthickness(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsBalancedthickness(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 void	CreateNodesBalancedthickness2(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsBalancedthickness2(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsBalancedthickness2(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsBalancedthickness2(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsBalancedthickness2(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*balancedvelocities:*/
 void	CreateNodesBalancedvelocities(DataSet** pnodes,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
 void	CreateConstraintsBalancedvelocities(DataSet** pconstraints,IoModel* iomodel,ConstDataHandle iomodel_handle);
-void  CreateLoadsBalancedvelocities(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void	UpdateElements(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle);
+void    CreateLoadsBalancedvelocities(DataSet** ploads, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void	UpdateElementsBalancedvelocities(DataSet* elements,IoModel* iomodel_handle,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type);
 
 /*partitioning: */
@@ -103,5 +103,5 @@
 /*Diverse: */
 void  SortDataSets(DataSet** pelements,DataSet** pnodes,DataSet** pvertices, DataSet** ploads, DataSet** pmaterials, DataSet** pconstraints, Parameters** pparameters);
-void  UpdateCounter(IoModel* iomodel,DataSet** pnodes,DataSet** ploads, DataSet** pconstraints);
+void  UpdateCounters(IoModel* iomodel,DataSet** pnodes,DataSet** ploads, DataSet** pconstraints);
 
 #endif
Index: /issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 4025)
@@ -18,5 +18,5 @@
 #include "../ModelProcessorx/ModelProcessorx.h"
 
-void  DiscontinuousGalerkinNodesPartitioning(bool* pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
 void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
 
@@ -27,5 +27,5 @@
 
 	/*Now, depending on whether we are running galerkin discontinous or continuous elements, carry out a different partition of the nodes: */
-	if(continuous==true){
+	if(continuous==true)
 		ContinuousGalerkinNodesPartitioning(pmy_nodes,my_elements, my_vertices, my_bordervertices, iomodel, iomodel_handle);
 	else
@@ -48,5 +48,5 @@
 
 
-void  DiscontinuousGalerkinNodesPartitioning(bool* pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, bool* my_bordervertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
 
 	/*each element has it own nodes (as many as vertices) + additional nodes from neighbouring elements for each edge. This yields to a very different partition for 
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 4025)
@@ -46,5 +46,5 @@
 
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,PrognosticAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsPrognostic(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsPrognostic(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -46,5 +46,5 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/CreateNodesPrognostic2.cpp	(revision 4025)
@@ -16,5 +16,5 @@
 
 	/*Intermediary*/
-	int i;
+	int i,j;
 	int vertex_index;
 	int node_index;
@@ -59,5 +59,5 @@
 
 				/*Add node to nodes dataset: */
-				nodes->AddObject(new Node(iomodel->nodecounter+node_index+1,vertex_index,node_index,iomodel));
+				nodes->AddObject(new Node(iomodel->nodecounter+node_index+1,vertex_index,node_index,iomodel,Prognostic2AnalysisEnum));
 
 			}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/UpdateElementsPrognostic2.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/UpdateElementsPrognostic2.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic2/UpdateElementsPrognostic2.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsPrognostic2(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsPrognostic2(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -41,5 +41,5 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
+void CreateParametersQmu(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_type){
 	
 	int i,j,k;
@@ -126,5 +126,5 @@
 
 			/*Partition elements and vertices and nodes: */
-			Partitioning(&iomodel->my_elements, &iomodel->my_vertices, &iomodel->my_nodes, &iomodel->my_bordervertices, iomodel, iomodel_handle);
+			ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices, &iomodel->my_bordervertices, iomodel,iomodel_handle);
 
 			dpart=(double*)xmalloc(iomodel->numberofvertices*sizeof(double));
Index: /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeCompute.cpp	(revision 4025)
+++ /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeCompute.cpp	(revision 4025)
@@ -0,0 +1,63 @@
+/*
+ * CreateNodesSlopeCompute.c:
+ */
+
+#include "../../../DataSet/DataSet.h"
+#include "../../../io/io.h"
+#include "../../../toolkits/toolkits.h"
+#include "../../../EnumDefinitions/EnumDefinitions.h"
+#include "../../../objects/objects.h"
+#include "../../../shared/shared.h"
+#include "../../../include/include.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	CreateNodesSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
+
+	/*Intermediary*/
+	int i;
+	bool continuous_galerkin=true;
+
+	/*DataSets: */
+	DataSet*    nodes = NULL;
+
+	/*Recover pointer: */
+	nodes=*pnodes;
+
+	/*Create nodes if they do not exist yet*/
+	if(!nodes) nodes = new DataSet(NodesEnum);
+	
+	/*Continuous Galerkin partition of nodes: */
+	NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin);
+	
+	/*First fetch data: */
+	if (iomodel->dim==3){
+		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
+		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
+	}
+	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
+	IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
+	IoModelFetchData(&iomodel->gridonicesheet,NULL,NULL,iomodel_handle,"gridonicesheet");
+	IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf");
+
+	for (i=0;i<iomodel->numberofvertices;i++){
+
+		if(iomodel->my_vertices[i]){
+			
+			/*Add node to nodes dataset: */
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,SlopeComputeAnalysisEnum));
+
+		}
+	}
+
+	/*Clean fetched data: */
+	xfree((void**)&iomodel->deadgrids);
+	xfree((void**)&iomodel->gridonbed);
+	xfree((void**)&iomodel->gridonsurface);
+	xfree((void**)&iomodel->uppernodes);
+	xfree((void**)&iomodel->gridonicesheet);
+	xfree((void**)&iomodel->gridoniceshelf);
+	
+	/*Assign output pointer: */
+	*pnodes=nodes;
+}
Index: sm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeConpute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/CreateNodesSlopeConpute.cpp	(revision 4024)
+++ 	(revision )
@@ -1,63 +1,0 @@
-/*
- * CreateNodesSlopeCompute.c:
- */
-
-#include "../../../DataSet/DataSet.h"
-#include "../../../io/io.h"
-#include "../../../toolkits/toolkits.h"
-#include "../../../EnumDefinitions/EnumDefinitions.h"
-#include "../../../objects/objects.h"
-#include "../../../shared/shared.h"
-#include "../../../include/include.h"
-#include "../../MeshPartitionx/MeshPartitionx.h"
-#include "../ModelProcessorx.h"
-
-void	CreateNodesSlopeCompute(DataSet** pelements,DataSet** pnodes, DataSet** pvertices,DataSet** pmaterials, IoModel* iomodel,ConstDataHandle iomodel_handle){
-
-	/*Intermediary*/
-	int i;
-	bool continuous_galerkin=true;
-
-	/*DataSets: */
-	DataSet*    nodes = NULL;
-
-	/*Recover pointer: */
-	nodes=*pnodes;
-
-	/*Create nodes if they do not exist yet*/
-	if(!nodes) nodes = new DataSet(NodesEnum);
-	
-	/*Continuous Galerkin partition of nodes: */
-	NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin);
-	
-	/*First fetch data: */
-	if (iomodel->dim==3){
-		IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
-		IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
-	}
-	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
-	IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
-	IoModelFetchData(&iomodel->gridonicesheet,NULL,NULL,iomodel_handle,"gridonicesheet");
-	IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf");
-
-	for (i=0;i<iomodel->numberofvertices;i++){
-
-		if(iomodel->my_vertices[i]){
-			
-			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
-
-		}
-	}
-
-	/*Clean fetched data: */
-	xfree((void**)&iomodel->deadgrids);
-	xfree((void**)&iomodel->gridonbed);
-	xfree((void**)&iomodel->gridonsurface);
-	xfree((void**)&iomodel->uppernodes);
-	xfree((void**)&iomodel->gridonicesheet);
-	xfree((void**)&iomodel->gridoniceshelf);
-	
-	/*Assign output pointer: */
-	*pnodes=nodes;
-}
Index: /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/UpdateElementsSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/UpdateElementsSlopeCompute.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/SlopeCompute/UpdateElementsSlopeCompute.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsSlopeCompute(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsSlopeCompute(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -37,5 +37,5 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/SortDataSets.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/SortDataSets.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/SortDataSets.cpp	(revision 4025)
@@ -18,14 +18,31 @@
 void SortDataSets(DataSet** pelements,DataSet** pnodes,DataSet** pvertices, DataSet** ploads, DataSet** pmaterials, DataSet** pconstraints, Parameters** pparameters){
 
+	DataSet* elements=NULL;
+	DataSet* nodes=NULL;
+	DataSet* vertices=NULL;
+	DataSet* loads=NULL;
+	DataSet* materials=NULL;
+	DataSet* constraints=NULL;
+	Parameters* parameters=NULL;
+
+	/*Recover pointers: */
+	elements=*pelements;
+	nodes=*pnodes;
+	vertices=*pvertices;
+	loads=*ploads;
+	materials=*pmaterials;
+	constraints=*pconstraints;
+	parameters=*pparameters;
+
 	/*All our datasets are already ordered by ids. Set presort flag so that later on, when sorting is requested on these 
 	 * datasets, it will not be redone: */
 
-	if(*pelements)*pelements->Presort();
-	if(*pnodes)*pnodes->Presort();
-	if(*pvertices)*pvertices->Presort();
-	if(*pmaterials)*pmaterials->Presort();
-	if(*ploads)*ploads->Presort();
-	if(*pconstraints)*pconstraints->Presort();
-	if(*pparameters)*pparameters->Presort();
+	if(elements)elements->Presort();
+	if(nodes)nodes->Presort();
+	if(vertices)vertices->Presort();
+	if(loads)loads->Presort();
+	if(materials)materials->Presort();
+	if(constraints)constraints->Presort();
+	if(parameters)parameters->Presort();
 
 }
Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp	(revision 4025)
@@ -46,5 +46,5 @@
 			
 			/*Add node to nodes dataset: */
-			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel));
+			nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,iomodel,ThermalAnalysisEnum));
 
 		}
Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 4025)
@@ -13,5 +13,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsThermal(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter){
+void	UpdateElementsThermal(DataSet* elements, IoModel* iomodel,ConstDataHandle iomodel_handle,int analysis_counter,int analysis_type){
 
 	/*Intermediary*/
@@ -50,8 +50,10 @@
 		if(iomodel->my_elements[i]){
 			element=(Element*)elements->GetObjectByOffset(counter);
-			element->Update(i,iomodel,analysis_counter); //we need i to index into elements.
+			element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
 			counter++;
 		}
 	}
+
+	cleanup_and_return:
 
 	/*Free data: */
@@ -67,5 +69,5 @@
 	xfree((void**)&iomodel->elementonsurface);
 	xfree((void**)&iomodel->elementonwater);
-	xfree((void**)&iomodel->elementons_type);
+	xfree((void**)&iomodel->elements_type);
 	xfree((void**)&iomodel->rheology_B);
 	xfree((void**)&iomodel->rheology_n);
Index: /issm/trunk/src/c/modules/ModelProcessorx/UpdateCounters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/UpdateCounters.cpp	(revision 4024)
+++ /issm/trunk/src/c/modules/ModelProcessorx/UpdateCounters.cpp	(revision 4025)
@@ -15,5 +15,5 @@
 #include "./ModelProcessorx.h"
 
-void    UpdateCounter(IoModel* iomodel,DataSet** pnodes,DataSet** ploads, DataSet** pconstraints){
+void    UpdateCounters(IoModel* iomodel,DataSet** pnodes,DataSet** ploads, DataSet** pconstraints){
 
 	DataSet* nodes=NULL;
@@ -24,5 +24,5 @@
 	nodes=*pnodes;
 	loads=*ploads;
-	cosntraints=*pconstraints;
+	constraints=*pconstraints;
 
 
Index: /issm/trunk/src/c/objects/Elements/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 4024)
+++ /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 4025)
@@ -29,4 +29,9 @@
 	delete inputs;
 	this->parameters=NULL;
+}
+/*}}}*/
+/*FUNCTION void Beam::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);{{{1*/
+void Beam::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type){
+	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4024)
+++ /issm/trunk/src/c/objects/Elements/Beam.h	(revision 4025)
@@ -40,4 +40,5 @@
 		Beam();
 		~Beam();
+		void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);
 		/*}}}*/
 		/*object management: {{{1*/
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 4024)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 4025)
@@ -49,4 +49,5 @@
 		virtual void   PatchSize(int* pnumrows, int* pnumvertices,int* pnumnodes,int enum_type)=0;
 		virtual void   PatchFill(int* pcount, double* patches,int numcols,int max_vertices,int enum_type)=0;
+		virtual void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type)=0;
 
 		/*Implementation: */
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4024)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4025)
@@ -43,5 +43,5 @@
 		Penta();
 		Penta(int penta_id,int i, IoModel* iomodel,int nummodels);
-		void Update(int index,IoModel* iomodel,int analysis_counter,int analysis_type);
+		void  Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);
 		~Penta();
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4024)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 4025)
@@ -29,4 +29,9 @@
 	delete inputs;
 	this->parameters=NULL;
+}
+/*}}}*/
+/*FUNCTION void Sing::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);{{{1*/
+void Sing::Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type){
+	ISSMERROR(" not supported yet!");
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4024)
+++ /issm/trunk/src/c/objects/Elements/Sing.h	(revision 4025)
@@ -40,4 +40,5 @@
 		Sing();
 		~Sing();
+		void   Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type);
 		/*}}}*/
 		/*object management: {{{1*/
