Index: /issm/trunk-jpl/src/c/classes/Loads/Icefront.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Icefront.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/classes/Loads/Icefront.cpp	(revision 15423)
@@ -43,5 +43,4 @@
 	int numnodes; 
 	int numvertices; 
-	int dim;
 	int numberofelements;
 
@@ -54,9 +53,8 @@
 
 	/*find parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 
 	/*First, retrieve element index and element type: */
-	if (dim==2){
+	if(iomodel->dim==2){
 		segment_width=4;
 	}
@@ -132,5 +130,4 @@
 	int numnodes; 
 	int numvertices; 
-	int dim;
 	int numberofelements;
 
Index: /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp	(revision 15423)
@@ -670,25 +670,25 @@
 
 				case TriaEnum: {
-					IssmDouble values[3];
-					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //use sid list, to index into serial oriented vector 
-					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
-					/*Special case for rheology B in 2D: Pourave land for this solution{{{*/
-					if(name==MaterialsRheologyBEnum){
-						/*Are we in 2D?:*/
-						if(element->ObjectEnum()==TriaEnum){
-							parameters=((Tria*)(element))->parameters;
-						}
-						else{
-							parameters=((Penta*)(element))->parameters;
-						}
-						parameters->FindParam(&dim,MeshDimensionEnum);
-						if(dim==2){
-							/*Dupliacte rheology input: */
-							this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
-						}
-					}
-					/*}}}*/
-					return;
-				}
+										IssmDouble values[3];
+										for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //use sid list, to index into serial oriented vector 
+										this->inputs->AddInput(new TriaInput(name,values,P1Enum));
+										/*Special case for rheology B in 2D: Pourave land for this solution{{{*/
+										if(name==MaterialsRheologyBEnum){
+											/*Are we in 2D?:*/
+											if(element->ObjectEnum()==TriaEnum){
+												parameters=((Tria*)(element))->parameters;
+											}
+											else{
+												parameters=((Penta*)(element))->parameters;
+											}
+											parameters->FindParam(&dim,MeshDimensionEnum);
+											if(dim==2){
+												/*Dupliacte rheology input: */
+												this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
+											}
+										}
+										/*}}}*/
+										return;
+									}
 				default: _error_("element " << EnumToStringx(element->ObjectEnum()) << " not implemented yet");
 			}
@@ -737,16 +737,12 @@
 
 	int i,j;
-
-	int    dim;
 	bool   control_analysis;
 	int    num_control_type;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&control_analysis,InversionIscontrolEnum);
 	if(control_analysis) iomodel->Constant(&num_control_type,InversionNumControlParametersEnum);
 
-	/*if 2d*/
-	if(dim==2){
+	if(iomodel->dim==2){
 
 		/*Intermediaries*/
@@ -806,5 +802,5 @@
 	/*if 3d*/
 	#ifdef _HAVE_3D_
-	else if(dim==3){
+	else if(iomodel->dim==3){
 
 		/*Intermediaries*/
Index: /issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matice.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matice.cpp	(revision 15423)
@@ -687,16 +687,12 @@
 
 	int i,j;
-
-	int    dim;
 	bool   control_analysis;
 	int    num_control_type;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&control_analysis,InversionIscontrolEnum);
 	if(control_analysis) iomodel->Constant(&num_control_type,InversionNumControlParametersEnum);
 
-	/*if 2d*/
-	if(dim==2){
+	if(iomodel->dim==2){
 
 		/*Intermediaries*/
@@ -740,5 +736,5 @@
 	/*if 3d*/
 	#ifdef _HAVE_3D_
-	else if(dim==3){
+	else if(iomodel->dim==3){
 
 		/*Intermediaries*/
Index: /issm/trunk-jpl/src/c/classes/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 15423)
@@ -29,8 +29,4 @@
 	int k,l;
 	int gsize;
-	int dim;
-
-	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 
 	/*id: */
@@ -79,5 +75,5 @@
 		XZvectorsToCoordinateSystem(&this->coord_system[0][0],iomodel->Data(DiagnosticReferentialEnum)+io_index*6);
 
-		if (dim==3){
+		if(iomodel->dim==3){
 			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbedEnum)); 
@@ -126,5 +122,5 @@
 				analysis_type==HydrologyDCEfficientAnalysisEnum
 				){
-		if (dim==3){
+		if(iomodel->dim==3){
 			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbedEnum));
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp	(revision 15423)
@@ -17,5 +17,4 @@
 	int  io_index;
 	bool continuous_galerkin=true;
-	int    dim;
 	int    numberofelements;
 	int    numberofvertices;
@@ -23,5 +22,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -39,5 +37,5 @@
 
 	/*Check in 3d*/
-	if(stabilization==3 && dim==3) _error_("DG 3d not implemented yet");
+	if(stabilization==3 && iomodel->dim==3) _error_("DG 3d not implemented yet");
 
 	/*First fetch data: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp	(revision 15423)
@@ -11,9 +11,7 @@
 void	UpdateElementsBalancethickness(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 
 	/*Fetch data needed: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->FetchData(1,MeshElementsEnum);
@@ -40,5 +38,5 @@
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
-	if (dim==3){
+	if(iomodel->dim==3){
 		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp	(revision 15423)
@@ -11,9 +11,7 @@
 void	UpdateElementsBedSlope(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 
 	/*Fetch data needed: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->FetchData(1,MeshElementsEnum);
@@ -33,5 +31,5 @@
 	iomodel->FetchDataToInput(elements,MaskElementonwaterEnum);
 
-	if (dim==3){
+	if(iomodel->dim==3){
 		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 15423)
@@ -12,5 +12,5 @@
 	/*Intermediary*/
 	int i;
-	int dim,materials_type;
+	int materials_type;
 	int numberofelements;
 	int numberofvertices;
@@ -24,5 +24,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -41,5 +40,5 @@
 	iomodel->FetchData(2,MeshElementsEnum,MeshElementconnectivityEnum);
 	#ifdef _HAVE_3D_
-	if(dim==3)iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum);
+	if(iomodel->dim==3)iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum);
 	#endif
 	if(control_analysis)iomodel->FetchData(3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum);
@@ -50,5 +49,5 @@
 
 			/*Create and add tria element to elements dataset: */
-			if(dim==2) elements->AddObject(new Tria(i+1,i,i,iomodel,nummodels));
+			if(iomodel->dim==2) elements->AddObject(new Tria(i+1,i,i,iomodel,nummodels));
 	        #ifdef _HAVE_3D_
 			else       elements->AddObject(new Penta(i+1,i,i,iomodel,nummodels));
@@ -63,5 +62,5 @@
 			for (i=0;i<numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));
 			if(dakota_analysis){
-				if(dim==2) materials->InputDuplicate(MaterialsRheologyBbarEnum,QmuMaterialsRheologyBEnum); 
+				if(iomodel->dim==2) materials->InputDuplicate(MaterialsRheologyBbarEnum,QmuMaterialsRheologyBEnum); 
            #ifdef _HAVE_3D_
 				else       materials->InputDuplicate(MaterialsRheologyBEnum,QmuMaterialsRheologyBEnum); 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp	(revision 15423)
@@ -20,7 +20,6 @@
 	int vertexid;
 	int elementswidth;
-	int    dim;
-	int    numberofelements;
-	int    numberofvertices;
+	int numberofelements;
+	int numberofvertices;
 	IssmDouble* elements=NULL;
 
@@ -32,5 +31,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -46,5 +44,5 @@
 
 	/*Get element width (3 or 6)*/
-	if (dim==2){
+	if (iomodel->dim==2){
 		elementswidth=3;
 	}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 15423)
@@ -20,5 +20,4 @@
 	int vertexid;
 	int elementswidth;
-	int    dim;
 	int    numberofelements;
 	int    numberofvertices;
@@ -32,5 +31,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -47,5 +45,5 @@
 
 	/*Get element width (3 or 6)*/
-	if (dim==2){
+	if(iomodel->dim==2){
 		elementswidth=3;
 	}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15423)
@@ -41,9 +41,7 @@
 	Constraints *constraints      = NULL;
 	SpcStatic   *spcstatic        = NULL;
-	int          dim;
 	int          numberofvertices;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&yts,ConstantsYtsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -72,8 +70,8 @@
 	iomodel->FetchData(&spcvz,&Mz,&Nz,DiagnosticSpcvzEnum);
 	iomodel->FetchData(&nodeonmacayeal,NULL,NULL,FlowequationBordermacayealEnum);
-	if(dim==3)iomodel->FetchData(&nodeonpattyn,NULL,NULL,FlowequationBorderpattynEnum);
-	if(dim==3)iomodel->FetchData(&nodeonstokes,NULL,NULL,FlowequationBorderstokesEnum);
-	if(dim==3)iomodel->FetchData(&nodeonbed,NULL,NULL,MeshVertexonbedEnum);
-	if(dim==3)iomodel->FetchData(&nodeonicesheet,NULL,NULL,MaskVertexongroundediceEnum);
+	if(iomodel->dim==3)iomodel->FetchData(&nodeonpattyn,NULL,NULL,FlowequationBorderpattynEnum);
+	if(iomodel->dim==3)iomodel->FetchData(&nodeonstokes,NULL,NULL,FlowequationBorderstokesEnum);
+	if(iomodel->dim==3)iomodel->FetchData(&nodeonbed,NULL,NULL,MeshVertexonbedEnum);
+	if(iomodel->dim==3)iomodel->FetchData(&nodeonicesheet,NULL,NULL,MaskVertexongroundediceEnum);
 	iomodel->FetchData(&vertices_type,NULL,NULL,FlowequationVertexEquationEnum);
 	iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum);
@@ -295,5 +293,5 @@
 
 			/*Constraint at the bedrock interface (v.n = vz = 0) (Coordinates will be updated according to the bed slope)*/
-			if (dim==3) if(reCast<int,IssmDouble>(nodeonbed[i]) && reCast<int,IssmDouble>(nodeonicesheet[i]) && reCast<int,IssmDouble>(nodeonstokes[i])){
+			if (iomodel->dim==3) if(reCast<int,IssmDouble>(nodeonbed[i]) && reCast<int,IssmDouble>(nodeonicesheet[i]) && reCast<int,IssmDouble>(nodeonstokes[i])){
 				 switch(reCast<int,IssmDouble>(vertices_type[i])){
 					case MacAyealStokesApproximationEnum:
@@ -320,8 +318,8 @@
 	iomodel->DeleteData(spcvz,DiagnosticSpcvzEnum);
 	iomodel->DeleteData(nodeonmacayeal,FlowequationBordermacayealEnum);
-	if(dim==3)iomodel->DeleteData(nodeonpattyn,FlowequationBorderpattynEnum);
-	if(dim==3)iomodel->DeleteData(nodeonstokes,FlowequationBorderstokesEnum);
-	if(dim==3)iomodel->DeleteData(nodeonbed,MeshVertexonbedEnum);
-	if(dim==3)iomodel->DeleteData(nodeonicesheet,MaskVertexongroundediceEnum);
+	if(iomodel->dim==3)iomodel->DeleteData(nodeonpattyn,FlowequationBorderpattynEnum);
+	if(iomodel->dim==3)iomodel->DeleteData(nodeonstokes,FlowequationBorderstokesEnum);
+	if(iomodel->dim==3)iomodel->DeleteData(nodeonbed,MeshVertexonbedEnum);
+	if(iomodel->dim==3)iomodel->DeleteData(nodeonicesheet,MaskVertexongroundediceEnum);
 	iomodel->DeleteData(vertices_type,FlowequationVertexEquationEnum);
 	iomodel->DeleteData(surface,SurfaceEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 15423)
@@ -19,5 +19,4 @@
 	int count=0;
 	int penpair_ids[2];
-	int dim;
 	int numberofvertices;
 	bool ismacayealpattyn,isstokes,isl1l2;
@@ -34,5 +33,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
 	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
@@ -66,5 +64,5 @@
 
 		/*Retrieve element to which this icefront belongs: */
-		if (dim==2) segment_width=4; 
+		if(iomodel->dim==2) segment_width=4; 
 		else segment_width=6;
 		element=reCast<int,IssmDouble>(*(pressureload+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)
@@ -77,9 +75,9 @@
 
 		/*Create and  add load: */
-		if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealApproximationEnum) && dim==2){
+		if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealApproximationEnum) && iomodel->dim==2){
 			loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal2dIceFrontEnum,DiagnosticHorizAnalysisEnum));
 			count++;
 		}
-		else if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealApproximationEnum) && dim==3){
+		else if (reCast<int,IssmDouble>(*(elements_type+element))==(MacAyealApproximationEnum) && iomodel->dim==3){
 			loads->AddObject(new Icefront(iomodel->loadcounter+count+1,i,iomodel,MacAyeal3dIceFrontEnum,DiagnosticHorizAnalysisEnum));
 			count++;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 15423)
@@ -16,5 +16,5 @@
 void	UpdateElementsDiagnosticHoriz(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim,materials_type;
+	int    materials_type;
 	int    numberofelements;
 	bool   ismacayealpattyn;
@@ -28,5 +28,4 @@
 	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
 	iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&control_analysis,InversionIscontrolEnum);
@@ -69,5 +68,5 @@
 		iomodel->FetchDataToInput(elements,MaterialsRheologyZEnum);
 	}
-	if (dim==3){
+	if(iomodel->dim==3){
 		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
@@ -97,5 +96,5 @@
 	if(dakota_analysis)elements->InputDuplicate(VyEnum,QmuVyEnum);
 
-	if(dim==3){
+	if(iomodel->dim==3){
 		elements->InputDuplicate(VzEnum,VzPicardEnum);
 		elements->InputDuplicate(VzEnum,InversionVzObsEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp	(revision 15423)
@@ -12,5 +12,4 @@
 	/*Intermediary*/
 	int i;
-	int dim;
 	int count;
 	IssmDouble yts;
@@ -18,5 +17,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&yts,ConstantsYtsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -29,5 +27,5 @@
 
 	/*return if 2d mesh*/
-	if(dim==2){
+	if(iomodel->dim==2){
 		*pconstraints=constraints;
 		return;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp	(revision 15423)
@@ -14,9 +14,7 @@
 	int i;
 	bool continuous_galerkin=true;
-	int    dim;
 	int    numberofvertices;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
 
@@ -28,5 +26,5 @@
 
 	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
-	if (dim==2){
+	if(iomodel->dim==2){
 		*pnodes=nodes;
 		return;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp	(revision 15423)
@@ -11,13 +11,11 @@
 void	UpdateElementsDiagnosticVert(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if (iomodel->dim==2)return;
+
 	int    numberofelements;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
-
-	/*Now, is the model 3d? otherwise, do nothing: */
-	if (dim==2)return;
 
 	/*Fetch data needed: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 15423)
@@ -38,5 +38,4 @@
 	int  elements_width; //number of columns in elements (2d->3, 3d->6)
 	int  el1,el2;
-	int    dim;
 	IssmDouble* elements=NULL;
 	IssmDouble* elements2d=NULL;
@@ -49,5 +48,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -61,18 +59,15 @@
 
 	/*Number of vertices per elements, needed to correctly retrieve data: */
-	if(dim==2) elements_width=3; //tria elements
-	else elements_width=6; //penta elements
-
 	/*Determine parallel partitioning of elements: we use Metis for now. First load the data, then partition*/
-	if(dim==2){
-		/*load elements: */
+	if(iomodel->dim==2){
+		elements_width=3; //tria elements
 		iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum);
 	}
 	else{
-		/*load elements2d: */
+		elements_width=6; //penta elements
 		iomodel->FetchData(&elements2d,NULL,NULL,MeshElements2dEnum);
 	}
 
-	MeshPartitionx(&epart, &npart,numberofelements,numberofvertices,elements, numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width, dim,num_procs);
+	MeshPartitionx(&epart, &npart,numberofelements,numberofvertices,elements, numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width,iomodel->dim,num_procs);
 
 	/*Free elements and elements2d: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp	(revision 15423)
@@ -13,5 +13,4 @@
 	int    i,j;
 	int    count;
-	int    dim;
 	int    M,N;
 	int    numberofvertices;
@@ -26,5 +25,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
 	iomodel->Constant(&heatcapacity,MaterialsHeatcapacityEnum);
@@ -38,5 +36,5 @@
 
 	/*return if 2d mesh*/
-	if (dim==2){
+	if (iomodel->dim==2){
 		*pconstraints=constraints;
 		return;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp	(revision 15423)
@@ -11,13 +11,11 @@
 void	UpdateElementsEnthalpy(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if(dim==2)return;
+	if(iomodel->dim==2)return;
 
 	/*Fetch data needed: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Gia/UpdateElementsGia.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Gia/UpdateElementsGia.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Gia/UpdateElementsGia.cpp	(revision 15423)
@@ -11,9 +11,7 @@
 void	UpdateElementsGia(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp	(revision 15423)
@@ -10,11 +10,9 @@
 
 	/*Intermediary*/
-	int dim;
 	int numberofvertices;
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
 
 	/*if 2d: Error*/
-	if (dim==2) _error_("2d meshes not supported yet");
+	if(iomodel->dim==2) _error_("2d meshes not supported yet");
 
 	/*Recover pointer: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 15423)
@@ -11,13 +11,11 @@
 void	UpdateElementsMelting(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if (dim==2)return;
+	if(iomodel->dim==2)return;
 
 	/*Fetch data needed: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 15423)
@@ -15,5 +15,5 @@
 void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters, FILE* IOMODEL,char* rootpath,const int solution_type,const int nummodels,const int* analysis_type_list){
 
-	int   i,analysis_type,dim,verbose;
+	int   i,analysis_type,verbose;
 	bool  isthermal,isprognostic,isdiagnostic,isgroundingline,isenthalpy;
 
@@ -31,5 +31,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&verbose,VerboseEnum);
 	iomodel->Constant(&isthermal,TransientIsthermalEnum);
@@ -48,7 +47,7 @@
 
 		/*Hack for trasient runs (FIXME: to be improved)*/
-		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && dim==2) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && dim==2) continue;
-		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && dim==2) continue;
+		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum  && iomodel->dim==2) continue;
+		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum  && iomodel->dim==2) continue;
+		if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && iomodel->dim==2) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue;
 		if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isthermal==false) continue;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 15423)
@@ -59,11 +59,8 @@
 	 * ids. */
 
-	int i,j;
-	int    dim;
-
 	/*output: */
 	bool*   my_nodes=NULL;
 
-	int  i1,i2;
+	int  i,i1,i2;
 	int  cols;
 	int  e1,e2;
@@ -72,7 +69,4 @@
 	int *edges         = NULL;
 	int *elements      = NULL;
-
-	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 
 	/*Build discontinuous node partitioning
@@ -89,5 +83,5 @@
 
 	/*First: add all the nodes of all the elements belonging to this cpu*/
-	if (dim==2){
+	if (iomodel->dim==2){
 		for (i=0;i<numberofelements;i++){
 			if (my_elements[i]){
@@ -129,5 +123,5 @@
 			/*2: Get the column where these ids are located in the index*/
 			pos=UNDEF;
-			for(j=0;j<3;j++){
+			for(int j=0;j<3;j++){
 				if (elements[3*e2+j]==i1) pos=j;
 			}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 15423)
@@ -17,5 +17,4 @@
 	int  io_index;
 	bool continuous_galerkin=true;
-	int  dim;
 	int    numberofelements;
 	int    numberofvertices;
@@ -23,5 +22,4 @@
 
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
@@ -39,5 +37,5 @@
 
 	/*Check in 3d*/
-	if(stabilization==3 && dim==3) _error_("DG 3d not implemented yet");
+	if(stabilization==3 && iomodel->dim==3) _error_("DG 3d not implemented yet");
 
 	/*First fetch data: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 15423)
@@ -11,5 +11,4 @@
 void	UpdateElementsPrognostic(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 	int    stabilization;
@@ -20,5 +19,4 @@
 
 	/*Fetch data needed: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
@@ -63,5 +61,5 @@
 	}
 
-	if (dim==3){
+	if(iomodel->dim==3){
 		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp	(revision 15423)
@@ -11,9 +11,7 @@
 void	UpdateElementsSurfaceSlope(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 
 	/*Fetch data needed: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->FetchData(1,MeshElementsEnum);
@@ -33,5 +31,5 @@
 	iomodel->FetchDataToInput(elements,MaskElementonwaterEnum);
 
-	if (dim==3){
+	if(iomodel->dim==3){
 		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp	(revision 15423)
@@ -11,8 +11,4 @@
 void	CreateConstraintsThermal(Constraints** pconstraints, IoModel* iomodel){
 
-	/*Fetch parameters: */
-	int    dim;
-	iomodel->Constant(&dim,MeshDimensionEnum);
-
 	/*Recover pointer: */
 	Constraints* constraints=*pconstraints;
@@ -22,5 +18,5 @@
 
 	/*Only 3d mesh supported*/
-	if (dim==3){
+	if(iomodel->dim==3){
 		IoModelToConstraintsx(constraints,iomodel,ThermalSpctemperatureEnum,ThermalAnalysisEnum);
 	}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp	(revision 15423)
@@ -10,5 +10,4 @@
 
 	/*Intermediary*/
-	int      dim;
 	int      numberofvertices;
 	Pengrid *pengrid          = NULL;
@@ -17,13 +16,11 @@
 	Loads* loads=*ploads;
 
+	if(iomodel->dim==2) _error_("2d meshes not supported yet");
+
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
 
 	/*Create loads if they do not exist yet*/
 	if(!loads) loads = new Loads();
-
-	/*return if 2d mesh*/
-	if (dim==2) _error_("2d meshes not supported yet");
 
 	//create penalties for nodes: no node can have a temperature over the melting point
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 15422)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 15423)
@@ -11,15 +11,13 @@
 void	UpdateElementsThermal(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    dim;
 	int    numberofelements;
 	bool   dakota_analysis;
 
+	/*Now, is the model 3d? otherwise, do nothing: */
+	if(iomodel->dim==2)return;
+
 	/*Fetch parameters: */
-	iomodel->Constant(&dim,MeshDimensionEnum);
 	iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
-
-	/*Now, is the model 3d? otherwise, do nothing: */
-	if (dim==2)return;
 
 	/*Fetch data needed: */
