Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 15689)
@@ -3219,4 +3219,15 @@
 			penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4];
 			penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes         = 7;
+			penta_node_ids   = xNew<int>(numnodes);
+			penta_node_ids[0]=iomodel->nodecounter+iomodel->elements[6*index+0];
+			penta_node_ids[1]=iomodel->nodecounter+iomodel->elements[6*index+1];
+			penta_node_ids[2]=iomodel->nodecounter+iomodel->elements[6*index+2];
+			penta_node_ids[3]=iomodel->nodecounter+iomodel->elements[6*index+3];
+			penta_node_ids[4]=iomodel->nodecounter+iomodel->elements[6*index+4];
+			penta_node_ids[5]=iomodel->nodecounter+iomodel->elements[6*index+5];
+			penta_node_ids[6]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
 			break;
 		case P1xP2Enum:
Index: /issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp	(revision 15689)
@@ -1206,6 +1206,5 @@
 
 	switch(this->element_type){
-		case P1Enum:
-		case P1DGEnum:
+		case P1Enum: case P1DGEnum:
 			basis[0]=gauss->coord1*(1.-zeta)/2.;
 			basis[1]=gauss->coord2*(1.-zeta)/2.;
@@ -1215,5 +1214,5 @@
 			basis[5]=gauss->coord3*(1.+zeta)/2.;
 			return;
-		case P1bubbleEnum:
+		case P1bubbleEnum: case P1bubblecondensedEnum:
 			basis[0]=gauss->coord1*(1.-zeta)/2.;
 			basis[1]=gauss->coord2*(1.-zeta)/2.;
@@ -1487,5 +1486,5 @@
 			dbasis[NUMNODESP1*2+5]   = .5*gauss->coord3;
 			return;
-		case P1bubbleEnum:
+		case P1bubbleEnum: case P1bubblecondensedEnum:
 			/*Nodal function 1*/
 			dbasis[NUMNODESP1b*0+0]   = (zeta-1.)/4.;
@@ -1922,14 +1921,15 @@
 
 	switch(this->element_type){
-		case P1Enum:            return NUMNODESP1;
-		case P1bubbleEnum:      return NUMNODESP1b;
-		case P2Enum:            return NUMNODESP2;
-		case P2xP1Enum:         return NUMNODESP2xP1;
-		case P1xP2Enum:         return NUMNODESP1xP2;
-		case P1P1Enum:          return NUMNODESP1*2;
-		case P1P1GLSEnum:       return NUMNODESP1*2;
-		case MINIcondensedEnum: return NUMNODESP1b+NUMNODESP1;
-		case MINIEnum:          return NUMNODESP1b+NUMNODESP1;
-		case TaylorHoodEnum:    return NUMNODESP2+NUMNODESP1;
+		case P1Enum:                return NUMNODESP1;
+		case P1bubbleEnum:          return NUMNODESP1b;
+		case P1bubblecondensedEnum: return NUMNODESP1b;
+		case P2Enum:                return NUMNODESP2;
+		case P2xP1Enum:             return NUMNODESP2xP1;
+		case P1xP2Enum:             return NUMNODESP1xP2;
+		case P1P1Enum:              return NUMNODESP1*2;
+		case P1P1GLSEnum:           return NUMNODESP1*2;
+		case MINIcondensedEnum:     return NUMNODESP1b+NUMNODESP1;
+		case MINIEnum:              return NUMNODESP1b+NUMNODESP1;
+		case TaylorHoodEnum:        return NUMNODESP2+NUMNODESP1;
 		default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
 	}
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15689)
@@ -2364,4 +2364,12 @@
 			tria_node_ids[1]=iomodel->nodecounter+3*index+2;
 			tria_node_ids[2]=iomodel->nodecounter+3*index+3;
+			break;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			numnodes        = 4;
+			tria_node_ids   = xNew<int>(numnodes);
+			tria_node_ids[0]=iomodel->nodecounter+iomodel->elements[3*index+0];
+			tria_node_ids[1]=iomodel->nodecounter+iomodel->elements[3*index+1];
+			tria_node_ids[2]=iomodel->nodecounter+iomodel->elements[3*index+2];
+			tria_node_ids[3]=iomodel->nodecounter+iomodel->numberofvertices+index+1;
 			break;
 		case P2Enum:
Index: /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp	(revision 15689)
@@ -16,6 +16,7 @@
 
 /*Element macros*/
-#define NUMNODESP1 3
-#define NUMNODESP2 6
+#define NUMNODESP1  3
+#define NUMNODESP1b 4
+#define NUMNODESP2  6
 
 /*Object constructors and destructor*/
@@ -43,5 +44,5 @@
 void TriaRef::SetElementType(int type,int type_counter){
 
-	_assert_(type==P1Enum || type==P1DGEnum || type==P2Enum);
+	_assert_(type==P1Enum || type==P1DGEnum || type==P1bubbleEnum || type==P1bubblecondensedEnum || type==P2Enum);
 
 	/*initialize element type*/
@@ -431,10 +432,16 @@
 
 	switch(this->element_type){
-		case P1Enum:
-		case P1DGEnum:
+		case P1Enum: case P1DGEnum:
 			basis[0]=gauss->coord1;
 			basis[1]=gauss->coord2;
 			basis[2]=gauss->coord3;
 			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Corner nodes*/
+			basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
+			basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
+			basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
+			/*bubble*/
+			basis[3]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
 		case P2Enum:
 			/*Corner nodes*/
@@ -467,6 +474,10 @@
 
 	switch(this->element_type){
-		case P1Enum:
-		case P1DGEnum:
+		case P1Enum: case P1DGEnum:
+			basis[0]=triabasis[index1];
+			basis[1]=triabasis[index2];
+			xDelete<IssmDouble>(triabasis);
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
 			basis[0]=triabasis[index1];
 			basis[1]=triabasis[index2];
@@ -537,4 +548,18 @@
 			dbasis[NUMNODESP1*0+2] = 0;
 			dbasis[NUMNODESP1*1+2] = SQRT3/3.;
+			return;
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			/*Nodal function 1*/
+			dbasis[NUMNODESP1b*0+0] = -0.5;
+			dbasis[NUMNODESP1b*1+0] = -SQRT3/6.;
+			/*Nodal function 2*/
+			dbasis[NUMNODESP1b*0+1] = 0.5;
+			dbasis[NUMNODESP1b*1+1] = -SQRT3/6.;
+			/*Nodal function 3*/
+			dbasis[NUMNODESP1b*0+2] = 0;
+			dbasis[NUMNODESP1b*1+2] = SQRT3/3.;
+			/*Nodal function 4*/
+			dbasis[NUMNODESP1b*0+2] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);;
+			dbasis[NUMNODESP1b*1+2] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
 			return;
 		case P2Enum:
@@ -622,7 +647,9 @@
 
 	switch(this->element_type){
-		case P1Enum:   return NUMNODESP1;
-		case P1DGEnum: return NUMNODESP1;
-		case P2Enum:   return NUMNODESP2;
+		case P1Enum:                return NUMNODESP1;
+		case P1DGEnum:              return NUMNODESP1;
+		case P1bubbleEnum:          return NUMNODESP1b;
+		case P1bubblecondensedEnum: return NUMNODESP1b;
+		case P2Enum:                return NUMNODESP2;
 		default: _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
 	}
Index: /issm/trunk-jpl/src/c/classes/IoModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 15689)
@@ -57,6 +57,6 @@
 
 	/*Initialize data: */
-	this->data=xNew<IssmDouble*>(MaximumNumberOfEnums);
-	for(int i=0;i<MaximumNumberOfEnums;i++) this->data[i]=NULL;
+	this->data=xNew<IssmDouble*>(MaximumNumberOfDefinitionsEnum);
+	for(int i=0;i<MaximumNumberOfDefinitionsEnum;i++) this->data[i]=NULL;
 
 	/*If we are running in AD mode, we need to start the trace and declare our independent variables now, 
@@ -94,5 +94,5 @@
 	#ifdef _ISSM_DEBUG_
 	if(this->data){
-		for(int i=0;i<MaximumNumberOfEnums;i++){
+		for(int i=0;i<MaximumNumberOfDefinitionsEnum;i++){
 			if(this->data[i]){
 				_printf0_("Info: previous pointer of " << EnumToStringx(i) << " has not been freed (DeleteData has not been called)\n");
@@ -143,5 +143,5 @@
 		}
 		else{
-			if(record_enum!=MaximumNumberOfEnums){
+			if(record_enum!=MaximumNumberOfDefinitionsEnum){
 				_printf0_("\n");
 				_printf0_("=========================================================================\n");
@@ -215,5 +215,5 @@
 IssmDouble* IoModel::Data(int data_enum){
 
-	_assert_(data_enum<MaximumNumberOfEnums);
+	_assert_(data_enum<MaximumNumberOfDefinitionsEnum);
 	_assert_(data_enum>=0);
 
@@ -235,6 +235,6 @@
 
 	/*Initialize array detecting whether data[i] is an independent AD mode variable: */
-	this->independents=xNew<bool>(MaximumNumberOfEnums);
-	for(i=0;i<MaximumNumberOfEnums;i++) this->independents[i]=false;
+	this->independents=xNew<bool>(MaximumNumberOfDefinitionsEnum);
+	for(i=0;i<MaximumNumberOfDefinitionsEnum;i++) this->independents[i]=false;
 
 	this->FetchData(&autodiff,AutodiffIsautodiffEnum);
@@ -292,5 +292,5 @@
 	for(i = 0; i <num; i++){
 		dataenum=va_arg(ap, int);
-		_assert_(dataenum<MaximumNumberOfEnums);
+		_assert_(dataenum<MaximumNumberOfDefinitionsEnum);
 
 		/*do not erase independent variables for the AD mode computations!: */
@@ -1066,5 +1066,5 @@
 		/*{{{*/
 		#ifdef _ISSM_DEBUG_
-		_assert_(dataenum<MaximumNumberOfEnums);
+		_assert_(dataenum<MaximumNumberOfDefinitionsEnum);
 		if(this->data[dataenum]){
 			_error_("Info: trying to fetch " << EnumToStringx(dataenum) << " but previous pointer has not been freed (DeleteData has not been called)");
@@ -1096,10 +1096,10 @@
 
 	/*variables being fetched: */
-	bool    boolean;
-	int     integer;
+	bool        boolean;
+	int         integer;
 	IssmDouble  scalar;
-	char   *string        = NULL;
-	IssmDouble *IssmDoublevector  = NULL;
-	int     M,N;
+	char       *string           = NULL;
+	IssmDouble *IssmDoublevector = NULL;
+	int         M,N;
 
 	/*Fetch parameters: */
Index: /issm/trunk-jpl/src/c/main/kriging.cpp
===================================================================
--- /issm/trunk-jpl/src/c/main/kriging.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/main/kriging.cpp	(revision 15689)
@@ -148,5 +148,5 @@
 	iomodel->fid=fid;
 	iomodel->CheckEnumSync();
-	iomodel->independents=xNew<bool>(MaximumNumberOfEnums); for(int i=0;i<MaximumNumberOfEnums;i++) iomodel->independents[i]=false;
+	iomodel->independents=xNew<bool>(MaximumNumberOfDefinitionsEnum); for(int i=0;i<MaximumNumberOfDefinitionsEnum;i++) iomodel->independents[i]=false;
 	iomodel->FetchData(&x,&M,&N,0);        nobs=M*N;
 	iomodel->FetchData(&y,&M,&N,1);        _assert_(M*N==nobs);
Index: /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 15689)
@@ -116,4 +116,14 @@
 							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+i+1,
 											dof,value,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			case P1bubblecondensedEnum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,spcdata[i],analysis_type));
 							count++;
 						}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 15689)
@@ -40,4 +40,32 @@
 
 					}
+				}
+			}
+			break;
+
+		case P1bubbleEnum:
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel,analysis,approximation));
+				}
+			}
+			break;
+
+		case P1bubblecondensedEnum:
+			for(i=0;i<iomodel->numberofvertices;i++){
+				if(iomodel->my_vertices[i]){
+					nodes->AddObject(new Node(iomodel->nodecounter+i+1,i,i,iomodel,analysis,approximation));
+				}
+			}
+			for(i=0;i<iomodel->numberofelements;i++){
+				if(iomodel->my_elements[i]){
+					node = new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,0,iomodel,analysis,approximation);
+					node->Deactivate();
+					nodes->AddObject(node);
 				}
 			}
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 15688)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 15689)
@@ -503,4 +503,5 @@
 	P1DGEnum,
 	P1bubbleEnum,
+	P1bubblecondensedEnum,
 	P2Enum,
 	P2xP1Enum,
@@ -619,5 +620,5 @@
 	ArrheniusEnum,
 	/*}}}*/
-	MaximumNumberOfEnums
+	MaximumNumberOfDefinitionsEnum
 };
 
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 15689)
@@ -495,4 +495,5 @@
 		case P1DGEnum : return "P1DG";
 		case P1bubbleEnum : return "P1bubble";
+		case P1bubblecondensedEnum : return "P1bubblecondensed";
 		case P2Enum : return "P2";
 		case P2xP1Enum : return "P2xP1";
@@ -588,4 +589,5 @@
 		case PatersonEnum : return "Paterson";
 		case ArrheniusEnum : return "Arrhenius";
+		case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
 		default : return "unknown";
 
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 15688)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 15689)
@@ -504,10 +504,11 @@
 	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
 	      else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
+	      else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
 	      else if (strcmp(name,"P2")==0) return P2Enum;
-	      else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
+	      if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
+	      else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
 	      else if (strcmp(name,"P1P1")==0) return P1P1Enum;
 	      else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
@@ -600,4 +601,5 @@
 	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
 	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
+	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
          else stage=6;
    }
Index: /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh	(revision 15688)
+++ /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh	(revision 15689)
@@ -3,5 +3,5 @@
 
 #Get all lines of EnumDefinitions2.h which hold Enum | remove all commas > put everything in file temp
-cat EnumDefinitions.h | grep -e "[0-9]Enum," -e "[a-zA-Z]Enum," | grep -v include | sed -e "s/,/ /g" | awk '{print $1}' > temp
+cat EnumDefinitions.h | grep -e "[0-9]Enum," -e "[a-zA-Z]Enum," -e "MaximumNumberOfDefinitionsEnum" | grep -v include | sed -e "s/,/ /g" | awk '{print $1}' > temp
 
 #Removed existing files
@@ -177,42 +177,4 @@
 
 done
-#MaximumNumberOfEnums (matlab){{{
-cat <<END > $ISSM_DIR/src/m/enum/MaximumNumberOfEnums.m
-function macro=MaximumNumberOfEnums()
-%$(echo "MaximumNumberOfEnums" | awk {'print toupper($1)'}) - Enum of MaximumNumberOfEnums
-%
-%   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=MaximumNumberOfEnums()
-
-macro=$(cat EnumDefinitions.h | grep -e "[0-9]Enum" -e "[a-zA-Z]Enum" | grep -v include \
-		| awk '{ printf "%s %s\n", NR-1, $0 }' \
-		| grep "MaximumNumberOfEnums" | awk '{print $1}');
-END
-#}}}
-#MaximumNumberOfEnums (python){{{
-cat <<END >> $ISSM_DIR/src/m/enum/EnumDefinitions.py
-def MaximumNumberOfEnums():
-	"""
-	$(echo "MaximumNumberOfEnums" | awk {'print toupper($1)'}) - Enum of MaximumNumberOfEnums
-
-	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=MaximumNumberOfEnums()
-	"""
-
-	return $(cat EnumDefinitions.h | grep -e "[0-9]Enum" -e "[a-zA-Z]Enum" | grep -v include \
-		| awk '{ printf "%s %s\n", NR-1, $0 }' \
-		| grep "MaximumNumberOfEnums" | awk '{print $1}')
-
-END
-#}}}
-
 #clean up{{{
 rm temp
Index: /issm/trunk-jpl/src/m/classes/flowequation.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/flowequation.m	(revision 15688)
+++ /issm/trunk-jpl/src/m/classes/flowequation.m	(revision 15689)
@@ -69,6 +69,6 @@
 		function obj = setdefaultparameters(obj) % {{{
 
-			%MINI element for FS by default
-			obj.fe_FS = 3;
+			%MINI condensed element for FS by default
+			obj.fe_FS = 2;
 		end % }}}
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
@@ -117,5 +117,5 @@
 			fielddisplay(obj,'fe_SSA','Finite Element for SSA  0: Lagrange P1 (linear), 1: Lagrange P2 (quadratic)');
 			fielddisplay(obj,'fe_HO', 'Finite Element for HO   0: P1xP1, 1: P1xP2, 2: P2xP1, 3: P2xP2');
-			fielddisplay(obj,'fe_FS', 'Finite Element for FS   0: P1P1 (debugging), 1: P1P1GSL (under dev), 2: MINI condensed (under dev), 3: MINI, 4: P2P1 (Taylor-Hood)');
+			fielddisplay(obj,'fe_FS', 'Finite Element for FS   0: P1P1 (debugging), 1: P1P1GSL (under dev), 2: MINI condensed, 3: MINI, 4: P2P1 (Taylor-Hood)');
 			fielddisplay(obj,'vertex_equation','flow equation for each vertex');
 			fielddisplay(obj,'element_equation','flow equation for each element');
Index: /issm/trunk-jpl/src/m/classes/flowequation.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/flowequation.py	(revision 15688)
+++ /issm/trunk-jpl/src/m/classes/flowequation.py	(revision 15689)
@@ -44,5 +44,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'fe_SSA',"Finite Element for SSA   0: Lagrange P1 (linear), 1: Lagrange P2 (quadratic)"))
 		string="%s\n%s"%(string,fielddisplay(self,'fe_HO' ,"Finite Element for HO   0: P1xP1, 1: P1xP2, 2: P2xP1, 3: P2xP2"))
-		string="%s\n%s"%(string,fielddisplay(self,'fe_FS' ,"Finite Element for FS   0: P1P1 (debugging), 1: P1P1GSL (under dev), 2: MINI condensed (under dev), 3: MINI, 4: P2P1 (Taylor-Hood)"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_FS' ,"Finite Element for FS   0: P1P1 (debugging), 1: P1P1GSL (under dev), 2: MINI condensed, 3: MINI, 4: P2P1 (Taylor-Hood)"))
 		string="%s\n%s"%(string,fielddisplay(self,'vertex_equation',"flow equation for each vertex"))
 		string="%s\n%s"%(string,fielddisplay(self,'element_equation',"flow equation for each element"))
@@ -55,5 +55,5 @@
 
 		#MINI element for FS by default
-		self.fe_FS=3
+		self.fe_FS=2
 
 		return self
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 15688)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 15689)
@@ -6701,4 +6701,18 @@
 	return StringToEnum('P1bubble')[0]
 
+def P1bubblecondensedEnum():
+	"""
+	P1BUBBLECONDENSEDENUM - Enum of P1bubblecondensed
+
+	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=P1bubblecondensedEnum()
+	"""
+
+	return StringToEnum('P1bubblecondensed')[0]
+
 def P2Enum():
 	"""
@@ -8003,16 +8017,16 @@
 	return StringToEnum('Arrhenius')[0]
 
-def MaximumNumberOfEnums():
-	"""
-	MAXIMUMNUMBEROFENUMS - Enum of MaximumNumberOfEnums
-
-	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=MaximumNumberOfEnums()
-	"""
-
-	return 571
-
+def MaximumNumberOfDefinitionsEnum():
+	"""
+	MAXIMUMNUMBEROFDEFINITIONSENUM - Enum of MaximumNumberOfDefinitions
+
+	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=MaximumNumberOfDefinitionsEnum()
+	"""
+
+	return StringToEnum('MaximumNumberOfDefinitions')[0]
+
Index: /issm/trunk-jpl/src/m/enum/MaximumNumberOfDefinitionsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaximumNumberOfDefinitionsEnum.m	(revision 15689)
+++ /issm/trunk-jpl/src/m/enum/MaximumNumberOfDefinitionsEnum.m	(revision 15689)
@@ -0,0 +1,11 @@
+function macro=MaximumNumberOfDefinitionsEnum()
+%MAXIMUMNUMBEROFDEFINITIONSENUM - Enum of MaximumNumberOfDefinitions
+%
+%   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=MaximumNumberOfDefinitionsEnum()
+
+macro=StringToEnum('MaximumNumberOfDefinitions');
Index: sm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m	(revision 15688)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaximumNumberOfEnums()
-%MAXIMUMNUMBEROFENUMS - Enum of MaximumNumberOfEnums
-%
-%   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=MaximumNumberOfEnums()
-
-macro=571;
Index: /issm/trunk-jpl/src/m/enum/P1bubblecondensedEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/P1bubblecondensedEnum.m	(revision 15689)
+++ /issm/trunk-jpl/src/m/enum/P1bubblecondensedEnum.m	(revision 15689)
@@ -0,0 +1,11 @@
+function macro=P1bubblecondensedEnum()
+%P1BUBBLECONDENSEDENUM - Enum of P1bubblecondensed
+%
+%   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=P1bubblecondensedEnum()
+
+macro=StringToEnum('P1bubblecondensed');
Index: /issm/trunk-jpl/src/m/solve/marshall.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/marshall.m	(revision 15688)
+++ /issm/trunk-jpl/src/m/solve/marshall.m	(revision 15689)
@@ -17,5 +17,5 @@
 
 %First, write MaximumNumberOfEnum to make sure that the Enums are synchronized
-WriteData(fid,'enum',MaximumNumberOfEnums(),'data',true,'format','Boolean');
+WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum(),'data',true,'format','Boolean');
 
 %Go through all model fields: check that it is a class and call checkconsistency
Index: /issm/trunk-jpl/src/m/solve/marshall.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/marshall.py	(revision 15688)
+++ /issm/trunk-jpl/src/m/solve/marshall.py	(revision 15689)
@@ -22,5 +22,5 @@
 
 	#First, write MaximumNumberOfEnum to make sure that the Enums are synchronized
-	WriteData(fid,'enum',MaximumNumberOfEnums(),'data',True,'format','Boolean')
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum(),'data',True,'format','Boolean')
 
 	#Go through all model fields: check that it is a class and call checkconsistency
