Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23581)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23582)
@@ -422,10 +422,2 @@
 	vertices->common_recv_ids=common_recv_ids;
 }/*}}}*/
-
-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);
-
-}/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 23581)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 23582)
@@ -101,22 +101,24 @@
 	}
 
-	/*We might have vertex_pairing in which case, some vertices have to be cloned:
-	 * penpair has 2 nodes that are poointing toward 2 vertices.
-	 * The 2 vertices must be in the same cpu as the penpair*/
-	int *vertex_pairing = NULL;
-	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
-	for(int i=0;i<numvertex_pairing;i++){
-		if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
-			my_vertices[vertex_pairing[2*i+1]-1]=true;
+	/*We might have vertex_pairing in which case, some vertices have to be
+	 * cloned: penpair has 2 nodes that are poointing toward 2 vertices.
+	 * The 2 vertices must be in the same cpu as the penpair (only do this in non AMR mode, i.e. fid!=NULL)*/
+	//if(!iomodel->dummy){
+		int *vertex_pairing = NULL;
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
+		for(int i=0;i<numvertex_pairing;i++){
+			if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
+				my_vertices[vertex_pairing[2*i+1]-1]=true;
+			}
 		}
-	}
-	xDelete<int>(vertex_pairing);
-	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
-	for(int i=0;i<numvertex_pairing;i++){
-		if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
-			my_vertices[vertex_pairing[2*i+1]-1]=true; 
+		xDelete<int>(vertex_pairing);
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+		for(int i=0;i<numvertex_pairing;i++){
+			if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
+				my_vertices[vertex_pairing[2*i+1]-1]=true; 
+			}
 		}
-	}
-	xDelete<int>(vertex_pairing);
+		xDelete<int>(vertex_pairing);
+	//}
 
 	/*Assign pointers to iomodel*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 23581)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 23582)
@@ -14,4 +14,5 @@
 
 void ModelProcessorx(Elements** pelements, Nodes*** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints*** pconstraints, Loads*** ploads, Parameters** pparameters,IoModel* iomodel,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_enum_list){
+	_assert_(nummodels>0);
 
 	/*Set Verbosity once for all*/
@@ -20,22 +21,17 @@
 	SetVerbosityLevel(verbose);
 
-	/*Some sanity checks*/
-	_assert_(nummodels>0);
+	if(VerboseMProcessor()) _printf0_("   starting model processor \n");
 
 	/*Initialize datasets*/
-	Elements    *elements    = new Elements();
-	Vertices    *vertices    = new Vertices();
-	Materials   *materials   = new Materials();
-	Parameters  *parameters  = new Parameters();
-
+	Elements    *elements     = new Elements();
+	Vertices    *vertices     = new Vertices();
+	Materials   *materials    = new Materials();
+	Parameters  *parameters   = new Parameters();
 	Constraints **constraints = xNew<Constraints*>(nummodels);
-	for(int i=0;i<nummodels;i++) constraints[i] = new Constraints();
-	Loads **loads = xNew<Loads*>(nummodels);
-	for(int i=0;i<nummodels;i++) loads[i] = new Loads();
-	Nodes **nodes = xNew<Nodes*>(nummodels);
-	for(int i=0;i<nummodels;i++) nodes[i] = new Nodes();
-
-
-	if(VerboseMProcessor()) _printf0_("   starting model processor \n");
+	Loads       **loads       = xNew<Loads*>(nummodels);
+	Nodes       **nodes       = xNew<Nodes*>(nummodels);
+	for(int i = 0;i<nummodels;i++) constraints[i] = new Constraints();
+	for(int i = 0;i<nummodels;i++) loads[i]       = new Loads();
+	for(int i = 0;i<nummodels;i++) nodes[i]       = new Nodes();
 
 	/*Partition Elements and Nodes*/
@@ -43,9 +39,10 @@
 
 	/*Create elements, vertices and materials, independent of analysis_enum: */
-	CreateElementsVerticesAndMaterials(elements,vertices,materials,iomodel,nummodels,solution_enum);
-
-	/*Create Parameters*/
+	CreateElements(elements,iomodel,nummodels);
+	CreateMaterials(elements,materials,iomodel,nummodels);
+	CreateVertices(elements,vertices,iomodel,solution_enum);
 	CreateParameters(parameters,iomodel,rootpath,toolkitfile,solution_enum);
 
+	/*Update datasets based on each analysis (and add nodes, constrains and loads)*/
 	for(int i=0;i<nummodels;i++){
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 23581)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 23582)
@@ -12,5 +12,7 @@
 
 /*Creation of fem datasets: general drivers*/
-void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials, IoModel* iomodel,const int nummodels,int solution_type);
+void CreateElements(Elements* elements,IoModel* iomodel,int nummodels);
+void CreateMaterials(Elements* elements,Materials* materials,IoModel* iomodel,int nummodels);
+void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type);
 void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
 void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel);
