Index: /issm/trunk-jpl/src/c/Container/Vertices.cpp
===================================================================
--- /issm/trunk-jpl/src/c/Container/Vertices.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/Container/Vertices.cpp	(revision 13410)
@@ -38,6 +38,6 @@
 
 /*Numerics management*/
-/*FUNCTION Vertices::DistributeDofs{{{*/
-void  Vertices::DistributeDofs(int numberofobjects,int numberofdofsperobject){
+/*FUNCTION Vertices::DistributePids{{{*/
+void  Vertices::DistributePids(int numberofobjects){
 
 	extern int num_procs;
@@ -45,64 +45,64 @@
 
 	int  i;
-	int  dofcount=0;
-	int* alldofcount=NULL;
-	int* truedofs=NULL;
-	int* alltruedofs=NULL;
+	int  pidcount    = 0;
+	int *allpidcount = NULL;
+	int *truepids    = NULL;
+	int *alltruepids = NULL;
 
-	/*Go through objects, and distribute dofs locally, from 0 to numberofdofsperobject*/
+	/*Go through objects, and distribute pids locally, from 0 to numberofpidsperobject*/
 	for (i=0;i<this->Size();i++){
 		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
-		vertex->DistributeDofs(&dofcount);
+		vertex->DistributePids(&pidcount);
 	}
 
-	/* Now every object has distributed dofs, but locally, and with a dof count starting from 
-	 * 0. This means the dofs between all the cpus are not unique. We now offset the dofs of eache
-	 * cpus by the total last dofs of the previus cpu, starting from 0.
-	 * First: bet number of dofs for each cpu*/
-	alldofcount=xNew<int>(num_procs);
+	/* Now every object has distributed pids, but locally, and with a pid count starting from 
+	 * 0. This means the pids between all the cpus are not unique. We now offset the pids of each
+	 * cpus by the total last pids of the previus cpu, starting from 0.
+	 * First: get number of pids for each cpu*/
+	allpidcount=xNew<int>(num_procs);
 	#ifdef _HAVE_MPI_
-	MPI_Gather(&dofcount,1,MPI_INT,alldofcount,1,MPI_INT,0,MPI_COMM_WORLD);
-	MPI_Bcast(alldofcount,num_procs,MPI_INT,0,MPI_COMM_WORLD);
+	MPI_Gather(&pidcount,1,MPI_INT,allpidcount,1,MPI_INT,0,MPI_COMM_WORLD);
+	MPI_Bcast(allpidcount,num_procs,MPI_INT,0,MPI_COMM_WORLD);
 	#else
-	alldofcount[0]=dofcount;
+	allpidcount[0]=pidcount;
 	#endif
 
-	/* Every cpu should start its own dof count at the end of the dofcount from cpu-1*/
-	dofcount=0;
+	/* Every cpu should start its own pid count at the end of the pidcount from cpu-1*/
+	pidcount=0;
 	if(my_rank!=0){
 		for(i=0;i<my_rank;i++){
-			dofcount+=alldofcount[i];
+			pidcount+=allpidcount[i];
 		}
 	}
 	for (i=0;i<this->Size();i++){
 		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
-		vertex->OffsetDofs(dofcount);
+		vertex->OffsetPids(pidcount);
 	}
 
 	/* Finally, remember that cpus may have skipped some objects, because they were clones. For every 
-	 * object that is not a clone, tell them to show their dofs, so that later on, they can get picked 
+	 * object that is not a clone, tell them to show their pids, so that later on, they can get picked 
 	 * up by their clones: */
-	truedofs   =xNewZeroInit<int>(numberofobjects*numberofdofsperobject);
-	alltruedofs=xNewZeroInit<int>(numberofobjects*numberofdofsperobject);
+	truepids   =xNewZeroInit<int>(numberofobjects);
+	alltruepids=xNewZeroInit<int>(numberofobjects);
 	for (i=0;i<this->Size();i++){
 		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
-		vertex->ShowTrueDofs(truedofs);
+		vertex->ShowTruePids(truepids);
 	}
 	#ifdef _HAVE_MPI_
-	MPI_Allreduce((void*)truedofs,(void*)alltruedofs,numberofobjects*numberofdofsperobject,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
+	MPI_Allreduce((void*)truepids,(void*)alltruepids,numberofobjects,MPI_INT,MPI_MAX,MPI_COMM_WORLD);
 	#else
-	for(i=0;i<numberofobjects*numberofdofsperobject;i++)alltruedofs[i]=truedofs[i];
+	for(i=0;i<numberofobjects;i++)alltruepids[i]=truepids[i];
 	#endif
 
-	/* Now every cpu knows the true dofs of everyone else that is not a clone*/
-	for (i=0;i<this->Size();i++){
+	/* Now every cpu knows the true pids of everyone else that is not a clone*/
+	for(i=0;i<this->Size();i++){
 		Vertex* vertex=(Vertex*)this->GetObjectByOffset(i);
-		vertex->UpdateCloneDofs(alltruedofs);
+		vertex->UpdateClonePids(alltruepids);
 	}
 
 	/* Free ressources: */
-	xDelete<int>(alldofcount);
-	xDelete<int>(truedofs);
-	xDelete<int>(alltruedofs);
+	xDelete<int>(allpidcount);
+	xDelete<int>(truepids);
+	xDelete<int>(alltruepids);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/Container/Vertices.h
===================================================================
--- /issm/trunk-jpl/src/c/Container/Vertices.h	(revision 13409)
+++ /issm/trunk-jpl/src/c/Container/Vertices.h	(revision 13410)
@@ -19,15 +19,13 @@
 	public:
 
-		/*constructors, destructors: {{{*/
+		/*constructors, destructors:*/ 
 		Vertices();
 		~Vertices();
-		/*}}}*/
-		/*numerics: {{{*/
-		void  DistributeDofs(int numberofnodes,int numdofspernode);
+
+		/*numerics:*/
+		void  DistributePids(int numberofnodes);
 		void  FlagClones(int numberofnodes);
 		int   NumberOfVertices(void);
 		void  Ranks(int* ranks);
-		/*}}}*/
-
 };
 
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp	(revision 13410)
@@ -815,9 +815,17 @@
 }
 /*}}}*/
-/*FUNCTION Penta::GetDofList1 {{{*/
-void  Penta::GetDofList1(int* doflist){
+/*FUNCTION Penta::GetVertexPidList {{{*/
+void  Penta::GetVertexPidList(int* doflist){
 
 	int i;
-	for(i=0;i<6;i++) doflist[i]=nodes[i]->GetDofList1();
+	for(i=0;i<6;i++) doflist[i]=nodes[i]->GetVertexPid();
+
+}
+/*}}}*/
+/*FUNCTION Penta::GetVertexSidList{{{*/
+void  Penta::GetVertexSidList(int* sidlist){
+
+	int i;
+	for(i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->GetVertexSid();
 
 }
@@ -995,12 +1003,4 @@
 	 *    = 4 * mu * eps_eff ^2*/
 	*phi=4*pow(epsilon_eff,2.0)*viscosity;
-}
-/*}}}*/
-/*FUNCTION Penta::GetSidList{{{*/
-void  Penta::GetSidList(int* sidlist){
-
-	int i;
-	for(i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->GetSidList();
-
 }
 /*}}}*/
@@ -1135,5 +1135,5 @@
 void  Penta::GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum){
 
-	int doflist1[NUMVERTICES];
+	int vertexpidlist[NUMVERTICES];
 
 	/*Get out if this is not an element input*/
@@ -1141,5 +1141,5 @@
 
 	/*Prepare index list*/
-	this->GetDofList1(&doflist1[0]);
+	this->GetVertexPidList(&vertexpidlist[0]);
 
 	/*Get input (either in element or material)*/
@@ -1148,5 +1148,5 @@
 
 	/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
-	input->GetVectorFromInputs(vector,&doflist1[0]);
+	input->GetVectorFromInputs(vector,&vertexpidlist[0]);
 }
 /*}}}*/
@@ -1160,9 +1160,9 @@
 	}  
 	if(interp==P1Enum){
-		int doflist1[NUMVERTICES];
+		int vertexpidlist[NUMVERTICES];
 		int connectivity[NUMVERTICES];
-		this->GetSidList(&doflist1[0]);
+		this->GetVertexSidList(&vertexpidlist[0]);
 		this->GetConnectivityList(&connectivity[0]);
-		elementresult->GetVectorFromResults(vector,&doflist1[0],&connectivity[0],NUMVERTICES);
+		elementresult->GetVectorFromResults(vector,&vertexpidlist[0],&connectivity[0],NUMVERTICES);
 	}
 	else if(interp==P0Enum){
@@ -1960,5 +1960,5 @@
 				/*Get values on the 6 vertices*/
 				for (int i=0;i<6;i++){
-					values[i]=vector[this->nodes[i]->GetVertexDof()];
+					values[i]=vector[this->nodes[i]->GetVertexPid()];
 				}
 
@@ -4463,5 +4463,5 @@
 void Penta::ControlInputGetGradient(Vector<IssmDouble>* gradient,int enum_type,int control_index){
 
-	int doflist1[NUMVERTICES];
+	int vertexpidlist[NUMVERTICES];
 	Input* input=NULL;
 
@@ -4481,6 +4481,6 @@
 	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput");
 
-	GradientIndexing(&doflist1[0],control_index);
-	((ControlInput*)input)->GetGradient(gradient,&doflist1[0]);
+	GradientIndexing(&vertexpidlist[0],control_index);
+	((ControlInput*)input)->GetGradient(gradient,&vertexpidlist[0]);
 
 }/*}}}*/
@@ -4507,5 +4507,5 @@
 void Penta::ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){
 
-	int    doflist1[NUMVERTICES];
+	int    vertexpidlist[NUMVERTICES];
 	IssmDouble grad_list[NUMVERTICES];
 	Input* grad_input=NULL;
@@ -4524,6 +4524,6 @@
 	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput");
 
-	GradientIndexing(&doflist1[0],control_index);
-	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[doflist1[i]];
+	GradientIndexing(&vertexpidlist[0],control_index);
+	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[vertexpidlist[i]];
 	grad_input=new PentaP1Input(GradientEnum,grad_list);
 	((ControlInput*)input)->SetGradient(grad_input);
@@ -4802,5 +4802,5 @@
 	/*get gradient indices*/
 	for(int i=0;i<NUMVERTICES;i++){
-		indexing[i]=num_controls*this->nodes[i]->GetVertexDof() + control_index;
+		indexing[i]=num_controls*this->nodes[i]->GetVertexPid() + control_index;
 	}
 
@@ -4915,5 +4915,5 @@
 	int        i,j,ig;
 	int        analysis_type;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     vx,vy,lambda,mu,alpha_complement,Jdet;
 	IssmDouble     bed,thickness,Neff,drag;
@@ -4932,5 +4932,5 @@
 	/*Retrieve all inputs and parameters*/
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j];
@@ -4974,5 +4974,5 @@
 		}
 	}
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -4986,5 +4986,5 @@
 	int        i,j,ig;
 	int        analysis_type;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     bed,thickness,Neff;
 	IssmDouble     lambda,mu,xi,Jdet,vx,vy,vz;
@@ -5007,5 +5007,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j];
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	Input* drag_input    =inputs->GetInput(FrictionCoefficientEnum); _assert_(drag_input);
 	Input* vx_input      =inputs->GetInput(VxEnum);                  _assert_(vx_input);
@@ -5067,5 +5067,5 @@
 	}
 
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	delete friction;
@@ -5494,5 +5494,5 @@
 void  Penta::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data){
 
-	int doflist1[NUMVERTICES];
+	int vertexpidlist[NUMVERTICES];
 
 	/*Get out if this is not an element input*/
@@ -5500,5 +5500,5 @@
 
 	/*Prepare index list*/
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 
 	/*Get input (either in element or material)*/
@@ -5511,5 +5511,5 @@
 	}
 
-	((ControlInput*)input)->GetVectorFromInputs(vector,&doflist1[0],data);
+	((ControlInput*)input)->GetVectorFromInputs(vector,&vertexpidlist[0],data);
 }
 /*}}}*/
@@ -5518,5 +5518,5 @@
 
 	IssmDouble  values[NUMVERTICES];
-	int     doflist1[NUMVERTICES];
+	int     vertexpidlist[NUMVERTICES];
 	Input  *input     = NULL;
 	Input  *new_input = NULL;
@@ -5526,9 +5526,9 @@
 
 	/*Prepare index list*/
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 
 	/*Get values on vertices*/
 	for (int i=0;i<NUMVERTICES;i++){
-		values[i]=vector[doflist1[i]];
+		values[i]=vector[vertexpidlist[i]];
 	}
 	new_input = new PentaP1Input(control_enum,values);
@@ -5569,5 +5569,5 @@
 			/*Get values on the 6 vertices*/
 			for (i=0;i<6;i++){
-				values[i]=vector[this->nodes[i]->GetSidList()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+				values[i]=vector[this->nodes[i]->GetVertexSid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
 			}
 
@@ -5689,5 +5689,5 @@
 				/*create input values: */
 				for(i=0;i<6;i++){
-					row=this->nodes[i]->GetSidList();
+					row=this->nodes[i]->GetVertexSid();
 					values[i]=(IssmDouble)matrix[ncols*row+t];
 				}
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.h	(revision 13410)
@@ -174,6 +174,6 @@
 		ElementVector* CreatePVectorSlope(void);
 		void	  GetDofList(int** pdoflist,int approximation_enum,int setenum);
-		void	  GetDofList1(int* doflist);
-		void    GetSidList(int* sidlist);
+		void	  GetVertexPidList(int* doflist);
+		void    GetVertexSidList(int* sidlist);
 		void    GetConnectivityList(int* connectivity);
 		int     GetElementType(void);
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 13410)
@@ -140,6 +140,6 @@
 
 	/*Figure out the average for this element: */
-	this->GetSidList(&offsetsid[0]);
-	this->GetDofList1(&offsetdof[0]);
+	this->GetVertexSidList(&offsetsid[0]);
+	this->GetVertexPidList(&offsetdof[0]);
 	mean=0;
 	for(i=0;i<NUMVERTICES;i++){
@@ -1055,12 +1055,4 @@
 }
 /*}}}*/
-/*FUNCTION Tria::GetDofList1 {{{*/
-void  Tria::GetDofList1(int* doflist){
-
-	int i;
-	for(i=0;i<3;i++) doflist[i]=nodes[i]->GetDofList1();
-
-}
-/*}}}*/
 /*FUNCTION Tria::GetElementType {{{*/
 int Tria::GetElementType(){
@@ -1180,7 +1172,15 @@
 }
 /*}}}*/
-/*FUNCTION Tria::GetSidList {{{*/
-void  Tria::GetSidList(int* sidlist){
-	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->GetSidList();
+/*FUNCTION Tria::GetVertexPidList {{{*/
+void  Tria::GetVertexPidList(int* doflist){
+
+	int i;
+	for(i=0;i<3;i++) doflist[i]=nodes[i]->GetVertexPid();
+
+}
+/*}}}*/
+/*FUNCTION Tria::GetVertexSidList {{{*/
+void  Tria::GetVertexSidList(int* sidlist){
+	for(int i=0;i<NUMVERTICES;i++) sidlist[i]=nodes[i]->GetVertexSid();
 }
 /*}}}*/
@@ -1243,5 +1243,5 @@
 void  Tria::GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum){
 
-	int doflist1[NUMVERTICES];
+	int vertexpidlist[NUMVERTICES];
 
 	/*Get out if this is not an element input*/
@@ -1249,5 +1249,5 @@
 
 	/*Prepare index list*/
-	this->GetDofList1(&doflist1[0]);
+	this->GetVertexPidList(&vertexpidlist[0]);
 
 	/*Get input (either in element or material)*/
@@ -1256,5 +1256,5 @@
 
 	/*We found the enum.  Use its values to fill into the vector, using the vertices ids: */
-	input->GetVectorFromInputs(vector,&doflist1[0]);
+	input->GetVectorFromInputs(vector,&vertexpidlist[0]);
 }
 /*}}}*/
@@ -1268,9 +1268,9 @@
 	}
 	if(interp==P1Enum){
-		int doflist1[NUMVERTICES];
+		int vertexpidlist[NUMVERTICES];
 		int connectivity[NUMVERTICES];
-		this->GetSidList(&doflist1[0]);
+		this->GetVertexSidList(&vertexpidlist[0]);
 		this->GetConnectivityList(&connectivity[0]);
-		elementresult->GetVectorFromResults(vector,&doflist1[0],&connectivity[0],NUMVERTICES);
+		elementresult->GetVectorFromResults(vector,&vertexpidlist[0],&connectivity[0],NUMVERTICES);
 	}
 	else if(interp==P0Enum){
@@ -1687,5 +1687,5 @@
 			/*Get values on the 3 vertices*/
 			for (int i=0;i<3;i++){
-				values[i]=vector[this->nodes[i]->GetVertexDof()];
+				values[i]=vector[this->nodes[i]->GetVertexPid()];
 			}
 
@@ -3432,5 +3432,5 @@
 void Tria::ControlInputGetGradient(Vector<IssmDouble>* gradient,int enum_type,int control_index){
 
-	int doflist1[NUMVERTICES];
+	int vertexpidlist[NUMVERTICES];
 	Input* input=NULL;
 
@@ -3444,6 +3444,6 @@
 	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput");
 
-	GradientIndexing(&doflist1[0],control_index);
-	((ControlInput*)input)->GetGradient(gradient,&doflist1[0]);
+	GradientIndexing(&vertexpidlist[0],control_index);
+	((ControlInput*)input)->GetGradient(gradient,&vertexpidlist[0]);
 
 }/*}}}*/
@@ -3467,5 +3467,5 @@
 void Tria::ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){
 
-	int    doflist1[NUMVERTICES];
+	int    vertexpidlist[NUMVERTICES];
 	IssmDouble grad_list[NUMVERTICES];
 	Input* grad_input=NULL;
@@ -3481,6 +3481,6 @@
 	if (input->ObjectEnum()!=ControlInputEnum) _error_("Input " << EnumToStringx(enum_type) << " is not a ControlInput");
 
-	GradientIndexing(&doflist1[0],control_index);
-	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[doflist1[i]];
+	GradientIndexing(&vertexpidlist[0],control_index);
+	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[vertexpidlist[i]];
 	grad_input=new TriaP1Input(GradientEnum,grad_list);
 
@@ -3556,5 +3556,5 @@
 
 	int        i,ig;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     Jdet,weight;
 	IssmDouble     xyz_list[NUMVERTICES][3];
@@ -3566,5 +3566,5 @@
 	/*Retrieve all inputs we will be needing: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	Input* rheologyb_input=material->inputs->GetInput(MaterialsRheologyBbarEnum); _assert_(rheologyb_input);
 	Input* weights_input=inputs->GetInput(InversionCostFunctionsCoefficientsEnum);                _assert_(weights_input);
@@ -3586,5 +3586,5 @@
 		for (i=0;i<NUMVERTICES;i++) grade_g[i]+=-weight*Jdet*gauss->weight*(dbasis[0][i]*dk[0]+dbasis[1][i]*dk[1]);
 	}
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -3596,5 +3596,5 @@
 
 	int        i,ig;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     Jdet,weight;
 	IssmDouble     xyz_list[NUMVERTICES][3];
@@ -3606,5 +3606,5 @@
 	/*Retrieve all inputs we will be needing: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	Input* rheologyz_input=material->inputs->GetInput(MaterialsRheologyZbarEnum); _assert_(rheologyz_input);
 	Input* weights_input=inputs->GetInput(InversionCostFunctionsCoefficientsEnum);                _assert_(weights_input);
@@ -3626,5 +3626,5 @@
 		for (i=0;i<NUMVERTICES;i++) grade_g[i]+=-weight*Jdet*gauss->weight*(dbasis[0][i]*dk[0]+dbasis[1][i]*dk[1]);
 	}
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -3751,5 +3751,5 @@
 	int        i,ig;
 	int        analysis_type;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	int        connectivity[NUMVERTICES];
 	IssmDouble     vx,vy,lambda,mu,alpha_complement,Jdet;
@@ -3769,5 +3769,5 @@
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	this->GetConnectivityList(&connectivity[0]);
 
@@ -3827,5 +3827,5 @@
 	/*End Analytical gradient*/
 
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -3838,5 +3838,5 @@
 
 	int        i,ig;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     Jdet,weight;
 	IssmDouble     xyz_list[NUMVERTICES][3];
@@ -3849,5 +3849,5 @@
 	if(IsFloating())return;
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	Input* dragcoefficient_input=inputs->GetInput(FrictionCoefficientEnum); _assert_(dragcoefficient_input);
 	Input* weights_input=inputs->GetInput(InversionCostFunctionsCoefficientsEnum);                 _assert_(weights_input);
@@ -3872,5 +3872,5 @@
 		}
 	}
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -3882,14 +3882,14 @@
 
 	/*Intermediaries*/
-	int    doflist1[NUMVERTICES];
+	int    vertexpidlist[NUMVERTICES];
 	IssmDouble lambda[NUMVERTICES];
 	IssmDouble gradient_g[NUMVERTICES];
 
 	/*Compute Gradient*/
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 	GetInputListOnVertices(&lambda[0],AdjointEnum);
 	for(int i=0;i<NUMVERTICES;i++) gradient_g[i]=-lambda[i];
 
-	gradient->SetValues(NUMVERTICES,doflist1,gradient_g,INS_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,gradient_g,INS_VAL);
 }
 /*}}}*/
@@ -3899,5 +3899,5 @@
 	/*Intermediaries*/
 	int        i,ig;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     thickness,Jdet;
 	IssmDouble     basis[3];
@@ -3909,5 +3909,5 @@
 	/* Get node coordinates and dof list: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 
 	/*Retrieve all inputs we will be needing: */
@@ -3931,5 +3931,5 @@
 	}
 
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -3942,5 +3942,5 @@
 	/*Intermediaries*/
 	int        i,ig;
-	int        doflist1[NUMVERTICES];
+	int        vertexpidlist[NUMVERTICES];
 	IssmDouble     thickness,Jdet;
 	IssmDouble     basis[3];
@@ -3952,5 +3952,5 @@
 	/* Get node coordinates and dof list: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 
 	/*Retrieve all inputs we will be needing: */
@@ -3973,5 +3973,5 @@
 		for(i=0;i<NUMVERTICES;i++) grade_g[i]+=thickness*Dlambda[1]*Jdet*gauss->weight*basis[i];
 	}
-	gradient->SetValues(NUMVERTICES,doflist1,grade_g,ADD_VAL);
+	gradient->SetValues(NUMVERTICES,vertexpidlist,grade_g,ADD_VAL);
 
 	/*Clean up and return*/
@@ -3988,5 +3988,5 @@
 	/*get gradient indices*/
 	for(int i=0;i<NUMVERTICES;i++){
-		indexing[i]=num_controls*this->nodes[i]->GetVertexDof() + control_index;
+		indexing[i]=num_controls*this->nodes[i]->GetVertexPid() + control_index;
 	}
 
@@ -5205,5 +5205,5 @@
 void  Tria::GetVectorFromControlInputs(Vector<IssmDouble>* vector,int control_enum,int control_index,const char* data){
 
-	int doflist1[NUMVERTICES];
+	int vertexpidlist[NUMVERTICES];
 	Input *input=NULL;
 
@@ -5212,5 +5212,5 @@
 
 	/*Prepare index list*/
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 
 	/*Get input (either in element or material)*/
@@ -5227,5 +5227,5 @@
 	}
 
-	((ControlInput*)input)->GetVectorFromInputs(vector,&doflist1[0],data);
+	((ControlInput*)input)->GetVectorFromInputs(vector,&vertexpidlist[0],data);
 }
 /*}}}*/
@@ -5234,5 +5234,5 @@
 
 	IssmDouble  values[NUMVERTICES];
-	int     doflist1[NUMVERTICES];
+	int     vertexpidlist[NUMVERTICES];
 	Input  *input     = NULL;
 	Input  *new_input = NULL;
@@ -5242,9 +5242,9 @@
 
 	/*Prepare index list*/
-	GradientIndexing(&doflist1[0],control_index);
+	GradientIndexing(&vertexpidlist[0],control_index);
 
 	/*Get values on vertices*/
 	for (int i=0;i<NUMVERTICES;i++){
-		values[i]=vector[doflist1[i]];
+		values[i]=vector[vertexpidlist[i]];
 	}
 	new_input = new TriaP1Input(control_enum,values);
@@ -5556,5 +5556,5 @@
 			/*Get values on the 3 vertices*/
 			for (i=0;i<3;i++){
-				values[i]=vector[this->nodes[i]->GetSidList()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
+				values[i]=vector[this->nodes[i]->GetVertexSidList()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!)
 			}
 
@@ -5662,5 +5662,5 @@
 				/*create input values: */
 				for(i=0;i<3;i++){
-					row=this->nodes[i]->GetSidList();
+					row=this->nodes[i]->GetVertexSidList();
 					values[i]=(IssmDouble)matrix[ncols*row+t];
 				}
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h	(revision 13410)
@@ -190,6 +190,6 @@
 		int            GetElementType(void);
 		void	         GetDofList(int** pdoflist,int approximation_enum,int setenum);
-		void	         GetDofList1(int* doflist);
-		void           GetSidList(int* sidlist);
+		void	         GetVertexPidList(int* doflist);
+		void           GetVertexSidList(int* sidlist);
 		void           GetConnectivityList(int* connectivity);
 		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
Index: /issm/trunk-jpl/src/c/classes/objects/Materials/Matdamageice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Materials/Matdamageice.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Materials/Matdamageice.cpp	(revision 13410)
@@ -210,5 +210,5 @@
 			/*Prepare index list*/
 			int doflist1[3];
-			for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexDof();
+			for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexPid();
 
 			/*Get input (either in element or material)*/
@@ -640,5 +640,5 @@
 				case TriaEnum: {
 					IssmDouble values[3];
-					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexDof()];
+					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexPid()];
 					this->inputs->AddInput(new TriaP1Input(name,values));
 					return;
@@ -682,5 +682,5 @@
 				case TriaEnum: {
 					IssmDouble values[3];
-					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetSidList()]; //use sid list, to index into serial oriented vector 
+					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexSid()]; //use sid list, to index into serial oriented vector 
 					this->inputs->AddInput(new TriaP1Input(name,values));
 					/*Special case for rheology B in 2D: Pourave land for this solution{{{*/
Index: /issm/trunk-jpl/src/c/classes/objects/Materials/Matice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Materials/Matice.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Materials/Matice.cpp	(revision 13410)
@@ -190,5 +190,5 @@
 			/*Prepare index list*/
 			int doflist1[3];
-			for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexDof();
+			for(int i=0;i<3;i++) doflist1[i]=((Tria*)element)->nodes[i]->GetVertexPid();
 
 			/*Get input (either in element or material)*/
@@ -560,5 +560,5 @@
 				case TriaEnum: {
 					IssmDouble values[3];
-					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexDof()];
+					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexPid()];
 					this->inputs->AddInput(new TriaP1Input(name,values));
 					return;
@@ -602,5 +602,5 @@
 				case TriaEnum: {
 					IssmDouble values[3];
-					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetSidList()]; //use sid list, to index into serial oriented vector 
+					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->nodes[i]->GetVertexSid()]; //index into serial oriented vector 
 					this->inputs->AddInput(new TriaP1Input(name,values));
 					/*Special case for rheology B in 2D: Pourave land for this solution{{{*/
Index: /issm/trunk-jpl/src/c/classes/objects/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Node.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Node.cpp	(revision 13410)
@@ -234,14 +234,4 @@
 
 } /*}}}*/
-/*FUNCTION Node::GetDofList1{{{*/
-int  Node::GetDofList1(void){
-
-	Vertex* vertex=NULL;
-
-	vertex=(Vertex*)this->hvertex->delivers();
-
-	return vertex->dof;
-}
-/*}}}*/
 /*FUNCTION Node::GetDofList{{{*/
 void  Node::GetDofList(int* outdoflist,int approximation_enum,int setenum){
@@ -304,14 +294,4 @@
 		else _error_("set of enum type " << EnumToStringx(setenum) << " not supported yet!");
 	}
-}
-/*}}}*/
-/*FUNCTION Node::GetSidList{{{*/
-int  Node::GetSidList(void){
-
-	Vertex* vertex=NULL;
-
-	vertex=(Vertex*)this->hvertex->delivers();
-
-	return vertex->sid;
 }
 /*}}}*/
@@ -427,11 +407,21 @@
 }
 /*}}}*/
-/*FUNCTION Node::GetVertexDof {{{*/
-int   Node::GetVertexDof(void){
+/*FUNCTION Node::GetVertexPid{{{*/
+int   Node::GetVertexPid(void){
 
 	Vertex*  vertex=NULL;
 
 	vertex=(Vertex*)hvertex->delivers();
-	return vertex->dof;
+	return vertex->pid;
+}
+/*}}}*/
+/*FUNCTION Node::GetVertexSid{{{*/
+int  Node::GetVertexSid(void){
+
+	Vertex* vertex=NULL;
+
+	vertex=(Vertex*)this->hvertex->delivers();
+
+	return vertex->sid;
 }
 /*}}}*/
@@ -446,14 +436,4 @@
 /*}}}*/
 #endif
-/*FUNCTION Node::SetVertexDof {{{*/
-void   Node::SetVertexDof(int in_dof){
-
-	Vertex*  vertex=NULL;
-
-	vertex=(Vertex*)hvertex->delivers();
-	vertex->dof=in_dof;
-
-}
-/*}}}*/
 /*FUNCTION Node::InAnalysis{{{*/
 bool Node::InAnalysis(int in_analysis_type){
@@ -887,5 +867,5 @@
 /*}}}*/
 
-/* DofObject routines:*/
+/* indexing routines:*/
 /*FUNCTION Node::DistributeDofs{{{*/
 void  Node::DistributeDofs(int* pdofcount,int setenum){
@@ -935,5 +915,5 @@
 }
 /*}}}*/
-/*FUNCTION Node::Off_setDofs{{{*/
+/*FUNCTION Node::OffsetDofs{{{*/
 void  Node::OffsetDofs(int dofcount,int setenum){
 	
Index: /issm/trunk-jpl/src/c/classes/objects/Node.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Node.h	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Node.h	(revision 13410)
@@ -67,10 +67,7 @@
 		void   SetCurrentConfiguration(DataSet* nodes,Vertices* vertices);
 		int    Sid(void); 
-		int    GetVertexDof(void);
-		int    GetVertexId(void);
 #ifdef _HAVE_DIAGNOSTIC_
 		void   GetCoordinateSystem(IssmDouble* coord_system_out);
 #endif
-		void   SetVertexDof(int in_dof);
 		bool   InAnalysis(int analysis_type);
 		int    GetApproximation();
@@ -86,6 +83,7 @@
 		void   GetDofList(int* poutdoflist,int approximation_enum,int setenum);
 		void   GetLocalDofList(int* poutdoflist,int approximation_enum,int setenum);
-		int    GetDofList1(void);
-		int    GetSidList(void);
+		int    GetVertexId(void);
+		int    GetVertexPid(void);
+		int    GetVertexSid(void);
 		IssmDouble GetX();
 		IssmDouble GetY();
Index: /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 13410)
@@ -49,4 +49,5 @@
 	this->id=vertex_id;
 	this->sid=vertex_sid;
+	this->pid=UNDEF;
 	this->x=vertex_x;
 	this->y=vertex_y;
@@ -54,5 +55,4 @@
 	this->sigma=vertex_sigma;
 	this->connectivity=vertex_connectivity;
-	this->dof=UNDEF;
 
 	return;
@@ -67,4 +67,5 @@
 	_printLine_("   id: " << id);
 	_printLine_("   sid: " << sid);
+	_printLine_("   pid: " << pid);
 	_printLine_("   x: " << x);
 	_printLine_("   y: " << y);
@@ -72,5 +73,4 @@
 	_printLine_("   sigma: " << sigma);
 	_printLine_("   connectivity: " << connectivity);
-	_printLine_("   dof: " << dof);
 	_printLine_("   clone: " << clone);
 
@@ -107,88 +107,4 @@
 /*}}}*/
 
-/* DofObject routines: */
-/*FUNCTION Vertex::DistributeDofs{{{*/
-void  Vertex::DistributeDofs(int* pdofcount){
-
-	int i;
-	extern int my_rank;
-	int dofcount;
-
-	dofcount=*pdofcount;
-	
-	if(this->clone){
-		/*This vertex is a clone! Don't distribute dofs, it will get them from another cpu!*/
-		return;
-	}
-
-	/*This vertex should distribute his dof, go ahead: */
-	this->dof=dofcount;
-	dofcount++;
-
-	/*Assign output pointers: */
-	*pdofcount=dofcount;
-
-}
-/*}}}*/
-/*FUNCTION Vertex::OffsetDofs{{{*/
-void  Vertex::OffsetDofs(int dofcount){
-	
-	int i;
-	extern int my_rank;
-	
-	if(this->clone){
-		/*This vertex is a clone, don't offset the dofs!: */
-		return;
-	}
-
-	/*This vertex should offset his dof, go ahead: */
-	this->dof+=dofcount;
-}
-/*}}}*/
-/*FUNCTION Vertex::ShowTrueDofs{{{*/
-void  Vertex::ShowTrueDofs(int* truedofs){
-
-	int j;
-	extern int my_rank;
-	
-	/*Are we a clone? : */
-	if(this->clone)return;
-
-	/*Ok, we are not a clone, just plug our dof into truedofs: */
-	truedofs[this->id-1]=this->dof;
-
-}
-/*}}}*/
-/*FUNCTION Vertex::UpdateCloneDofs{{{*/
-void  Vertex::UpdateCloneDofs(int* alltruedofs){
-
-	int j;
-	extern int my_rank;
-	
-	/*If we are not a clone, don't update, we already have dofs!: */
-	if(this->clone==0)return;
-
-	/*Ok, we are a clone node, but we did not create the dof for this vertex 
-	 * Therefore, our dof is garbage right now. Go pick it up in the alltruedofs: */
-	this->dof=alltruedofs[id-1];
-}
-/*}}}*/
-/*FUNCTION Vertex::SetClone {{{*/
-void  Vertex::SetClone(int* minranks){
-
-	extern int my_rank;
-
-	if (minranks[id-1]==my_rank){
-		this->clone=0;
-	}
-	else{
-		/*!there is a cpu with lower rank that has the same vertex, 
-		therefore, I am a clone*/
-		this->clone=1; 	
-	}
-
-}
-/*}}}*/
-
 /*Vertex management: */
 /*FUNCTION Vertex::Connectivity{{{*/
@@ -209,10 +125,75 @@
 	/*sigma remains constant. z=bed+sigma*thickness*/
 	oldz = this->z;
-	newz = bed[this->dof]+sigma*thickness[this->dof];
+	newz = bed[this->pid]+sigma*thickness[this->pid];
 	velz = (newz-oldz)/dt;
 	this->z = newz;
 
 	/*put vz in vector*/
-	vz->SetValue(this->dof,velz,INS_VAL);
+	vz->SetValue(this->pid,velz,INS_VAL);
 }
 /*}}}*/
+/*FUNCTION Vertex::DistributePids{{{*/
+void  Vertex::DistributePids(int* ppidcount){
+
+	/*retrieve current pid*/
+	int pidcount=*ppidcount;
+	
+	/*This vertex is a clone! Don't distribute pids, it will get them from another cpu!*/
+	if(this->clone) return;
+
+	/*This vertex should distribute its pid*/
+	this->pid=pidcount;
+	pidcount++;
+
+	/*Assign output pointers: */
+	*ppidcount=pidcount;
+}
+/*}}}*/
+/*FUNCTION Vertex::OffsetPids{{{*/
+void  Vertex::OffsetPids(int pidcount){
+	
+	/*This vertex is a clone, don't offset the pids*/
+	if(this->clone) return;
+
+	/*This vertex should offset his pid, go ahead: */
+	this->pid+=pidcount;
+}
+/*}}}*/
+/*FUNCTION Vertex::ShowTruePids{{{*/
+void  Vertex::ShowTruePids(int* truepids){
+
+	/*Are we a clone? : */
+	if(this->clone)return;
+
+	/*Ok, we are not a clone, just plug our pid into truepids: */
+	truepids[this->sid]=this->pid;
+}
+/*}}}*/
+/*FUNCTION Vertex::UpdateClonePids{{{*/
+void  Vertex::UpdateClonePids(int* alltruepids){
+
+	/*If we are not a clone, don't update, we already have pids: */
+	if(!this->clone)return;
+
+	/*Ok, we are a clone node, but we did not create the pid for this vertex 
+	 * Therefore, our pid is garbage right now. Go pick it up in the alltruepids: */
+	this->pid=alltruepids[this->pid];
+}
+/*}}}*/
+/*FUNCTION Vertex::SetClone {{{*/
+void  Vertex::SetClone(int* minranks){
+
+	extern int my_rank;
+
+	if (minranks[this->sid]==my_rank){
+		this->clone=false;
+	}
+	else{
+		/*!there is a cpu with lower rank that has the same vertex, 
+		therefore, I am a clone*/
+		this->clone=true;
+	}
+
+}
+/*}}}*/
+
Index: /issm/trunk-jpl/src/c/classes/objects/Vertex.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Vertex.h	(revision 13409)
+++ /issm/trunk-jpl/src/c/classes/objects/Vertex.h	(revision 13410)
@@ -22,16 +22,13 @@
 
 	public: 
-
-		int    id;
-		int    sid;            //sid for "serial" id, ie the rank of this vertex in the vertices dataset, if the dataset was serial on 1 cpu.
+		bool       clone;
+		int        id;           // random index
+		int        sid;          // "serial" id (rank of this vertex if the dataset was on 1 cpu)
+		int        pid;          // "parallel" id
 		IssmDouble x;
 		IssmDouble y;
 		IssmDouble z;
-		IssmDouble sigma;          //sigma coordinate: (z-bed)/thickness
-		int    connectivity;   //number of vertices connected to this vertex
-
-		/*dof management: */
-		int    clone;
-		int    dof; //dof to recover values in a vertex indexed vector
+		IssmDouble sigma;        //sigma coordinate: (z-bed)/thickness
+		int        connectivity; //number of vertices connected to this vertex
 
 		/*Vertex constructors, destructors {{{*/
@@ -50,16 +47,13 @@
 		Object* copy();
 		/*}}}*/
-		/*DofObject routines {{{*/
-		void  DistributeDofs(int* pdofcount);
-		void  OffsetDofs(int dofcount);
-		void  ShowTrueDofs(int* borderdofs);
-		void  UpdateCloneDofs(int* allborderdofs);
-		void  SetClone(int* minranks);
-		/*}}}*/
-		/*Vertex management: {{{*/
+		/*Vertex management:*/ 
 		int   Sid(void); 
 		int   Connectivity(void); 
 		void  UpdatePosition(Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* thickness,IssmDouble* bed);
-		/*}}}*/
+		void  DistributePids(int* ppidcount);
+		void  OffsetPids(int pidcount);
+		void  ShowTruePids(int* borderpids);
+		void  UpdateClonePids(int* allborderpids);
+		void  SetClone(int* minranks);
 };
 #endif  /* _VERTEX_H */
Index: /issm/trunk-jpl/src/c/modules/VerticesDofx/VerticesDofx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/VerticesDofx/VerticesDofx.cpp	(revision 13409)
+++ /issm/trunk-jpl/src/c/modules/VerticesDofx/VerticesDofx.cpp	(revision 13410)
@@ -11,10 +11,4 @@
 void VerticesDofx( Vertices* vertices, Parameters* parameters) {
 
-	int i;
-
-	int  found=0;
-	extern int num_procs;
-	extern int my_rank;
-	
 	/*intermediary: */
 	int  numberofvertices;
@@ -23,11 +17,11 @@
 	numberofvertices=vertices->NumberOfVertices();
 
-	/*Ensure that only for each cpu, the partition border vertices only will be taken into account once 
-	 * across the cluster. To do so, we flag all the clone vertices: */
+	/*Ensure that only for each cpu, the partition border vertices only will be
+	 * taken into account once across the cluster. To do so, we flag all the
+	 * clone vertices: */
 	vertices->FlagClones(numberofvertices);
 
-	/*Go through all vertices and distribute 1 dof at a time. When a  vertex has already been distributed his dof on a cpu, 
-	 * all other cpus with the same vertex cannot distribute it anymore. Use clone field to be sure of that: */
-	vertices->DistributeDofs(numberofvertices,1); //only 1 dof per vertex.
+	/*Go through all vertices and distribute pids*/
+	vertices->DistributePids(numberofvertices); 
 
 }
