Index: /issm/trunk-jpl/src/c/classes/Vertex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertex.cpp	(revision 23518)
+++ /issm/trunk-jpl/src/c/classes/Vertex.cpp	(revision 23519)
@@ -20,5 +20,8 @@
 }
 /*}}}*/
-Vertex::Vertex(int vertex_id, int vertex_sid,int vertex_lid,int i, IoModel* iomodel){/*{{{*/
+Vertex::Vertex(int vertex_id, int vertex_sid,int vertex_lid,bool vertex_clone, IoModel* iomodel){/*{{{*/
+
+	/*Checks in debugging mode*/
+	_assert_(vertex_sid>=0 && vertex_sid<iomodel->numberofvertices);
 
 	this->id           = vertex_id;
@@ -28,12 +31,12 @@
 
 	_assert_(iomodel->Data("md.mesh.x") && iomodel->Data("md.mesh.y") && iomodel->Data("md.mesh.z"));
-	this->x            = iomodel->Data("md.mesh.x")[i];
-	this->y            = iomodel->Data("md.mesh.y")[i];
-	this->z            = iomodel->Data("md.mesh.z")[i];
-	this->domaintype     = iomodel->domaintype;
+	this->x            = iomodel->Data("md.mesh.x")[vertex_sid];
+	this->y            = iomodel->Data("md.mesh.y")[vertex_sid];
+	this->z            = iomodel->Data("md.mesh.z")[vertex_sid];
+	this->domaintype   = iomodel->domaintype;
 
 	if(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long")){
-		this->latitute     = iomodel->Data("md.mesh.lat")[i];
-		this->longitude    = iomodel->Data("md.mesh.long")[i];
+		this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
+		this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
 	}
 
@@ -41,11 +44,11 @@
 		case Domain3DEnum:
 			_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
-			this->sigma = (iomodel->Data("md.mesh.z")[i]-iomodel->Data("md.geometry.base")[i])/(iomodel->Data("md.geometry.thickness")[i]);
+			this->sigma = (iomodel->Data("md.mesh.z")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
 			break;
 		case Domain3DsurfaceEnum:
 			_assert_(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long") && iomodel->Data("md.mesh.r"));
-			this->latitute     = iomodel->Data("md.mesh.lat")[i];
-			this->longitude    = iomodel->Data("md.mesh.long")[i];
-			this->R            = iomodel->Data("md.mesh.r")[i];
+			this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
+			this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
+			this->R            = iomodel->Data("md.mesh.r")[vertex_sid];
 			break;
 		case Domain2DhorizontalEnum:
@@ -54,10 +57,10 @@
 		case Domain2DverticalEnum:
 			_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
-			this->sigma = (iomodel->Data("md.mesh.y")[i]-iomodel->Data("md.geometry.base")[i])/(iomodel->Data("md.geometry.thickness")[i]);
+			this->sigma = (iomodel->Data("md.mesh.y")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
 			break;
 	}
 
 	_assert_(iomodel->numbernodetoelementconnectivity);
-	this->connectivity = iomodel->numbernodetoelementconnectivity[i];
+	this->connectivity = iomodel->numbernodetoelementconnectivity[vertex_sid];
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Vertex.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertex.h	(revision 23518)
+++ /issm/trunk-jpl/src/c/classes/Vertex.h	(revision 23519)
@@ -37,5 +37,5 @@
 		/*Vertex constructors, destructors {{{*/
 		Vertex();
-		Vertex(int id, int sid,int lid,int i, IoModel* iomodel);
+		Vertex(int id, int sid,int lid,bool clone, IoModel* iomodel);
 		~Vertex();
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23518)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23519)
@@ -381,9 +381,12 @@
 	}
 	xDelete<int>(vertices_proc_count);
+
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(vertices_lids[i]!=-1){
+			bool isclone = (vertices_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
+			vertices->AddObject(new Vertex(i+1,i,vertices_lids[i],isclone,iomodel));
+		}
+	}
 	xDelete<int>(vertices_ranks);
-
-	for(int i=0;i<iomodel->numberofvertices;i++){
-		if(vertices_lids[i]!=-1) vertices->AddObject(new Vertex(i+1,i,vertices_lids[i],i,iomodel));
-	}
 	xDelete<int>(vertices_lids);
 
