Index: /issm/trunk/src/c/Container/Nodes.cpp
===================================================================
--- /issm/trunk/src/c/Container/Nodes.cpp	(revision 4434)
+++ /issm/trunk/src/c/Container/Nodes.cpp	(revision 4435)
@@ -243,27 +243,20 @@
 
 	int i;
-
-	int max_sid=0;
-	int sid;
-	int node_max_sid;
-
-	for(i=0;i<this->Size();i++){
-
-		Node* node=(Node*)this->GetObjectByOffset(i);
-		sid=node->Sid();
-		if (sid>max_sid)max_sid=sid;
-	}
-
-	#ifdef _PARALLEL_
-	MPI_Reduce (&max_sid,&node_max_sid,1,MPI_INT,MPI_MAX,0,MPI_COMM_WORLD );
-	MPI_Bcast(&node_max_sid,1,MPI_INT,0,MPI_COMM_WORLD);
-	max_sid=node_max_sid;
-	#endif 
-
-	/*sid starts at 0*/
-	if (max_sid) max_sid++;
-
-	/*return*/
-	return max_sid;
+	
+	int   numnodes=0;
+	int   allnumnodes;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(i=0;i<this->Size();i++){
+		Node* node=(Node*)this->GetObjectByOffset(i);
+
+		/*Ok, this object is a node, ask it to plug values into partition: */
+		if (!node->IsClone()) numnodes++;
+	}
+
+	/*Gather from all cpus: */
+	MPI_Allreduce ( (void*)&numnodes,(void*)&allnumnodes,1,MPI_INT,MPI_SUM,MPI_COMM_WORLD);
+
+	return allnumnodes;
 }
 /*}}}*/
