Index: /issm/trunk/src/c/DataSet/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3463)
+++ /issm/trunk/src/c/DataSet/DataSet.cpp	(revision 3464)
@@ -885,29 +885,24 @@
 /*}}}*/
 /*FUNCTION DataSet::CreatePartitioningVector{{{1*/
-void  DataSet::CreatePartitioningVector(Vec* ppartition,int numberofnodes,int numdofspernode){
+void  DataSet::CreatePartitioningVector(Vec* ppartition,int numberofobjects){
 
 	/*output: */
 	Vec partition=NULL;
 	vector<Object*>::iterator object;
-	Node* node=NULL;
+	DofObject* dofobject=NULL;
 
 	/*Create partition vector: */
-	partition=NewVec(numberofnodes);
-
-	/*Go through all nodes, and ask each node to plug its 1D doflist in 
-	 * partition. The location where each node plugs its doflist into 
-	 * partition is determined by its (id-1)*3 (ie, serial * organisation of the dofs).
-	 */
-
-	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
-		/*Check this is a node: */
+	partition=NewVec(numberofobjects);
+
+	/*Go through all objects, and ask each object to plug its doflist in 
+	 * partition: */
+
+	for ( object=objects.begin() ; object < objects.end(); object++ ){
+
+		/*Check this is a object: */
 		if((*object)->Enum()==NodeEnum()){
 
-			node=(Node*)(*object);
-
-			/*Ok, this object is a node, ask it to plug values into partition: */
-			node->CreatePartition(partition);
-
+			dofobject=(DofObject*)(*object);
+			dofobject->CreatePartition(partition);
 		}
 	}
@@ -919,6 +914,4 @@
 	/*Assign output pointers: */
 	*ppartition=partition;
-
-	return;
 }
 /*}}}*/
Index: /issm/trunk/src/c/DataSet/DataSet.h
===================================================================
--- /issm/trunk/src/c/DataSet/DataSet.h	(revision 3463)
+++ /issm/trunk/src/c/DataSet/DataSet.h	(revision 3464)
@@ -59,5 +59,5 @@
 		void  Ranks(int* ranks);
 		void  DistributeDofs(int numberofnodes,int numdofspernode);
-		void  CreatePartitioningVector(Vec* ppartition,int numnods,int numdofspernode);
+		void  CreatePartitioningVector(Vec* ppartition,int numobjects);
 		void  DistributeNumDofs(int** pnumdofspernode,int numberofnodes,int analysis_type,int sub_analysis_type);
 		void  FlagClones(int numberofnodes);
Index: /issm/trunk/src/c/Dofx/Dofx.cpp
===================================================================
--- /issm/trunk/src/c/Dofx/Dofx.cpp	(revision 3463)
+++ /issm/trunk/src/c/Dofx/Dofx.cpp	(revision 3464)
@@ -55,5 +55,5 @@
 
 	/*Now that dofs have been distributed, create partitioning vector and its transpose: */
-	nodes->CreatePartitioningVector(&partition->vector,numberofnodes,numberofdofspernode);
+	vertices->CreatePartitioningVector(&partition->vector,numberofvertices);
 
 	/*Transpose partition into tpartition: */
Index: /issm/trunk/src/c/objects/DofObject.h
===================================================================
--- /issm/trunk/src/c/objects/DofObject.h	(revision 3463)
+++ /issm/trunk/src/c/objects/DofObject.h	(revision 3464)
@@ -18,4 +18,5 @@
 		virtual void  UpdateCloneDofs(int* allborderdofs)=0;
 		virtual void  SetClone(int* minranks)=0;
+		virtual void  CreatePartition(Vec partition)=0;
 
 };
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 3463)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 3464)
@@ -408,19 +408,4 @@
 }
 /*}}}*/
-/*FUNCTION Node CreatePartition{{{2*/
-void  Node::CreatePartition(Vec partition){ 
-
-	int      idxm;
-	double   value;
-
-	idxm=(id-1);
-	value=(double)this->GetVertexDof();
-	ISSMASSERT(value>=0);
-
-	VecSetValues(partition,1,&idxm,&value,INSERT_VALUES);
-
-	return;
-}
-/*}}}*/
 /*FUNCTION Node CreateVecSets {{{2*/
 void  Node::CreateVecSets(Vec pv_g,Vec pv_m,Vec pv_n,Vec pv_f,Vec pv_s){
@@ -914,3 +899,18 @@
 }
 /*}}}*/
-/*}}}*/
+/*FUNCTION Node CreatePartition{{{2*/
+void  Node::CreatePartition(Vec partition){ 
+
+	int      idxm;
+	double   value;
+
+	idxm=(id-1);
+	value=(double)this->indexing.doflist[0];
+	ISSMASSERT(value>=0);
+
+	VecSetValues(partition,1,&idxm,&value,INSERT_VALUES);
+
+	return;
+}
+/*}}}*/
+/*}}}*/
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 3463)
+++ /issm/trunk/src/c/objects/Node.h	(revision 3464)
@@ -63,5 +63,4 @@
 		/*}}}*/
 		/*FUNCTION numerical routines {{{1*/
-		void  CreatePartition(Vec partition);
 		int   GetNumberOfDofs();
 		int   IsClone();
@@ -96,4 +95,5 @@
 		void  UpdateCloneDofs(int* allborderdofs);
 		void  SetClone(int* minranks);
+		void  CreatePartition(Vec partition);
 		/*}}}*/
 };
Index: /issm/trunk/src/c/objects/Vertex.cpp
===================================================================
--- /issm/trunk/src/c/objects/Vertex.cpp	(revision 3463)
+++ /issm/trunk/src/c/objects/Vertex.cpp	(revision 3464)
@@ -298,3 +298,18 @@
 }
 /*}}}*/
-/*}}}*/
+/*FUNCTION Vertex CreatePartition{{{2*/
+void  Vertex::CreatePartition(Vec partition){ 
+
+	int      idxm;
+	double   value;
+
+	idxm=(id-1);
+	value=(double)this->dof;
+	ISSMASSERT(value>=0);
+
+	VecSetValues(partition,1,&idxm,&value,INSERT_VALUES);
+
+	return;
+}
+/*}}}*/
+/*}}}*/
Index: /issm/trunk/src/c/objects/Vertex.h
===================================================================
--- /issm/trunk/src/c/objects/Vertex.h	(revision 3463)
+++ /issm/trunk/src/c/objects/Vertex.h	(revision 3464)
@@ -57,4 +57,5 @@
 		void  UpdateCloneDofs(int* allborderdofs);
 		void  SetClone(int* minranks);
+		void  CreatePartition(Vec partition);
 		/*}}}*/
 
