Index: /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 6234)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 6235)
@@ -18,5 +18,5 @@
 #include "../ModelProcessorx/ModelProcessorx.h"
 
-void  ElementsAndVerticesPartitioning(bool** pmy_elements, bool** pmy_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
+void  ElementsAndVerticesPartitioning(bool** pmy_elements, int** pmy_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
 
 	int i;
@@ -27,5 +27,5 @@
 	/*output: */
 	bool* my_elements=NULL;
-	bool* my_vertices=NULL;
+	int* my_vertices=NULL;
 
 	/*intermediary: */
@@ -77,5 +77,5 @@
 
 	/*Used later on: */
-	my_vertices=(bool*)xcalloc(iomodel->numberofvertices,sizeof(bool));
+	my_vertices=(int*)xcalloc(iomodel->numberofvertices,sizeof(int));
 	my_elements=(bool*)xcalloc(iomodel->numberofelements,sizeof(bool));
 
@@ -93,12 +93,12 @@
 			 into the vertices coordinates. If we start plugging 1 into my_vertices for each index[n][i] (i=0:2), then my_vertices 
 			 will hold which vertices belong to this partition*/
-			my_vertices[(int)*(iomodel->elements+elements_width*i+0)-1]=true;
-			my_vertices[(int)*(iomodel->elements+elements_width*i+1)-1]=true;
-			my_vertices[(int)*(iomodel->elements+elements_width*i+2)-1]=true;
+			my_vertices[(int)*(iomodel->elements+elements_width*i+0)-1]=1;
+			my_vertices[(int)*(iomodel->elements+elements_width*i+1)-1]=1;
+			my_vertices[(int)*(iomodel->elements+elements_width*i+2)-1]=1;
 			
 			if(elements_width==6){
-				my_vertices[(int)*(iomodel->elements+elements_width*i+3)-1]=true;
-				my_vertices[(int)*(iomodel->elements+elements_width*i+4)-1]=true;
-				my_vertices[(int)*(iomodel->elements+elements_width*i+5)-1]=true;
+				my_vertices[(int)*(iomodel->elements+elements_width*i+3)-1]=1;
+				my_vertices[(int)*(iomodel->elements+elements_width*i+4)-1]=1;
+				my_vertices[(int)*(iomodel->elements+elements_width*i+5)-1]=1;
 			}
 		}
@@ -112,6 +112,6 @@
 	IoModelFetchData(&iomodel->penalties,&iomodel->numpenalties,NULL,iomodel_handle,"penalties");
 	for(i=0;i<iomodel->numpenalties;i++){
-		if(my_vertices[(int)iomodel->penalties[2*i+0]-1]){
-			my_vertices[(int)iomodel->penalties[2*i+1]-1]=true;
+		if(my_vertices[(int)iomodel->penalties[2*i+0]-1] && !my_vertices[(int)iomodel->penalties[2*i+1]-1]){
+			my_vertices[(int)iomodel->penalties[2*i+1]-1]=2; //to know that these elements are not on the partition
 		}
 	}
Index: /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 6234)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 6235)
@@ -86,6 +86,6 @@
 
 /*partitioning: */
-void  ElementsAndVerticesPartitioning(bool** pmy_elements, bool** pmy_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void  NodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices,  IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous);
+void  ElementsAndVerticesPartitioning(bool** pmy_elements, int** pmy_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void  NodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices,  IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous);
 
 /*Connectivity*/
Index: /issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 6234)
+++ /issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 6235)
@@ -18,8 +18,8 @@
 #include "../ModelProcessorx/ModelProcessorx.h"
 
-void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
-void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
+void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle);
 
-void  NodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous){
+void  NodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle,bool continuous){
 	
 	/*First thing, this is a new partition for a new analysis_type, therefore, to avoid a leak, erase the nodes partition that might come through pmy_nodes: */
@@ -33,5 +33,5 @@
 }
 
-void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
+void  ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
 
 	/*as many nodes as there are vertices */
@@ -48,5 +48,5 @@
 
 
-void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, bool* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
+void  DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel, ConstDataHandle iomodel_handle){
 
 	/*each element has it own nodes (as many as vertices) + additional nodes from neighbouring elements for each edge. This yields to a very different partition for 
