Index: /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 17383)
+++ /issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 17384)
@@ -72,5 +72,7 @@
 		case P2Enum:
 			EdgesPartitioning(&my_edges,iomodel);
-			FacesPartitioning(&my_faces,iomodel);
+	      if(iomodel->meshtype==Mesh3DEnum){
+				FacesPartitioning(&my_faces,iomodel);
+			}
 			break;
 		case P2xP4Enum:
@@ -115,20 +117,22 @@
 					}
 				}
-				for(i=0;i<iomodel->numberoffaces;i++){
-					if(iomodel->faces[i*6+5]==2){/*Vertical quads*/
-						if(my_faces[i]){
-							FaceGetVertexIndices(iomodel,&numfacevertices,&faceverticesid,i);
-							isnan=0;
-							for(j=0;j<numfacevertices;j++){
-								if(xIsNan<IssmDouble>(spcdata[faceverticesid[j]])) isnan=1;
-							}
-							if(isnan==0){
-								value=0;
+				if(iomodel->meshtype==Mesh3DEnum){
+					for(i=0;i<iomodel->numberoffaces;i++){
+						if(iomodel->faces[i*6+5]==2){/*Vertical quads*/
+							if(my_faces[i]){
+								FaceGetVertexIndices(iomodel,&numfacevertices,&faceverticesid,i);
+								isnan=0;
 								for(j=0;j<numfacevertices;j++){
-									value=value+spcdata[faceverticesid[j]]/numfacevertices;
+									if(xIsNan<IssmDouble>(spcdata[faceverticesid[j]])) isnan=1;
 								}
-								constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,
-												dof,value,analysis_type));
-								count++;
+								if(isnan==0){
+									value=0;
+									for(j=0;j<numfacevertices;j++){
+										value=value+spcdata[faceverticesid[j]]/numfacevertices;
+									}
+									constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+iomodel->numberofedges+i+1,
+													dof,value,analysis_type));
+									count++;
+								}
 							}
 						}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 17383)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 17384)
@@ -132,5 +132,4 @@
 		case P2Enum:
 			EdgesPartitioning(&my_edges,iomodel);
-			FacesPartitioning(&my_faces,iomodel);
 			for(i=0;i<iomodel->numberofvertices;i++){
 				if(iomodel->my_vertices[i]){
@@ -144,16 +143,19 @@
 			}
 			id0 = id0+iomodel->numberofvertices+iomodel->numberofedges;
-			for(i=0;i<iomodel->numberoffaces;i++){
-				if(iomodel->faces[i*6+5]==2){/*Vertical quads*/
-					if(my_faces[i]){
-						node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
-						nodes->AddObject(node);
-					}
-				}
-				else if(iomodel->faces[i*6+5]==1){/*Triangular base/top*/
-					/*Nothing*/
-				}
-				else{
-					_error_("not supported");
+	      if(iomodel->meshtype==Mesh3DEnum){
+				FacesPartitioning(&my_faces,iomodel);
+				for(i=0;i<iomodel->numberoffaces;i++){
+					if(iomodel->faces[i*6+5]==2){/*Vertical quads*/
+						if(my_faces[i]){
+							node = new Node(id0+i+1,iomodel->numberofvertices+iomodel->numberofedges+i,lid++,0,iomodel,analysis,approximation);
+							nodes->AddObject(node);
+						}
+					}
+					else if(iomodel->faces[i*6+5]==1){/*Triangular base/top*/
+						/*Nothing*/
+					}
+					else{
+						_error_("not supported");
+					}
 				}
 			}
