Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 16549)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 16550)
@@ -246,5 +246,4 @@
 					./modules/ModelProcessorx/EdgesPartitioning.cpp\
 					./modules/ModelProcessorx/FacesPartitioning.cpp\
-					./modules/ModelProcessorx/CreateDataSets.cpp\
 					./modules/ModelProcessorx/CreateParameters.cpp\
 					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp\
Index: sm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateDataSets.cpp	(revision 16549)
+++ 	(revision )
@@ -1,52 +1,0 @@
-/*!\file: CreateDataSets
- * \brief general driver for creating all datasets that make a finite element iomodel
- */ 
-
-#ifdef HAVE_CONFIG_H
-	#include <config.h>
-#else
-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
-#endif
-
-#include "../../classes/classes.h"
-#include "../../shared/shared.h"
-#include "../MeshPartitionx/MeshPartitionx.h"
-#include "./ModelProcessorx.h"
-
-void CreateDataSets(Elements* elements,Nodes* nodes, Vertices* vertices, Materials* materials,Constraints* constraints, Loads* loads,Parameters* parameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_enum,const int analysis_enum,const int nummodels,int analysis_counter){
-
-	/*Creates Nodes and constraints datasets if empty*/
-
-	/*Now, branch onto analysis dependent model generation: */
-	Analysis* analysis = EnumToAnalysis(analysis_enum);
-	analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
-	analysis->CreateNodes(nodes,iomodel);
-	analysis->CreateConstraints(constraints,iomodel);
-	analysis->CreateLoads(loads,iomodel);
-	analysis->UpdateElements(elements,iomodel,analysis_counter,analysis_enum);
-	delete analysis;
-
-	/*Update Elements and Materials For Inversions*/
-	#ifdef _HAVE_CONTROL_
-	UpdateElementsAndMaterialsControl(elements,materials,iomodel);
-	#endif
-
-	/*Update Elements and Materials For Dakota*/
-	#ifdef _HAVE_DAKOTA_
-	UpdateElementsAndMaterialsDakota(elements,materials,iomodel);
-	#endif
-
-	/*Update Elements in case we are running a transient solution: */
-	#ifdef _HAVE_TRANSIENT_
-	if(analysis_counter==(nummodels-1)&& solution_enum==TransientSolutionEnum){
-		UpdateElementsTransient(elements,parameters,iomodel,analysis_counter,analysis_enum);
-	}
-	#endif
-
-	/* Update counters, because we have created more nodes, loads and
-	 * constraints, and ids for objects created in next call to CreateDataSets
-	 * will need to start at the end of the updated counters: */
-	iomodel->nodecounter       = nodes->MaximumId();
-	iomodel->loadcounter       = loads->NumberOfLoads();
-	iomodel->constraintcounter = constraints->NumberOfConstraints();
-}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 16549)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 16550)
@@ -13,7 +13,7 @@
 #include "./ModelProcessorx.h"
 
-void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters, FILE* IOMODEL,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_type_list){
+void ModelProcessorx(Elements** pelements, Nodes** pnodes, Vertices** pvertices, Materials** pmaterials, Constraints** pconstraints, Loads** ploads, Parameters** pparameters, FILE* IOMODEL,FILE* toolkitfile, char* rootpath,const int solution_enum,const int nummodels,const int* analysis_enum_list){
 
-	int   i,analysis_type,verbose;
+	int   i,analysis_enum,verbose;
 	bool  isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy;
 
@@ -53,28 +53,55 @@
 	for(i=0;i<nummodels;i++){
 
-		analysis_type=analysis_type_list[i];
+		analysis_enum=analysis_enum_list[i];
 		parameters->AddObject(new IntParam(AnalysisCounterEnum,i));
 
 		/*Hack for trasient runs (FIXME: to be improved)*/
-		if(solution_enum==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isthermal==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isthermal==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==MasstransportAnalysisEnum && ismasstransport==false && isgroundingline==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==StressbalanceAnalysisEnum && isstressbalance==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==StressbalanceVerticalAnalysisEnum && isstressbalance==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_type==StressbalanceSIAAnalysisEnum && isstressbalance==false) continue;
-		if(solution_enum==SteadystateSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;
-		if(solution_enum==SteadystateSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
-		if(solution_enum==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum  && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && iomodel->meshtype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum && isthermal==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum && isthermal==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && isthermal==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && isenthalpy==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==MasstransportAnalysisEnum && ismasstransport==false && isgroundingline==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==StressbalanceAnalysisEnum && isstressbalance==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==StressbalanceVerticalAnalysisEnum && isstressbalance==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==StressbalanceSIAAnalysisEnum && isstressbalance==false) continue;
+		if(solution_enum==SteadystateSolutionEnum && analysis_enum==ThermalAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==SteadystateSolutionEnum && analysis_enum==MeltingAnalysisEnum && isenthalpy==true) continue;
+		if(solution_enum==SteadystateSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && isenthalpy==false) continue;
 
-		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_type) << "\n");
-		CreateDataSets(elements,nodes,vertices,materials,constraints,loads,parameters,iomodel,toolkitfile,rootpath,solution_enum,analysis_type,nummodels,i);
+		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_enum) << "\n");
+		Analysis* analysis = EnumToAnalysis(analysis_enum);
+		analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
+		analysis->CreateNodes(nodes,iomodel);
+		analysis->CreateConstraints(constraints,iomodel);
+		analysis->CreateLoads(loads,iomodel);
+		analysis->UpdateElements(elements,iomodel,i,analysis_enum);
+		delete analysis;
+
+
+		/* Update counters, because we have created more nodes, loads and
+		 * constraints, and ids for objects created in next call to CreateDataSets
+		 * will need to start at the end of the updated counters: */
+		iomodel->nodecounter       = nodes->MaximumId();
+		iomodel->loadcounter       = loads->NumberOfLoads();
+		iomodel->constraintcounter = constraints->NumberOfConstraints();
 	}
+
+	/*Solution specific updates*/
+	#ifdef _HAVE_CONTROL_
+	UpdateElementsAndMaterialsControl(elements,materials,iomodel);
+	#endif
+	#ifdef _HAVE_DAKOTA_
+	UpdateElementsAndMaterialsDakota(elements,materials,iomodel);
+	#endif
+	#ifdef _HAVE_TRANSIENT_
+	if(solution_enum==TransientSolutionEnum){
+		UpdateElementsTransient(elements,parameters,iomodel,analysis_enum);
+	}
+	#endif
 
 	/* Sort datasets:
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 16549)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 16550)
@@ -12,5 +12,4 @@
 
 /*Creation of fem datasets: general drivers*/
-void CreateDataSets(Elements* elements,Nodes* nodes,Vertices* vertices, Materials* materials, Constraints* constraints, Loads* loads,Parameters* parameters,IoModel* iomodel,FILE* toolkitfile,char* rootpath,const int solution_type,int analysis_type,const int nummodels,int analysis_counter);
 void CreateElementsVerticesAndMaterials(Elements* elements,Vertices* vertices,Materials* materials, IoModel* iomodel,const int nummodels);
 void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
@@ -21,5 +20,5 @@
 void UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel);
 void UpdateElementsAndMaterialsDakota(Elements* elements,Materials* materials, IoModel* iomodel);
-void UpdateElementsTransient(Elements* elements,Parameters* parameters,IoModel* iomodel,int analysis_counter,int analysis_type);
+void UpdateElementsTransient(Elements* elements,Parameters* parameters,IoModel* iomodel,int analysis_type);
 void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,int approximation=NoneApproximationEnum);
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 16549)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp	(revision 16550)
@@ -9,5 +9,5 @@
 #include "../ModelProcessorx.h"
 
-void	UpdateElementsTransient(Elements* elements, Parameters* parameters,IoModel* iomodel,int analysis_counter,int analysis_type){
+void	UpdateElementsTransient(Elements* elements, Parameters* parameters,IoModel* iomodel,int analysis_type){
 
 	bool isgroundingline;
