Index: /issm/trunk-jpl/src/c/analyses/diagnostic_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/diagnostic_core.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/analyses/diagnostic_core.cpp	(revision 15504)
@@ -13,12 +13,8 @@
 
 	/*parameters: */
-	bool  dakota_analysis   = false;
-	int   dim               = -1;
-	bool  ishutter          = false;
-	bool  ismacayealpattyn  = false;
-	bool  isl1l2            = false;
-	bool  isstokes          = false;
+	bool  dakota_analysis;
+	int   dim;
+	bool  ishutter,ismacayeal,isl1l2,ispattyn,isstokes;
 	bool  conserve_loads    = true;
-	bool  modify_loads      = true;
 	bool  save_results;
 	int   newton;
@@ -30,6 +26,7 @@
 	femmodel->parameters->FindParam(&dim,MeshDimensionEnum);
 	femmodel->parameters->FindParam(&ishutter,FlowequationIshutterEnum);
-	femmodel->parameters->FindParam(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
+	femmodel->parameters->FindParam(&ismacayeal,FlowequationIsmacayealEnum);
 	femmodel->parameters->FindParam(&isl1l2,FlowequationIsl1l2Enum);
+	femmodel->parameters->FindParam(&ispattyn,FlowequationIspattynEnum);
 	femmodel->parameters->FindParam(&isstokes,FlowequationIsstokesEnum);
 	femmodel->parameters->FindParam(&newton,DiagnosticIsnewtonEnum);
@@ -57,19 +54,16 @@
 
 	if(ishutter){
-
 		if(VerboseSolution()) _printf0_("   computing hutter velocities\n");
 
-		//Take the last velocity into account so that the velocity on the MacAyeal domain is not zero
-		if (ismacayealpattyn) ResetBoundaryConditions(femmodel,DiagnosticHutterAnalysisEnum);
-
+		/*Take the last velocity into account so that the velocity on the MacAyeal domain is not zero*/
+		if(ismacayeal || isl1l2 || ispattyn ) ResetBoundaryConditions(femmodel,DiagnosticHutterAnalysisEnum);
 		femmodel->SetCurrentConfiguration(DiagnosticHutterAnalysisEnum);
 		solutionsequence_linear(femmodel);
-
-		if (ismacayealpattyn) ResetBoundaryConditions(femmodel,DiagnosticHorizAnalysisEnum);
+		if(ismacayeal || isl1l2 || ispattyn) ResetBoundaryConditions(femmodel,DiagnosticHorizAnalysisEnum);
 	}
 
-	if ((ismacayealpattyn || isl1l2) ^ isstokes){ // ^ = xor
+	if ((ismacayeal || ispattyn || isl1l2) ^ isstokes){ // ^ = xor
+		if(VerboseSolution()) _printf0_("   computing velocities\n");
 
-		if(VerboseSolution()) _printf0_("   computing velocities\n");
 		femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
 		if(newton>0)
@@ -79,12 +73,10 @@
 	}
 
-	if (ismacayealpattyn && isstokes){
-
-		if(VerboseSolution()) _printf0_("   computing coupling macayealpattyn and stokes velocities and pressure \n");
+	if ((ismacayeal || isl1l2 || ispattyn) && isstokes){
+		if(VerboseSolution()) _printf0_("   computing coupling betweem lower order models and full-Stokes\n");
 		solutionsequence_stokescoupling_nonlinear(femmodel,conserve_loads);
 	}
 
-	if (dim==3 & (ishutter || ismacayealpattyn)){
-
+	if (dim==3 & (ishutter || ismacayeal || isl1l2 || ispattyn)){
 		if(VerboseSolution()) _printf0_("   computing vertical velocities\n");
 		femmodel->SetCurrentConfiguration(DiagnosticVertAnalysisEnum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 15504)
@@ -46,6 +46,7 @@
 	parameters->AddObject(iomodel->CopyConstantObject(MeshDimensionEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIshutterEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsmacayealpattynEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsmacayealEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsl1l2Enum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIspattynEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsstokesEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationFeStokesEnum));
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15504)
@@ -17,5 +17,5 @@
 	IssmDouble rho_ice;
 	IssmDouble stokesreconditioning;
-	bool       isstokes,isl1l2,ismacayealpattyn;
+	bool       ismacayeal,isl1l2,ispattyn,isstokes;
 	int        fe_ssa;
 	bool       spcpresent = false;
@@ -48,7 +48,8 @@
 	iomodel->Constant(&rho_ice,MaterialsRhoIceEnum);
 	iomodel->Constant(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
+	iomodel->Constant(&ismacayeal,FlowequationIsmacayealEnum);
+	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
+	iomodel->Constant(&ispattyn,FlowequationIspattynEnum);
 	iomodel->Constant(&isstokes,FlowequationIsstokesEnum);
-	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
-	iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
 	iomodel->Constant(&fe_ssa,FlowequationFeSsaEnum);
 
@@ -57,5 +58,5 @@
 
 	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
-	if(!ismacayealpattyn & !isstokes & !isl1l2){
+	if(!ismacayeal & !ispattyn & !isstokes & !isl1l2){
 		*pconstraints=constraints;
 		return;
@@ -312,5 +313,5 @@
 
 	/*SPC Quadratic elements*/
-	if(ismacayealpattyn&& fe_ssa==1){
+	if(ismacayeal && fe_ssa==1){
 
 		int   v1,v2;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 15504)
@@ -14,11 +14,11 @@
 
 	/*Intermediary*/
-	int segment_width;
-	int element;
-	int i;
-	int count=0;
-	int penpair_ids[2];
-	bool ismacayealpattyn,isstokes,isl1l2;
-	int  numpenalties,numberofpressureloads,numrifts,numriftsegments;
+	int         segment_width;
+	int         element;
+	int         i;
+	int         count;
+	int         penpair_ids[2];
+	bool        ismacayeal,isl1l2,ispattyn,isstokes;
+	int         numpenalties,numberofpressureloads,numrifts,numriftsegments;
 	IssmDouble *pressureload   = NULL;
 	IssmDouble *elements_type  = NULL;
@@ -34,5 +34,6 @@
 	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
 	iomodel->Constant(&isstokes,FlowequationIsstokesEnum);
-	iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
+	iomodel->Constant(&ismacayeal,FlowequationIsmacayealEnum);
+	iomodel->Constant(&ispattyn,FlowequationIspattynEnum);
 	iomodel->Constant(&numrifts,RiftsNumriftsEnum);
 
@@ -41,5 +42,5 @@
 
 	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
-	if(!ismacayealpattyn & !isstokes & !isl1l2) return;
+	if(!ismacayeal & !ispattyn & !isstokes & !isl1l2) return;
 
 	/*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the nodes
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 15504)
@@ -12,15 +12,16 @@
 
 	/*Intermediary*/
-	bool   isstokes,isl1l2,ismacayealpattyn;
+	bool   ismacayeal,isl1l2,ispattyn,isstokes;
 	int    finiteelementssa;
 
 	/*Fetch parameters: */
+	iomodel->Constant(&ismacayeal,FlowequationIsmacayealEnum);
+	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
+	iomodel->Constant(&ispattyn,FlowequationIspattynEnum);
 	iomodel->Constant(&isstokes,FlowequationIsstokesEnum);
-	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
-	iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
 	iomodel->Constant(&finiteelementssa,FlowequationFeSsaEnum);
 
 	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
-	if(!ismacayealpattyn & !isstokes & !isl1l2) return;
+	if(!ismacayeal & !isl1l2 & !ispattyn & !isstokes) return;
 
 	/*Create nodes: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 15504)
@@ -17,14 +17,13 @@
 
 	int    materials_type;
-	bool   ismacayealpattyn;
-	bool   isl1l2;
-	bool   isstokes;
+	bool   ismacayeal,isl1l2,ispattyn,isstokes;
 	bool   control_analysis;
 	bool   dakota_analysis;
 
 	/*Fetch constants needed: */
+	iomodel->Constant(&ismacayeal,FlowequationIsmacayealEnum);
+	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
+	iomodel->Constant(&ispattyn,FlowequationIspattynEnum);
 	iomodel->Constant(&isstokes,FlowequationIsstokesEnum);
-	iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum);
-	iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
 	iomodel->Constant(&control_analysis,InversionIscontrolEnum);
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
@@ -32,5 +31,5 @@
 
 	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
-	if(!ismacayealpattyn & !isstokes &!isl1l2) return;
+	if(!ismacayeal & !isl1l2 & !ispattyn & !isstokes) return;
 
 	/*Fetch data needed: */
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 15503)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 15504)
@@ -68,6 +68,7 @@
 	FlowequationElementEquationEnum,
 	FlowequationIshutterEnum,
+	FlowequationIsmacayealEnum,
 	FlowequationIsl1l2Enum,
-	FlowequationIsmacayealpattynEnum,
+	FlowequationIspattynEnum,
 	FlowequationIsstokesEnum,
 	FlowequationFeStokesEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 15504)
@@ -76,6 +76,7 @@
 		case FlowequationElementEquationEnum : return "FlowequationElementEquation";
 		case FlowequationIshutterEnum : return "FlowequationIshutter";
+		case FlowequationIsmacayealEnum : return "FlowequationIsmacayeal";
 		case FlowequationIsl1l2Enum : return "FlowequationIsl1l2";
-		case FlowequationIsmacayealpattynEnum : return "FlowequationIsmacayealpattyn";
+		case FlowequationIspattynEnum : return "FlowequationIspattyn";
 		case FlowequationIsstokesEnum : return "FlowequationIsstokes";
 		case FlowequationFeStokesEnum : return "FlowequationFeStokes";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 15503)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 15504)
@@ -76,6 +76,7 @@
 	      else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum;
 	      else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;
+	      else if (strcmp(name,"FlowequationIsmacayeal")==0) return FlowequationIsmacayealEnum;
 	      else if (strcmp(name,"FlowequationIsl1l2")==0) return FlowequationIsl1l2Enum;
-	      else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;
+	      else if (strcmp(name,"FlowequationIspattyn")==0) return FlowequationIspattynEnum;
 	      else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum;
 	      else if (strcmp(name,"FlowequationFeStokes")==0) return FlowequationFeStokesEnum;
@@ -136,9 +137,9 @@
 	      else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
 	      else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;
-	      else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
+	      if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
+	      else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
 	      else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
 	      else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
@@ -259,9 +260,9 @@
 	      else if (strcmp(name,"GiaMantleViscosity")==0) return GiaMantleViscosityEnum;
 	      else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum;
-	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
+	      if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+	      else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
 	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
 	      else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
 	      else if (strcmp(name,"RiftfrontType")==0) return RiftfrontTypeEnum;
-	      else if (strcmp(name,"Segment")==0) return SegmentEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
+	      if (strcmp(name,"Segment")==0) return SegmentEnum;
+	      else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
 	      else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
 	      else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
 	      else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
-	      else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
+	      if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
+	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
 	      else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
 	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
Index: /issm/trunk-jpl/src/m/classes/flowequation.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/flowequation.m	(revision 15503)
+++ /issm/trunk-jpl/src/m/classes/flowequation.m	(revision 15504)
@@ -6,15 +6,16 @@
 classdef flowequation
 	properties (SetAccess=public) 
-		ismacayealpattyn     = 0;
-		ishutter             = 0;
-		isl1l2               = 0;
-		isstokes             = 0;
-		fe_stokes            = 0;
-		fe_ssa               = 0;
-		vertex_equation      = NaN;
-		element_equation     = NaN;
-		bordermacayeal       = NaN;
-		borderpattyn         = NaN;
-		borderstokes         = NaN;
+		ismacayeal       = 0;
+		ispattyn         = 0;
+		ishutter         = 0;
+		isl1l2           = 0;
+		isstokes         = 0;
+		fe_stokes        = 0;
+		fe_ssa           = 0;
+		vertex_equation  = NaN;
+		element_equation = NaN;
+		bordermacayeal   = NaN;
+		borderpattyn     = NaN;
+		borderstokes     = NaN;
 	end
 	methods
@@ -34,7 +35,8 @@
 			if ismember(DiagnosticHorizAnalysisEnum(),analyses),
 
-				md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0 1]);
+				md = checkfield(md,'flowequation.ismacayeal','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0 1]);
+				md = checkfield(md,'flowequation.ispattyn','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices 1],'values',[0 1]);
@@ -48,6 +50,6 @@
 					md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:8]);
 				end
-				if ~(obj.ismacayealpattyn || obj.ishutter || obj.isstokes || obj.isl1l2),
-					md = checkmessage(md,['no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1']);
+				if ~(obj.ismacayeal || obj.ispattyn || obj.ishutter || obj.isstokes || obj.isl1l2),
+					md = checkmessage(md,['no element types set for this model']);
 				end
 			end
@@ -64,7 +66,8 @@
 			disp(sprintf('   flow equation parameters:'));
 
-			fielddisplay(obj,'ismacayealpattyn','is the macayeal or pattyn approximation used ?');
 			fielddisplay(obj,'ishutter','is the shallow ice approximation used ?');
+			fielddisplay(obj,'ismacayeal','is the macayeal approximation used ?');
 			fielddisplay(obj,'isl1l2','is the l1l2 approximation used ?');
+			fielddisplay(obj,'ispattyn','is the pattyn approximation used ?');
 			fielddisplay(obj,'isstokes','are the Full-Stokes equations used ?');
 			fielddisplay(obj,'fe_ssa','Finite Element for SSA   0: Lagrange P1 (linear), 1: Lagrange P2 (quadratic)');
@@ -77,7 +80,8 @@
 		end % }}}
 		function marshall(obj,md,fid) % {{{
-			WriteData(fid,'object',obj,'fieldname','ismacayealpattyn','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','ishutter','format','Boolean');
+			WriteData(fid,'object',obj,'fieldname','ismacayeal','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','isl1l2','format','Boolean');
+			WriteData(fid,'object',obj,'fieldname','ispattyn','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','isstokes','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','fe_stokes','format','Integer');
Index: /issm/trunk-jpl/src/m/classes/flowequation.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/flowequation.py	(revision 15503)
+++ /issm/trunk-jpl/src/m/classes/flowequation.py	(revision 15504)
@@ -16,7 +16,8 @@
 	def __init__(self): # {{{
 		
-		self.ismacayealpattyn = 0
 		self.ishutter         = 0
+		self.ismacayeal       = 0
 		self.isl1l2           = 0
+		self.ispattyn         = 0
 		self.isstokes         = 0
 		self.fe_stokes        = 0
@@ -35,7 +36,8 @@
 		string='   flow equation parameters:'
 
-		string="%s\n%s"%(string,fielddisplay(self,'ismacayealpattyn',"is the macayeal or pattyn approximation used ?"))
 		string="%s\n%s"%(string,fielddisplay(self,'ishutter',"is the shallow ice approximation used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'ismacayeal',"is the macayeal approximation used ?"))
 		string="%s\n%s"%(string,fielddisplay(self,'isl1l2',"are l1l2 equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'ispattyn',"is the pattyn approximation used ?"))
 		string="%s\n%s"%(string,fielddisplay(self,'isstokes',"are the Full-Stokes equations used ?"))
 		string="%s\n%s"%(string,fielddisplay(self,'fe_ssa',"Finite Element for SSA   0: Lagrange P1 (linear), 1: Lagrange P2 (quadratic)"))
@@ -53,7 +55,8 @@
 
 		if DiagnosticHorizAnalysisEnum() in analyses:
-			md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0,1])
+			md = checkfield(md,'flowequation.ismacayeal','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0,1])
+			md = checkfield(md,'flowequation.ispattyn','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0,1])
 			md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices],'values',[0,1])
@@ -66,6 +69,6 @@
 				md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',numpy.arange(0,7+1))
 				md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',numpy.arange(0,7+1))
-			if not (self.ismacayealpattyn or self.ishutter or self.isstokes or self.isl1l2):
-				md.checkmessage("no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1")
+			if not (self.ismacayeal or self.ispattyn or self.ishutter or self.isstokes or self.isl1l2):
+				md.checkmessage("no element types set for this model")
 
 		if DiagnosticHutterAnalysisEnum() in analyses:
@@ -77,7 +80,8 @@
 	# }}}
 	def marshall(self,md,fid):    # {{{
-		WriteData(fid,'object',self,'fieldname','ismacayealpattyn','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','ishutter','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ismacayeal','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isl1l2','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ispattyn','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isstokes','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','fe_stokes','format','Integer')
Index: /issm/trunk-jpl/src/m/classes/model/model.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/model/model.m	(revision 15503)
+++ /issm/trunk-jpl/src/m/classes/model/model.m	(revision 15504)
@@ -882,5 +882,4 @@
 			if isfield(structmd,'artificial_diffusivity'), md.balancethickness.stabilization=structmd.artificial_diffusivity; end
 			if isfield(structmd,'dhdt'), md.balancethickness.thickening_rate=structmd.dhdt; end
-			if isfield(structmd,'ismacayealpattyn'), md.flowequation.ismacayealpattyn=structmd.ismacayealpattyn; end
 			if isfield(structmd,'ishutter'), md.flowequation.ishutter=structmd.ishutter; end
 			if isfield(structmd,'isstokes'), md.flowequation.isstokes=structmd.isstokes; end
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 15503)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 15504)
@@ -835,4 +835,18 @@
 	return StringToEnum('FlowequationIshutter')[0]
 
+def FlowequationIsmacayealEnum():
+	"""
+	FLOWEQUATIONISMACAYEALENUM - Enum of FlowequationIsmacayeal
+
+	WARNING: DO NOT MODIFY THIS FILE
+				this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+				Please read src/c/shared/Enum/README for more information
+
+	   Usage:
+	      macro=FlowequationIsmacayealEnum()
+	"""
+
+	return StringToEnum('FlowequationIsmacayeal')[0]
+
 def FlowequationIsl1l2Enum():
 	"""
@@ -849,17 +863,17 @@
 	return StringToEnum('FlowequationIsl1l2')[0]
 
-def FlowequationIsmacayealpattynEnum():
-	"""
-	FLOWEQUATIONISMACAYEALPATTYNENUM - Enum of FlowequationIsmacayealpattyn
-
-	WARNING: DO NOT MODIFY THIS FILE
-				this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-				Please read src/c/shared/Enum/README for more information
-
-	   Usage:
-	      macro=FlowequationIsmacayealpattynEnum()
-	"""
-
-	return StringToEnum('FlowequationIsmacayealpattyn')[0]
+def FlowequationIspattynEnum():
+	"""
+	FLOWEQUATIONISPATTYNENUM - Enum of FlowequationIspattyn
+
+	WARNING: DO NOT MODIFY THIS FILE
+				this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+				Please read src/c/shared/Enum/README for more information
+
+	   Usage:
+	      macro=FlowequationIspattynEnum()
+	"""
+
+	return StringToEnum('FlowequationIspattyn')[0]
 
 def FlowequationIsstokesEnum():
@@ -7903,4 +7917,4 @@
 	"""
 
-	return 563
-
+	return 564
+
Index: /issm/trunk-jpl/src/m/enum/FlowequationIsmacayealEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/FlowequationIsmacayealEnum.m	(revision 15504)
+++ /issm/trunk-jpl/src/m/enum/FlowequationIsmacayealEnum.m	(revision 15504)
@@ -0,0 +1,11 @@
+function macro=FlowequationIsmacayealEnum()
+%FLOWEQUATIONISMACAYEALENUM - Enum of FlowequationIsmacayeal
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FlowequationIsmacayealEnum()
+
+macro=StringToEnum('FlowequationIsmacayeal');
Index: sm/trunk-jpl/src/m/enum/FlowequationIsmacayealpattynEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/FlowequationIsmacayealpattynEnum.m	(revision 15503)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=FlowequationIsmacayealpattynEnum()
-%FLOWEQUATIONISMACAYEALPATTYNENUM - Enum of FlowequationIsmacayealpattyn
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=FlowequationIsmacayealpattynEnum()
-
-macro=StringToEnum('FlowequationIsmacayealpattyn');
Index: /issm/trunk-jpl/src/m/enum/FlowequationIspattynEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/FlowequationIspattynEnum.m	(revision 15504)
+++ /issm/trunk-jpl/src/m/enum/FlowequationIspattynEnum.m	(revision 15504)
@@ -0,0 +1,11 @@
+function macro=FlowequationIspattynEnum()
+%FLOWEQUATIONISPATTYNENUM - Enum of FlowequationIspattyn
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FlowequationIspattynEnum()
+
+macro=StringToEnum('FlowequationIspattyn');
Index: /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 15503)
+++ /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 15504)
@@ -9,3 +9,3 @@
 %      macro=MaximumNumberOfEnums()
 
-macro=563;
+macro=564;
Index: /issm/trunk-jpl/src/m/parameterization/setflowequation.m
===================================================================
--- /issm/trunk-jpl/src/m/parameterization/setflowequation.m	(revision 15503)
+++ /issm/trunk-jpl/src/m/parameterization/setflowequation.m	(revision 15504)
@@ -283,7 +283,8 @@
 %figure out solution types
 md.flowequation.ishutter=double(any(md.flowequation.element_equation==1));
-md.flowequation.ismacayealpattyn=double(any(md.flowequation.element_equation==2 | md.flowequation.element_equation==3));
+md.flowequation.ismacayeal=double(any(md.flowequation.element_equation==2));
+md.flowequation.ispattyn=double(any(md.flowequation.element_equation==3));
+md.flowequation.isl1l2=double(any(md.flowequation.element_equation==8));
 md.flowequation.isstokes=double(any(md.flowequation.element_equation==4));
-md.flowequation.isl1l2=double(any(md.flowequation.element_equation==8));
 
 return
Index: /issm/trunk-jpl/src/m/parameterization/setflowequation.py
===================================================================
--- /issm/trunk-jpl/src/m/parameterization/setflowequation.py	(revision 15503)
+++ /issm/trunk-jpl/src/m/parameterization/setflowequation.py	(revision 15504)
@@ -275,6 +275,7 @@
 	#figure out solution types
 	md.flowequation.ishutter=any(md.flowequation.element_equation==1)
-	md.flowequation.ismacayealpattyn=bool(numpy.any(numpy.logical_or(md.flowequation.element_equation==2,md.flowequation.element_equation==3)))
+	md.flowequation.ismacayeal=any(md.flowequation.element_equation==2)
 	md.flowequation.isl1l2=any(md.flowequation.element_equation==8)
+	md.flowequation.ispattyn=any(md.flowequation.element_equation==3)
 	md.flowequation.isstokes=any(md.flowequation.element_equation==4)
 
Index: /issm/trunk-jpl/src/m/qmu/qmuresponse.m
===================================================================
--- /issm/trunk-jpl/src/m/qmu/qmuresponse.m	(revision 15503)
+++ /issm/trunk-jpl/src/m/qmu/qmuresponse.m	(revision 15504)
@@ -29,5 +29,6 @@
 	m_ds=models.ds;
 	ishutter=m_dhu.parameters.ishutter;
-	ismacayealpattyn=m_dh.parameters.ismacayealpattyn;
+	ismacayeal=m_dh.parameters.ismacayeal;
+	ispattyn=m_dh.parameters.ispattyn;
 	isstokes=m_ds.parameters.isstokes;
 	if ishutter,
@@ -57,5 +58,5 @@
 		end
 
-	elseif ismacayealpattyn,
+	elseif ismacayeal || ispattyn,
 
 % for now, separate all segments from double array for parallel to make cells
