Index: /issm/trunk/src/m/solutions/cielo/control.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/control.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/control.m	(revision 1647)
@@ -10,20 +10,20 @@
 	
 	%Build all models requested for control simulation
-	models.analysis_type='control'; %needed for processresults
+	models.analysis_type=ControlAnalysisEnum(); %needed for processresults
 
 	displaystring(md.debug,'%s',['reading control horiz model data']);
-	md.analysis_type='control'; md.sub_analysis_type='horiz'; models.dh=CreateFemModel(md);
+	md.analysis_type=ControlAnalysisEnum(); md.sub_analysis_type=HorizAnalysisEnum(); models.dh=CreateFemModel(md);
 
 	displaystring(md.debug,'\n%s',['reading control vert model data']);
-	md.analysis_type='control'; md.sub_analysis_type='vert'; models.dv=CreateFemModel(md);
+	md.analysis_type=ControlAnalysisEnum(); md.sub_analysis_type=VertAnalysisEnum(); models.dv=CreateFemModel(md);
 
 	displaystring(md.debug,'\n%s',['reading control stokes model data']);
-	md.analysis_type='control'; md.sub_analysis_type='stokes'; models.ds=CreateFemModel(md);
+	md.analysis_type=ControlAnalysisEnum(); md.sub_analysis_type=StokesAnalysisEnum(); models.ds=CreateFemModel(md);
 
 	displaystring(md.debug,'\n%s',['reading control hutter model data']);
-	md.analysis_type='control'; md.sub_analysis_type='hutter'; models.dhu=CreateFemModel(md);
+	md.analysis_type=ControlAnalysisEnum(); md.sub_analysis_type=HutterAnalysisEnum(); models.dhu=CreateFemModel(md);
 
 	displaystring(md.debug,'\n%s',['reading surface and bed slope computation model data']);
-	md.analysis_type='slope_compute'; md.sub_analysis_type=''; models.sl=CreateFemModel(md);
+	md.analysis_type=SlopeComputeAnalysisEnum(); md.sub_analysis_type=NoneAnalysisEnum(); models.sl=CreateFemModel(md);
 
 	% figure out number of dof: just for information purposes.
Index: /issm/trunk/src/m/solutions/cielo/control_core.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/control_core.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/control_core.m	(revision 1647)
@@ -50,8 +50,8 @@
 	displaystring(debug,'\n%s',['      computing gradJ...']);
 	if isstokes,
-		[u_g c(n).grad_g]=GradJCompute(m_ds,inputs,'diagnostic','stokes');
+		[u_g c(n).grad_g]=GradJCompute(m_ds,inputs,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
 		inputs=add(inputs,'velocity',u_g,'doublevec',4,m_ds.parameters.numberofnodes);
 	else
-		[u_g c(n).grad_g]=GradJCompute(m_dh,inputs,'diagnostic','horiz');
+		[u_g c(n).grad_g]=GradJCompute(m_dh,inputs,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 		inputs=add(inputs,'velocity',u_g,'doublevec',2,m_dh.parameters.numberofnodes);
 	end
@@ -71,7 +71,7 @@
 	displaystring(debug,'\n%s',['      optimizing along gradient direction...']);
 	if isstokes,
-		[search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_ds,inputs,param_g,c(n).grad_g,n,'diagnostic','stokes');
+		[search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_ds,inputs,param_g,c(n).grad_g,n,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
 	else
-		[search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_dh,inputs,param_g,c(n).grad_g,n,'diagnostic','horiz');
+		[search_scalar c(n).J]=ControlOptimization('objectivefunctionC',0,1,options,m_dh,inputs,param_g,c(n).grad_g,n,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 	end
 
Index: /issm/trunk/src/m/solutions/cielo/diagnostic.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/diagnostic.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/diagnostic.m	(revision 1647)
@@ -10,20 +10,20 @@
 
 	%Build all models requested for diagnostic simulation
-	models.analysis_type='diagnostic'; %needed for processresults
+	models.analysis_type=DiagnosticAnalysisEnum; %needed for processresults
 	
 	displaystring(md.debug,'%s',['reading diagnostic horiz model data']);
-	md.analysis_type='diagnostic'; md.sub_analysis_type='horiz'; models.dh=CreateFemModel(md);
+	md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=HorizAnalysisEnum; models.dh=CreateFemModel(md);
 	
 	displaystring(md.debug,'\n%s',['reading diagnostic vert model data']);
-	md.analysis_type='diagnostic'; md.sub_analysis_type='vert'; models.dv=CreateFemModel(md);
+	md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=VertAnalysisEnum; models.dv=CreateFemModel(md);
 	
 	displaystring(md.debug,'\n%s',['reading diagnostic stokes model data']);
-	md.analysis_type='diagnostic'; md.sub_analysis_type='stokes'; models.ds=CreateFemModel(md);
+	md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=StokesAnalysisEnum; models.ds=CreateFemModel(md);
 	
 	displaystring(md.debug,'\n%s',['reading diagnostic hutter model data']);
-	md.analysis_type='diagnostic'; md.sub_analysis_type='hutter'; models.dhu=CreateFemModel(md);
+	md.analysis_type=DiagnosticAnalysisEnum; md.sub_analysis_type=HutterAnalysisEnum; models.dhu=CreateFemModel(md);
 	
 	displaystring(md.debug,'\n%s',['reading surface and bed slope computation model data']);
-	md.analysis_type='slope_compute'; md.sub_analysis_type=''; models.sl=CreateFemModel(md);
+	md.analysis_type=SlopeComputeAnalysisEnum; md.sub_analysis_type=NoneAnalysisEnum; models.sl=CreateFemModel(md);
 	
 	% figure out number of dof: just for information purposes.
Index: /issm/trunk/src/m/solutions/cielo/diagnostic_core.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/diagnostic_core.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/diagnostic_core.m	(revision 1647)
@@ -53,5 +53,5 @@
 
 	displaystring(debug,'\n%s',['computing horizontal velocities...']);
-	u_g=diagnostic_core_nonlinear(m_dh,inputs,'diagnostic','horiz');
+	u_g=diagnostic_core_nonlinear(m_dh,inputs,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 
 	displaystring(debug,'\n%s',['computing pressure according to MacAyeal...']);
@@ -66,5 +66,5 @@
 	displaystring(debug,'\n%s',['computing vertical velocities...']);
 	inputs=add(inputs,'velocity',u_g_horiz,'doublevec',m_dh.parameters.numberofdofspernode,m_dh.parameters.numberofnodes);
-	u_g_vert=diagnostic_core_linear(m_dv,inputs,'diagnostic','vert');
+	u_g_vert=diagnostic_core_linear(m_dv,inputs,DiagnosticAnalysisEnum(),VertAnalysisEnum());
 
 	displaystring(debug,'\n%s',['combining horizontal and vertical velocities...']);
@@ -103,5 +103,5 @@
 
 		displaystring(debug,'\n%s',['computing stokes velocities and pressure ...']);
-		u_g=diagnostic_core_nonlinear(m_ds,inputs,'diagnostic','stokes');
+		u_g=diagnostic_core_nonlinear(m_ds,inputs,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
 	
 		%"decondition" pressure
Index: /issm/trunk/src/m/solutions/cielo/processresults.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/processresults.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/processresults.m	(revision 1647)
@@ -15,5 +15,5 @@
 
 %recover models first
-if (strcmpi(analysis_type,'diagnostic') | strcmpi(analysis_type,'transient')),
+if (analysis_type==DiagnosticAnalysisEnum | analysis_type==TransientAnalysisEnum),
 	m_dh=models.dh;
 	m_ds=models.ds;
@@ -26,5 +26,5 @@
 	isstokes=m_ds.parameters.isstokes;
 end
-if strcmpi(analysis_type,'control'),
+if (analysis_type==ControlAnalysisEnum()),
 	m_dh=models.dh;
 
@@ -35,5 +35,5 @@
 	isstokes=m_dh.parameters.isstokes;
 end
-if (strcmpi(analysis_type,'thermal') | strcmpi(analysis_type,'transient')),
+if (analysis_type==ThermalAnalysisEnum() | analysis_type==TransientAnalysisEnum()),
 	m_m=models.m;
 end
Index: /issm/trunk/src/m/solutions/cielo/prognostic.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/prognostic.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/prognostic.m	(revision 1647)
@@ -9,8 +9,8 @@
 
 	%Build all models requested for diagnostic simulation
-	models.analysis_type='prognostic'; %needed for processresults
+	models.analysis_type=PrognosticAnalysisEnum; %needed for processresults
 	
 	displaystring(md.debug,'%s',['reading prognostic model data']);
-	md.analysis_type='prognostic'; models.p=CreateFemModel(md);
+	md.analysis_type=PrognosticAnalysisEnum; models.p=CreateFemModel(md);
 
 	% figure out number of dof: just for information purposes.
@@ -27,5 +27,5 @@
 
 	displaystring(md.debug,'\n%s',['call computational core:']);
-	results=prognostic_core(models,inputs,'prognostic','');
+	results=prognostic_core(models,inputs,PrognosticAnalysisEnum(),NoneAnalysisEnum());
 
 	displaystring(md.debug,'\n%s',['load results...']);
Index: /issm/trunk/src/m/solutions/cielo/thermal.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/thermal.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/thermal.m	(revision 1647)
@@ -8,12 +8,12 @@
 	t1=clock;
 	
-	models.analysis_type='thermal'; %needed for processresults
+	models.analysis_type=ThermalAnalysisEnum(); %needed for processresults
 
 	%Build all models requested for diagnostic simulation
 	displaystring(md.debug,'%s',['reading thermal model data']);
-	md.analysis_type='thermal'; models.t=CreateFemModel(md);
+	md.analysis_type=ThermalAnalysisEnum(); models.t=CreateFemModel(md);
 
 	displaystring(md.debug,'%s',['reading melting model data']);
-	md.analysis_type='melting'; models.m=CreateFemModel(md);
+	md.analysis_type=MeltingAnalysisEnum(); models.m=CreateFemModel(md);
 
 	% figure out number of dof: just for information purposes.
Index: /issm/trunk/src/m/solutions/cielo/thermal_core.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/thermal_core.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/thermal_core.m	(revision 1647)
@@ -15,10 +15,10 @@
 
 	displaystring(m_t.parameters.debug,'\n%s',['computing temperatures...']);
-	[results.t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,'thermal','steady');
+	[results.t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,ThermalAnalysisEnum(),SteadyAnalysisEnum());
 
 	displaystring(m_t.parameters.debug,'\n%s',['computing melting...']);
 	inputs=add(inputs,'melting_offset',melting_offset,'double');
 	inputs=add(inputs,'temperature',results.t_g,'doublevec',1,m_t.parameters.numberofnodes);
-	results.m_g=diagnostic_core_linear(m_m,inputs,'melting','steady');
+	results.m_g=diagnostic_core_linear(m_m,inputs,MeltingAnalysisEnum(),SteadyAnalysisEnum());
 
 else
@@ -43,10 +43,10 @@
 		displaystring(m_t.parameters.debug,'\n%s',['    computing temperatures...']);
 		inputs=add(inputs,'temperature',results(n).t_g,'doublevec',1,m_t.parameters.numberofnodes);
-		[results(n+1).t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,'thermal','transient');
+		[results(n+1).t_g m_t.loads melting_offset]=thermal_core_nonlinear(m_t,inputs,ThermalAnalysisEnum(),TransientAnalysisEnum());
 
 		displaystring(m_t.parameters.debug,'\n%s',['    computing melting...']);
 		inputs=add(inputs,'temperature',results(n+1).t_g,'doublevec',1,m_t.parameters.numberofnodes);
 		inputs=add(inputs,'melting_offset',melting_offset,'double');
-		results(n+1).m_g=diagnostic_core_linear(m_m,inputs,'melting','transient');
+		results(n+1).m_g=diagnostic_core_linear(m_m,inputs,MeltingAnalysisEnum(),TransientAnalysisEnum());
 
 	end
Index: /issm/trunk/src/m/solutions/cielo/transient2d.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/transient2d.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/transient2d.m	(revision 1647)
@@ -11,20 +11,20 @@
 
 displaystring(md.debug,'%s',['reading diagnostic horiz model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='horiz'; models.dh=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=HorizAnalysisEnum(); models.dh=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading diagnostic vert model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='vert'; models.dv=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=VertAnalysisEnum(); models.dv=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading diagnostic stokes model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='stokes'; models.ds=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=StokesAnalysisEnum(); models.ds=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading diagnostic hutter model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='hutter'; models.dhu=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=HutterAnalysisEnum(); models.dhu=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading surface and bed slope computation model data']);
-md.analysis_type='slope_compute'; md.sub_analysis_type=''; models.sl=CreateFemModel(md);
+md.analysis_type=SlopeComputeAnalysisEnum(); md.sub_analysis_type=NoneAnalysisEnum(); models.sl=CreateFemModel(md);
 
 displaystring(md.debug,'%s',['reading prognostic model data']);
-md.analysis_type='prognostic'; models.p=CreateFemModel(md);
+md.analysis_type=PrognosticAnalysisEnum(); models.p=CreateFemModel(md);
 
 %initialize solution
@@ -77,5 +77,5 @@
 	disp(sprintf('%s','   computing new thickness...'));
 	inputs=add(inputs,'velocity',solution(n+1).u_g,'doublevec',2,models.p.parameters.numberofnodes);
-	rawresults=prognostic_core(models,inputs,'prognostic','');
+	rawresults=prognostic_core(models,inputs,PrognosticAnalysisEnum(),NoneAnalysisEnum());
 	new_thickness=rawresults.h_g;
 
Index: /issm/trunk/src/m/solutions/cielo/transient3d.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/transient3d.m	(revision 1646)
+++ /issm/trunk/src/m/solutions/cielo/transient3d.m	(revision 1647)
@@ -8,30 +8,30 @@
 
 %Build all models related to diagnostic
-models.analysis_type='transient'; %needed for processresults
+models.analysis_type=TransientAnalysisEnum(); %needed for processresults
 
 displaystring(md.debug,'%s',['reading diagnostic horiz model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='horiz'; models.dh=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=HorizAnalysisEnum(); models.dh=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading diagnostic vert model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='vert'; models.dv=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=VertAnalysisEnum(); models.dv=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading diagnostic stokes model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='stokes'; models.ds=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=StokesAnalysisEnum(); models.ds=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading diagnostic hutter model data']);
-md.analysis_type='diagnostic'; md.sub_analysis_type='hutter'; models.dhu=CreateFemModel(md);
+md.analysis_type=DiagnosticAnalysisEnum(); md.sub_analysis_type=HutterAnalysisEnum(); models.dhu=CreateFemModel(md);
 
 displaystring(md.debug,'\n%s',['reading surface and bed slope computation model data']);
-md.analysis_type='slope_compute'; md.sub_analysis_type=''; models.sl=CreateFemModel(md);
+md.analysis_type=SlopeComputeAnalysisEnum(); md.sub_analysis_type=NoneAnalysisEnum(); models.sl=CreateFemModel(md);
 
 displaystring(md.debug,'%s',['reading prognostic model data']);
-md.analysis_type='prognostic'; models.p=CreateFemModel(md);
+md.analysis_type=PrognosticAnalysisEnum(); models.p=CreateFemModel(md);
 
 %Build all models related to thermal
 displaystring(md.debug,'%s',['reading thermal model data']);
-md.analysis_type='thermal'; models.t=CreateFemModel(md);
+md.analysis_type=ThermalAnalysisEnum(); models.t=CreateFemModel(md);
 
 displaystring(md.debug,'%s',['reading melting model data']);
-md.analysis_type='melting'; models.m=CreateFemModel(md);
+md.analysis_type=MeltingAnalysisEnum(); models.m=CreateFemModel(md);
 
 
@@ -85,10 +85,10 @@
 	%Deal with temperature first 
 	displaystring(md.debug,'\n%s',['    computing temperatures...']);
-	[results(n+1).t_g models.t.loads melting_offset]=thermal_core_nonlinear(models.t,inputs,'thermal','transient');
+	[results(n+1).t_g models.t.loads melting_offset]=thermal_core_nonlinear(models.t,inputs,ThermalAnalysisEnum(),TransientAnalysisEnum());
 	inputs=add(inputs,'temperature',results(n+1).t_g,'doublevec',1,models.t.parameters.numberofnodes);
 	
 	displaystring(md.debug,'\n%s',['    computing melting...']);
 	inputs=add(inputs,'melting_offset',melting_offset,'double');
-	results(n+1).m_g=diagnostic_core_linear(models.m,inputs,'melting','transient');
+	results(n+1).m_g=diagnostic_core_linear(models.m,inputs,MeltingAnalysisEnum(),TransientAnalysisEnum());
 
 	%Compute depth averaged temperature
@@ -103,5 +103,5 @@
 	displaystring(md.debug,'\n%s',['    computing new thickness...']);
 	inputs=add(inputs,'velocity',results(n+1).u_g,'doublevec',3,models.p.parameters.numberofnodes);
-	rawresults=prognostic_core(models,inputs,'prognostic','');
+	rawresults=prognostic_core(models,inputs,PrognosticAnalysisEnum(),NoneAnalysisEnum());
 	new_thickness=rawresults.h_g;
 
