Index: /issm/trunk-jpl/src/c/classes/objects/DependentObject.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/DependentObject.cpp	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/DependentObject.cpp	(revision 13608)
@@ -66,11 +66,4 @@
 int    DependentObject::Id(void){ return -1; }
 /*}}}*/
-/*FUNCTION DependentObject::MyRank{{{*/
-int    DependentObject::MyRank(void){ 
-	extern int my_rank;
-
-	return my_rank; 
-}
-/*}}}*/
 /*FUNCTION DependentObject::ObjectEnum{{{*/
 int DependentObject::ObjectEnum(void){
Index: /issm/trunk-jpl/src/c/classes/objects/DependentObject.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/DependentObject.h	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/DependentObject.h	(revision 13608)
@@ -35,5 +35,4 @@
 		void  DeepEcho();
 		int   Id(); 
-		int   MyRank();
 		int   ObjectEnum();
 		Object* copy(void);
Index: /issm/trunk-jpl/src/c/classes/objects/IndependentObject.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/IndependentObject.cpp	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/IndependentObject.cpp	(revision 13608)
@@ -65,11 +65,4 @@
 int    IndependentObject::Id(void){ return -1; }
 /*}}}*/
-/*FUNCTION IndependentObject::MyRank{{{*/
-int    IndependentObject::MyRank(void){ 
-	extern int my_rank;
-
-	return my_rank; 
-}
-/*}}}*/
 /*FUNCTION IndependentObject::ObjectEnum{{{*/
 int IndependentObject::ObjectEnum(void){
@@ -89,6 +82,9 @@
 void IndependentObject::FetchIndependent(IoModel* iomodel){
 
-	extern int my_rank;
+	int my_rank2;
 	FILE* fid=NULL;
+	
+	/*recover my_rank2:*/
+	my_rank2=IssmComm::GetRank();
 
 	#ifdef _HAVE_ADOLC_ //cannot come here unless you are running AD mode, from DeclaredIndependents:
@@ -109,5 +105,5 @@
 
 		/*We have to read a scalar from disk. First read the dimensions of the scalar, then the scalar: */
-		if(my_rank==0){
+		if(my_rank2==0){
 			if(fread(&pscalar,sizeof(IssmPDouble),1,fid)!=1)_error_("could not read scalar ");
 		}
@@ -147,5 +143,5 @@
 		/*We have to read a matrix from disk. First read the dimensions of the matrix, then the whole matrix: */
 		/*numberofelements: */
-		if(my_rank==0){  
+		if(my_rank2==0){  
 			if(fread(&M,sizeof(int),1,fid)!=1) _error_("could not read number of rows for matrix ");
 		}
@@ -154,5 +150,5 @@
 		#endif
 
-		if(my_rank==0){  
+		if(my_rank2==0){  
 			if(fread(&N,sizeof(int),1,fid)!=1) _error_("could not read number of columns for matrix ");
 		}
@@ -167,5 +163,5 @@
 
 			/*Read matrix on node 0, then broadcast: */
-			if(my_rank==0){  
+			if(my_rank2==0){  
 				if(fread(buffer,M*N*sizeof(IssmPDouble),1,fid)!=1) _error_("could not read matrix ");
 				
Index: /issm/trunk-jpl/src/c/classes/objects/IndependentObject.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/IndependentObject.h	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/IndependentObject.h	(revision 13608)
@@ -30,5 +30,4 @@
 		void  DeepEcho();
 		int   Id(); 
-		int   MyRank();
 		int   ObjectEnum();
 		Object* copy(void);
Index: /issm/trunk-jpl/src/c/classes/objects/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Node.cpp	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/Node.cpp	(revision 13608)
@@ -979,7 +979,10 @@
 void  Node::SetClone(int* minranks){
 
-	extern int my_rank;
-
-	if (minranks[sid]==my_rank){
+	int my_rank2;
+	
+	/*recover my_rank2:*/
+	my_rank2=IssmComm::GetRank();
+
+	if (minranks[sid]==my_rank2){
 		indexing.clone=false;
 	}
Index: /issm/trunk-jpl/src/c/classes/objects/Params/DataSetParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Params/DataSetParam.cpp	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/Params/DataSetParam.cpp	(revision 13608)
@@ -57,10 +57,4 @@
 int    DataSetParam::Id(void){ return -1; }
 /*}}}*/
-/*FUNCTION DataSetParam::MyRank{{{*/
-int    DataSetParam::MyRank(void){ 
-	extern int my_rank;
-	return my_rank; 
-}
-/*}}}*/
 /*FUNCTION DataSetParam::ObjectEnum{{{*/
 int DataSetParam::ObjectEnum(void){
Index: /issm/trunk-jpl/src/c/classes/objects/Params/DataSetParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Params/DataSetParam.h	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/Params/DataSetParam.h	(revision 13608)
@@ -36,5 +36,4 @@
 		void  DeepEcho();
 		int   Id(); 
-		int   MyRank();
 		int   ObjectEnum();
 		Object* copy();
Index: /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 13607)
+++ /issm/trunk-jpl/src/c/classes/objects/Vertex.cpp	(revision 13608)
@@ -178,7 +178,10 @@
 void  Vertex::SetClone(int* minranks){
 
-	extern int my_rank;
+	int my_rank2;
+	
+	/*recover my_rank2:*/
+	my_rank2=IssmComm::GetRank();
 
-	if (minranks[this->sid]==my_rank){
+	if (minranks[this->sid]==my_rank2){
 		this->clone=false;
 	}
Index: /issm/trunk-jpl/src/c/solutions/controltao_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 13607)
+++ /issm/trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 13608)
@@ -54,5 +54,5 @@
 
 	/*Initialize TAO*/
-	TaoCreate(PETSC_COMM_WORLD,&tao);
+	TaoCreate(IssmComm::GetComm(),&tao);
 	if(VerboseControl()) _pprintLine_("   Initializing the Toolkit for Advanced Optimization (TAO)");
 	TaoSetFromOptions(tao);
