Index: ../trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- ../trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 18674)
+++ ../trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 18675)
@@ -15,7 +15,6 @@
 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){
 
 	int   i,analysis_enum,verbose;
-	bool  isthermal,ismasstransport,isstressbalance,isgroundingline,isenthalpy,islevelset,isdamage,ishydrology;
 
 	/*Initialize datasets*/
 	Elements    *elements    = new Elements();
@@ -28,15 +27,6 @@
 
 	/*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);
 
 	if(VerboseMProcessor()) _printf0_("   starting model processor \n");
@@ -55,13 +45,6 @@
 		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");
 		Analysis* analysis = EnumToAnalysis(analysis_enum);
 		analysis->UpdateParameters(parameters,iomodel,solution_enum,analysis_enum);
Index: ../trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 18674)
+++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 18675)
@@ -432,20 +432,37 @@
 			}
 			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;
 
 		case HydrologySolutionEnum:
@@ -494,7 +511,7 @@
 			analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
 			break;
 
-		case TransientSolutionEnum:
+		case TransientSolutionEnum:{
 			bool isSIA,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage;
 			iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
 			iomodel->Constant(&isthermal,TransientIsthermalEnum);
@@ -546,6 +563,7 @@
 				analyses_temp[numanalyses++]=FreeSurfaceTopAnalysisEnum;
 			}
 			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
+			}
 			break;
 
 		case SeaiceSolutionEnum:
