Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.cpp	(revision 1650)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.cpp	(revision 1651)
@@ -53,9 +53,9 @@
 /*Formulations: */
 int FormulationEnum(void){              return          300; }
-int NoneEnum(void){                     return          301; }
-int HutterEnum(void){                   return          302; }
-int MacAyealEnum(void){                 return          303; }
-int PattynEnum(void){                   return          304; }
-int StokesEnum(void){                   return          305; }
+int NoneFormulationEnum(void){          return          301; }
+int HutterFormulationEnum(void){        return          302; }
+int MacAyealFormulationEnum(void){      return          303; }
+int PattynFormulationEnum(void){        return          304; }
+int StokesFormulationEnum(void){        return          305; }
 
 /*OBJECTS: */
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 1650)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 1651)
@@ -7,55 +7,6 @@
 #define _ENUM_DEFINITIONS_
 
-/*objects: */
-int NodeEnum(void);
-int TriaEnum(void);
-int SingEnum(void);
-int BeamEnum(void);
-int PentaEnum(void);
-int MaterialEnum(void);
-int MaticeEnum(void);
-int MatparEnum(void);
-int SpcEnum(void);
-int PenpairEnum(void);
-int PengridEnum(void);
-int IcefrontEnum(void);
-int RiftfrontEnum(void);
-int ParamEnum(void);
-int ElementEnum(void);
-int LoadEnum(void);
-int RgbEnum(void);
-int InputEnum(void);
-int ResultEnum(void);
-
-/*formulations: */
-int NoneEnum(void);
-int HutterEnum(void);
-int MacAyealEnum(void);
-int PattynEnum(void);
-int StokesEnum(void);
-
-/* analysis enums: */
-int DiagnosticAnalysisEnum(void);
-int ControlAnalysisEnum(void);
-int ThermalAnalysisEnum(void);
-int PrognosticAnalysisEnum(void);
-int MeltingAnalysisEnum(void);
-int SlopeComputeAnalysisEnum(void);
-int StokesAnalysisEnum(void);
-int HutterAnalysisEnum(void);
-int SurfaceXAnalysisEnum(void);
-int SurfaceYAnalysisEnum(void);
-int BedXAnalysisEnum(void);
-int BedYAnalysisEnum(void);
-int HorizAnalysisEnum(void);
-int VertAnalysisEnum(void);
-int NoneAnalysisEnum(void);
-int SteadyAnalysisEnum(void);
-int TransientAnalysisEnum(void);
-int AdjointAnalysisEnum(void);
-int InverseAnalysisEnum(void);
-int GradientAnalysisEnum(void);
-
-/*datasets: */
+/*Datasets: */
+int DatasetsEnum(void);
 int ElementsEnum(void);
 int NodesEnum(void);
@@ -66,4 +17,78 @@
 int ResultsEnum(void);
 
+/*ANALYSIS TYPES: */
+int AnalysisEnum(void);
+//diagnostic
+int DiagnosticAnalysisEnum(void);
+int HorizAnalysisEnum(void);
+int StokesAnalysisEnum(void);
+int HutterAnalysisEnum(void);
+int VertAnalysisEnum(void);
+//control
+int ControlAnalysisEnum(void);
+int AdjointAnalysisEnum(void);
+int InverseAnalysisEnum(void);
+int GradientAnalysisEnum(void);
+//thermal
+int ThermalAnalysisEnum(void);
+int SteadyAnalysisEnum(void);
+int TransientAnalysisEnum(void);
+//slope
+int SlopeComputeAnalysisEnum(void);
+int SurfaceXAnalysisEnum(void);
+int SurfaceYAnalysisEnum(void);
+int BedXAnalysisEnum(void);
+int BedYAnalysisEnum(void);
+//prognostic
+int PrognosticAnalysisEnum(void);
+//melting
+int MeltingAnalysisEnum(void);
+//mesh2grid
+int Mesh2gridAnalysisEnum(void);
+//parameters
+int ParametersAnalysisEnum(void);
+//none
+int NoneAnalysisEnum(void);
+
+
+/*Formulations: */
+int FormulationEnum(void);
+int NoneFormulationEnum(void);
+int HutterFormulationEnum(void);
+int MacAyealFormulationEnum(void);
+int PattynFormulationEnum(void);
+int StokesFormulationEnum(void);
+
+/*OBJECTS: */
+int ObjectEnum(void);
+/*Elements: */
+int ElementEnum(void);
+int TriaEnum(void);
+int PentaEnum(void);
+int SingEnum(void);
+int BeamEnum(void);
+/*Grids: */
+int NodeEnum(void);
+/*Loads: */
+int LoadEnum(void);
+int IcefrontEnum(void);
+int RiftfrontEnum(void);
+int PenpairEnum(void);
+int PengridEnum(void);
+/*Materials: */
+int MaterialEnum(void);
+int MaticeEnum(void);
+int MatparEnum(void);
+/*Inputs: */
+int InputEnum(void);
+/*Params: */
+int ParamEnum(void);
+/*Results: */
+int ResultEnum(void);
+/*Rgb: */
+int RgbEnum(void);
+/*Spc: */
+int SpcEnum(void);
+
 /*Functions on enums: */
 int EnumIsElement(int en);
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 1650)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 1651)
@@ -224,5 +224,5 @@
 		#endif
 			
-			if (*(model->elements_type+2*i+0)==MacAyealEnum()){ //elements of type 1 are Hutter type Tria. Don't create this elements.
+			if (*(model->elements_type+2*i+0)==MacAyealFormulationEnum()){ //elements of type 1 are Hutter type Tria. Don't create this elements.
 				
 				/*ids: */
@@ -302,5 +302,5 @@
 				materials->AddObject(matice);
 		
-			} //if(!HutterEnum)
+			} //if(!MacAyealFormulationEnum)
 
 			#ifdef _PARALLEL_
@@ -362,5 +362,5 @@
 		#endif
 
-			if (*(model->elements_type+2*i+0)==MacAyealEnum() | *(model->elements_type+2*i+0)==PattynEnum()){ //elements of type 1 are Hutter type Tria. Don't create this elements.
+			if (*(model->elements_type+2*i+0)==MacAyealFormulationEnum() | *(model->elements_type+2*i+0)==PattynFormulationEnum()){ //elements of type 1 are Hutter type Tria. Don't create this elements.
 			
 				/*name and id: */
@@ -397,5 +397,5 @@
 				penta_viscosity_overshoot=model->viscosity_overshoot;
 
-				if (*(model->elements_type+2*i+0)==MacAyealEnum()){ //elements of type 3 are MacAyeal type Penta. We collapse the formulation on their base.
+				if (*(model->elements_type+2*i+0)==MacAyealFormulationEnum()){ //elements of type 3 are MacAyeal type Penta. We collapse the formulation on their base.
 					penta_collapse=1;
 				}
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 1650)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 1651)
@@ -120,8 +120,8 @@
 		icefront_b[1]=model->bed[i2-1];
 		
-		if ((int)*(model->elements_type+2*element+0)==MacAyealEnum()){ //this is a collapsed 3d element, icefront will be 2d
+		if ((int)*(model->elements_type+2*element+0)==MacAyealFormulationEnum()){ //this is a collapsed 3d element, icefront will be 2d
 			strcpy(icefront_type,"segment");
 		}
-		else if ((int)*(model->elements_type+2*element+0)==PattynEnum()){ //this is a real 3d element, icefront will be 3d.
+		else if ((int)*(model->elements_type+2*element+0)==PattynFormulationEnum()){ //this is a real 3d element, icefront will be 3d.
 			strcpy(icefront_type,"quad");
 			i3=(int)*(model->segmentonneumann_diag+segment_width*i+2);
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 1650)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 1651)
@@ -230,5 +230,5 @@
 
 			
-			if (*(model->elements_type+2*i+1)==StokesEnum()){
+			if (*(model->elements_type+2*i+1)==StokesFormulationEnum()){
 			
 				/*Create Penta using its constructor:*/
@@ -254,5 +254,5 @@
 			matice_n=(double)*(model->n+i);
 			
-			if (*(model->elements_type+2*i+1)==StokesEnum()){
+			if (*(model->elements_type+2*i+1)==StokesFormulationEnum()){
 	
 				/*Create matice using its constructor:*/
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 1650)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 1651)
@@ -200,5 +200,5 @@
 
 		/*We need the field collapse for transient, so that we can use compute B with the average temperature*/
-		if (*(model->elements_type+2*i+0)==MacAyealEnum()){ //elements of type 3 are MacAyeal type Penta. We collapse the formulation on their base.
+		if (*(model->elements_type+2*i+0)==MacAyealFormulationEnum()){ //elements of type 3 are MacAyeal type Penta. We collapse the formulation on their base.
 			penta_collapse=1;
 		}
Index: /issm/trunk/src/m/classes/@pentaelem/Stress.m
===================================================================
--- /issm/trunk/src/m/classes/@pentaelem/Stress.m	(revision 1650)
+++ /issm/trunk/src/m/classes/@pentaelem/Stress.m	(revision 1651)
@@ -80,5 +80,5 @@
 
 			%Build Pressure
-			if elementonstokes_param(pentaelem.id)==StokesEnum();
+			if elementonstokes_param(pentaelem.id)==StokesFormulationEnum();
 				pressure_g=GetParameterValue(pentaelem,pressure,gauss_coord);
 			else %use pattyn's and MacAyeal's assumption: P=sigma_zz'+rho_ice*g*(s-z)
Index: /issm/trunk/src/m/classes/@pentaelem/StressBed.m
===================================================================
--- /issm/trunk/src/m/classes/@pentaelem/StressBed.m	(revision 1650)
+++ /issm/trunk/src/m/classes/@pentaelem/StressBed.m	(revision 1651)
@@ -84,5 +84,5 @@
 
 	%Build Pressure
-	if elementonstokes_param(pentaelem.id)==StokesEnum(),
+	if elementonstokes_param(pentaelem.id)==StokesFormulationEnum(),
 		pressure_g=GetParameterValue(pentaelem,pressure,gauss_coord);
 	else %use pattyn's and MacAyeal's assumption: P=sigma_zz'+rho_ice*g*(s-z)
Index: /issm/trunk/src/m/classes/@pentaelem/StressSurface.m
===================================================================
--- /issm/trunk/src/m/classes/@pentaelem/StressSurface.m	(revision 1650)
+++ /issm/trunk/src/m/classes/@pentaelem/StressSurface.m	(revision 1651)
@@ -84,5 +84,5 @@
 
 	%Build Pressure
-	if elementonstokes_param(pentaelem.id)==StokesEnum(),
+	if elementonstokes_param(pentaelem.id)==StokesFormulationEnum(),
 		pressure_g=GetParameterValue(pentaelem,pressure,gauss_coord);
 	else %use pattyn's and MacAyeal's assumption: P=sigma_zz'+rho_ice*g*(s-z)
Index: /issm/trunk/src/m/classes/public/extrude.m
===================================================================
--- /issm/trunk/src/m/classes/public/extrude.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/extrude.m	(revision 1651)
@@ -140,5 +140,5 @@
 	%dead grids
 	md.deadgrids=ones(md.numberofgrids,1);
-	md.deadgrids(md.elements(md.elements_type(:,1)~=MacAyealEnum,:))=0;%non macayeal grids are not dead
+	md.deadgrids(md.elements(md.elements_type(:,1)~=MacAyealFormulationEnum,:))=0;%non macayeal grids are not dead
 	md.deadgrids(find(md.gridonbed))=0;%grids from elements on bed are not dead
 end
Index: /issm/trunk/src/m/classes/public/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/ismodelselfconsistent.m	(revision 1651)
@@ -41,14 +41,14 @@
 	bool=0;return;
 end
-if any(ones(md.numberofelements,1)-((md.elements_type(:,1)==HutterEnum) + (md.elements_type(:,1)==MacAyealEnum)  + (md.elements_type(:,1)==PattynEnum)))
+if any(ones(md.numberofelements,1)-((md.elements_type(:,1)==HutterFormulationEnum) + (md.elements_type(:,1)==MacAyealFormulationEnum)  + (md.elements_type(:,1)==PattynFormulationEnum)))
 	disp(['Types of elements have not been set properly, run setelementstype first'])
 	bool=0;return;
 end
-if any(ones(md.numberofelements,1)-((md.elements_type(:,2)==StokesEnum) + (md.elements_type(:,2)==NoneEnum)))
+if any(ones(md.numberofelements,1)-((md.elements_type(:,2)==StokesFormulationEnum) + (md.elements_type(:,2)==NoneFormulationEnum)))
 	disp(['Types of elements have not been set properly, run setelementstype first'])
 	bool=0;return;
 end
 if strcmpi(md.type,'2d'),
-	if (ismember(PattynEnum,md.elements_type(:,1)) |  ismember(StokesEnum,md.elements_type(:,2))),
+	if (ismember(PattynFormulationEnum,md.elements_type(:,1)) |  ismember(StokesFormulationEnum,md.elements_type(:,2))),
 		disp(['For a 2d model, only MacAyeal''s and Hutter''s elements are allowed']);
 		bool=0;return;
@@ -186,5 +186,5 @@
 
 	%HUTTER ON ICESHELF WARNING
-	if any(md.elements_type(:,1)==HutterEnum & md.elementoniceshelf),
+	if any(md.elements_type(:,1)==HutterFormulationEnum & md.elementoniceshelf),
 		disp(sprintf('\n !!! Warning: Hutter''s model is not consistent on ice shelves !!!\n'));
 	end
@@ -299,5 +299,5 @@
 
 	%HUTTER
-	if any(md.elements_type(:,1)==HutterEnum); 
+	if any(md.elements_type(:,1)==HutterFormulationEnum); 
 		disp(['The model has Hutter''s elements. Impossible to compute parameters']);
 		bool=0;return;
Index: /issm/trunk/src/m/classes/public/isresultconsistent.m
===================================================================
--- /issm/trunk/src/m/classes/public/isresultconsistent.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/isresultconsistent.m	(revision 1651)
@@ -1,3 +1,3 @@
-function bool=isresultconsistent(md,solution)
+function bool=isresultconsistent(md,analysis_type)
 %ISRESULTCONSISTENT: check that results are consistent
 %
@@ -6,5 +6,5 @@
 %
 %   Usage:
-%      bool=IsModelSelfConsistent(model,solution)
+%      bool=IsModelSelfConsistent(model,analysis_type)
 
 %tolerance we use in litmus tests for the consistency of the model
@@ -26,5 +26,5 @@
 
 %DIAGNOSTIC
-if strcmp(solution,'diagnostic'),
+if analysis_type==DiagnosticAnalysisEnum(),
 
 	if strcmpi(md.type,'3d')
@@ -59,5 +59,5 @@
 
 %CONTROL
-if strcmp(solution,'control'),
+if analysis_type==ControlAnalysisEnum(),
 
 	fields1={'results.control.vx','results.control.vy','results.control.vel','results.control.parameter'};
@@ -101,5 +101,5 @@
 
 %THERMAL
-if strcmp(solution,'thermal')
+if analysis_type==ThermalAnalysisEnum(),
 
 	for iter=1:length(md.results.thermal)
@@ -137,5 +137,5 @@
 end
 
-if strcmp(solution,'transient') 
+if analysis_type==TransientAnalysisEnum(),
 
 	for iter=1:length(md.results.transient)
Index: /issm/trunk/src/m/classes/public/loadresultsfromdisk.m
===================================================================
--- /issm/trunk/src/m/classes/public/loadresultsfromdisk.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/loadresultsfromdisk.m	(revision 1651)
@@ -26,4 +26,8 @@
 end
 
+%convert analysis type to string
+md.analysis_type=AnalysisTypeAsEnum(md.analysis_type);
+md.sub_analysis_type=AnalysisTypeAsEnum(md.sub_analysis_type);
+
 %post processes qmu results if necessary
 if md.qmu_analysis,
Index: /issm/trunk/src/m/classes/public/mechanicalproperties.m
===================================================================
--- /issm/trunk/src/m/classes/public/mechanicalproperties.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/mechanicalproperties.m	(revision 1651)
@@ -20,5 +20,5 @@
 	error('only 2d model supported yet');
 end
-if any(md.elements_type(:,1)~=MacAyealEnum),
+if any(md.elements_type(:,1)~=MacAyealFormulationEnum),
 	disp('Warning: the model has some non macayeal elements. These will be treated like MacAyeal''s elements');
 end
Index: /issm/trunk/src/m/classes/public/modelextract.m
===================================================================
--- /issm/trunk/src/m/classes/public/modelextract.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/modelextract.m	(revision 1651)
@@ -216,5 +216,5 @@
 		pos=find(md2.gridondirichlet_diag);                 %find all the grids on the boundary of the domain without icefront
 		md2.gridonstokes(pos)=0;                               %we have to constrain all the boundary of the domain without icefront
-		stokes_elements=find(md2.elements_type(:,2)==StokesEnum()); %find the elements on the stokes domain
+		stokes_elements=find(md2.elements_type(:,2)==StokesFormulationEnum()); %find the elements on the stokes domain
 		borderflags=zeros(numberofgrids2,1); 
 		borderflags(md2.elements(stokes_elements,:))=1; %find all the grids of the elements on stokes domain, ie stokes grids and borderstokes
Index: /issm/trunk/src/m/classes/public/plot/plot_elementstype.m
===================================================================
--- /issm/trunk/src/m/classes/public/plot/plot_elementstype.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/plot/plot_elementstype.m	(revision 1651)
@@ -25,21 +25,21 @@
 if is2d
 	%Hutter elements
-	posH=find(data(:,1)==HutterEnum);
+	posH=find(data(:,1)==HutterFormulationEnum);
 	A=elements(posH,1); B=elements(posH,2); C=elements(posH,3); 
-	p1=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',HutterEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	p1=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',HutterFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
 	%MacAyeal element
-	posH=find(data(:,1)==MacAyealEnum);
+	posH=find(data(:,1)==MacAyealFormulationEnum);
 	A=elements(posH,1); B=elements(posH,2); C=elements(posH,3); 
-	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',MacAyealEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',MacAyealFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
 	%Pattyn element
-	posH=find(data(:,1)==PattynEnum);
+	posH=find(data(:,1)==PattynFormulationEnum);
 	A=elements(posH,1); B=elements(posH,2); C=elements(posH,3); 
-	p3=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',PattynEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	p3=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',PattynFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
 	%Stokes elements
 	alpha=0.35;
-	posS=find(data(:,2)==StokesEnum);
+	posS=find(data(:,2)==StokesFormulationEnum);
 	if ~isempty(posS)
 		A=elements(posS,1); B=elements(posS,2); C=elements(posS,3);
-	%	p4=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',StokesEnum,'FaceColor','flat','EdgeColor',edgecolor,'EdgeAlpha',alpha,'FaceAlpha',alpha);
+	%	p4=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',StokesFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor,'EdgeAlpha',alpha,'FaceAlpha',alpha);
 	%	legend([p1 p2 p3 p4],'Hutter''s elements','MacAyeal''s elements','Pattyn''s elements','Stokes''s elements');
 	else
@@ -48,30 +48,30 @@
 else
 	%Hutter elements
-	posH=find(data(:,1)==HutterEnum);
+	posH=find(data(:,1)==HutterFormulationEnum);
 	A=elements(posH,1); B=elements(posH,2); C=elements(posH,3); D=elements(posH,4); E=elements(posH,5); F=elements(posH,6);
-	p1=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', HutterEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [D E F], 'Vertices', [x y z],'CData', HutterEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [A B E D], 'Vertices', [x y z],'CData', HutterEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'CData', HutterEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'CData', HutterEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	p1=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', HutterFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F], 'Vertices', [x y z],'CData', HutterFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D], 'Vertices', [x y z],'CData', HutterFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'CData', HutterFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'CData', HutterFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
 	%MacAyeal elements
-	posM=find(data(:,1)==MacAyealEnum);
+	posM=find(data(:,1)==MacAyealFormulationEnum);
 	A=elements(posM,1); B=elements(posM,2); C=elements(posM,3); D=elements(posM,4); E=elements(posM,5); F=elements(posM,6);
-	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', MacAyealEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [D E F], 'Vertices', [x y z],'CData', MacAyealEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [A B E D], 'Vertices', [x y z],'CData', MacAyealEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'CData', MacAyealEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'CData', MacAyealEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', MacAyealFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F], 'Vertices', [x y z],'CData', MacAyealFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D], 'Vertices', [x y z],'CData', MacAyealFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'CData', MacAyealFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'CData', MacAyealFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
 	%Pattyn elements
-	posP=find(data(:,1)==PattynEnum);
+	posP=find(data(:,1)==PattynFormulationEnum);
 	A=elements(posP,1); B=elements(posP,2); C=elements(posP,3); D=elements(posP,4); E=elements(posP,5); F=elements(posP,6);
-	p3=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', PattynEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [D E F], 'Vertices', [x y z],'CData', PattynEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [A B E D], 'Vertices', [x y z],'CData', PattynEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'CData', PattynEnum,'FaceColor','flat','EdgeColor',edgecolor);
-	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'CData', PattynEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	p3=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', PattynFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [D E F], 'Vertices', [x y z],'CData', PattynFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [A B E D], 'Vertices', [x y z],'CData', PattynFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [B E F C ], 'Vertices', [x y z],'CData', PattynFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
+	patch( 'Faces', [C A D F ], 'Vertices', [x y z],'CData', PattynFormulationEnum,'FaceColor','flat','EdgeColor',edgecolor);
 	%Stokes elements
 	alpha=0.35;
-	posS=find(data(:,2)==StokesEnum);
+	posS=find(data(:,2)==StokesFormulationEnum);
 	if ~isempty(posS)
 		A=elements(posS,1); B=elements(posS,2); C=elements(posS,3); D=elements(posS,4); E=elements(posS,5); F=elements(posS,6);
Index: /issm/trunk/src/m/classes/public/process_solve_options.m
===================================================================
--- /issm/trunk/src/m/classes/public/process_solve_options.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/process_solve_options.m	(revision 1651)
@@ -13,4 +13,5 @@
 		package=options{i,2};
 		found=1;
+		break
 	end
 end
@@ -20,7 +21,5 @@
 	package='cielo';
 end
-if ~(strcmpi(package,'cielo') |  ...
-		strcmpi(package,'ice') |  ...
-		strcmpi(package,'macayeal') ),
+if ~ismemberi(package,{'cielo','ice','macayeal'}),
 	error(['process_solve_options error message: package ' package ' not supported yet!']);
 end
@@ -32,4 +31,5 @@
 		analysis_type=options{i,2};
 		found=1;
+		break
 	end
 end
@@ -44,4 +44,5 @@
 		sub_analysis_type=options{i,2};
 		found=1;
+		break
 	end
 end
@@ -64,4 +65,5 @@
 		batch=options{i,2};
 		found=1;
+		break
 	end
 end
Index: /issm/trunk/src/m/classes/public/setelementstype.m
===================================================================
--- /issm/trunk/src/m/classes/public/setelementstype.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/setelementstype.m	(revision 1651)
@@ -77,5 +77,5 @@
 gridonhutter(md.elements(find(hutterflag),:))=1;
 md.gridonhutter=gridonhutter;
-md.elements_type(find(hutterflag),1)=HutterEnum();
+md.elements_type(find(hutterflag),1)=HutterFormulationEnum();
 
 %2: MacAyeal elements
@@ -83,5 +83,5 @@
 gridonmacayeal(md.elements(find(macayealflag),:))=1;
 md.gridonmacayeal=gridonmacayeal;
-md.elements_type(find(macayealflag),1)=MacAyealEnum();
+md.elements_type(find(macayealflag),1)=MacAyealFormulationEnum();
 
 %3: Pattyn elements
@@ -89,12 +89,12 @@
 gridonpattyn(md.elements(find(pattynflag),:))=1;
 md.gridonpattyn=gridonpattyn;
-md.elements_type(find(pattynflag),1)=PattynEnum();
+md.elements_type(find(pattynflag),1)=PattynFormulationEnum();
 
 %4: Stokes elements
 md.gridonstokes=gridonstokes;
-md.elements_type(find(stokesflag),2)=StokesEnum();
+md.elements_type(find(stokesflag),2)=StokesFormulationEnum();
 
 %5: None elements (non Stokes)
-md.elements_type(find(~stokesflag),2)=NoneEnum();
+md.elements_type(find(~stokesflag),2)=NoneFormulationEnum();
 
 %Create the border grids between Pattyn and MacAyeal and extrude them
@@ -121,5 +121,5 @@
 
 %figure out the border stokes grids
-stokes_elements=find(md.elements_type(:,2)==StokesEnum()); %find the elements on the stokes domain
+stokes_elements=find(md.elements_type(:,2)==StokesFormulationEnum()); %find the elements on the stokes domain
 borderflags=zeros(md.numberofgrids,1); 
 borderflags(md.elements(stokes_elements,:))=1; %find all the grids of the elements on stokes domain, ie stokes grids and borderstokes
@@ -132,7 +132,7 @@
 
 %figure out solution types
-md.ishutter=double(any(md.elements_type(:,1)==HutterEnum));
-md.ismacayealpattyn=double(any(md.elements_type(:,1)==MacAyealEnum | md.elements_type(:,1)==PattynEnum));
-md.isstokes=double(any(md.elements_type(:,2)==StokesEnum));
+md.ishutter=double(any(md.elements_type(:,1)==HutterFormulationEnum));
+md.ismacayealpattyn=double(any(md.elements_type(:,1)==MacAyealFormulationEnum | md.elements_type(:,1)==PattynFormulationEnum));
+md.isstokes=double(any(md.elements_type(:,2)==StokesFormulationEnum));
 
 end
Index: /issm/trunk/src/m/classes/public/solve.m
===================================================================
--- /issm/trunk/src/m/classes/public/solve.m	(revision 1650)
+++ /issm/trunk/src/m/classes/public/solve.m	(revision 1651)
@@ -92,4 +92,8 @@
 end
 
+%convert analysis type to string finally
+md.analysis_type=AnalysisTypeAsEnum(options.analysis_type);
+md.sub_analysis_type=AnalysisTypeAsEnum(options.sub_analysis_type);
+
 %re-add the paths
 addpath(genpath_ice([ISSM_DIR '/src/m/solutions/macayeal']));
Index: /issm/trunk/src/m/shared/AnalysisTypeAsEnum.m
===================================================================
--- /issm/trunk/src/m/shared/AnalysisTypeAsEnum.m	(revision 1650)
+++ /issm/trunk/src/m/shared/AnalysisTypeAsEnum.m	(revision 1651)
@@ -141,22 +141,22 @@
 end
 
-if enum==NoneEnum(),
-	string='noneenum';
-end
-
-if enum==HutterEnum(),
-	string='hutterenum';
-end
-
-if enum==MacAyealEnum(),
-	string='macayealenum';
-end
-
-if enum==PattynEnum(),
-	string='pattynenum';
-end
-
-if enum==StokesEnum(),
-	string='stokesenum';
+if enum==NoneFormulationEnum(),
+	string='noneformulationenum';
+end
+
+if enum==HutterFormulationEnum(),
+	string='hutterformulationenum';
+end
+
+if enum==MacAyealFormulationEnum(),
+	string='macayealformulationenum';
+end
+
+if enum==PattynFormulationEnum(),
+	string='pattynformulationenum';
+end
+
+if enum==StokesFormulationEnum(),
+	string='stokesformulationenum';
 end
 
Index: sm/trunk/src/m/shared/HutterEnum.m
===================================================================
--- /issm/trunk/src/m/shared/HutterEnum.m	(revision 1650)
+++ 	(revision )
@@ -1,9 +1,0 @@
-function macro=HutterEnum()
-%HUTTERENUM - Enum of Hutter
-%
-%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
-%
-%   Usage:
-%      macro=HutterEnum()
-
-macro=302;
Index: /issm/trunk/src/m/shared/HutterFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/shared/HutterFormulationEnum.m	(revision 1651)
+++ /issm/trunk/src/m/shared/HutterFormulationEnum.m	(revision 1651)
@@ -0,0 +1,9 @@
+function macro=HutterFormulationEnum()
+%HUTTERFORMULATIONENUM - Enum of HutterFormulation
+%
+%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
+%
+%   Usage:
+%      macro=HutterFormulationEnum()
+
+macro=302;
Index: sm/trunk/src/m/shared/MacAyealEnum.m
===================================================================
--- /issm/trunk/src/m/shared/MacAyealEnum.m	(revision 1650)
+++ 	(revision )
@@ -1,9 +1,0 @@
-function macro=MacAyealEnum()
-%MACAYEALENUM - Enum of MacAyeal
-%
-%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
-%
-%   Usage:
-%      macro=MacAyealEnum()
-
-macro=303;
Index: /issm/trunk/src/m/shared/MacAyealFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/shared/MacAyealFormulationEnum.m	(revision 1651)
+++ /issm/trunk/src/m/shared/MacAyealFormulationEnum.m	(revision 1651)
@@ -0,0 +1,9 @@
+function macro=MacAyealFormulationEnum()
+%MACAYEALFORMULATIONENUM - Enum of MacAyealFormulation
+%
+%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
+%
+%   Usage:
+%      macro=MacAyealFormulationEnum()
+
+macro=303;
Index: sm/trunk/src/m/shared/NoneEnum.m
===================================================================
--- /issm/trunk/src/m/shared/NoneEnum.m	(revision 1650)
+++ 	(revision )
@@ -1,9 +1,0 @@
-function macro=NoneEnum()
-%NONEENUM - Enum of None
-%
-%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
-%
-%   Usage:
-%      macro=NoneEnum()
-
-macro=301;
Index: /issm/trunk/src/m/shared/NoneFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/shared/NoneFormulationEnum.m	(revision 1651)
+++ /issm/trunk/src/m/shared/NoneFormulationEnum.m	(revision 1651)
@@ -0,0 +1,9 @@
+function macro=NoneFormulationEnum()
+%NONEFORMULATIONENUM - Enum of NoneFormulation
+%
+%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
+%
+%   Usage:
+%      macro=NoneFormulationEnum()
+
+macro=301;
Index: sm/trunk/src/m/shared/PattynEnum.m
===================================================================
--- /issm/trunk/src/m/shared/PattynEnum.m	(revision 1650)
+++ 	(revision )
@@ -1,9 +1,0 @@
-function macro=PattynEnum()
-%PATTYNENUM - Enum of Pattyn
-%
-%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
-%
-%   Usage:
-%      macro=PattynEnum()
-
-macro=304;
Index: /issm/trunk/src/m/shared/PattynFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/shared/PattynFormulationEnum.m	(revision 1651)
+++ /issm/trunk/src/m/shared/PattynFormulationEnum.m	(revision 1651)
@@ -0,0 +1,9 @@
+function macro=PattynFormulationEnum()
+%PATTYNFORMULATIONENUM - Enum of PattynFormulation
+%
+%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
+%
+%   Usage:
+%      macro=PattynFormulationEnum()
+
+macro=304;
Index: sm/trunk/src/m/shared/StokesEnum.m
===================================================================
--- /issm/trunk/src/m/shared/StokesEnum.m	(revision 1650)
+++ 	(revision )
@@ -1,9 +1,0 @@
-function macro=StokesEnum()
-%STOKESENUM - Enum of Stokes
-%
-%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
-%
-%   Usage:
-%      macro=StokesEnum()
-
-macro=305;
Index: /issm/trunk/src/m/shared/StokesFormulationEnum.m
===================================================================
--- /issm/trunk/src/m/shared/StokesFormulationEnum.m	(revision 1651)
+++ /issm/trunk/src/m/shared/StokesFormulationEnum.m	(revision 1651)
@@ -0,0 +1,9 @@
+function macro=StokesFormulationEnum()
+%STOKESFORMULATIONENUM - Enum of StokesFormulation
+%
+%   file generated by src/c/EnumDefinitions/SynchronizeMatlabEnum
+%
+%   Usage:
+%      macro=StokesFormulationEnum()
+
+macro=305;
Index: /issm/trunk/src/m/solutions/ice/ModelProcessorDiagnosticHoriz.m
===================================================================
--- /issm/trunk/src/m/solutions/ice/ModelProcessorDiagnosticHoriz.m	(revision 1650)
+++ /issm/trunk/src/m/solutions/ice/ModelProcessorDiagnosticHoriz.m	(revision 1651)
@@ -13,7 +13,7 @@
 %Allocate grids and elements
 if strcmpi(md.type,'2d'),
-	numberofelements_horiz=length(find(md.elements_type(:,1)==MacAyealEnum()));
+	numberofelements_horiz=length(find(md.elements_type(:,1)==MacAyealFormulationEnum()));
 else
-	numberofelements_horiz=length(find(md.elements_type(:,1)==MacAyealEnum() | md.elements_type(:,1)==PattynEnum()));
+	numberofelements_horiz=length(find(md.elements_type(:,1)==MacAyealFormulationEnum() | md.elements_type(:,1)==PattynFormulationEnum()));
 end
 elements=struct('element',cell(numberofelements_horiz,1));
@@ -22,5 +22,5 @@
 %Deal with 2d elements
 if strcmpi(md.type,'2d'),
-	el3pos=find(md.elements_type(:,1)==MacAyealEnum);
+	el3pos=find(md.elements_type(:,1)==MacAyealFormulationEnum);
 	if ~isempty(el3pos),
 		pos=[1:length(el3pos)]';
@@ -54,5 +54,5 @@
 	%3d elements
 	%First create penta elements (ie non hutter)
-	el6pos=find(md.elements_type(:,1)==MacAyealEnum | md.elements_type(:,1)==PattynEnum);
+	el6pos=find(md.elements_type(:,1)==MacAyealFormulationEnum | md.elements_type(:,1)==PattynFormulationEnum);
 
 	if ~isempty(el6pos),
@@ -87,5 +87,5 @@
 		%For penta elements where we want to implement MacAyeal's element, we need to collapse 
 		%the formulation into trias: 
-		pos=find(ismember(el6pos,find(md.elements_type(:,1)==MacAyealEnum())));
+		pos=find(ismember(el6pos,find(md.elements_type(:,1)==MacAyealFormulationEnum())));
 		elements(pos)=SetStructureField(elements(pos),'element','collapse',ones(length(pos),1));
 
@@ -140,5 +140,5 @@
 if strcmpi(md.type,'3d'),
 	for n=1:length(elements),
-		if md.elements_type(el6pos(n),1)==MacAyealEnum(),
+		if md.elements_type(el6pos(n),1)==MacAyealFormulationEnum(),
 			%all dofs associated to this element are frozen, except if the element is on the bed, and acts as a 'fake' pentaelem, 
 			%and a true 'macayeal' tria element.
@@ -164,5 +164,5 @@
 
 	if strcmpi(md.type,'3d'),
-		if md.elements_type(md.segmentonneumann_diag(i,end))==MacAyealEnum(),
+		if md.elements_type(md.segmentonneumann_diag(i,end))==MacAyealFormulationEnum(),
 			loads(i).load=icefront;
 			loads(i).load.eid=find(el6pos==md.segmentonneumann_diag(i,end));
@@ -172,5 +172,5 @@
 			loads(i).load.type='segment';
 
-		elseif md.elements_type(md.segmentonneumann_diag(i,end))==PattynEnum(),
+		elseif md.elements_type(md.segmentonneumann_diag(i,end))==PattynFormulationEnum(),
 			%build a quad ice front for the penta element
 			loads(i).load=icefront;
@@ -183,10 +183,10 @@
 
 		else
-			if ~(md.elements_type(md.segmentonneumann_diag(i,end))==HutterEnum()),
+			if ~(md.elements_type(md.segmentonneumann_diag(i,end))==HutterFormulationEnum()),
 				error('diagnostic error message: unsupported  element type');
 			end
 		end
 	else
-		if md.elements_type(md.segmentonneumann_diag(i,end))==MacAyealEnum(),
+		if md.elements_type(md.segmentonneumann_diag(i,end))==MacAyealFormulationEnum(),
 			loads(i).load=icefront;
 			loads(i).load.eid=find(el3pos==md.segmentonneumann_diag(i,end));
@@ -197,5 +197,5 @@
 
 		else
-			if ~(md.elements_type(md.segmentonneumann_diag(i,end))==HutterEnum()),
+			if ~(md.elements_type(md.segmentonneumann_diag(i,end))==HutterFormulationEnum()),
 				error('diagnostic error message: unsupported  element type');
 			end
Index: /issm/trunk/src/m/solutions/ice/ModelProcessorDiagnosticStokes.m
===================================================================
--- /issm/trunk/src/m/solutions/ice/ModelProcessorDiagnosticStokes.m	(revision 1650)
+++ /issm/trunk/src/m/solutions/ice/ModelProcessorDiagnosticStokes.m	(revision 1651)
@@ -12,10 +12,10 @@
 
 %Allocate grids and elements
-numberofstokeselements=size(find(md.elements_type(:,2)==StokesEnum()),1);
+numberofstokeselements=size(find(md.elements_type(:,2)==StokesFormulationEnum()),1);
 elements=struct('element',cell(numberofstokeselements,1));
 materials=struct('material',cell(numberofstokeselements+1,1));
 
 %3d elements
-pos=find(md.elements_type(:,2)==StokesEnum);
+pos=find(md.elements_type(:,2)==StokesFormulationEnum);
 stokesnewnumber=[1:numberofstokeselements]';
 [elements(stokesnewnumber).element]=deal(pentaelem);
@@ -89,5 +89,5 @@
 %Build grids on the border of stokes
 %Get border grids
-stokes_elements=find(md.elements_type(:,2)==StokesEnum()); %find the elements on the stokes domain
+stokes_elements=find(md.elements_type(:,2)==StokesFormulationEnum()); %find the elements on the stokes domain
 borderflags=zeros(md.numberofgrids,1); 
 borderflags(md.elements(stokes_elements,:))=1; %find all the grids of the elements on stokes domain, ie stokes grids and borderstokes
@@ -115,5 +115,5 @@
 	%build a quad ice front for the penta element
 	loads(i).load=icefront;
-	loads(i).load.eid=find(segmentonneumann_diag_stokes(i,end)==find(md.elements_type(:,2)==StokesEnum())); %elements contain only stokes elements, so we have to renumbered
+	loads(i).load.eid=find(segmentonneumann_diag_stokes(i,end)==find(md.elements_type(:,2)==StokesFormulationEnum())); %elements contain only stokes elements, so we have to renumbered
 	loads(i).load.g(1)=segmentonneumann_diag_stokes(i,1);
 	loads(i).load.g(2)=segmentonneumann_diag_stokes(i,2);
Index: /issm/trunk/src/m/solutions/ice/ModelProcessorThermal.m
===================================================================
--- /issm/trunk/src/m/solutions/ice/ModelProcessorThermal.m	(revision 1650)
+++ /issm/trunk/src/m/solutions/ice/ModelProcessorThermal.m	(revision 1651)
@@ -39,6 +39,6 @@
 %For penta elements where we want to implement MacAyeal's element, we need to collapse 
 %the formulation into trias: 
-el6pos=find(md.elements_type(:,1)==MacAyealEnum | md.elements_type(:,1)==PattynEnum);
-pos2=find(ismember(el6pos,find(md.elements_type(:,1)==MacAyealEnum())));
+el6pos=find(md.elements_type(:,1)==MacAyealFormulationEnum | md.elements_type(:,1)==PattynFormulationEnum);
+pos2=find(ismember(el6pos,find(md.elements_type(:,1)==MacAyealFormulationEnum())));
 elements(pos2)=SetStructureField(elements(pos2),'element','collapse',ones(length(pos2),1));
 
