Index: /issm/trunk/src/m/enum/EnumToModelField.m
===================================================================
--- /issm/trunk/src/m/enum/EnumToModelField.m	(revision 8429)
+++ /issm/trunk/src/m/enum/EnumToModelField.m	(revision 8430)
@@ -21,8 +21,8 @@
 		case VyObsEnum(), string='vy_obs'; return
 		case GroundingLineMigrationEnum(), string='gl_migration'; return
-		case BasalMeltingRateEnum(), string='basal_melting_rate'; return
-      case SurfaceAccumulationRateEnum(), string='surface_accumulation_rate'; return
-		case SurfaceAblationRateEnum(), string='surface_ablation_rate'; return
-		case SurfaceMassBalanceEnum(), string='surface_mass_balance'; return
+		case BasalMeltingRateEnum: string='basal_melting_rate'; return
+      case SurfaceAccumulationRateEnum: string='surface_accumulation_rate'; return
+		case SurfaceAblationRateEnum: string='surface_ablation_rate'; return
+		case SurfaceMassBalanceEnum: string='surface_mass_balance'; return
 		otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
 
Index: sm/trunk/src/m/enum/Transient2DAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Transient2DAnalysisEnum.m	(revision 8429)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Transient2DAnalysisEnum()
-%TRANSIENT2DANALYSISENUM - Enum of Transient2DAnalysis
-%
-%   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=Transient2DAnalysisEnum()
-
-macro=StringToEnum('Transient2DAnalysis');
Index: sm/trunk/src/m/enum/Transient2DSolutionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Transient2DSolutionEnum.m	(revision 8429)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Transient2DSolutionEnum()
-%TRANSIENT2DSOLUTIONENUM - Enum of Transient2DSolution
-%
-%   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=Transient2DSolutionEnum()
-
-macro=StringToEnum('Transient2DSolution');
Index: sm/trunk/src/m/enum/Transient3DAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Transient3DAnalysisEnum.m	(revision 8429)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Transient3DAnalysisEnum()
-%TRANSIENT3DANALYSISENUM - Enum of Transient3DAnalysis
-%
-%   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=Transient3DAnalysisEnum()
-
-macro=StringToEnum('Transient3DAnalysis');
Index: sm/trunk/src/m/enum/Transient3DSolutionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Transient3DSolutionEnum.m	(revision 8429)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Transient3DSolutionEnum()
-%TRANSIENT3DSOLUTIONENUM - Enum of Transient3DSolution
-%
-%   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=Transient3DSolutionEnum()
-
-macro=StringToEnum('Transient3DSolution');
Index: /issm/trunk/src/m/enum/TransientSolutionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientSolutionEnum.m	(revision 8430)
+++ /issm/trunk/src/m/enum/TransientSolutionEnum.m	(revision 8430)
@@ -0,0 +1,11 @@
+function macro=TransientSolutionEnum()
+%TRANSIENTSOLUTIONENUM - Enum of TransientSolution
+%
+%   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=TransientSolutionEnum()
+
+macro=StringToEnum('TransientSolution');
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 8429)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 8430)
@@ -268,5 +268,5 @@
 %Solution specific check
 %TRANSIENT {{{1
-if (md.solution_type==Transient2DSolutionEnum | md.solution_type==Transient3DSolutionEnum),
+if (md.solution_type==TransientSolutionEnum),
 
 	if md.dt<=0,
@@ -484,5 +484,9 @@
 			%EXTRUSION
 			if (md.dim==2),
-				error(['model not consistent: for a ' md.solution_type ' computation, the model must be 3d, extrude it first!'])
+				if md.solution_type==TransientSolutionEnum,
+					return;
+				else
+					error(['model not consistent: for a ' EnumToString(md.solution_type) ' computation, the model must be 3d, extrude it first!'])
+				end
 			end
 
Index: /issm/trunk/src/m/model/isresultconsistent.m
===================================================================
--- /issm/trunk/src/m/model/isresultconsistent.m	(revision 8429)
+++ /issm/trunk/src/m/model/isresultconsistent.m	(revision 8430)
@@ -154,5 +154,5 @@
 end
 
-if (solution_type==Transient2DSolutionEnum() | solution_type==Transient3DSolutionEnum()),
+if (solution_type==TransientSolutionEnum()),
 
 	for iter=1:length(md.results.TransientAnalysis)
Index: /issm/trunk/src/m/model/plot/plot_transient_field.m
===================================================================
--- /issm/trunk/src/m/model/plot/plot_transient_field.m	(revision 8429)
+++ /issm/trunk/src/m/model/plot/plot_transient_field.m	(revision 8430)
@@ -8,15 +8,10 @@
 
 %Check that they are transient results
-if (~isfield(md.results,'Transient2DSolution') && ~isfield(md.results,'Transient3DSolution')),
+if (~isfield(md.results,'TransientSolution')),
 	error('plot_transient_field error message: no transient results in the model');
 end
 
-if md.dim==2,
-	transient=md.results.Transient2DSolution;
-else
-	transient=md.results.Transient3DSolution;
-end
-
 %Figure out the iterations to plot and check if it is possible
+transient=md.results.TransientSolution;
 maxiteration=size(transient,2);
 steps=getfieldvalue(options,'steps',1:1:maxiteration);
Index: /issm/trunk/src/m/model/plot/plot_transient_movie.m
===================================================================
--- /issm/trunk/src/m/model/plot/plot_transient_movie.m	(revision 8429)
+++ /issm/trunk/src/m/model/plot/plot_transient_movie.m	(revision 8430)
@@ -16,11 +16,6 @@
 	end
 
-	if md.dim==2,
-		results=md.results.Transient2DSolution;
-	else
-		results=md.results.Transient3DSolution;
-	end
-
 	%loop over the time steps
+	results=md.results.TransientSolution;
 	for i=1:length(results)
 
Index: /issm/trunk/src/m/model/process_solve_options.m
===================================================================
--- /issm/trunk/src/m/model/process_solve_options.m	(revision 8429)
+++ /issm/trunk/src/m/model/process_solve_options.m	(revision 8430)
@@ -11,5 +11,5 @@
 if ischar(solution_type), error(['only Enums are supported as ''solution_type''. For example: md=solve(md,''solution_type'',DiagnosticSolutionEnum); ']); end
 if ~ismember(solution_type,[DiagnosticSolutionEnum,PrognosticSolutionEnum,ThermalSolutionEnum,...
-		SteadystateSolutionEnum,ParametersSolutionEnum,Transient2DSolutionEnum,Transient3DSolutionEnum...
+		SteadystateSolutionEnum,ParametersSolutionEnum,TransientSolutionEnum,...
 		BalancethicknessSolutionEnum,BalancevelocitiesSolutionEnum,BedSlopeSolutionEnum,SurfaceSlopeSolutionEnum,GroundingLineMigration2DSolutionEnum,HydrologySolutionEnum,FlaimSolutionEnum]),
 	error(['process_solve_options error message: solution_type ' EnumToString(solution_type) ' not supported yet!']);
Index: /issm/trunk/src/m/model/solve.m
===================================================================
--- /issm/trunk/src/m/model/solve.m	(revision 8429)
+++ /issm/trunk/src/m/model/solve.m	(revision 8430)
@@ -12,6 +12,5 @@
 %		SteadystateSolutionEnum
 %		ParametersSolutionEnum
-%		Transient2DSolutionEnum
-%		Transient3DSolutionEnum...
+%		TransientSolutionEnum...
 %		BalancethicknessSolutionEnum
 %		BalancevelocitiesSolutionEnum
Index: /issm/trunk/src/m/model/tres.m
===================================================================
--- /issm/trunk/src/m/model/tres.m	(revision 8429)
+++ /issm/trunk/src/m/model/tres.m	(revision 8430)
@@ -53,24 +53,24 @@
 
 elseif strcmpi(string,'transient'),
-	results=md.results.Transient2DSolution;
+	results=md.results.TransientSolution;
 	results2.Vel=NaN;
 	count=1;
 	for i=1:length(results),
-		if ~isempty(md.results.Transient2DSolution(i).Vel),
-			results2(count).Vel=PatchToVec(md.results.Transient2DSolution(i).Vel);
-			results2(count).Surface=PatchToVec(md.results.Transient2DSolution(i).Surface);
-			results2(count).Thickness=PatchToVec(md.results.Transient2DSolution(i).Thickness);
-			results2(count).Bed=PatchToVec(md.results.Transient2DSolution(i).Bed);
-			results2(count).Vx=PatchToVec(md.results.Transient2DSolution(i).Vx);
-			results2(count).Vy=PatchToVec(md.results.Transient2DSolution(i).Vy);
-			results2(count).time=md.results.Transient2DSolution(i).time;
-			results2(count).step=md.results.Transient2DSolution(i).step;
+		if ~isempty(md.results.TransientSolution(i).Vel),
+			results2(count).Vel=PatchToVec(md.results.TransientSolution(i).Vel);
+			results2(count).Surface=PatchToVec(md.results.TransientSolution(i).Surface);
+			results2(count).Thickness=PatchToVec(md.results.TransientSolution(i).Thickness);
+			results2(count).Bed=PatchToVec(md.results.TransientSolution(i).Bed);
+			results2(count).Vx=PatchToVec(md.results.TransientSolution(i).Vx);
+			results2(count).Vy=PatchToVec(md.results.TransientSolution(i).Vy);
+			results2(count).time=md.results.TransientSolution(i).time;
+			results2(count).step=md.results.TransientSolution(i).step;
 			if md.gl_migration~=NoneEnum,
-				results2(count).ElementOnIceShelf=md.results.Transient2DSolution(i).ElementOnIceShelf;
+				results2(count).ElementOnIceShelf=md.results.TransientSolution(i).ElementOnIceShelf;
 			end
 			count=count+1;
 		end
 	end
-	md.results.Transient2DSolution=results2;
+	md.results.TransientSolution=results2;
 	clear results,results2;
 elseif strcmpi(string,'steadystate'),
Index: /issm/trunk/src/m/solutions/CorePointerFromSolutionEnum.m
===================================================================
--- /issm/trunk/src/m/solutions/CorePointerFromSolutionEnum.m	(revision 8429)
+++ /issm/trunk/src/m/solutions/CorePointerFromSolutionEnum.m	(revision 8430)
@@ -15,6 +15,5 @@
 	case SurfaceSlopeSolutionEnum,             solutioncore='surfaceslope_core';
 	case BedSlopeSolutionEnum,                 solutioncore='bedslope_core';
-	case Transient2DSolutionEnum,              solutioncore='transient2d_core';
-	case Transient3DSolutionEnum,              solutioncore='transient3d_core';
+	case TransientSolutionEnum,                solutioncore='transient_core';
 	case FlaimSolutionEnum,                    solutioncore='flaim_core';
 	case GroundingLineMigration2DSolutionEnum, solutioncore='DUMMYDUMMY'; %not working in serial mode
Index: /issm/trunk/src/m/solutions/SolutionConfiguration.m
===================================================================
--- /issm/trunk/src/m/solutions/SolutionConfiguration.m	(revision 8429)
+++ /issm/trunk/src/m/solutions/SolutionConfiguration.m	(revision 8430)
@@ -42,11 +42,7 @@
 		analyses=[BedSlopeAnalysisEnum];
 
-	case Transient2DSolutionEnum,
-		numanalyses=6; 
-		analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;PrognosticAnalysisEnum];
-
-	case Transient3DSolutionEnum,
+	case TransientSolutionEnum,
 		numanalyses=8; 
-		analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;PrognosticAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum];
+		analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum;PrognosticAnalysisEnum];
 
 	case FlaimSolutionEnum,
Index: /issm/trunk/src/m/solutions/transient_core.m
===================================================================
--- /issm/trunk/src/m/solutions/transient_core.m	(revision 8430)
+++ /issm/trunk/src/m/solutions/transient_core.m	(revision 8430)
@@ -0,0 +1,71 @@
+function femmodel=transient3d_core(femmodel)
+%TRANSIENT3D_CORE - core of transient 2d solution
+%
+%   Usage:
+%      femmodel=transient3d_core(femmodel)
+
+	%recover parameters common to all solutions
+	dim=femmodel.parameters.Dim;
+	ndt=femmodel.parameters.Ndt;
+	dt=femmodel.parameters.Dt;
+	yts=femmodel.parameters.Yts;
+	control_analysis=femmodel.parameters.ControlAnalysis;
+	solution_type=femmodel.parameters.SolutionType;
+	output_frequency=femmodel.parameters.OutputFrequency;
+	time_adapt=femmodel.parameters.TimeAdapt;
+	isdiagnostic=femmodel.parameters.IsDiagnostic;
+	isprognostic=femmodel.parameters.IsPrognostic;
+	isthermal=femmodel.parameters.IsThermal;
+
+	%Initialize
+	time=0;
+	step=0;
+
+	%Loop through time
+	while (time < ndt - (yts*eps)),
+
+		%Increment
+		if(time_adapt),
+			dt=TimeAdapt(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
+			if(time+dt>ndt), dt=ndt-time; end
+			femmodel.parameters.Dt=dt;
+		end
+		step=step+1;
+		time=time+dt;
+		femmodel.parameters.Time=time;
+
+		issmprintf(VerboseSolution,'\n%s%g%s%i%s%g\n','time [yr] ',time,' iteration number: ',step,'/',floor(ndt/dt));
+
+		if (isthermal & dim==3)
+			issmprintf(VerboseSolution,'\n%s',['   computing temperature']);
+			femmodel=thermal_core_step(femmodel); 
+		end
+
+		if (isdiagnostic)
+			issmprintf(VerboseSolution,'\n%s',['   computing new velocities']);
+			femmodel=diagnostic_core(femmodel); 
+		end
+
+		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==TransientSolutionEnum & ~control_analysis & (mod(step,output_frequency)==0 | time==ndt)),
+			issmprintf(VerboseSolution,'\n%s',['   saving results']);
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum,step,time);
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VyEnum,step,time);
+			if (dim==3), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VzEnum,step,time); end
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VelEnum,step,time);
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,PressureEnum,step,time);
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ThicknessEnum,step,time);
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,SurfaceEnum,step,time);
+			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BedEnum,step,time);
+			if (dim==3), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,TemperatureEnum,step,time);end
+			if (dim==3), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BasalMeltingRateEnum,step,time);end
+		end
+	end
+end %end of function
