Oasis3-MCT
 All Classes Files Functions Variables Macros Pages
Data Types | Public Member Functions | Private Member Functions | List of all members
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...
 

Public Member Functions

subroutine, public oasis_mpi_chkerr (rcode, string)
 Checks MPI error codes and aborts. 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)
 Custom method for reducing MPI lists across pes for OASIS. More...
 

Private Member Functions

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

Detailed Description

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

Definition at line 3 of file mod_oasis_mpi.F90.

Member Function/Subroutine Documentation

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 2382 of file mod_oasis_mpi.F90.

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 2421 of file mod_oasis_mpi.F90.

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 652 of file mod_oasis_mpi.F90.

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 694 of file mod_oasis_mpi.F90.

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 568 of file mod_oasis_mpi.F90.

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 778 of file mod_oasis_mpi.F90.

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 948 of file mod_oasis_mpi.F90.

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 610 of file mod_oasis_mpi.F90.

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 820 of file mod_oasis_mpi.F90.

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 736 of file mod_oasis_mpi.F90.

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 862 of file mod_oasis_mpi.F90.

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 904 of file mod_oasis_mpi.F90.

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 992 of file mod_oasis_mpi.F90.

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 128 of file mod_oasis_mpi.F90.

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 2286 of file mod_oasis_mpi.F90.

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 2251 of file mod_oasis_mpi.F90.

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

Call MPI_FINALZE.

Parameters
[in]stringto identify caller

Definition at line 2488 of file mod_oasis_mpi.F90.

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 1134 of file mod_oasis_mpi.F90.

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 1040 of file mod_oasis_mpi.F90.

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

Call MPI_INIT.

Parameters
[in]stringto identify caller

Definition at line 2455 of file mod_oasis_mpi.F90.

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 2321 of file mod_oasis_mpi.F90.

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 1999 of file mod_oasis_mpi.F90.

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 2062 of file mod_oasis_mpi.F90.

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 2125 of file mod_oasis_mpi.F90.

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 2188 of file mod_oasis_mpi.F90.

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 1747 of file mod_oasis_mpi.F90.

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 1810 of file mod_oasis_mpi.F90.

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 1873 of file mod_oasis_mpi.F90.

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 1936 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 363 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 404 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 445 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 486 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 527 of file mod_oasis_mpi.F90.

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 
)

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
  • 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 2521 of file mod_oasis_mpi.F90.

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 1183 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 163 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 203 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 243 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 283 of file mod_oasis_mpi.F90.

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]tagtag
[in]commmpi communicator
[in]stringto identify caller

Definition at line 323 of file mod_oasis_mpi.F90.

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 1357 of file mod_oasis_mpi.F90.

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 1423 of file mod_oasis_mpi.F90.

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 1228 of file mod_oasis_mpi.F90.

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 1294 of file mod_oasis_mpi.F90.

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 1486 of file mod_oasis_mpi.F90.

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 1552 of file mod_oasis_mpi.F90.

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 1618 of file mod_oasis_mpi.F90.

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 1684 of file mod_oasis_mpi.F90.

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 2355 of file mod_oasis_mpi.F90.


The documentation for this module was generated from the following file: