diff --git a/src/arch/util/machine-common-core.c b/src/arch/util/machine-common-core.c
index 43a27c4..650df34 100644
--- a/src/arch/util/machine-common-core.c
+++ b/src/arch/util/machine-common-core.c
@@ -227,6 +227,13 @@ int networkProgressPeriod;
 extern int ccsRunning;
 #endif
 
+#if CMK_CONVERSE_MPI
+MPI_Comm charmInterPartitionComm;
+MPI_Comm *charmInterPartitionCommPtr = NULL;
+MPI_Comm charmIntraPartitionComm;
+MPI_Comm *charmIntraPartitionCommPtr = NULL;
+#endif
+
 /* ===== Beginning of Common Function Declarations ===== */
 void CmiAbort(const char *message);
 static void PerrorExit(const char *msg);
@@ -1119,6 +1126,22 @@ if (  MSG_STATISTIC)
       _writeToStdout = 0;
       free(stdoutpath);
     }
+
+#if CMK_CONVERSE_MPI
+    if ( MPI_SUCCESS == MPI_Comm_split(charmComm, _Cmi_mynode, CmiMyPartition(), &charmInterPartitionComm) ) {
+      charmInterPartitionCommPtr = &charmInterPartitionComm;
+      if ( 0 ) {
+        int size, rank;
+        MPI_Comm_size(charmInterPartitionComm, &size);
+        MPI_Comm_rank(charmInterPartitionComm, &rank);
+        CmiPrintf("charmInterPartitionCommPtr %ld _Cmi_mynode %d CmiMyPartition %d size %d rank %d\n", (long) charmInterPartitionCommPtr, _Cmi_mynode, CmiMyPartition(), size, rank);
+      }
+    }
+    if ( MPI_SUCCESS == MPI_Comm_split(charmComm, CmiMyPartition(), _Cmi_mynode, &charmIntraPartitionComm) ) {
+      charmIntraPartitionCommPtr = &charmIntraPartitionComm;
+    }
+#endif
+
 #if CMK_SMP
     comm_mutex=CmiCreateLock();
 #endif
