Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 8318)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 8319)
@@ -443,5 +443,8 @@
 	VxMeshEnum,
 	VyMeshEnum,
-	VzMeshEnum
+	VzMeshEnum,
+	IsDiagnosticEnum,
+	IsPrognosticEnum,
+	IsThermalEnum
 };
 
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 8318)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 8319)
@@ -387,4 +387,7 @@
 		case VyMeshEnum : return "VyMesh";
 		case VzMeshEnum : return "VzMesh";
+		case IsDiagnosticEnum : return "IsDiagnostic";
+		case IsPrognosticEnum : return "IsPrognostic";
+		case IsThermalEnum : return "IsThermal";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 8318)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 8319)
@@ -80,4 +80,7 @@
 	parameters->AddObject(new IntParam(GroundingLineMigrationEnum,iomodel->gl_migration));
 	parameters->AddObject(new IntParam(RheologyLawEnum,iomodel->rheology_law));
+	parameters->AddObject(new BoolParam(IsDiagnosticEnum,iomodel->isdiagnostic));
+	parameters->AddObject(new BoolParam(IsPrognosticEnum,iomodel->isprognostic));
+	parameters->AddObject(new BoolParam(IsThermalEnum,iomodel->isthermal));
 
 	/*Deal with more complex parameters*/
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 8318)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 8319)
@@ -385,4 +385,7 @@
 	else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
 	else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
+	else if (strcmp(name,"IsDiagnostic")==0) return IsDiagnosticEnum;
+	else if (strcmp(name,"IsPrognostic")==0) return IsPrognosticEnum;
+	else if (strcmp(name,"IsThermal")==0) return IsThermalEnum;
 	else _error_("Enum %s not found",name);
 
Index: /issm/trunk/src/c/objects/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/IoModel.cpp	(revision 8318)
+++ /issm/trunk/src/c/objects/IoModel.cpp	(revision 8319)
@@ -200,7 +200,7 @@
 	IoModelFetchData(&this->kff,iomodel_handle,"kff");
 	IoModelFetchData(&this->gl_migration,iomodel_handle,"gl_migration");
-	IoModelFetchData(&this->diagnostic_analysis,iomodel_handle,"diagnostic_analysis"); 
-	IoModelFetchData(&this->prognostic_analysis,iomodel_handle,"prognostic_analysis"); 
-	IoModelFetchData(&this->thermal_analysis,iomodel_handle,"thermal_analysis"); 
+	IoModelFetchData(&this->isdiagnostic,iomodel_handle,"isdiagnostic"); 
+	IoModelFetchData(&this->isprognostic,iomodel_handle,"isprognostic"); 
+	IoModelFetchData(&this->isthermal,iomodel_handle,"isthermal"); 
 
 	/*!Get thermal parameters: */
@@ -371,7 +371,7 @@
 	this->shelf_dampening=0;
 	this->waitonlock=0;
-	this->diagnostic_analysis=0;
-	this->prognostic_analysis=0;
-	this->thermal_analysis=0;
+	this->isdiagnostic=0;
+	this->isprognostic=0;
+	this->isthermal=0;
 
 	/*!thermal parameters: */
Index: /issm/trunk/src/c/objects/IoModel.h
===================================================================
--- /issm/trunk/src/c/objects/IoModel.h	(revision 8318)
+++ /issm/trunk/src/c/objects/IoModel.h	(revision 8319)
@@ -163,7 +163,7 @@
 		double  waitonlock;
 		int     kff;
-		int     diagnostic_analysis;
-		int     prognostic_analysis;
-		int     thermal_analysis;
+		int     isdiagnostic;
+		int     isprognostic;
+		int     isthermal;
 
 		/*thermal parameters: */
Index: /issm/trunk/src/c/solutions/transient2d_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/transient2d_core.cpp	(revision 8318)
+++ /issm/trunk/src/c/solutions/transient2d_core.cpp	(revision 8319)
@@ -20,5 +20,5 @@
 	int    dim                  = -1;
 	int    solution_type;
-	bool   control_analysis;
+	bool   control_analysis,isdiagnostic,isprognostic,isthermal;
 	bool   time_adapt=false;
 	int    output_frequency;
@@ -39,4 +39,7 @@
 	femmodel->parameters->FindParam(&time_adapt,TimeAdaptEnum);
 	femmodel->parameters->FindParam(&gl_migration,GroundingLineMigrationEnum);
+	femmodel->parameters->FindParam(&isdiagnostic,IsDiagnosticEnum);
+	femmodel->parameters->FindParam(&isprognostic,IsPrognosticEnum);
+	femmodel->parameters->FindParam(&isthermal,IsThermalEnum);
 
 	/*initialize: */
@@ -57,9 +60,13 @@
 		_printf_(VerboseSolution(),"%s%g%s%i%s%g%s%g\n","time [yr]: ",time/yts,"    iteration number: ",step,"/",floor((finaltime-time)/dt)," dt [yr]: ",dt/yts);
 
-		_printf_(VerboseSolution(),"%s\n","   computing new velocity");
-		diagnostic_core(femmodel);
+		if(isdiagnostic){
+			_printf_(VerboseSolution(),"%s\n","   computing new velocity");
+			diagnostic_core(femmodel);
+		}
 
-		_printf_(VerboseSolution(),"%s\n","   computing new thickness");
-		prognostic_core(femmodel);
+		if(isprognostic){
+			_printf_(VerboseSolution(),"%s\n","   computing new thickness");
+			prognostic_core(femmodel);
+		}
 
 		if (gl_migration!=NoneEnum){
Index: /issm/trunk/src/c/solutions/transient3d_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/transient3d_core.cpp	(revision 8318)
+++ /issm/trunk/src/c/solutions/transient3d_core.cpp	(revision 8319)
@@ -18,5 +18,5 @@
 	double finaltime;
 	double dt,yts;
-	bool control_analysis;
+	bool   control_analysis,isdiagnostic,isprognostic,isthermal;
 	bool   time_adapt=false;
 	int    solution_type;
@@ -35,4 +35,7 @@
 	femmodel->parameters->FindParam(&output_frequency,OutputFrequencyEnum);
 	femmodel->parameters->FindParam(&time_adapt,TimeAdaptEnum);
+	femmodel->parameters->FindParam(&isdiagnostic,IsDiagnosticEnum);
+	femmodel->parameters->FindParam(&isprognostic,IsPrognosticEnum);
+	femmodel->parameters->FindParam(&isthermal,IsThermalEnum);
 
 	/*initialize: */
@@ -53,15 +56,20 @@
 		_printf_(VerboseSolution(),"%s%g%s%i%s%g%s%g\n","time [yr]: ",time/yts,"    iteration number: ",step,"/",floor((finaltime-time)/dt)," dt [yr]: ",dt/yts);
 
-		_printf_(VerboseSolution(),"   computing temperatures:\n");
-		thermal_core_step(femmodel,step,time);
+		if(isthermal){
+			_printf_(VerboseSolution(),"   computing temperatures:\n");
+			thermal_core_step(femmodel,step,time);
+		}
 
+		if(isdiagnostic){
 		_printf_(VerboseSolution(),"%s\n","   computing new velocity");
 		diagnostic_core(femmodel);
+		}
 
-		_printf_(VerboseSolution(),"%s\n","   computing new thickness");
-		prognostic_core(femmodel);
-	
-		_printf_(VerboseSolution(),"%s\n","   updating vertices positions");
-		UpdateVertexPositionsx(femmodel->elements, femmodel->nodes,femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters); 
+		if(isprognostic){
+			_printf_(VerboseSolution(),"%s\n","   computing new thickness");
+			prognostic_core(femmodel);
+			_printf_(VerboseSolution(),"%s\n","   updating vertices positions");
+			UpdateVertexPositionsx(femmodel->elements, femmodel->nodes,femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters); 
+		}
 
 		if(solution_type==Transient3DSolutionEnum && !control_analysis && (step%output_frequency==0 || time==finaltime)){
Index: /issm/trunk/src/m/classes/model.m
===================================================================
--- /issm/trunk/src/m/classes/model.m	(revision 8318)
+++ /issm/trunk/src/m/classes/model.m	(revision 8319)
@@ -211,8 +211,8 @@
 		 hydrostatic_adjustment=0;
 
-		 %Analysis
-		 prognostic_analysis=0;
-		 diagnostic_analysis=0;
-		 thermal_analysis=0;
+		 %Transient flags
+		 isprognostic=0;
+		 isdiagnostic=0;
+		 isthermal=0;
 
 		 %Control
@@ -657,7 +657,7 @@
 			 %Solution activated for transient runs. By default we do a
 			 %full analysis: Diagnostic, Prognostic and Thermal
-			 md.prognostic_analysis=1;
-			 md.diagnostic_analysis=1;
-			 md.thermal_analysis=1;
+			 md.isprognostic=1;
+			 md.isdiagnostic=1;
+			 md.isthermal=1;
 
 			 %Control
Index: /issm/trunk/src/m/enum/IsDiagnosticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsDiagnosticEnum.m	(revision 8319)
+++ /issm/trunk/src/m/enum/IsDiagnosticEnum.m	(revision 8319)
@@ -0,0 +1,11 @@
+function macro=IsDiagnosticEnum()
+%ISDIAGNOSTICENUM - Enum of IsDiagnostic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=IsDiagnosticEnum()
+
+macro=StringToEnum('IsDiagnostic');
Index: /issm/trunk/src/m/enum/IsPrognosticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsPrognosticEnum.m	(revision 8319)
+++ /issm/trunk/src/m/enum/IsPrognosticEnum.m	(revision 8319)
@@ -0,0 +1,11 @@
+function macro=IsPrognosticEnum()
+%ISPROGNOSTICENUM - Enum of IsPrognostic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=IsPrognosticEnum()
+
+macro=StringToEnum('IsPrognostic');
Index: /issm/trunk/src/m/enum/IsThermalEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsThermalEnum.m	(revision 8319)
+++ /issm/trunk/src/m/enum/IsThermalEnum.m	(revision 8319)
@@ -0,0 +1,11 @@
+function macro=IsThermalEnum()
+%ISTHERMALENUM - Enum of IsThermal
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=IsThermalEnum()
+
+macro=StringToEnum('IsThermal');
Index: /issm/trunk/src/m/model/display/displaytransient.m
===================================================================
--- /issm/trunk/src/m/model/display/displaytransient.m	(revision 8318)
+++ /issm/trunk/src/m/model/display/displaytransient.m	(revision 8319)
@@ -10,18 +10,18 @@
 
 disp('Transient parameters on a pure solution basis:');
-if md.diagnostic_analysis,
+if md.isdiagnostic,
 	displaydiagnostic(md);
 else
-	disp(sprintf('         %s','no scheduled diagnostic. activate by doing md.diagnostic_analysis=1'));
+	disp(sprintf('         %s','no scheduled diagnostic. activate by doing md.isdiagnostic=1'));
 end
-if md.prognostic_analysis,
+if md.isprognostic,
 	displayprognostic(md);
 else
-	disp(sprintf('         %s','no scheduled prognostic. activate by doing md.prognostic_analysis=1'));
+	disp(sprintf('         %s','no scheduled prognostic. activate by doing md.isprognostic=1'));
 end
-if md.thermal_analysis,
+if md.isthermal,
 	displaythermal(md);
 else
-	disp(sprintf('         %s','no scheduled thermal. activate by doing md.thermal_analysis=1'));
+	disp(sprintf('         %s','no scheduled thermal. activate by doing md.isthermal=1'));
 end
 
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 8318)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 8319)
@@ -273,11 +273,18 @@
 		error('model not consistent: field dt must be positive for a transient run')
 	end
-
 	if(md.cfl_coefficient>1 | md.cfl_coefficient<0),
 		error(['model not consistent: model ' md.name ' cfl_coefficient field should between  0 and 1']);
 	end
-
 	if(md.cfl_coefficient>1 | md.cfl_coefficient<0),
 		error(['model not consistent: model ' md.name ' cfl_coefficient field should between  0 and 1']);
+	end
+	if ~ismember(md.isdiagnostic,[0 1]),
+		error('model not consistent: isdiagnostic should be a scalar (1 or 0)');
+	end
+	if ~ismember(md.isprognostic,[0 1]),
+		error('model not consistent: isprognostic should be a scalar (1 or 0)');
+	end
+	if ~ismember(md.isthermal,[0 1]),
+		error('model not consistent: isthermal should be a scalar (1 or 0)');
 	end
 
Index: /issm/trunk/src/m/model/marshall.m
===================================================================
--- /issm/trunk/src/m/model/marshall.m	(revision 8318)
+++ /issm/trunk/src/m/model/marshall.m	(revision 8319)
@@ -101,7 +101,7 @@
 
 %Transient
-WriteData(fid,md.diagnostic_analysis,'Scalar','diagnostic_analysis');
-WriteData(fid,md.prognostic_analysis,'Scalar','prognostic_analysis');
-WriteData(fid,md.thermal_analysis,'Scalar','thermal_analysis');
+WriteData(fid,md.isdiagnostic,'Integer','isdiagnostic');
+WriteData(fid,md.isprognostic,'Integer','isprognostic');
+WriteData(fid,md.isthermal,'Integer','isthermal');
 
 %Get materials
Index: /issm/trunk/src/m/solutions/transient2d_core.m
===================================================================
--- /issm/trunk/src/m/solutions/transient2d_core.m	(revision 8318)
+++ /issm/trunk/src/m/solutions/transient2d_core.m	(revision 8319)
@@ -14,4 +14,7 @@
 	output_frequency=femmodel.parameters.OutputFrequency;
 	time_adapt=femmodel.parameters.TimeAdapt;
+	isdiagnostic=femmodel.parameters.IsDiagnostic;
+	isprognostic=femmodel.parameters.IsPrognostic;
+	isthermal=femmodel.parameters.IsThermal;
 
 	%Initialize
@@ -33,9 +36,13 @@
 		issmprintf(VerboseSolution,'\n%s%g%s%i%s%g\n','time [yr]: ',time,' iteration number: ',step,'/',floor(ndt/dt));
 
-		issmprintf(VerboseSolution,'\n%s',['   computing new velocities']);
-		femmodel=diagnostic_core(femmodel); 
+		if (isdiagnostic)
+			issmprintf(VerboseSolution,'\n%s',['   computing new velocities']);
+			femmodel=diagnostic_core(femmodel); 
+		end
 
-		issmprintf(VerboseSolution,'\n%s',['   computing new thickness']);
-		femmodel=prognostic_core(femmodel); 
+		if (isprognostic)
+			issmprintf(VerboseSolution,'\n%s',['   computing new thickness']);
+			femmodel=prognostic_core(femmodel); 
+		end
 
 		if (solution_type==Transient2DSolutionEnum & ~control_analysis & (mod(step,output_frequency)==0 | time==ndt)),
Index: /issm/trunk/src/m/solutions/transient3d_core.m
===================================================================
--- /issm/trunk/src/m/solutions/transient3d_core.m	(revision 8318)
+++ /issm/trunk/src/m/solutions/transient3d_core.m	(revision 8319)
@@ -13,4 +13,7 @@
 	output_frequency=femmodel.parameters.OutputFrequency;
 	time_adapt=femmodel.parameters.TimeAdapt;
+	isdiagnostic=femmodel.parameters.IsDiagnostic;
+	isprognostic=femmodel.parameters.IsPrognostic;
+	isthermal=femmodel.parameters.IsThermal;
 
 	%Initialize
@@ -32,15 +35,21 @@
 		issmprintf(VerboseSolution,'\n%s%g%s%i%s%g\n','time [yr] ',time,' iteration number: ',step,'/',floor(ndt/dt));
 
-		issmprintf(VerboseSolution,'\n%s',['   computing temperature']);
-		femmodel=thermal_core_step(femmodel); 
+		if (isthermal)
+			issmprintf(VerboseSolution,'\n%s',['   computing temperature']);
+			femmodel=thermal_core_step(femmodel); 
+		end
 
-		issmprintf(VerboseSolution,'\n%s',['   computing new velocities']);
-		femmodel=diagnostic_core(femmodel); 
+		if (isdiagnostic)
+			issmprintf(VerboseSolution,'\n%s',['   computing new velocities']);
+			femmodel=diagnostic_core(femmodel); 
+		end
 
-		issmprintf(VerboseSolution,'\n%s',['   computing new thickness']);
-		femmodel=prognostic_core(femmodel); 
-
-		issmprintf(VerboseSolution,'\n%s',['   updating vertices position']);
-		[femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=UpdateVertexPositions(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
+		if (isprognostic)
+			issmprintf(VerboseSolution,'\n%s',['   computing new thickness']);
+			femmodel=prognostic_core(femmodel); 
+			issmprintf(VerboseSolution,'\n%s',['   updating vertices position']);
+			[femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters]=...
+				UpdateVertexPositions(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
+		end
 
 		if (solution_type==Transient3DSolutionEnum & ~control_analysis & (mod(step,output_frequency)==0 | time==ndt)),
