Module fd4_mpi_mod


Uses:
    module fd4_globaldef_mod
    module stack_mod
Types:
    public type fd4_mpi
Variables:
    integer, public, parameter :: MPI_I4K = MPI_INTEGER
    integer, public, parameter :: MPI_I8K = MPI_INTEGER8
    integer, public, parameter :: MPI_I_K = MPI_INTEGER
    integer, public, parameter :: MPI_R4K = MPI_REAL
    integer, public, parameter :: MPI_R8K = MPI_DOUBLE_PRECISION
    integer, public, parameter :: MPI_R_K = MPI_DOUBLE_PRECISION
    integer (kind=i_k), public, parameter :: MPI_R_K_size = 8
Subroutines and functions:
    public subroutine fd4_mpi_realloc_array (array, sz, ubound, err)

FD4 MPI context.

Author: Matthias Lieber

See also: module kinds_mod


Description of Types

fd4_mpi

public type fd4_mpi
    integer :: comm
    integer :: comm_gc
    integer :: comm_cpl
    integer :: comm_mig
    integer :: rank = -1
    integer :: nprocs
    integer :: lognprocs
    integer, pointer, dimension (:) :: recvcnt => NULL ()
    integer, pointer, dimension (:) :: recvdis => NULL ()
    integer, pointer, dimension (:) :: senddis => NULL ()
    real (kind=r4k), pointer, dimension (:) :: sendreal => NULL ()
    real (kind=r4k), pointer, dimension (:) :: recvreal => NULL ()
    type (stack) :: requests
    integer, pointer, dimension (:,:) :: statuses
end type fd4_mpi
Components:
comm MPI communicator
comm_gc MPI communicator for ghost communication
comm_cpl MPI communicator for coupling
comm_mig MPI communicator for block migration
rank MPI rank
nprocs number of MPI processes
lognprocs ceiling(log(nprocs))
recvcnt for MPI_Allgatherv
recvdis for MPI_Allgatherv
senddis for MPI_Allgatherv
sendreal to exchange integers with neighbors
recvreal to exchange integers with neighbors
requests requests for non-blocking communication
statuses array of statuses

Description of Subroutines and Functions

fd4_mpi_realloc_array

public subroutine fd4_mpi_realloc_array (array, sz, ubound, err)
    integer, pointer, dimension (:) :: array
    integer (kind=i_k), intent(in) :: sz
    integer (kind=i_k), intent(in) :: ubound
    integer (kind=i_k), intent(out) :: err
end subroutine fd4_mpi_realloc_array
Reallocate the array if necessary (i.e. size(array,1) < sz or not allocated). Any array content gets lost.