Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 18674)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 18675)
@@ -433,18 +433,35 @@
 			break;
 
-		case SteadystateSolutionEnum:
+		case SteadystateSolutionEnum:{
+			bool isSIA,isenthalpy;
+			iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
+			iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);
 			analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
 			analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
-			analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			if(isSIA){
+				analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			}
+			if(isenthalpy){
+				analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+			}
+			else{
+				analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+				analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
 			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
-			analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
-			analyses_temp[numanalyses++]=ThermalAnalysisEnum;
-			analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
 			break;
 
-		case ThermalSolutionEnum:
-			analyses_temp[numanalyses++]=ThermalAnalysisEnum;
-			analyses_temp[numanalyses++]=MeltingAnalysisEnum;
-			analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+		case ThermalSolutionEnum:{
+			bool isenthalpy;
+			iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);
+			if(isenthalpy){
+				analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+			}
+			else{
+				analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+				analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+			}
+			}
 			break;
 
@@ -495,5 +512,5 @@
 			break;
 
-		case TransientSolutionEnum:
+		case TransientSolutionEnum:{
 			bool isSIA,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage;
 			iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
@@ -547,4 +564,5 @@
 			}
 			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
 			break;
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 18674)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 18675)
@@ -16,5 +16,4 @@
 
 	int   i,analysis_enum,verbose;
-	bool  isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy,islevelset,isdamage,ishydrology;
 
 	/*Initialize datasets*/
@@ -29,13 +28,4 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&verbose,VerboseEnum);
-	iomodel->Constant(&isthermal,TransientIsthermalEnum);
-	iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
-	iomodel->Constant(&ismasstransport,TransientIsmasstransportEnum);
-	iomodel->Constant(&isstressbalance,TransientIsstressbalanceEnum);
-	iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
-	iomodel->Constant(&isdamage,TransientIsdamageevolutionEnum);
-	iomodel->Constant(&ishydrology,TransientIshydrologyEnum);
-
 	SetVerbosityLevel(verbose);
 
@@ -55,11 +45,4 @@
 		analysis_enum=analysis_enum_list[i];
 		parameters->AddObject(new IntParam(AnalysisCounterEnum,i));
-
-		/*Hack for trasient runs (FIXME: to be improved)*/
-
-		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_enum) << "\n");
