Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 15694)
@@ -456,6 +456,12 @@
 	}
 
-	/*Add to global matrix*/
 	if(Ke){
+		/*Condense if requested*/
+		if(this->element_type==MINIcondensedEnum){
+			int indices[3]={18,19,20};
+			Ke->StaticCondensation(3,&indices[0]);
+		}
+
+		/*Add to global matrix*/
 		Ke->AddToGlobal(Kff,Kfs);
 		delete Ke;
@@ -592,6 +598,19 @@
 	}
 
-	/*Add to global Vector*/
 	if(pe){
+
+		/*StaticCondensation if requested*/
+		if(this->element_type==MINIcondensedEnum){
+			int indices[3]={18,19,20};
+
+			this->element_type=MINIEnum;
+			ElementMatrix* Ke = CreateKMatrixDiagnosticFS();
+			this->element_type=MINIcondensedEnum;
+
+			pe->StaticCondensation(Ke,3,&indices[0]);
+			delete Ke;
+		}
+
+		/*Add to global Vector*/
 		pe->AddToGlobal(pf);
 		delete pe;
@@ -1165,5 +1184,5 @@
 		GaussPenta* gauss=new GaussPenta();
 		for(int iv=0;iv<this->NumberofNodes();iv++){
-			gauss->GaussNode(numnodes,iv);
+			gauss->GaussNode(this->element_type,iv);
 			input->GetInputValue(&pvalue[iv],gauss);
 		}
@@ -1188,5 +1207,5 @@
 	GaussPenta* gauss=new GaussPenta();
 	for (int iv=0;iv<this->NumberofNodes();iv++){
-		gauss->GaussNode(numnodes,iv);
+		gauss->GaussNode(this->element_type,iv);
 		input->GetInputValue(&pvalue[iv],gauss);
 	}
@@ -7429,10 +7448,4 @@
 	Ke =new ElementMatrix(Ke1,Ke2);
 
-	/*Condense if requested*/
-	if(this->element_type==MINIcondensedEnum){
-		int indices[3]={18,19,20};
-		Ke->StaticCondensation(3,&indices[0]);
-	}
-
 	/*clean-up and return*/
 	delete Ke1;
@@ -8458,16 +8471,4 @@
 	pe =new ElementVector(pe1,pe2,pe3);
 
-	/*Condense if requested*/
-	if(this->element_type==MINIcondensedEnum){
-		int indices[3]={18,19,20};
-
-		this->element_type=MINIEnum;
-		ElementMatrix* Ke = CreateKMatrixDiagnosticFS();
-		this->element_type=MINIcondensedEnum;
-
-		pe->StaticCondensation(Ke,3,&indices[0]);
-		delete Ke;
-	}
-
 	/*clean-up and return*/
 	delete pe1;
@@ -9182,5 +9183,5 @@
 	GaussPenta* gauss=new GaussPenta();
 	for(int i=0;i<numnodes;i++){
-		gauss->GaussNode(numnodes,i);
+		gauss->GaussNode(this->element_type,i);
 
 		/*Recover vx and vy*/
@@ -9301,5 +9302,5 @@
 	gauss = new GaussPenta();
 	for(int i=0;i<vnumnodes;i++){
-		gauss->GaussNode(vnumnodes,i);
+		gauss->GaussNode(this->VelocityInterpolation(),i);
 
 		vx_input->GetInputValue(&vx,gauss);
@@ -9311,5 +9312,5 @@
 	}
 	for(int i=0;i<pnumnodes;i++){
-		gauss->GaussNode(pnumnodes,i);
+		gauss->GaussNode(this->PressureInterpolation(),i);
 
 		p_input ->GetInputValue(&p ,gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp	(revision 15694)
@@ -1968,2 +1968,32 @@
 }
 /*}}}*/
+/*FUNCTION PentaRef::VelocityInterpolation{{{*/
+int PentaRef::VelocityInterpolation(void){
+
+	switch(this->element_type){
+		case P1P1Enum:          return P1Enum;
+		case P1P1GLSEnum:       return P1Enum;
+		case MINIcondensedEnum: return P1bubbleEnum;
+		case MINIEnum:          return P1bubbleEnum;
+		case TaylorHoodEnum:    return P2Enum;
+		default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
+/*FUNCTION PentaRef::PressureInterpolation{{{*/
+int PentaRef::PressureInterpolation(void){
+
+	switch(this->element_type){
+		case P1P1Enum:          return P1Enum;
+		case P1P1GLSEnum:       return P1Enum;
+		case MINIcondensedEnum: return P1Enum;
+		case MINIEnum:          return P1Enum;
+		case TaylorHoodEnum:    return P1Enum;
+		default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
+	}
+
+	return -1;
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/PentaRef.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/PentaRef.h	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/Elements/PentaRef.h	(revision 15694)
@@ -72,4 +72,6 @@
 		int  NumberofNodesVelocity(void);
 		int  NumberofNodesPressure(void);
+		int  VelocityInterpolation(void);
+		int  PressureInterpolation(void);
 };
 #endif
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15694)
@@ -231,6 +231,18 @@
 	}
 
-	/*Add to global matrix*/
 	if(Ke){
+		/*Static condensation if requested*/
+		if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[3]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<3;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			printarray(indices,1,size);
+			Ke->StaticCondensation(size,indices);
+			xDelete<int>(indices);
+		}
+
+		/*Add to global matrix*/
 		Ke->AddToGlobal(Kff,Kfs);
 		delete Ke;
@@ -346,4 +358,21 @@
 	/*Add to global Vector*/
 	if(pe){
+		/*Static condensation if requested*/
+		if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[3]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<3;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+
+			this->element_type=P1bubbleEnum;
+			ElementMatrix* Ke = CreateKMatrixDiagnosticSSA();
+			this->element_type=P1bubblecondensedEnum;
+
+			pe->StaticCondensation(Ke,size,indices);
+			xDelete<int>(indices);
+			delete Ke;
+		}
+
 		pe->AddToGlobal(pf);
 		delete pe;
@@ -1129,5 +1158,5 @@
 		GaussTria* gauss=new GaussTria();
 		for(int iv=0;iv<this->NumberofNodes();iv++){
-			gauss->GaussNode(numnodes,iv);
+			gauss->GaussNode(this->element_type,iv);
 			input->GetInputValue(&pvalue[iv],gauss);
 		}
@@ -1152,5 +1181,5 @@
 	GaussTria* gauss=new GaussTria();
 	for (int iv=0;iv<this->NumberofNodes();iv++){
-		gauss->GaussNode(numnodes,iv);
+		gauss->GaussNode(this->element_type,iv);
 		input->GetInputValue(&pvalue[iv],gauss);
 	}
@@ -3359,5 +3388,5 @@
 	gauss=new GaussTria();
 	for(int i=0;i<numnodes;i++){
-		gauss->GaussNode(numnodes,i);
+		gauss->GaussNode(this->element_type,i);
 
 		/*Recover vx and vy*/
Index: /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp	(revision 15694)
@@ -444,4 +444,5 @@
 			/*bubble*/
 			basis[3]=27.*gauss->coord1*gauss->coord2*gauss->coord3;
+			return;
 		case P2Enum:
 			/*Corner nodes*/
@@ -560,6 +561,6 @@
 			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);
+			dbasis[NUMNODESP1b*0+3] = 27.*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);;
+			dbasis[NUMNODESP1b*1+3] = 27.*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
 			return;
 		case P2Enum:
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussPenta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussPenta.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussPenta.cpp	(revision 15694)
@@ -8,4 +8,5 @@
 #include "../../shared/Exceptions/exceptions.h"
 #include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Enum/Enum.h"
 #include "../../shared/Numerics/GaussPoints.h"
 #include "../../shared/Numerics/constants.h"
@@ -397,5 +398,5 @@
 /*}}}*/
 /*FUNCTION GaussPenta::GaussNode{{{*/
-void GaussPenta::GaussNode(int numnodes,int iv){
+void GaussPenta::GaussNode(int finiteelement,int iv){
 
 	/*in debugging mode: check that the default constructor has been called*/
@@ -403,6 +404,6 @@
 
 	/*update static arrays*/
-	switch(numnodes){
-		case 6: //P1 Lagrange element
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
 			switch(iv){
 				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
@@ -415,5 +416,5 @@
 			}
 			break;
-		case 9: //P1xP2 Lagrange element
+		case P1xP2Enum: 
 			switch(iv){
 				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
@@ -430,5 +431,5 @@
 			}
 			break;
-		case 12: //P2xP1 Lagrange element
+		case P2xP1Enum: 
 			switch(iv){
 				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
@@ -448,5 +449,17 @@
 			}
 			break;
-		case 7: //P1+ Lagrange element
+		case P1bubbleEnum:  case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.;    coord2=0.;    coord3=0.;    coord4=-1.; break;
+				case 1: coord1=0.;    coord2=1.;    coord3=0.;    coord4=-1.; break;
+				case 2: coord1=0.;    coord2=0.;    coord3=1.;    coord4=-1.; break;
+				case 3: coord1=1.;    coord2=0.;    coord3=0.;    coord4=+1.; break;
+				case 4: coord1=0.;    coord2=1.;    coord3=0.;    coord4=+1.; break;
+				case 5: coord1=0.;    coord2=0.;    coord3=1.;    coord4=+1.; break;
+				case 6: coord1=1./3.; coord2=1./3.; coord3=1./3.; coord4=0.;  break;
+				default: _error_("node index should be in [0 5]");
+			}
+			break;
+		case P2Enum:
 			switch(iv){
 				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
@@ -457,17 +470,4 @@
 				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
 
-				case 6: coord1=0.; coord2=0.; coord3=0.; coord4=0.;break;
-				default: _error_("node index should be in [0 5]");
-			}
-			break;
-		case 15: //P2 Lagrange element
-			switch(iv){
-				case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
-				case 1: coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
-				case 2: coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
-				case 3: coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
-				case 4: coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
-				case 5: coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
-
 				case 6: coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
 				case 7: coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
@@ -483,5 +483,5 @@
 			}
 			break;
-		default: _error_("Number of nodes "<<numnodes<<" not supported");
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
 	}
 
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussPenta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussPenta.h	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussPenta.h	(revision 15694)
@@ -44,5 +44,5 @@
 		void GaussPoint(int ig);
 		void GaussVertex(int iv);
-		void GaussNode(int numnodes,int iv);
+		void GaussNode(int finitelement,int iv);
 		void GaussFaceTria(int index1, int index2, int index3, int order);
 		void GaussCenter(void);
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp	(revision 15694)
@@ -442,5 +442,5 @@
 /*}}}*/
 /*FUNCTION GaussTria::GaussNode{{{*/
-void GaussTria::GaussNode(int numnodes,int iv){
+void GaussTria::GaussNode(int finiteelement,int iv){
 
 	/*in debugging mode: check that the default constructor has been called*/
@@ -448,6 +448,6 @@
 
 	/*update static arrays*/
-	switch(numnodes){
-		case 3: //P1 Lagrange element
+	switch(finiteelement){
+		case P1Enum: case P1DGEnum:
 			switch(iv){
 				case 0: coord1=1.; coord2=0.; coord3=0.; break;
@@ -457,5 +457,14 @@
 			}
 			break;
-		case 6: //P2 Lagrange element
+		case P1bubbleEnum: case P1bubblecondensedEnum:
+			switch(iv){
+				case 0: coord1=1.;    coord2=0.;    coord3=0.;    break;
+				case 1: coord1=0.;    coord2=1.;    coord3=0.;    break;
+				case 2: coord1=0.;    coord2=0.;    coord3=1.;    break;
+				case 3: coord1=1./3.; coord2=1./3.; coord3=1./3.; break;
+				default: _error_("node index should be in [0 3]");
+			}
+			break;
+		case P2Enum:
 			switch(iv){
 				case 0: coord1=1.; coord2=0.; coord3=0.; break;
@@ -468,5 +477,5 @@
 			}
 			break;
-		default: _error_("supported number of nodes are 3 and 6");
+		default: _error_("Finite element "<<EnumToStringx(finiteelement)<<" not supported");
 	}
 
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussTria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussTria.h	(revision 15693)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussTria.h	(revision 15694)
@@ -41,5 +41,5 @@
 		void GaussPoint(int ig);
 		void GaussVertex(int iv);
-		void GaussNode(int numnodes,int iv);
+		void GaussNode(int finitelement,int iv);
 		void GaussCenter(void);
 		void GaussEdgeCenter(int index1,int index2);
Index: /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 15694)
@@ -45,10 +45,16 @@
 
 	switch(finite_element){
-		case P1Enum:
+		case P1Enum: 
 			/*Nothing else to do*/
 			break;
 		case P1bubbleEnum:
-			if(iomodel->dim!=3) _error_("3d is the only supported dimension");
-			elementnbv = 6;
+			switch(iomodel->dim){
+				case 2: elementnbv = 3; break;
+				case 3: elementnbv = 6; break;
+				default: _error_("3d is the only supported dimension");
+			}
+			break;
+		case P1bubblecondensedEnum: 
+			/*Nothing else to do*/
 			break;
 		case P1xP2Enum:
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 15694)
@@ -74,6 +74,8 @@
 			iomodel->Constant(&temp,FlowequationFeSSAEnum);
 			switch(temp){
-				case 0 : finiteelement = P1Enum; break;
-				case 1 : finiteelement = P2Enum; break;
+				case 0 : finiteelement = P1Enum;                break; 
+				case 1 : finiteelement = P2Enum;                break; 
+				case 2 : finiteelement = P1bubblecondensedEnum; break; 
+				case 3 : finiteelement = P1bubbleEnum;          break; 
 				default: _error_("finite element "<<temp<<" not supported");
 			}
@@ -85,8 +87,10 @@
 			iomodel->Constant(&temp,FlowequationFeHOEnum);
 			switch(temp){
-				case 0 : finiteelement = P1Enum;    break;
-				case 1 : finiteelement = P1xP2Enum; break;
-				case 2 : finiteelement = P2xP1Enum; break;
-				case 3 : finiteelement = P2Enum;    break;
+				case 0 : finiteelement = P1Enum;                break; 
+				case 1 : finiteelement = P1xP2Enum;             break; 
+				case 2 : finiteelement = P2xP1Enum;             break; 
+				case 3 : finiteelement = P2Enum;                break; 
+				case 4 : finiteelement = P1bubblecondensedEnum; break; 
+				case 5 : finiteelement = P1bubbleEnum;          break; 
 				default: _error_("finite element "<<temp<<" not supported");
 			}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 15694)
@@ -38,6 +38,8 @@
 			iomodel->Constant(&temp,FlowequationFeSSAEnum);
 			switch(temp){
-				case 0 : finiteelement = P1Enum; break;
-				case 1 : finiteelement = P2Enum; break;
+				case 0 : finiteelement = P1Enum;                break; 
+				case 1 : finiteelement = P2Enum;                break; 
+				case 2 : finiteelement = P1bubblecondensedEnum; break; 
+				case 3 : finiteelement = P1bubbleEnum;          break; 
 				default: _error_("finite element "<<temp<<" not supported");
 			}
@@ -51,8 +53,10 @@
 			iomodel->Constant(&temp,FlowequationFeHOEnum);
 			switch(temp){
-				case 0 : finiteelement = P1Enum;    break;
-				case 1 : finiteelement = P1xP2Enum; break;
-				case 2 : finiteelement = P2xP1Enum; break;
-				case 3 : finiteelement = P2Enum;    break;
+				case 0 : finiteelement = P1Enum;                break; 
+				case 1 : finiteelement = P1xP2Enum;             break; 
+				case 2 : finiteelement = P2xP1Enum;             break; 
+				case 3 : finiteelement = P2Enum;                break; 
+				case 4 : finiteelement = P1bubblecondensedEnum; break; 
+				case 5 : finiteelement = P1bubbleEnum;          break; 
 				default: _error_("finite element "<<temp<<" not supported");
 			}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 15693)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 15694)
@@ -45,6 +45,8 @@
 			iomodel->Constant(&temp,FlowequationFeSSAEnum);
 			switch(temp){
-				case 0 : finiteelement = P1Enum; break;
-				case 1 : finiteelement = P2Enum; break;
+				case 0 : finiteelement = P1Enum;                break; 
+				case 1 : finiteelement = P2Enum;                break; 
+				case 2 : finiteelement = P1bubblecondensedEnum; break; 
+				case 3 : finiteelement = P1bubbleEnum;          break; 
 				default: _error_("finite element "<<temp<<" not supported");
 			}
@@ -56,8 +58,10 @@
 			iomodel->Constant(&temp,FlowequationFeHOEnum);
 			switch(temp){
-				case 0 : finiteelement = P1Enum;    break;
-				case 1 : finiteelement = P1xP2Enum; break;
-				case 2 : finiteelement = P2xP1Enum; break;
-				case 3 : finiteelement = P2Enum;    break;
+				case 0 : finiteelement = P1Enum;                break; 
+				case 1 : finiteelement = P1xP2Enum;             break; 
+				case 2 : finiteelement = P2xP1Enum;             break; 
+				case 3 : finiteelement = P2Enum;                break; 
+				case 4 : finiteelement = P1bubblecondensedEnum; break; 
+				case 5 : finiteelement = P1bubbleEnum;          break; 
 				default: _error_("finite element "<<temp<<" not supported");
 			}
Index: /issm/trunk-jpl/src/m/classes/flowequation.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/flowequation.m	(revision 15693)
+++ /issm/trunk-jpl/src/m/classes/flowequation.m	(revision 15694)
@@ -81,6 +81,6 @@
 				md = checkfield(md,'flowequation.isHO','numel',[1],'values',[0 1]);
 				md = checkfield(md,'flowequation.isFS','numel',[1],'values',[0 1]);
-				md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0 1]);
-				md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0:3]);
+				md = checkfield(md,'flowequation.fe_SSA','numel',[1],'values',[0:3]);
+				md = checkfield(md,'flowequation.fe_HO','numel',[1],'values',[0:5]);
 				md = checkfield(md,'flowequation.fe_FS','numel',[1],'values',[0:4]);
 				md = checkfield(md,'flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
@@ -115,6 +115,6 @@
 			fielddisplay(obj,'isHO','is the Higher-Order (HO) approximation used ?');
 			fielddisplay(obj,'isFS','are the Full-FS (FS) equations used ?');
-			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_SSA','Finite Element for SSA  0: Lagrange P1 (linear), 1: Lagrange P2 (quadratic), 2: P1+ condensed, 3: P1+');
+			fielddisplay(obj,'fe_HO', 'Finite Element for HO   0: P1xP1, 1: P1xP2, 2: P2xP1, 3: P2xP2, 4: P1+ condensed, 5: P1+');
 			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');
