Index: /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/CreateDataSets.cpp	(revision 1648)
@@ -14,4 +14,5 @@
 #include "./Model.h"
 #include "../shared/shared.h"
+#include "../EnumDefinitions/EnumDefinitions.h"
 
 
@@ -24,7 +25,7 @@
 
 	/*This is just a high level driver: */
-	if (strcmp(model->analysis_type,"control")==0){
+	if (model->analysis_type==ControlAnalysisEnum()){
 
-		if (strcmp(model->sub_analysis_type,"horiz")==0){
+		if (model->sub_analysis_type==HorizAnalysisEnum()){
 
 			CreateElementsNodesAndMaterialsDiagnosticHoriz(pelements,pnodes,pmaterials, model,model_handle);
@@ -34,5 +35,5 @@
 
 		}
-		else if (strcmp(model->sub_analysis_type,"vert")==0){
+		else if (model->sub_analysis_type==VertAnalysisEnum()){
 
 			CreateElementsNodesAndMaterialsDiagnosticVert(pelements,pnodes,pmaterials, model,model_handle);
@@ -41,5 +42,5 @@
 
 		}
-		else if (strcmp(model->sub_analysis_type,"stokes")==0){
+		else if (model->sub_analysis_type==StokesAnalysisEnum()){
 
 			CreateElementsNodesAndMaterialsDiagnosticStokes(pelements,pnodes,pmaterials, model,model_handle);
@@ -49,5 +50,5 @@
 
 		}
-		else if (strcmp(model->sub_analysis_type,"hutter")==0){
+		else if (model->sub_analysis_type==HutterAnalysisEnum()){
 
 			CreateElementsNodesAndMaterialsDiagnosticHutter(pelements,pnodes,pmaterials, model,model_handle);
@@ -59,7 +60,7 @@
 
 	}
-	else if (strcmp(model->analysis_type,"diagnostic")==0){
+	else if (model->analysis_type==DiagnosticAnalysisEnum()){
 
-		if (strcmp(model->sub_analysis_type,"horiz")==0){
+		if (model->sub_analysis_type==HorizAnalysisEnum()){
 			
 			CreateElementsNodesAndMaterialsDiagnosticHoriz(pelements,pnodes,pmaterials, model,model_handle);
@@ -69,5 +70,5 @@
 				
 		}
-		else if (strcmp(model->sub_analysis_type,"vert")==0){
+		else if (model->sub_analysis_type==VertAnalysisEnum()){
 		
 			CreateElementsNodesAndMaterialsDiagnosticVert(pelements,pnodes,pmaterials, model,model_handle);
@@ -76,5 +77,5 @@
 			
 		}
-		else if (strcmp(model->sub_analysis_type,"stokes")==0){
+		else if (model->sub_analysis_type==StokesAnalysisEnum()){
 
 			CreateElementsNodesAndMaterialsDiagnosticStokes(pelements,pnodes,pmaterials, model,model_handle);
@@ -83,5 +84,5 @@
 			
 		}
-		else if (strcmp(model->sub_analysis_type,"hutter")==0){
+		else if (model->sub_analysis_type==HutterAnalysisEnum()){
 
 			CreateElementsNodesAndMaterialsDiagnosticHutter(pelements,pnodes,pmaterials, model,model_handle);
@@ -91,5 +92,5 @@
 		}
 	}
-	else if (strcmp(model->analysis_type,"slope_compute")==0){
+	else if (model->analysis_type==SlopeComputeAnalysisEnum()){
 
 		CreateElementsNodesAndMaterialsSlopeCompute(pelements,pnodes,pmaterials, model,model_handle);
@@ -98,5 +99,5 @@
 	
 	}
-	else if (strcmp(model->analysis_type,"thermal")==0){
+	else if (model->analysis_type==ThermalAnalysisEnum()){
 
 		CreateElementsNodesAndMaterialsThermal(pelements,pnodes,pmaterials, model,model_handle);
@@ -106,5 +107,5 @@
 					
 	}
-	else if (strcmp(model->analysis_type,"melting")==0){
+	else if (model->analysis_type==MeltingAnalysisEnum()){
 			
 		CreateElementsNodesAndMaterialsMelting(pelements,pnodes,pmaterials, model,model_handle);
@@ -113,5 +114,5 @@
 		CreateParametersMelting(pparameters,model,model_handle);
 	}
-	else if (strcmp(model->analysis_type,"prognostic")==0){
+	else if (model->analysis_type==PrognosticAnalysisEnum()){
 
 		CreateElementsNodesAndMaterialsPrognostic(pelements,pnodes,pmaterials, model,model_handle);
@@ -122,5 +123,5 @@
 	}
 	else{
-		throw ErrorException(__FUNCT__,exprintf("%s%s%s%s"," analysis_type: ",model->analysis_type," sub_analysis_type: ",model->sub_analysis_type," not supported yet!"));
+		throw ErrorException(__FUNCT__,exprintf("%s%i%s%i%s"," analysis_type: ",model->analysis_type," sub_analysis_type: ",model->sub_analysis_type," not supported yet!"));
 	}
 			
Index: /issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/CreateParameters.cpp	(revision 1648)
@@ -21,6 +21,4 @@
 	Param*   param = NULL;
 	int      count=1;
-	int      analysis_type;
-	int      sub_analysis_type;
 	int      numberofdofspernode;
 	int      dim;
@@ -29,17 +27,14 @@
 	/*Initialize dataset: */
 	parameters   = new DataSet(ParametersEnum());
-
-	//Get analysis_type:
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-	
+	
+	//analysis and subanalysis
 	count++;
 	param= new Param(count,"analysis_type",INTEGER);
-	param->SetInteger(analysis_type);
+	param->SetInteger(model->analysis_type);
 	parameters->AddObject(param);
 
 	count++;
 	param= new Param(count,"sub_analysis_type",INTEGER);
-	param->SetInteger(sub_analysis_type);
+	param->SetInteger(model->sub_analysis_type);
 	parameters->AddObject(param);
 
@@ -196,5 +191,5 @@
 
 	/*Deal with numberofdofspernode: */
-	DistributeNumDofs(&numberofdofspernode,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&numberofdofspernode,model->analysis_type,model->sub_analysis_type);
 
 	count++;
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 1648)
@@ -37,7 +37,4 @@
 	Matpar*     matpar  = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -154,9 +151,4 @@
 	if (!model->ismacayealpattyn)goto cleanup_and_return;
 
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
-	
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0){
@@ -583,5 +575,5 @@
 
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp	(revision 1648)
@@ -39,7 +39,4 @@
 	Sing*       sing   = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -118,8 +115,4 @@
 	if (!model->ishutter)goto cleanup_and_return;
 
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0){
@@ -374,5 +367,5 @@
 	
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 1648)
@@ -37,7 +37,4 @@
 	Matpar*     matpar  = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -129,8 +126,4 @@
 	if (!model->isstokes)goto cleanup_and_return;
 
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0){
@@ -413,5 +406,5 @@
 
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp	(revision 1648)
@@ -36,7 +36,4 @@
 	Matpar*     matpar  = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -138,8 +135,4 @@
 	if (strcmp(model->meshtype,"2d")==0)goto cleanup_and_return;
 
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
 	#ifdef _PARALLEL_
 	/*Determine parallel partitioning of elements: we use Metis for now. First load the data, then partition*/
@@ -331,5 +324,5 @@
 	
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp	(revision 1648)
@@ -35,7 +35,4 @@
 	Matice*     matice  = NULL;
 	Matpar*     matpar  = NULL;
-
-	int         analysis_type;
-	int         sub_analysis_type;
 	
 	/*output: */
@@ -125,8 +122,4 @@
 	materials = new DataSet(MaterialsEnum());
 
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-	
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0)throw ErrorException(__FUNCT__," error message: 2d temperature computations not supported yet!");
@@ -378,5 +371,5 @@
 
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp	(revision 1648)
@@ -28,5 +28,5 @@
 
 	/* get initial melting if transient*/
-	if(strcmp(model->sub_analysis_type,"transient")==0){
+	if(model->sub_analysis_type==TransientAnalysisEnum()){
 
 		/*Get melting: */
Index: /issm/trunk/src/c/ModelProcessorx/Model.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Model.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Model.cpp	(revision 1648)
@@ -35,6 +35,6 @@
 	model->repository=NULL;
 	model->meshtype=NULL;
-	model->analysis_type=NULL;
-	model->sub_analysis_type=NULL;
+	model->analysis_type=0;
+	model->sub_analysis_type=0;
 	model->qmu_analysis=0;
 	model->solverstring=NULL;
@@ -265,6 +265,4 @@
 	xfree((void**)&model->meshtype);
 	xfree((void**)&model->name);
-	xfree((void**)&model->analysis_type);
-	xfree((void**)&model->sub_analysis_type);
 	
 	xfree((void**)&model->riftinfo);
@@ -303,10 +301,8 @@
 
 	/*In ModelInit, we get all the data that is not difficult to get, and that is small: */
-
 	ModelFetchData((void**)&model->name,NULL,NULL,model_handle,"name","String",NULL); 
-	ModelFetchData((void**)&model->analysis_type,NULL,NULL,model_handle,"analysis_type","String",NULL); 
-	ModelFetchData((void**)&model->sub_analysis_type,NULL,NULL,model_handle,"sub_analysis_type","String",NULL); 
+	ModelFetchData((void**)&model->analysis_type,NULL,NULL,model_handle,"analysis_type","Integer",NULL); 
+	ModelFetchData((void**)&model->sub_analysis_type,NULL,NULL,model_handle,"sub_analysis_type","Integer",NULL); 
 	ModelFetchData((void**)&model->qmu_analysis,NULL,NULL,model_handle,"qmu_analysis","Integer",NULL); 
-
 	ModelFetchData((void**)&model->meshtype,NULL,NULL,model_handle,"type","String",NULL);
 	/*!Get numberofelements and numberofnodes: */
Index: /issm/trunk/src/c/ModelProcessorx/Model.h
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Model.h	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Model.h	(revision 1648)
@@ -16,6 +16,6 @@
 	char*   repository;
 	char*   meshtype;
-	char*   analysis_type;
-	char*   sub_analysis_type;
+	int     analysis_type;
+	int     sub_analysis_type;
 	int     qmu_analysis;
 	char*   solverstring;
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp	(revision 1648)
@@ -37,7 +37,4 @@
 	Matpar*     matpar  = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -148,10 +145,4 @@
 	materials = new DataSet(MaterialsEnum());
 
-
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
-	
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0){
@@ -450,5 +441,5 @@
 
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp	(revision 1648)
@@ -35,7 +35,4 @@
 	Penta*      penta = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -129,8 +126,4 @@
 	if (!model->isstokes & !model->ishutter)goto cleanup_and_return;
 
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0){
@@ -389,5 +382,5 @@
 
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 1648)
@@ -37,7 +37,4 @@
 	Matpar*     matpar  = NULL;
 
-	int         analysis_type;
-	int         sub_analysis_type;
-	
 	/*output: */
 	int* epart=NULL; //element partitioning.
@@ -126,9 +123,4 @@
 	materials = new DataSet(MaterialsEnum());
 
-
-	/*Get analysis_type: */
-	analysis_type=AnalysisTypeAsEnum(model->analysis_type);
-	sub_analysis_type=AnalysisTypeAsEnum(model->sub_analysis_type);
-
 	/*Width of elements: */
 	if(strcmp(model->meshtype,"2d")==0){
@@ -380,5 +372,5 @@
 
 	/*Get number of dofs per node: */
-	DistributeNumDofs(&node_numdofs,analysis_type,sub_analysis_type);
+	DistributeNumDofs(&node_numdofs,model->analysis_type,model->sub_analysis_type);
 
 	for (i=0;i<model->numberofnodes;i++){
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 1647)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp	(revision 1648)
@@ -66,5 +66,5 @@
 
 	/* get initial temperature and melting if transient*/
-	if(strcmp(model->sub_analysis_type,"transient")==0){
+	if(model->sub_analysis_type==TransientAnalysisEnum()){
 
 		/*Get melting and temperature: */
Index: /issm/trunk/src/c/parallel/CreateFemModel.cpp
===================================================================
--- /issm/trunk/src/c/parallel/CreateFemModel.cpp	(revision 1647)
+++ /issm/trunk/src/c/parallel/CreateFemModel.cpp	(revision 1648)
@@ -10,5 +10,5 @@
 #include "../issm.h"
 
-void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,char* analysis_type,char* sub_analysis_type){
+void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,int analysis_type,int sub_analysis_type){
 
 	/*Model output: */
@@ -36,9 +36,9 @@
 
 	_printf_("   specifying analysis\n");
-	if (analysis_type!=NULL){
-		model->analysis_type=(char*)xmalloc((strlen(analysis_type)+1)*sizeof(char)); strcpy(model->analysis_type,analysis_type);
+	if (analysis_type!=0){
+		model->analysis_type=analysis_type;
 	}
-	if (sub_analysis_type!=NULL){
-		model->sub_analysis_type=(char*)xmalloc((strlen(sub_analysis_type)+1)*sizeof(char)); strcpy(model->sub_analysis_type,sub_analysis_type);
+	if (sub_analysis_type!=0){
+		model->sub_analysis_type=sub_analysis_type;
 	}
 
Index: /issm/trunk/src/c/parallel/control.cpp
===================================================================
--- /issm/trunk/src/c/parallel/control.cpp	(revision 1647)
+++ /issm/trunk/src/c/parallel/control.cpp	(revision 1648)
@@ -64,13 +64,13 @@
 	_printf_("read and create finite element model:\n");
 	_printf_("\n   reading control horiz model data:\n");
-	CreateFemModel(&femmodels[0],fid,"control","horiz");
+	CreateFemModel(&femmodels[0],fid,ControlAnalysisEnum(),HorizAnalysisEnum());
 	_printf_("\n   reading control vert model data:\n");
-	CreateFemModel(&femmodels[1],fid,"control","vert");
+	CreateFemModel(&femmodels[1],fid,ControlAnalysisEnum(),VertAnalysisEnum());
 	_printf_("\n   reading control stokes model data:\n");
-	CreateFemModel(&femmodels[2],fid,"control","stokes");
+	CreateFemModel(&femmodels[2],fid,ControlAnalysisEnum(),StokesAnalysisEnum());
 	_printf_("\n   reading control hutter model data:\n");
-	CreateFemModel(&femmodels[3],fid,"control","hutter");
+	CreateFemModel(&femmodels[3],fid,ControlAnalysisEnum(),HutterAnalysisEnum());
 	_printf_("\n   reading surface and bed slope computation model data:\n");
-	CreateFemModel(&femmodels[4],fid,"slope_compute","");
+	CreateFemModel(&femmodels[4],fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());
 
 	_printf_("initialize inputs:\n");
Index: /issm/trunk/src/c/parallel/diagnostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 1647)
+++ /issm/trunk/src/c/parallel/diagnostic.cpp	(revision 1648)
@@ -61,14 +61,13 @@
 	_printf_("read and create finite element model:\n");
 	_printf_("\n   reading diagnostic horiz model data:\n");
-	CreateFemModel(&femmodels[0],fid,"diagnostic","horiz");
+	CreateFemModel(&femmodels[0],fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 	_printf_("\n   reading diagnostic vert model data:\n");
-	CreateFemModel(&femmodels[1],fid,"diagnostic","vert");
+	CreateFemModel(&femmodels[1],fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());
 	_printf_("\n   reading diagnostic stokes model data:\n");
-	CreateFemModel(&femmodels[2],fid,"diagnostic","stokes");
+	CreateFemModel(&femmodels[2],fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
 	_printf_("\n   reading diagnostic hutter model data:\n");
-	CreateFemModel(&femmodels[3],fid,"diagnostic","hutter");
+	CreateFemModel(&femmodels[3],fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());
 	_printf_("\n   reading surface and bed slope computation model data:\n");
-	CreateFemModel(&femmodels[4],fid,"slope_compute","");
-
+	CreateFemModel(&femmodels[4],fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());
 
 	_printf_("initialize inputs:\n");
Index: /issm/trunk/src/c/parallel/parallel.h
===================================================================
--- /issm/trunk/src/c/parallel/parallel.h	(revision 1647)
+++ /issm/trunk/src/c/parallel/parallel.h	(revision 1648)
@@ -43,5 +43,5 @@
 void ControlTemporaryResults(FemModel* fems,double* param_g,double* J,int n,ParameterInputs* inputs);
 
-void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,char* analysis_type,char* sub_analysis_type);
+void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,int analysis_type,int sub_analysis_type);
 //int BatchDebug(Mat* Kgg,Vec* pg,FemModel* femmodel,char* filename);
 void ProcessResults(DataSet** presults,FemModel* fems,int analysis_type);
Index: /issm/trunk/src/c/parallel/prognostic.cpp
===================================================================
--- /issm/trunk/src/c/parallel/prognostic.cpp	(revision 1647)
+++ /issm/trunk/src/c/parallel/prognostic.cpp	(revision 1648)
@@ -65,5 +65,5 @@
 
 	_printf_("read and create finite element model:\n");
-	CreateFemModel(&fem,fid,"prognostic","");
+	CreateFemModel(&fem,fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());
 
 	//retrieve parameters used to fill inputs
Index: /issm/trunk/src/c/parallel/thermal.cpp
===================================================================
--- /issm/trunk/src/c/parallel/thermal.cpp	(revision 1647)
+++ /issm/trunk/src/c/parallel/thermal.cpp	(revision 1648)
@@ -64,7 +64,7 @@
 
 	_printf_("read and create thermal finite element model:\n");
-	CreateFemModel(&femmodels[0],fid,"thermal",NULL);
+	CreateFemModel(&femmodels[0],fid,ThermalAnalysisEnum(),0);
 	_printf_("read and create melting finite element model:\n");
-	CreateFemModel(&femmodels[1],fid,"melting",NULL);
+	CreateFemModel(&femmodels[1],fid,MeltingAnalysisEnum(),0);
 
 	_printf_("initialize inputs:\n");
Index: /issm/trunk/src/c/parallel/transient.cpp
===================================================================
--- /issm/trunk/src/c/parallel/transient.cpp	(revision 1647)
+++ /issm/trunk/src/c/parallel/transient.cpp	(revision 1648)
@@ -66,15 +66,15 @@
 	_printf_("read and create finite element model:\n");
 	_printf_("\n   reading diagnostic horiz model data:\n");
-	CreateFemModel(&femmodels[0],fid,"diagnostic","horiz");
+	CreateFemModel(&femmodels[0],fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 	_printf_("\n   reading diagnostic vert model data:\n");
-	CreateFemModel(&femmodels[1],fid,"diagnostic","vert");
+	CreateFemModel(&femmodels[1],fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());
 	_printf_("\n   reading diagnostic stokes model data:\n");
-	CreateFemModel(&femmodels[2],fid,"diagnostic","stokes");
+	CreateFemModel(&femmodels[2],fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
 	_printf_("\n   reading diagnostic hutter model data:\n");
-	CreateFemModel(&femmodels[3],fid,"diagnostic","hutter");
+	CreateFemModel(&femmodels[3],fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());
 	_printf_("\n   reading surface and bed slope computation model data:\n");
-	CreateFemModel(&femmodels[4],fid,"slope_compute","");
+	CreateFemModel(&femmodels[4],fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());
 	_printf_("\n   reading prognositc model data:\n");
-	CreateFemModel(&femmodels[5],fid,"prognostic","");
+	CreateFemModel(&femmodels[5],fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());
 	
 	/*Do we run in 3d?, in which case we need thermal and melting also:*/
@@ -82,7 +82,7 @@
 	if(dim==3){
 		_printf_("read and create thermal finite element model:\n");
-		CreateFemModel(&femmodels[6],fid,"thermal","transient");
+		CreateFemModel(&femmodels[6],fid,ThermalAnalysisEnum(),TransientAnalysisEnum());
 		_printf_("read and create melting finite element model:\n");
-		CreateFemModel(&femmodels[7],fid,"melting","transient");
+		CreateFemModel(&femmodels[7],fid,MeltingAnalysisEnum(),TransientAnalysisEnum());
 	}
 
