Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 24058)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 24059)
@@ -288,4 +288,30 @@
 		}
 	}
+
+	/*Take care of penalties*/
+	int numvertex_pairing;
+	int *vertex_pairing = NULL;
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
+	for(int i=0;i<numvertex_pairing;i++){
+		int id1 = vertex_pairing[2*i+0]-1;
+		int id2 = vertex_pairing[2*i+1]-1;
+		for(int e=0;e<num_procs;e++){
+			if(IsVertexInRank(vertices_ranks,vertices_proc_count,id1,e)){
+				AddVertexToRank(vertices_ranks,vertices_proc_count,id2,e);
+			}
+		}
+	}
+	xDelete<int>(vertex_pairing);
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
+	for(int i=0;i<numvertex_pairing;i++){
+		int id1 = vertex_pairing[2*i+0]-1;
+		int id2 = vertex_pairing[2*i+1]-1;
+		for(int e=0;e<num_procs;e++){
+			if(IsVertexInRank(vertices_ranks,vertices_proc_count,id1,e)){
+				AddVertexToRank(vertices_ranks,vertices_proc_count,id2,e);
+			}
+		}
+	}
+	xDelete<int>(vertex_pairing);
 
 	/*Create vector of size total numnodes, initialized with -1, that will keep track of local ids*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 24058)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 24059)
@@ -20,5 +20,4 @@
 	int numberofvertices2d;
 	int numlayers;
-	int numvertex_pairing;
 
 	/*intermediary: */
