Oasis3-MCT
Data Types | Functions/Subroutines
mod_oasis_mpi Module Reference

Provides a generic and simpler interface into MPI calls for OASIS. More...

Data Types

interface  oasis_mpi_bcast
 Generic overloaded interface into MPI broadcast. More...
 
interface  oasis_mpi_gatherv
 Generic interfaces into an MPI vector gather. More...
 
interface  oasis_mpi_gathscatvinit
 Generic interface to oasis_mpi_gathScatVInit. More...
 
interface  oasis_mpi_max
 Generic overloaded interface into MPI max reduction. More...
 
interface  oasis_mpi_min
 Generic overloaded interface into MPI min reduction. More...
 
interface  oasis_mpi_recv
 Generic overloaded interface into MPI receive. More...
 
interface  oasis_mpi_scatterv
 Generic interfaces into an MPI vector scatter. More...
 
interface  oasis_mpi_send
 Generic overloaded interface into MPI send. More...
 
interface  oasis_mpi_sum
 Generic overloaded interface into MPI sum reduction. More...
 

Functions/Subroutines

subroutine, public oasis_mpi_chkerr (rcode, string)
 Checks MPI error codes and aborts. More...
 
subroutine oasis_mpi_sendi0 (lvec, pid, tag, comm, string)
 Send a scalar integer. More...
 
subroutine oasis_mpi_sendi1 (lvec, pid, tag, comm, string)
 Send an array of 1D integers. More...
 
subroutine oasis_mpi_sendr0 (lvec, pid, tag, comm, string)
 Send a scalar double. More...
 
subroutine oasis_mpi_sendr1 (lvec, pid, tag, comm, string)
 Send an array of 1D doubles. More...
 
subroutine oasis_mpi_sendr3 (array, pid, tag, comm, string)
 Send an array of 3D doubles. More...
 
subroutine oasis_mpi_recvi0 (lvec, pid, tag, comm, string)
 Receive a scalar integer. More...
 
subroutine oasis_mpi_recvi1 (lvec, pid, tag, comm, string)
 Receive an array of 1D integers. More...
 
subroutine oasis_mpi_recvr0 (lvec, pid, tag, comm, string)
 Receive a scalar double. More...
 
subroutine oasis_mpi_recvr1 (lvec, pid, tag, comm, string)
 Receive an array of 1D doubles. More...
 
subroutine oasis_mpi_recvr3 (array, pid, tag, comm, string)
 Receive an array of 3D doubles. More...
 
subroutine oasis_mpi_bcasti0 (vec, comm, string, pebcast)
 Broadcast a scalar integer. More...
 
subroutine oasis_mpi_bcastl0 (vec, comm, string, pebcast)
 Broadcast a scalar logical. More...
 
subroutine oasis_mpi_bcastc0 (vec, comm, string, pebcast)
 Broadcast a character string. More...
 
subroutine oasis_mpi_bcastc1 (vec, comm, string, pebcast)
 Broadcast an array of 1D character strings. More...
 
subroutine oasis_mpi_bcastr0 (vec, comm, string, pebcast)
 Broadcast a scalar double. More...
 
subroutine oasis_mpi_bcasti1 (vec, comm, string, pebcast)
 Broadcast an array of 1D integers. More...
 
subroutine oasis_mpi_bcastl1 (vec, comm, string, pebcast)
 Broadcast an array of 1D logicals. More...
 
subroutine oasis_mpi_bcastr1 (vec, comm, string, pebcast)
 Broadcast an array of 1D doubles. More...
 
subroutine oasis_mpi_bcastr2 (arr, comm, string, pebcast)
 Broadcast an array of 2D doubles. More...
 
subroutine oasis_mpi_bcasti2 (arr, comm, string, pebcast)
 Broadcast an array of 2D integers. More...
 
subroutine oasis_mpi_bcastr3 (arr, comm, string, pebcast)
 Broadcast an array of 3D doubles. More...
 
subroutine oasis_mpi_gathscatvinitr1 (comm, rootid, locArr, glob1DArr, globSize, displs, string)
 Initialize variables for oasis_mpi_gatherv and oasis_mpi_scatterv. More...
 
subroutine oasis_mpi_gathervr1 (locarr, locSize, glob1DArr, globSize, displs, rootid, comm, string)
 Gather a vector of distributed data to a rootid. More...
 
subroutine oasis_mpi_scattervr1 (locarr, locSize, glob1Darr, globSize, displs, rootid, comm, string)
 Scatter a vector of global data from a rootid. More...
 
subroutine oasis_mpi_sumi0 (lvec, gvec, comm, string, all)
 Compute a global Sum for a scalar integer. More...
 
subroutine oasis_mpi_sumi1 (lvec, gvec, comm, string, all)
 Compute a 1D array of global sums for an array of 1D integers. More...
 
subroutine oasis_mpi_sumb0 (lvec, gvec, comm, string, all)
 Compute a global sum for a scalar 8 byte integer. More...
 
subroutine oasis_mpi_sumb1 (lvec, gvec, comm, string, all)
 Compute a 1D array of global sums for an array of 1D 8 byte integers. More...
 
subroutine oasis_mpi_sumr0 (lvec, gvec, comm, string, all)
 Compute a global sum for a scalar double. More...
 
subroutine oasis_mpi_sumr1 (lvec, gvec, comm, string, all)
 Compute a 1D array of global sums for an array of 1D doubles. More...
 
subroutine oasis_mpi_sumr2 (lvec, gvec, comm, string, all)
 Compute a 2D array of global sums for an array of 2D doubles. More...
 
subroutine oasis_mpi_sumr3 (lvec, gvec, comm, string, all)
 Compute a 3D array of global sums for an array of 3D doubles. More...
 
subroutine oasis_mpi_sumq0 (lvec, gvec, comm, string, all)
 Compute a global sum for a scalar quad. More...
 
subroutine oasis_mpi_sumq1 (lvec, gvec, comm, string, all)
 Compute a 1D array of global sums for an array of 1D quads. More...
 
subroutine oasis_mpi_sumq2 (lvec, gvec, comm, string, all)
 Compute a 2D array of global sums for an array of 2D quads. More...
 
subroutine oasis_mpi_sumq3 (lvec, gvec, comm, string, all)
 Compute a 3D array of global sums for an array of 3D quads. More...
 
subroutine oasis_mpi_mini0 (lvec, gvec, comm, string, all)
 Compute a global minimum for a scalar integer. More...
 
subroutine oasis_mpi_mini1 (lvec, gvec, comm, string, all)
 Compute an array of global minimums for an array of 1D integers. More...
 
subroutine oasis_mpi_minr0 (lvec, gvec, comm, string, all)
 Compute an global minimum for a scalar double. More...
 
subroutine oasis_mpi_minr1 (lvec, gvec, comm, string, all)
 Compute an array of global minimums for an array of 1D doubles. More...
 
subroutine oasis_mpi_maxi0 (lvec, gvec, comm, string, all)
 Compute a global maximum for a scalar integer. More...
 
subroutine oasis_mpi_maxi1 (lvec, gvec, comm, string, all)
 Compute an array of global maximums for an array of 1D integers. More...
 
subroutine oasis_mpi_maxr0 (lvec, gvec, comm, string, all)
 Compute a global maximum for a scalar double. More...
 
subroutine oasis_mpi_maxr1 (lvec, gvec, comm, string, all)
 Compute an array of global maximums for an array of 1D doubles. More...
 
subroutine, public oasis_mpi_commsize (comm, size, string)
 Get the total number of tasks associated with a communicator. More...
 
subroutine, public oasis_mpi_commrank (comm, rank, string)
 Get the rank (task ID) for a task in a communicator. More...
 
subroutine, public oasis_mpi_initialized (flag, string)
 Check whether MPI has been initialized. More...
 
subroutine, public oasis_mpi_wtime (wtime)
 Return a timestamp from MPI_WTIME. More...
 
subroutine, public oasis_mpi_abort (string, rcode)
 Write error messages and Call MPI_ABORT. More...
 
subroutine, public oasis_mpi_barrier (comm, string)
 Call MPI_BARRIER for a particular communicator. More...
 
subroutine, public oasis_mpi_init (string)
 Call MPI_INIT. More...
 
subroutine, public oasis_mpi_finalize (string)
 Call MPI_FINALZE. More...
 
subroutine, public oasis_mpi_reducelists (linp1, comm, cntout, lout1, callstr, fastcheck, fastcheckout, linp2, lout2, spval2, linp3, lout3, spval3, linp4, lout4, spval4)
 Custom method for reducing MPI lists across pes for OASIS. More...
 

Detailed Description

Provides a generic and simpler interface into MPI calls for OASIS.

Function/Subroutine Documentation

◆ oasis_mpi_abort()

subroutine, public mod_oasis_mpi::oasis_mpi_abort ( character(*), intent(in), optional  string,
integer, intent(in), optional  rcode 
)

Write error messages and Call MPI_ABORT.

Parameters
[in]stringto identify caller
[in]rcodeoptional code

Definition at line 2654 of file mod_oasis_mpi.F90.

◆ oasis_mpi_barrier()

subroutine, public mod_oasis_mpi::oasis_mpi_barrier ( integer, intent(in)  comm,
character(*), intent(in), optional  string 
)

Call MPI_BARRIER for a particular communicator.

Parameters
[in]commmpi communicator
[in]stringto identify caller

Definition at line 2697 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastc0()

subroutine mod_oasis_mpi::oasis_mpi_bcastc0 ( character(len=*), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast a character string.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 659 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastc1()

subroutine mod_oasis_mpi::oasis_mpi_bcastc1 ( character(len=*), dimension(:), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 1D character strings.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 701 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcasti0()

subroutine mod_oasis_mpi::oasis_mpi_bcasti0 ( integer(ip_i4_p), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast a scalar integer.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 575 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcasti1()

subroutine mod_oasis_mpi::oasis_mpi_bcasti1 ( integer(ip_i4_p), dimension(:), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 1D integers.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 785 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcasti2()

subroutine mod_oasis_mpi::oasis_mpi_bcasti2 ( integer, dimension(:,:), intent(inout)  arr,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 2D integers.

Parameters
[in,out]arrvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 955 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastl0()

subroutine mod_oasis_mpi::oasis_mpi_bcastl0 ( logical, intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast a scalar logical.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 617 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastl1()

subroutine mod_oasis_mpi::oasis_mpi_bcastl1 ( logical, dimension(:), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 1D logicals.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 827 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastr0()

subroutine mod_oasis_mpi::oasis_mpi_bcastr0 ( real(ip_double_p), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast a scalar double.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 743 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastr1()

subroutine mod_oasis_mpi::oasis_mpi_bcastr1 ( real(ip_double_p), dimension(:), intent(inout)  vec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 1D doubles.

Parameters
[in,out]vecvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 869 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastr2()

subroutine mod_oasis_mpi::oasis_mpi_bcastr2 ( real(ip_double_p), dimension(:,:), intent(inout)  arr,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 2D doubles.

Parameters
[in,out]arrvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 911 of file mod_oasis_mpi.F90.

◆ oasis_mpi_bcastr3()

subroutine mod_oasis_mpi::oasis_mpi_bcastr3 ( real(ip_double_p), dimension(:,:,:), intent(inout)  arr,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
integer(ip_i4_p), intent(in), optional  pebcast 
)
private

Broadcast an array of 3D doubles.

Parameters
[in,out]arrvalues to broadcast
[in]commmpi communicator
[in]stringto identify caller
[in]pebcastbcast pe, default is task 0

Definition at line 999 of file mod_oasis_mpi.F90.

◆ oasis_mpi_chkerr()

subroutine, public mod_oasis_mpi::oasis_mpi_chkerr ( integer(ip_i4_p), intent(in)  rcode,
character(*), intent(in)  string 
)

Checks MPI error codes and aborts.

This method compares rcode to MPI_SUCCESS. If rcode is an error, it queries MPI_ERROR_STRING for the error string associated with rcode, writes it out, and aborts with the string passed through the interface.

Parameters
[in]rcodeMPI error code
[in]stringabort message

Definition at line 135 of file mod_oasis_mpi.F90.

◆ oasis_mpi_commrank()

subroutine, public mod_oasis_mpi::oasis_mpi_commrank ( integer, intent(in)  comm,
integer, intent(out)  rank,
character(*), intent(in), optional  string 
)

Get the rank (task ID) for a task in a communicator.

Parameters
[in]commmpi communicator
[out]rankoutput task ID
[in]stringto identify caller

Definition at line 2558 of file mod_oasis_mpi.F90.

◆ oasis_mpi_commsize()

subroutine, public mod_oasis_mpi::oasis_mpi_commsize ( integer, intent(in)  comm,
integer, intent(out)  size,
character(*), intent(in), optional  string 
)

Get the total number of tasks associated with a communicator.

Parameters
[in]commmpi communicator
[out]sizeoutput comm size
[in]stringto identify caller

Definition at line 2523 of file mod_oasis_mpi.F90.

◆ oasis_mpi_finalize()

subroutine, public mod_oasis_mpi::oasis_mpi_finalize ( character(*), intent(in), optional  string)

Call MPI_FINALZE.

Parameters
[in]stringto identify caller

Definition at line 2764 of file mod_oasis_mpi.F90.

◆ oasis_mpi_gathervr1()

subroutine mod_oasis_mpi::oasis_mpi_gathervr1 ( real(ip_double_p), dimension(:), intent(in)  locarr,
integer(ip_i4_p), intent(in)  locSize,
real(ip_double_p), dimension(:), intent(inout)  glob1DArr,
integer(ip_i4_p), dimension(:), intent(in)  globSize,
integer(ip_i4_p), dimension(:), intent(in)  displs,
integer(ip_i4_p), intent(in)  rootid,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Gather a vector of distributed data to a rootid.

This method passes in glob1DArr, globSize, and displs computed in the oasis_mpi_gathscatvinit routine and uses that information to gather the locArr into the glob1Darr on processor rootid in communicator comm.

Parameters
[in]locarrLocal array
[in,out]glob1darrGlobal 1D array to receive in on
[in]locsizeNumber to send from this PE
[in]globsizeNumber to receive from each PE
[in]displsDisplacements for receives
[in]rootidMPI task to gather on
[in]commmpi communicator
[in]stringto identify caller

Definition at line 1142 of file mod_oasis_mpi.F90.

◆ oasis_mpi_gathscatvinitr1()

subroutine mod_oasis_mpi::oasis_mpi_gathscatvinitr1 ( integer(ip_i4_p), intent(in)  comm,
integer(ip_i4_p), intent(in)  rootid,
real(ip_double_p), dimension(:), intent(in)  locArr,
real(ip_double_p), dimension(:), pointer  glob1DArr,
integer(ip_i4_p), dimension(:), pointer  globSize,
integer(ip_i4_p), dimension(:), pointer  displs,
character(*), intent(in), optional  string 
)
private

Initialize variables for oasis_mpi_gatherv and oasis_mpi_scatterv.

This method initializes glob1DArr, globSize, and displs for use in the oasis_mpi_gatherv and oasis_mpi_scatterv routines. locArr is the distributed array to gather from or scatter to.

Parameters
[in]commmpi communicator
[in]rootidMPI task to gather/scatter on
[in]locarrLocal array of distributed data
glob1darrGlobal 1D array of gathered data
globsizeSize of each distributed piece
displsDisplacements for receive
[in]stringto identify caller

Definition at line 1048 of file mod_oasis_mpi.F90.

◆ oasis_mpi_init()

subroutine, public mod_oasis_mpi::oasis_mpi_init ( character(*), intent(in), optional  string)

Call MPI_INIT.

Parameters
[in]stringto identify caller

Definition at line 2731 of file mod_oasis_mpi.F90.

◆ oasis_mpi_initialized()

subroutine, public mod_oasis_mpi::oasis_mpi_initialized ( logical, intent(out)  flag,
character(*), intent(in), optional  string 
)

Check whether MPI has been initialized.

Parameters
[out]flagtrue if MPI_INITIALIZED has been called
[in]stringto identify caller

Definition at line 2593 of file mod_oasis_mpi.F90.

◆ oasis_mpi_maxi0()

subroutine mod_oasis_mpi::oasis_mpi_maxi0 ( integer(ip_i4_p), intent(in)  lvec,
integer(ip_i4_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global maximum for a scalar integer.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2271 of file mod_oasis_mpi.F90.

◆ oasis_mpi_maxi1()

subroutine mod_oasis_mpi::oasis_mpi_maxi1 ( integer(ip_i4_p), dimension(:), intent(in)  lvec,
integer(ip_i4_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute an array of global maximums for an array of 1D integers.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2334 of file mod_oasis_mpi.F90.

◆ oasis_mpi_maxr0()

subroutine mod_oasis_mpi::oasis_mpi_maxr0 ( real(ip_double_p), intent(in)  lvec,
real(ip_double_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global maximum for a scalar double.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2397 of file mod_oasis_mpi.F90.

◆ oasis_mpi_maxr1()

subroutine mod_oasis_mpi::oasis_mpi_maxr1 ( real(ip_double_p), dimension(:), intent(in)  lvec,
real(ip_double_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute an array of global maximums for an array of 1D doubles.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2460 of file mod_oasis_mpi.F90.

◆ oasis_mpi_mini0()

subroutine mod_oasis_mpi::oasis_mpi_mini0 ( integer(ip_i4_p), intent(in)  lvec,
integer(ip_i4_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global minimum for a scalar integer.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2019 of file mod_oasis_mpi.F90.

◆ oasis_mpi_mini1()

subroutine mod_oasis_mpi::oasis_mpi_mini1 ( integer(ip_i4_p), dimension(:), intent(in)  lvec,
integer(ip_i4_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute an array of global minimums for an array of 1D integers.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2082 of file mod_oasis_mpi.F90.

◆ oasis_mpi_minr0()

subroutine mod_oasis_mpi::oasis_mpi_minr0 ( real(ip_double_p), intent(in)  lvec,
real(ip_double_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute an global minimum for a scalar double.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2145 of file mod_oasis_mpi.F90.

◆ oasis_mpi_minr1()

subroutine mod_oasis_mpi::oasis_mpi_minr1 ( real(ip_double_p), dimension(:), intent(in)  lvec,
real(ip_double_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute an array of global minimums for an array of 1D doubles.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 2208 of file mod_oasis_mpi.F90.

◆ oasis_mpi_recvi0()

subroutine mod_oasis_mpi::oasis_mpi_recvi0 ( integer(ip_i4_p), intent(out)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Receive a scalar integer.

Parameters
[out]lvecreceive values
[in]pidpid to recv from
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 370 of file mod_oasis_mpi.F90.

◆ oasis_mpi_recvi1()

subroutine mod_oasis_mpi::oasis_mpi_recvi1 ( integer(ip_i4_p), dimension(:), intent(out)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Receive an array of 1D integers.

Parameters
[out]lvecreceive values
[in]pidpid to recv from
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 411 of file mod_oasis_mpi.F90.

◆ oasis_mpi_recvr0()

subroutine mod_oasis_mpi::oasis_mpi_recvr0 ( real(ip_double_p), intent(out)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Receive a scalar double.

Parameters
[out]lvecreceive values
[in]pidpid to recv from
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 452 of file mod_oasis_mpi.F90.

◆ oasis_mpi_recvr1()

subroutine mod_oasis_mpi::oasis_mpi_recvr1 ( real(ip_double_p), dimension(:), intent(out)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Receive an array of 1D doubles.

Parameters
[out]lvecreceive values
[in]pidpid to recv from
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 493 of file mod_oasis_mpi.F90.

◆ oasis_mpi_recvr3()

subroutine mod_oasis_mpi::oasis_mpi_recvr3 ( real(ip_double_p), dimension(:,:,:), intent(out)  array,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Receive an array of 3D doubles.

Parameters
[out]arrayreceive values
[in]pidpid to recv from
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 534 of file mod_oasis_mpi.F90.

◆ oasis_mpi_reducelists()

subroutine, public mod_oasis_mpi::oasis_mpi_reducelists ( character(*), dimension(:), intent(in), pointer  linp1,
integer, intent(in)  comm,
integer, intent(out)  cntout,
character(*), dimension(:), intent(inout), pointer  lout1,
character(*), intent(in)  callstr,
logical, intent(in), optional  fastcheck,
logical, intent(out), optional  fastcheckout,
character(*), dimension(:), intent(in), optional, pointer  linp2,
character(*), dimension(:), intent(inout), optional, pointer  lout2,
character(*), intent(in), optional  spval2,
integer, dimension(:), intent(in), optional, pointer  linp3,
integer, dimension(:), intent(inout), optional, pointer  lout3,
integer, intent(in), optional  spval3,
integer, dimension(:), intent(in), optional, pointer  linp4,
integer, dimension(:), intent(inout), optional, pointer  lout4,
integer, intent(in), optional  spval4 
)

Custom method for reducing MPI lists across pes for OASIS.

Parameters
[in]linp1input list on each task
[in]commmpi communicator
[out]cntoutsize of lout1 list
[in,out]lout1reduced output list, same on all tasks
[in]callstrto identify caller
[in]fastcheckrun a fastcheck first
[out]fastcheckouttrue if fastcheck worked
[in]linp2input list on each task
[in,out]lout2reduced output list, same on all tasks
[in]spval2unset value for linp2
[in]linp3input list on each task
[in,out]lout3reduced output list, same on all tasks
[in]spval3unset value for linp3
[in]linp4input list on each task
[in,out]lout4reduced output list, same on all tasks
[in]spval4unset value for linp4
  • Check argument consistency
  • Fast compare on all tasks
  • Generate initial unique local name list
  • Log2 reduction of linp over tasks to root
    • Send list
    • Recv list
    • Determine the unique list
  • Broadcast the list information to all tasks from root

Definition at line 2798 of file mod_oasis_mpi.F90.

◆ oasis_mpi_scattervr1()

subroutine mod_oasis_mpi::oasis_mpi_scattervr1 ( real(ip_double_p), dimension(:), intent(out)  locarr,
integer(ip_i4_p), intent(in)  locSize,
real(ip_double_p), dimension(:), intent(in)  glob1Darr,
integer(ip_i4_p), dimension(:), intent(in)  globSize,
integer(ip_i4_p), dimension(:), intent(in)  displs,
integer(ip_i4_p), intent(in)  rootid,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Scatter a vector of global data from a rootid.

This method passes in glob1DArr, globSize, and displs computed in the oasis_mpi_gathscatvinit routine and uses that information to scatter glob1Darr on processor rootid in communicator comm to locarr on other processors.

Parameters
[out]locarrLocal array
[in]glob1darrGlobal 1D array to send from
[in]locsizeNumber to receive this PE
[in]globsizeNumber to send to each PE
[in]displsDisplacements for send
[in]rootidMPI task to scatter on
[in]commmpi communicator
[in]stringto identify caller

Definition at line 1191 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sendi0()

subroutine mod_oasis_mpi::oasis_mpi_sendi0 ( integer(ip_i4_p), intent(in)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Send a scalar integer.

Parameters
[in]lvecsend value
[in]pidpid to send to
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 170 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sendi1()

subroutine mod_oasis_mpi::oasis_mpi_sendi1 ( integer(ip_i4_p), dimension(:), intent(in)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Send an array of 1D integers.

Parameters
[in]lvecsend values
[in]pidpid to send to
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 210 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sendr0()

subroutine mod_oasis_mpi::oasis_mpi_sendr0 ( real(ip_double_p), intent(in)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Send a scalar double.

Parameters
[in]lvecsend values
[in]pidpid to send to
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 250 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sendr1()

subroutine mod_oasis_mpi::oasis_mpi_sendr1 ( real(ip_double_p), dimension(:), intent(in)  lvec,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Send an array of 1D doubles.

Parameters
[in]lvecsend values
[in]pidpid to send to
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 290 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sendr3()

subroutine mod_oasis_mpi::oasis_mpi_sendr3 ( real(ip_double_p), dimension(:,:,:), intent(in)  array,
integer(ip_i4_p), intent(in)  pid,
integer(ip_i4_p), intent(in)  tag,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string 
)
private

Send an array of 3D doubles.

Parameters
[in]arraysend values
[in]pidpid to send to
[in]tagmpi tag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 330 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumb0()

subroutine mod_oasis_mpi::oasis_mpi_sumb0 ( integer(ip_i8_p), intent(in)  lvec,
integer(ip_i8_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global sum for a scalar 8 byte integer.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1364 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumb1()

subroutine mod_oasis_mpi::oasis_mpi_sumb1 ( integer(ip_i8_p), dimension(:), intent(in)  lvec,
integer(ip_i8_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 1D array of global sums for an array of 1D 8 byte integers.

This sums an array of local integers to an array of summed integers. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1430 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumi0()

subroutine mod_oasis_mpi::oasis_mpi_sumi0 ( integer(ip_i4_p), intent(in)  lvec,
integer(ip_i4_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global Sum for a scalar integer.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1235 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumi1()

subroutine mod_oasis_mpi::oasis_mpi_sumi1 ( integer(ip_i4_p), dimension(:), intent(in)  lvec,
integer(ip_i4_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 1D array of global sums for an array of 1D integers.

This sums an array of local integers to an array of summed integers. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1301 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumq0()

subroutine mod_oasis_mpi::oasis_mpi_sumq0 ( real(ip_quad_p), intent(in)  lvec,
real(ip_quad_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global sum for a scalar quad.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1756 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumq1()

subroutine mod_oasis_mpi::oasis_mpi_sumq1 ( real(ip_quad_p), dimension(:), intent(in)  lvec,
real(ip_quad_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 1D array of global sums for an array of 1D quads.

This sums an array of local quads to an array of summed quads. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1822 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumq2()

subroutine mod_oasis_mpi::oasis_mpi_sumq2 ( real(ip_quad_p), dimension(:,:), intent(in)  lvec,
real(ip_quad_p), dimension(:,:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 2D array of global sums for an array of 2D quads.

This sums an array of local quads to an array of summed quads. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1888 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumq3()

subroutine mod_oasis_mpi::oasis_mpi_sumq3 ( real(ip_quad_p), dimension(:,:,:), intent(in)  lvec,
real(ip_quad_p), dimension(:,:,:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 3D array of global sums for an array of 3D quads.

This sums an array of local quads to an array of summed quads. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1954 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumr0()

subroutine mod_oasis_mpi::oasis_mpi_sumr0 ( real(ip_double_p), intent(in)  lvec,
real(ip_double_p), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a global sum for a scalar double.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1493 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumr1()

subroutine mod_oasis_mpi::oasis_mpi_sumr1 ( real(ip_double_p), dimension(:), intent(in)  lvec,
real(ip_double_p), dimension(:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 1D array of global sums for an array of 1D doubles.

This sums an array of local doubles to an array of summed doubles. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1559 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumr2()

subroutine mod_oasis_mpi::oasis_mpi_sumr2 ( real(ip_double_p), dimension(:,:), intent(in)  lvec,
real(ip_double_p), dimension(:,:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 2D array of global sums for an array of 2D doubles.

This sums an array of local doubles to an array of summed doubles. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1625 of file mod_oasis_mpi.F90.

◆ oasis_mpi_sumr3()

subroutine mod_oasis_mpi::oasis_mpi_sumr3 ( real(ip_double_p), dimension(:,:,:), intent(in)  lvec,
real(ip_double_p), dimension(:,:,:), intent(out)  gvec,
integer(ip_i4_p), intent(in)  comm,
character(*), intent(in), optional  string,
logical, intent(in), optional  all 
)
private

Compute a 3D array of global sums for an array of 3D doubles.

This sums an array of local doubles to an array of summed doubles. This does not reduce the array to a scalar.

Parameters
[in]lveclocal values
[out]gvecglobal values
[in]commmpi communicator
[in]stringto identify caller
[in]allif true call allreduce, otherwise reduce to task 0

Definition at line 1691 of file mod_oasis_mpi.F90.

◆ oasis_mpi_wtime()

subroutine, public mod_oasis_mpi::oasis_mpi_wtime ( real(ip_r8_p), intent(out)  wtime)

Return a timestamp from MPI_WTIME.

Parameters
[out]wtimetime in MPI_WTIME units

Definition at line 2627 of file mod_oasis_mpi.F90.