<p><b>duda</b> 2010-03-16 16:49:50 -0600 (Tue, 16 Mar 2010)</p><p>BRANCH COMMIT<br>
<br>
Generalize initialization of dmpar module to accept an<br>
externally-supplied MPI communicator.<br>
<br>
M    module_dmpar.F<br>
</p><hr noshade><pre><font color="gray">Modified: branches/mpas_cam_coupling/src/framework/module_dmpar.F
===================================================================
--- branches/mpas_cam_coupling/src/framework/module_dmpar.F        2010-03-16 20:47:55 UTC (rev 139)
+++ branches/mpas_cam_coupling/src/framework/module_dmpar.F        2010-03-16 22:49:50 UTC (rev 140)
@@ -44,23 +44,28 @@
    contains
 
 
-   subroutine dmpar_init(dminfo)
+   subroutine dmpar_init(dminfo, mpi_comm)
 
       implicit none
 
       type (dm_info), intent(inout) :: dminfo
+      integer, intent(in), optional :: mpi_comm     ! Optional: externally-supplied MPI communicator
 
 #ifdef _MPI
       integer :: mpi_rank, mpi_size
       integer :: mpi_ierr
 
+      if (present(mpi_comm)) then
+         dminfo % comm = mpi_comm
+      else
+         call MPI_Init(mpi_ierr)
+         dminfo % comm = MPI_COMM_WORLD
+      end if
+
       ! Find out our rank and the total number of processors
-      call MPI_Init(mpi_ierr)
-      call MPI_Comm_rank(MPI_COMM_WORLD, mpi_rank, mpi_ierr)
-      call MPI_Comm_size(MPI_COMM_WORLD, mpi_size, mpi_ierr)
+      call MPI_Comm_rank(dminfo % comm, mpi_rank, mpi_ierr)
+      call MPI_Comm_size(dminfo % comm, mpi_size, mpi_ierr)
 
-      dminfo % comm = MPI_COMM_WORLD
-
       dminfo % nprocs = mpi_size
       dminfo % my_proc_id = mpi_rank
 

</font>
</pre>