Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9677)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9678)
@@ -94,4 +94,9 @@
 	SteadystateReltolEnum,
 	SteadystateMaxiterEnum,
+	TransientIsprognosticEnum,
+	TransientIsdiagnosticEnum,
+	TransientIsthermalEnum,
+	TransientIsgroundinglineEnum,
+	TransientRequestedOutputsEnum,
 	/*}}}*/
 	/*Datasets {{{1*/
@@ -460,7 +465,4 @@
 	StokesreconditioningEnum,
 	LowerelementsEnum,
-	IsprognosticEnum,
-	IsdiagnosticEnum,
-	IsthermalEnum,
 	NstepsEnum,
 	MaxiterEnum,
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9677)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9678)
@@ -98,4 +98,9 @@
 		case SteadystateReltolEnum : return "SteadystateReltol";
 		case SteadystateMaxiterEnum : return "SteadystateMaxiter";
+		case TransientIsprognosticEnum : return "TransientIsprognostic";
+		case TransientIsdiagnosticEnum : return "TransientIsdiagnostic";
+		case TransientIsthermalEnum : return "TransientIsthermal";
+		case TransientIsgroundinglineEnum : return "TransientIsgroundingline";
+		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
 		case ConstraintsEnum : return "Constraints";
 		case ElementsEnum : return "Elements";
@@ -404,7 +409,4 @@
 		case StokesreconditioningEnum : return "Stokesreconditioning";
 		case LowerelementsEnum : return "Lowerelements";
-		case IsprognosticEnum : return "Isprognostic";
-		case IsdiagnosticEnum : return "Isdiagnostic";
-		case IsthermalEnum : return "Isthermal";
 		case NstepsEnum : return "Nsteps";
 		case MaxiterEnum : return "Maxiter";
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9677)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9678)
@@ -63,7 +63,8 @@
 	parameters->AddObject(iomodel->CopyConstantObject(SettingsIoGatherEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(GroundinglineMigrationEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(IsdiagnosticEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(IsprognosticEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(IsthermalEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(TransientIsdiagnosticEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(TransientIsprognosticEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
 
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9677)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9678)
@@ -96,4 +96,9 @@
 	else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
 	else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
+	else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
+	else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;
+	else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
+	else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
+	else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
 	else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	else if (strcmp(name,"Elements")==0) return ElementsEnum;
@@ -402,7 +407,4 @@
 	else if (strcmp(name,"Stokesreconditioning")==0) return StokesreconditioningEnum;
 	else if (strcmp(name,"Lowerelements")==0) return LowerelementsEnum;
-	else if (strcmp(name,"Isprognostic")==0) return IsprognosticEnum;
-	else if (strcmp(name,"Isdiagnostic")==0) return IsdiagnosticEnum;
-	else if (strcmp(name,"Isthermal")==0) return IsthermalEnum;
 	else if (strcmp(name,"Nsteps")==0) return NstepsEnum;
 	else if (strcmp(name,"Maxiter")==0) return MaxiterEnum;
Index: /issm/trunk/src/c/solutions/transient_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/transient_core.cpp	(revision 9677)
+++ /issm/trunk/src/c/solutions/transient_core.cpp	(revision 9678)
@@ -37,7 +37,7 @@
 	femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum);
 	femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
-	femmodel->parameters->FindParam(&isdiagnostic,IsdiagnosticEnum);
-	femmodel->parameters->FindParam(&isprognostic,IsprognosticEnum);
-	femmodel->parameters->FindParam(&isthermal,IsthermalEnum);
+	femmodel->parameters->FindParam(&isdiagnostic,TransientIsdiagnosticEnum);
+	femmodel->parameters->FindParam(&isprognostic,TransientIsprognosticEnum);
+	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
 
 	/*initialize: */
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9677)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9678)
@@ -34,4 +34,5 @@
 		 flowequation = modelfield('default',0,'marshall',true);
 		 steadystate = modelfield('default',0,'marshall',true);
+		 transient = modelfield('default',0,'marshall',true);
 
 		 %FIXME: all other fields should belong to other classes
@@ -124,8 +125,4 @@
 		 viscosity_overshoot      = modelfield('default',0,'marshall',true,'format','Double');
 
-		 %Transient 
-		 isprognostic = modelfield('default',0,'marshall',true,'format','Boolean');
-		 isdiagnostic = modelfield('default',0,'marshall',true,'format','Boolean');
-		 isthermal    = modelfield('default',0,'marshall',true,'format','Boolean');
 		 %Control
 		 control_analysis = modelfield('default',0,'marshall',true,'format','Boolean');
@@ -381,4 +378,7 @@
 			 if isfield(structmd,'eps_rel'), md.flowequation.reltol=structmd.eps_rel; end
 			 if isfield(structmd,'max_steadystate_iterations'), md.flowequation.maxiter=structmd.max_steadystate_iterations; end
+			 if isfield(structmd,'isdiagnostic'), md.transient.isdiagnostic=structmd.isdiagnostic; end
+			 if isfield(structmd,'isprognostic'), md.transient.isprognostic=structmd.isprognostic; end
+			 if isfield(structmd,'isthermal'), md.transient.isthermal=structmd.isthermal; end
 
 			 %Field changes
@@ -506,4 +506,5 @@
 			 md.flowequation=flowequation;
 			 md.steadystate=steadystate;
+			 md.transient=transient;
 
 			 %Solver parameters
@@ -562,10 +563,4 @@
 			 md.min_mechanical_constraints=0;
 
-			 %Solution activated for transient runs. By default we do a
-			 %full analysis: Diagnostic, Prognostic and Thermal
-			 md.isprognostic=1;
-			 md.isdiagnostic=1;
-			 md.isthermal=1;
-
 			 %Control
 
@@ -630,5 +625,4 @@
 				 if(strcmp(index1.subs,'obs')), displayobservations(md);return; end
 				 if(strcmp(index1.subs,'diagnostic')), displaydiagnostic(md);return; end
-				 if(strcmp(index1.subs,'transient')), displaytransient(md);return; end
 				 if(strcmp(index1.subs,'control')), displaycontrol(md);return; end
 				 if(strcmp(index1.subs,'parallel')), displayparallel(md);return; end
Index: /issm/trunk/src/m/classes/transient.m
===================================================================
--- /issm/trunk/src/m/classes/transient.m	(revision 9678)
+++ /issm/trunk/src/m/classes/transient.m	(revision 9678)
@@ -0,0 +1,55 @@
+%TRANSIENT class definition
+%
+%   Usage:
+%      transient=transient();
+
+classdef transient
+	properties (SetAccess=public) 
+		isprognostic      = modelfield('default',0,'marshall',true,'format','Boolean');
+		isdiagnostic      = modelfield('default',0,'marshall',true,'format','Boolean');
+		isthermal         = modelfield('default',0,'marshall',true,'format','Boolean');
+		isgroundingline   = modelfield('default',0,'marshall',true,'format','Boolean');
+		requested_outputs = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
+	end
+	methods
+		function obj = transient(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				case 1
+					in=varargin{1};
+					if (isa(in,'numeric') & in==0),
+						% requesting templates do nothing
+					else
+						error('constructor not supported');
+					end 
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%first, use the defaults provided by the properties definition above. 
+			fieldnames=fields(obj);
+			for i=1:length(fieldnames),
+				fieldname=fieldnames{i};
+				obj.(fieldname)=obj.(fieldname).default;
+			end
+
+			%full analysis: Diagnostic, Prognostic and Thermal but no groundingline migration for now
+			obj.isprognostic=1;
+			obj.isdiagnostic=1;
+			obj.isthermal=1;
+			obj.isgroundingline=0;
+
+		end % }}}
+		function disp(obj) % {{{
+			disp('Transient parameters on a pure solution basis:');
+			fielddisplay(obj,'isprognostic','indicates if a prognostic solution is used in the transient');
+			fielddisplay(obj,'isthermal','indicates if a thermal solution is used in the transient');
+			fielddisplay(obj,'isdiagnostic','indicates if a diagnostic solution is used in the transient');
+			fielddisplay(obj,'isgroundingline','indicates if a groundingline migration is used in the transient');
+
+		end % }}}
+	end
+end
Index: sm/trunk/src/m/enum/IsdiagnosticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsdiagnosticEnum.m	(revision 9677)
+++ 	(revision )
@@ -1,11 +1,0 @@
-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: sm/trunk/src/m/enum/IsprognosticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsprognosticEnum.m	(revision 9677)
+++ 	(revision )
@@ -1,11 +1,0 @@
-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: sm/trunk/src/m/enum/IsthermalEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IsthermalEnum.m	(revision 9677)
+++ 	(revision )
@@ -1,11 +1,0 @@
-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/enum/TransientIsdiagnosticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIsdiagnosticEnum.m	(revision 9678)
+++ /issm/trunk/src/m/enum/TransientIsdiagnosticEnum.m	(revision 9678)
@@ -0,0 +1,11 @@
+function macro=TransientIsdiagnosticEnum()
+%TRANSIENTISDIAGNOSTICENUM - Enum of TransientIsdiagnostic
+%
+%   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=TransientIsdiagnosticEnum()
+
+macro=StringToEnum('TransientIsdiagnostic');
Index: /issm/trunk/src/m/enum/TransientIsgroundinglineEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIsgroundinglineEnum.m	(revision 9678)
+++ /issm/trunk/src/m/enum/TransientIsgroundinglineEnum.m	(revision 9678)
@@ -0,0 +1,11 @@
+function macro=TransientIsgroundinglineEnum()
+%TRANSIENTISGROUNDINGLINEENUM - Enum of TransientIsgroundingline
+%
+%   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=TransientIsgroundinglineEnum()
+
+macro=StringToEnum('TransientIsgroundingline');
Index: /issm/trunk/src/m/enum/TransientIsprognosticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIsprognosticEnum.m	(revision 9678)
+++ /issm/trunk/src/m/enum/TransientIsprognosticEnum.m	(revision 9678)
@@ -0,0 +1,11 @@
+function macro=TransientIsprognosticEnum()
+%TRANSIENTISPROGNOSTICENUM - Enum of TransientIsprognostic
+%
+%   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=TransientIsprognosticEnum()
+
+macro=StringToEnum('TransientIsprognostic');
Index: /issm/trunk/src/m/enum/TransientIsthermalEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIsthermalEnum.m	(revision 9678)
+++ /issm/trunk/src/m/enum/TransientIsthermalEnum.m	(revision 9678)
@@ -0,0 +1,11 @@
+function macro=TransientIsthermalEnum()
+%TRANSIENTISTHERMALENUM - Enum of TransientIsthermal
+%
+%   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=TransientIsthermalEnum()
+
+macro=StringToEnum('TransientIsthermal');
Index: /issm/trunk/src/m/enum/TransientRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientRequestedOutputsEnum.m	(revision 9678)
+++ /issm/trunk/src/m/enum/TransientRequestedOutputsEnum.m	(revision 9678)
@@ -0,0 +1,11 @@
+function macro=TransientRequestedOutputsEnum()
+%TRANSIENTREQUESTEDOUTPUTSENUM - Enum of TransientRequestedOutputs
+%
+%   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=TransientRequestedOutputsEnum()
+
+macro=StringToEnum('TransientRequestedOutputs');
Index: sm/trunk/src/m/model/display/displaytransient.m
===================================================================
--- /issm/trunk/src/m/model/display/displaytransient.m	(revision 9677)
+++ 	(revision )
@@ -1,39 +1,0 @@
-function displaytransient(md)
-%DISPLAYTRANSIENT - display solution parameters
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays the solution parameters
-%   from model md, only if requested.
-%
-%   Usage:
-%      displaytransient(md)
-
-disp('Transient parameters on a pure solution basis:');
-if md.isdiagnostic,
-	displaydiagnostic(md);
-else
-	disp(sprintf('         %s','no scheduled diagnostic. activate by doing md.isdiagnostic=1'));
-end
-if md.isprognostic,
-	displayprognostic(md);
-else
-	disp(sprintf('         %s','no scheduled prognostic. activate by doing md.isprognostic=1'));
-end
-if md.isthermal,
-	displaythermal(md);
-else
-	disp(sprintf('         %s','no scheduled thermal. activate by doing md.isthermal=1'));
-end
-
-disp(sprintf('   Transient solution parameters:\n'));
-
-fielddisplay(md,'deltaH','minimum thickness difference between two time steps');
-fielddisplay(md,'DeltaH','maximum thickness difference between two time steps');
-fielddisplay(md,'deltaT','minimum temperature difference between two time steps');
-fielddisplay(md,'DeltaT','maximum temperature difference between two time steps');
-fielddisplay(md,'timeacc','multiplier to time step when time stepping increases time step');
-fielddisplay(md,'timedec','multiplier to time step when time stepping decresaes time step');
-fielddisplay(md,'time_adapt','compute new time step each iteration, using CFL criterion');
-fielddisplay(md,'cfl_coefficient','CFL coefficient');
-fielddisplay(md,'hydrostatic_adjustment','type of adjustment for ice shelves update');
-fielddisplay(md,'groundingline_migration','type of adjustment for grounding line');
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9677)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9678)
@@ -303,12 +303,15 @@
 		message(['model not consistent: model ' md.miscellaneous.name ' cfl_coefficient field should between  0 and 1']);
 	end
-	if ~ismember(md.isdiagnostic,[0 1]),
-		message('model not consistent: isdiagnostic should be a scalar (1 or 0)');
-	end
-	if ~ismember(md.isprognostic,[0 1]),
-		message('model not consistent: isprognostic should be a scalar (1 or 0)');
-	end
-	if ~ismember(md.isthermal,[0 1]),
-		message('model not consistent: isthermal should be a scalar (1 or 0)');
+	if ~ismember(md.transient.isdiagnostic,[0 1]),
+		message('model not consistent: transient.isdiagnostic should be a scalar (1 or 0)');
+	end
+	if ~ismember(md.transient.isprognostic,[0 1]),
+		message('model not consistent: transient.isprognostic should be a scalar (1 or 0)');
+	end
+	if ~ismember(md.transient.isthermal,[0 1]),
+		message('model not consistent: transient.isthermal should be a scalar (1 or 0)');
+	end
+	if ~ismember(md.transient.isgroundingline,[0 1]),
+		message('model not consistent: transient.isgroundingline should be a scalar (1 or 0)');
 	end
 end
Index: /issm/trunk/src/m/solutions/transient_core.m
===================================================================
--- /issm/trunk/src/m/solutions/transient_core.m	(revision 9677)
+++ /issm/trunk/src/m/solutions/transient_core.m	(revision 9678)
@@ -14,7 +14,7 @@
 	output_frequency=femmodel.parameters.OutputFrequency;
 	time_adapt=femmodel.parameters.TimesteppingTimeAdapt;
-	isdiagnostic=femmodel.parameters.Isdiagnostic;
-	isprognostic=femmodel.parameters.Isprognostic;
-	isthermal=femmodel.parameters.Isthermal;
+	isdiagnostic=femmodel.parameters.TransientIsdiagnostic;
+	isprognostic=femmodel.parameters.TransientIsprognostic;
+	isthermal=femmodel.parameters.TransientIsthermal;
 
 	%Initialize
Index: /issm/trunk/template
===================================================================
--- /issm/trunk/template	(revision 9677)
+++ /issm/trunk/template	(revision 9678)
@@ -82,11 +82,4 @@
 	requested_outputs
 }}}
-transient{{{
-   isdiagnostic
-   isprognostic
-   isthermal
-   isgroundingline -> add
-   requested_outputs
-}}}
 inversion{{{ 
 	private: 
