Index: ../trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- ../trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 18673)
+++ ../trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 18674)
@@ -56,30 +56,12 @@
 		parameters->AddObject(new IntParam(AnalysisCounterEnum,i));
 
 		/*Hack for trasient runs (FIXME: to be improved)*/
-		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum  && iomodel->domaintype==Domain2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum  && iomodel->domaintype==Domain2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && iomodel->domaintype==Domain2DhorizontalEnum) 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(solution_enum==TransientSolutionEnum && analysis_enum==LevelsetAnalysisEnum && islevelset==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==ExtrapolationAnalysisEnum && islevelset==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==LsfReinitializationAnalysisEnum && islevelset==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==HydrologyShreveAnalysisEnum && ishydrology==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==HydrologyDCEfficientAnalysisEnum && ishydrology==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==HydrologyDCInefficientAnalysisEnum && ishydrology==false) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==DamageEvolutionAnalysisEnum && isdamage==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 18673)
+++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 18674)
@@ -495,26 +495,57 @@
 			break;
 
 		case TransientSolutionEnum:
-			analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
-			analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
-			analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+			bool isSIA,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage;
+			iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
+			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);
+			if(isstressbalance){
+				analyses_temp[numanalyses++]=StressbalanceAnalysisEnum;
+				analyses_temp[numanalyses++]=StressbalanceVerticalAnalysisEnum;
+				if(isSIA){
+					analyses_temp[numanalyses++]=StressbalanceSIAAnalysisEnum;
+				}
+			}
+			if(isthermal && iomodel->domaintype==Domain3DEnum){
+				if(isenthalpy){
+					analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
+				}
+				else{
+					analyses_temp[numanalyses++]=ThermalAnalysisEnum;
+					analyses_temp[numanalyses++]=MeltingAnalysisEnum;
+				}
+			}
+			if(ismasstransport || isgroundingline){
+				analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
+			}
+			if(islevelset){
+				analyses_temp[numanalyses++]=LevelsetAnalysisEnum;
+				analyses_temp[numanalyses++]=ExtrapolationAnalysisEnum;
+				analyses_temp[numanalyses++]=LsfReinitializationAnalysisEnum;
+			}
+			if(ishydrology){
+				analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
+				analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
+			}
+			if(isdamage){
+				analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			}
+
+			if(iomodel->domaintype==Domain2DverticalEnum || iomodel->domaintype==Domain3DEnum){
+				analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=ExtrudeFromTopAnalysisEnum;
+				analyses_temp[numanalyses++]=FreeSurfaceBaseAnalysisEnum;
+				analyses_temp[numanalyses++]=FreeSurfaceTopAnalysisEnum;
+			}
 			analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
-			analyses_temp[numanalyses++]=ThermalAnalysisEnum;
-			analyses_temp[numanalyses++]=MeltingAnalysisEnum;
-			analyses_temp[numanalyses++]=EnthalpyAnalysisEnum;
-			analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
-			analyses_temp[numanalyses++]=FreeSurfaceBaseAnalysisEnum;
-			analyses_temp[numanalyses++]=FreeSurfaceTopAnalysisEnum;
-			analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum;
-			analyses_temp[numanalyses++]=ExtrudeFromTopAnalysisEnum;
-			analyses_temp[numanalyses++]=LevelsetAnalysisEnum;
-			analyses_temp[numanalyses++]=ExtrapolationAnalysisEnum;
-			analyses_temp[numanalyses++]=LsfReinitializationAnalysisEnum;
-			analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
-			analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
-			analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
-			analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
-			analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
 			break;
 
 		case SeaiceSolutionEnum:
