Index: /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 11812)
+++ /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 11813)
@@ -172,4 +172,6 @@
 	TransientIsprognosticEnum,
 	TransientIsthermalEnum,
+	SteadystateIsdiagnosticEnum,
+	SteadystateIsthermalEnum,
 	TransientNumRequestedOutputsEnum,
 	TransientRequestedOutputsEnum,
Index: /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 11812)
+++ /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 11813)
@@ -176,4 +176,6 @@
 		case TransientIsprognosticEnum : return "TransientIsprognostic";
 		case TransientIsthermalEnum : return "TransientIsthermal";
+		case SteadystateIsdiagnosticEnum : return "SteadystateIsdiagnostic";
+		case SteadystateIsthermalEnum : return "SteadystateIsthermal";
 		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
 		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 11812)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 11813)
@@ -81,4 +81,6 @@
 	parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SteadystateIsdiagnosticEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SteadystateIsthermalEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum));
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 11812)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 11813)
@@ -21,4 +21,5 @@
 	int   i,analysis_type,dim,verbose;
 	bool  isthermal,isprognostic,isdiagnostic,isgroundingline,isenthalpy;
+	bool  steadystateisthermal,steadystateisdiagnostic;
 	
 	/*output: */
@@ -43,4 +44,6 @@
 	iomodel->Constant(&isdiagnostic,TransientIsdiagnosticEnum);
 	iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
+	iomodel->Constant(&steadystateisthermal,SteadystateIsthermalEnum);
+	iomodel->Constant(&steadystateisdiagnostic,SteadystateIsdiagnosticEnum);
 	
 	SetVerbosityLevel(verbose);
@@ -67,4 +70,9 @@
 		if(solution_type==SteadystateSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
 		if(solution_type==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
+		if(solution_type==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && steadystateisthermal==false) continue;
+		if(solution_type==SteadystateSolutionEnum && analysis_type==ThermalAnalysisEnum && steadystateisthermal==false) continue;
+		if(solution_type==SteadystateSolutionEnum && analysis_type==DiagnosticHorizAnalysisEnum && steadystateisdiagnostic==false) continue;
+		if(solution_type==SteadystateSolutionEnum && analysis_type==DiagnosticVertAnalysisEnum && steadystateisdiagnostic==false) continue;
+		if(solution_type==SteadystateSolutionEnum && analysis_type==DiagnosticHutterAnalysisEnum && steadystateisdiagnostic==false) continue;
 	
 		_printf_(VerboseMProcessor(),"   creating datasets for analysis %s\n",EnumToStringx(analysis_type));
Index: /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11812)
+++ /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11813)
@@ -180,4 +180,6 @@
 	      else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
 	      else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
+	      else if (strcmp(name,"SteadystateIsdiagnostic")==0) return SteadystateIsdiagnosticEnum;
+	      else if (strcmp(name,"SteadystateIsthermal")==0) return SteadystateIsthermalEnum;
 	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
 	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
@@ -258,10 +260,10 @@
 	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
 	      else if (strcmp(name,"Node")==0) return NodeEnum;
-	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
-	      else if (strcmp(name,"Param")==0) return ParamEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
+	      if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
+	      else if (strcmp(name,"Param")==0) return ParamEnum;
+	      else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
 	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
 	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
@@ -381,10 +383,10 @@
 	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
 	      else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
-	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
-	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
+	      if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
+	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+	      else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
 	      else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
 	      else if (strcmp(name,"J")==0) return JEnum;
Index: /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp	(revision 11812)
+++ /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp	(revision 11813)
@@ -26,4 +26,5 @@
 	/*parameters: */
 	bool control_analysis,isenthalpy;
+	bool isthermal,isdiagnostic;
 	int  dim;
 	int  solution_type;
@@ -39,4 +40,6 @@
 	femmodel->parameters->FindParam(&numoutputs,SteadystateNumRequestedOutputsEnum);
 	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+	femmodel->parameters->FindParam(&isthermal,SteadystateIsthermalEnum);
+	femmodel->parameters->FindParam(&isdiagnostic,SteadystateIsdiagnosticEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SteadystateRequestedOutputsEnum);
 
@@ -46,11 +49,13 @@
 	for(;;){
 	
-		_printf_(VerboseSolution(),"%s%i\n","   computing temperature and velocity for step: ",step);
 		#ifdef _HAVE_THERMAL_
-		if(isenthalpy==0){
-			thermal_core(femmodel);
-		}
-		else{
-			enthalpy_core(femmodel);
+		if(isthermal){
+			_printf_(VerboseSolution(),"%s%i\n","   computing temperature and velocity for step: ",step);
+			if(isenthalpy==0){
+				thermal_core(femmodel);
+			}
+			else{
+				enthalpy_core(femmodel);
+			}
 		}
 		#else
@@ -58,6 +63,8 @@
 		#endif
 
-		_printf_(VerboseSolution(),"%s\n","   computing new velocity");
-		diagnostic_core(femmodel);
+		if(isdiagnostic){
+			_printf_(VerboseSolution(),"%s\n","   computing new velocity");
+			diagnostic_core(femmodel);
+		}
 
 		if (step>1){
Index: /issm/trunk-jpl/src/m/classes/steadystate.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/steadystate.m	(revision 11812)
+++ /issm/trunk-jpl/src/m/classes/steadystate.m	(revision 11813)
@@ -8,4 +8,6 @@
 		reltol            = 0;
 		maxiter           = 0;
+		isdiagnostic      = 0;
+		isthermal         = 0;
 		requested_outputs = NaN;
 	end
@@ -32,4 +34,8 @@
 			%Relative tolerance for the steadystate convertgence
 			obj.reltol=0.01;
+			 
+			%Default is diagnostic and thermal
+			obj.isdiagnostic=1;
+			obj.isthermal=1;
 		end % }}}
 		function checkconsistency(obj,md,solution,analyses) % {{{
@@ -45,4 +51,7 @@
 				checkmessage(['model not consistent: for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!']);
 			end
+
+			checkfield(md,'transient.isdiagnostic','numel',1,'values',[0 1]);
+			checkfield(md,'transient.isthermal','numel',1,'values',[0 1]);
 		end % }}}
 		function disp(obj) % {{{
@@ -51,4 +60,6 @@
 			fielddisplay(obj,'reltol','relative tolerance criterion');
 			fielddisplay(obj,'maxiter','maximum number of iterations');
+			fielddisplay(obj,'isthermal','indicates if a thermal solution is used in the steady-state');
+			fielddisplay(obj,'isdiagnostic','indicates if a diagnostic solution is used in the steady-state');
 			fielddisplay(obj,'requested_outputs','additional requested outputs');
 
@@ -57,4 +68,6 @@
 			WriteData(fid,'object',obj,'fieldname','reltol','format','Double');
 			WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer');
+			WriteData(fid,'object',obj,'fieldname','isdiagnostic','format','Boolean');
+			WriteData(fid,'object',obj,'fieldname','isthermal','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3);
 		end % }}}
Index: /issm/trunk-jpl/src/m/solutions/steadystate_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/steadystate_core.m	(revision 11812)
+++ /issm/trunk-jpl/src/m/solutions/steadystate_core.m	(revision 11813)
@@ -11,4 +11,6 @@
 	solution_type=femmodel.parameters.SolutionType;
 	isenthalpy=femmodel.parameters.ThermalIsenthalpy;
+	isdiagnostic=femmodel.parameters.SteadystateIsdiagnostic;
+	isthermal=femmodel.parameters.SteadystateIsthermal;
 
 	%Initialize counter
@@ -17,13 +19,17 @@
 	while true,
 
-		issmprintf(VerboseSolution,'\n%s%i\n','   computing velocities and temperatures for step: ',step);
-		if (isenthalpy==0),
-			femmodel=thermal_core(femmodel); 
-		else
-			femmodel=enthalpy_core(femmodel); 
+		if(isthermal),
+			issmprintf(VerboseSolution,'\n%s%i\n','   computing velocities and temperatures for step: ',step);
+			if (isenthalpy==0),
+				femmodel=thermal_core(femmodel); 
+			else
+				femmodel=enthalpy_core(femmodel); 
+			end
 		end
 
-		issmprintf(VerboseSolution,'\n%s',['   computing new velocity']);
-		femmodel=diagnostic_core(femmodel); 
+		if(isdiagnostic),
+			issmprintf(VerboseSolution,'\n%s',['   computing new velocity']);
+			femmodel=diagnostic_core(femmodel); 
+		end
 
 		if step>1,
