<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>