Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23514)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23515)
@@ -8,22 +8,13 @@
 #include "./ModelProcessorx.h"
 
-void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials,IoModel* iomodel,const int nummodels,int solution_type){
+void CreateElements(Elements* elements,IoModel* iomodel,const int nummodels){/*{{{*/
 
 	/*Intermediary*/
-	int i;
-	int materials_type;
 	bool control_analysis;
-	bool dakota_analysis;
 	bool adolc_analysis;
-	bool isoceancoupling;
-	int nnat,dummy;
-	int* nature=NULL;
 
 	/*Fetch parameters: */
 	iomodel->FindConstant(&control_analysis,"md.inversion.iscontrol");
-	iomodel->FindConstant(&dakota_analysis,"md.qmu.isdakota");
-	iomodel->FindConstant(&materials_type,"md.materials.type");
 	iomodel->FindConstant(&adolc_analysis,"md.autodiff.isautodiff");
-	iomodel->FindConstant(&isoceancoupling,"md.transient.isoceancoupling");
 
 	/*Did we already create the elements? : */
@@ -38,10 +29,10 @@
 	switch(iomodel->meshelementtype){
 		case TriaEnum:
-			for(i=0;i<iomodel->numberofelements;i++){
+			for(int i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]) elements->AddObject(new Tria(i+1,i,iomodel,nummodels));
 			}
 			break;
 		case TetraEnum:
-			for(i=0;i<iomodel->numberofelements;i++){
+			for(int i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]) elements->AddObject(new Tetra(i+1,i,iomodel,nummodels));
 			}
@@ -49,5 +40,5 @@
 		case PentaEnum:
 			iomodel->FetchData(2,"md.mesh.upperelements","md.mesh.lowerelements");
-			for(i=0;i<iomodel->numberofelements;i++){
+			for(int i=0;i<iomodel->numberofelements;i++){
 				if(iomodel->my_elements[i]) elements->AddObject(new Penta(i+1,i,iomodel,nummodels));
 			}
@@ -56,4 +47,21 @@
 			_error_("Mesh not supported yet");
 	}
+
+	/*Free data: */
+	iomodel->DeleteData(4,"md.mesh.upperelements","md.mesh.lowerelements","md.inversion.min_parameters","md.inversion.max_parameters");
+}/*}}}*/
+void CreateMaterials(Elements* elements,Materials* materials,IoModel* iomodel,const int nummodels){/*{{{*/
+
+	/*Intermediary*/
+	int  i;
+	int  nnat,dummy;
+	int* nature=NULL;
+
+	/*Fetch parameters: */
+	int materials_type;
+	iomodel->FindConstant(&materials_type,"md.materials.type");
+
+	/*Did we already create the materiaas? : */
+	_assert_(materials->Size()==0);
 
 	/*Create materials*/
@@ -223,10 +231,16 @@
 
 	/*Free data: */
-	iomodel->DeleteData(7,"md.mesh.upperelements","md.mesh.lowerelements","md.material.rheology_B","md.material.rheology_n","md.damage.D","md.inversion.min_parameters","md.inversion.max_parameters");
+	iomodel->DeleteData(3,"md.material.rheology_B","md.material.rheology_n","md.damage.D");
 
 	/*Add new constant material property to materials, at the end: */
 	materials->AddObject(new Matpar(iomodel));//put it at the end of the materials
 
-	/*Create vertices: */
+
+}/*}}}*/
+void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type){/*{{{*/
+
+	/*Fetch parameters: */
+	bool isoceancoupling;
+	iomodel->FindConstant(&isoceancoupling,"md.transient.isoceancoupling");
 
 	/*Fetch data:*/
@@ -239,5 +253,5 @@
 
 	int lid = 0;
-	for(i=0;i<iomodel->numberofvertices;i++){
+	for(int i=0;i<iomodel->numberofvertices;i++){
 		if(iomodel->my_vertices[i]) vertices->AddObject(new Vertex(i+1,i,lid++,i,iomodel));
 	}
@@ -247,3 +261,11 @@
 	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->DeleteData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
 	if (isoceancoupling) iomodel->DeleteData(2,"md.mesh.lat","md.mesh.long");
-}
+}/*}}}*/
+
+void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials,IoModel* iomodel,const int nummodels,int solution_type){/*{{{*/
+
+	CreateElements(elements,iomodel,nummodels);
+	CreateMaterials(elements,materials,iomodel,nummodels);
+	CreateVertices(elements,vertices,iomodel,solution_type);
+
+}/*}}}*/
