Index: /issm/trunk-jpl/src/c/toolkits/mpi/patches/DetermineLocalSize.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/mpi/patches/DetermineLocalSize.cpp	(revision 13601)
+++ /issm/trunk-jpl/src/c/toolkits/mpi/patches/DetermineLocalSize.cpp	(revision 13602)
@@ -6,6 +6,7 @@
 #include <math.h>
 #include "../../../shared/shared.h"
+#include "../../../include/types.h"
 
-int DetermineLocalSize(int global_size){
+int DetermineLocalSize(int global_size,COMM comm){
 
 	/*output: */
@@ -18,23 +19,28 @@
 
 	/*from MPI: */
-	extern int num_procs;
-	extern int my_rank;
+	int num_procs2;
+	int my_rank2;
+
+	/*recover my_rank2*/
+	MPI_Comm_rank(comm,&my_rank2);
+	MPI_Comm_size(comm,&num_procs2);
+
 	
 	/*We are  not bound by any library, just use what seems most logical*/
-	num_local_rows=xNew<int>(num_procs);    
+	num_local_rows=xNew<int>(num_procs2);    
 
-	for (i=0;i<num_procs;i++){
+	for (i=0;i<num_procs2;i++){
 		/*Here, we use floor. We under distribute rows. The rows 
 		  left  are then redistributed, therefore resulting in a 
 		  more even distribution.*/
-		num_local_rows[i]=(int)floor((double)global_size/(double)num_procs); 
+		num_local_rows[i]=(int)floor((double)global_size/(double)num_procs2); 
 	}
 	
 	/*There may be some rows left. Distribute evenly.*/ 
-	row_rest=global_size - num_procs*(int)floor((double)global_size/(double)num_procs);
+	row_rest=global_size - num_procs2*(int)floor((double)global_size/(double)num_procs2);
 	for (i=0;i<row_rest;i++){
 		num_local_rows[i]++;
 	}
-	local_size=num_local_rows[my_rank];
+	local_size=num_local_rows[my_rank2];
 	
 	/*free ressources: */
Index: /issm/trunk-jpl/src/c/toolkits/mpi/patches/mpipatches.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/mpi/patches/mpipatches.h	(revision 13601)
+++ /issm/trunk-jpl/src/c/toolkits/mpi/patches/mpipatches.h	(revision 13602)
@@ -6,4 +6,8 @@
 #ifndef MPI_PATCHES_H_ 
 #define MPI_PATCHES_H_
-int DetermineLocalSize(int global_size);
+
+#include "../../../include/types.h"
+
+int DetermineLocalSize(int global_size,COMM comm);
+
 #endif
Index: /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 13601)
+++ /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp	(revision 13602)
@@ -32,6 +32,6 @@
 
 	/*Determine local sizes: */
-	m=DetermineLocalSize(M);
-	n=DetermineLocalSize(N);
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
 	
 	nnz=(int)((double)M*(double)N*sparsity); //number of non zeros.
@@ -60,6 +60,6 @@
 
 	/*Determine local sizes: */
-	m=DetermineLocalSize(M);
-	n=DetermineLocalSize(N);
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
 	
 	nnz=(int)((double)M*(double)N*sparsity); //number of non zeros.
@@ -99,6 +99,6 @@
 
 	/*Determine local sizes: */
-	m=DetermineLocalSize(M);
-	n=DetermineLocalSize(N);
+	m=DetermineLocalSize(M,comm);
+	n=DetermineLocalSize(N,comm);
 
 	/*Figure out number of non zeros per row: */
Index: /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 13601)
+++ /issm/trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp	(revision 13602)
@@ -30,5 +30,5 @@
 	}
 	else{
-		local_size=DetermineLocalSize(size);
+		local_size=DetermineLocalSize(size,comm);
 	}
 	
