Utility to handle MPI communications
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(MPI_Datatype), | public | :: | COMPLEX_DP |
MPI Datatype for double precision complex numbers |
|||
| type(MPI_Datatype), | public | :: | COMPLEX_SP |
MPI Datatype for single precision complex numbers |
|||
| type(MPI_Datatype), | public | :: | COMPLEX_WP |
MPI Datatype for working precision complex numbers |
|||
| type(MPI_Datatype), | public | :: | INT8 |
MPI Datatype for 8-byte integers |
|||
| type(MPI_Datatype), | public | :: | INTEGER |
MPI Datatype for 4-byte integers |
|||
| type(MPI_Datatype), | public | :: | LOGICAL |
MPI Datatype for logicals |
|||
| type(MPI_Datatype), | public | :: | REAL_DP |
MPI Datatype for double precision reals |
|||
| type(MPI_Datatype), | public | :: | REAL_SP |
MPI Datatype for single precision reals |
|||
| type(MPI_Datatype), | public | :: | REAL_WP |
MPI Datatype for working precision reals |
|||
| type(communicators), | public | :: | comm |
Communicators |
|||
| integer, | public | :: | np(3) |
Number of ranks in each direction |
|||
| integer, | public | :: | nproc |
Total number of ranks |
|||
| integer, | public | :: | npx |
Number of ranks in the x direction |
|||
| integer, | public | :: | npy |
Number of ranks in the y direction |
|||
| integer, | public | :: | npz |
Number of ranks in the z direction |
|||
| type(patch), | public | :: | rank |
Rank and grid decompostion info |
|||
| integer, | private | :: | RootRank | = | 1 |
Rank of the root process |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A(:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A(:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A(:,:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A(:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A(:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A(:,:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(inout) | :: | A(:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| character(len=*), | intent(inout) | :: | A |
Send buffer |
Finalizes MPI and the parallel environment.
Initializes the parallel environement.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
MPI LOGICAL OR reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(in) | :: | A |
Send buffer |
||
| logical, | intent(out) | :: | B |
Receive buffer |
MPI LOGICAL OR reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(in) | :: | A(:) |
Send buffer |
||
| logical, | intent(out) | :: | B(:) |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
Send buffer |
||
| integer, | intent(out) | :: | B |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:) |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:) |
Receive buffer |
MPI MIN reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
Send buffer |
||
| integer, | intent(out) | :: | B |
Receive buffer |
MPI MIN reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:) |
Receive buffer |
MPI MIN reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B |
Receive buffer |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:) |
Receive buffer |
Determines if this rank is the root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(in) | :: | this |
Parallel object |
Result
Subroutine to gracefully stop the execution with an optional error message.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| character(len=*), | intent(in), | optional | :: | msg |
Error message |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
Send buffer |
||
| integer, | intent(out) | :: | B |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:,:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:,:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:,:,:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:,:,:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:,:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:,:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:,:,:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:,:,:) |
Receive buffer |
Returns the elapsed time since an arbitrary origin. Note that different ranks return different WTIMEs.
Elasped time since arbitrary origin
Builds a Cartesian topolgy with MPI. Define a root processor at coordinates (1,1,1)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(in) | :: | is_periodic(3) |
Periodicity |
||
| integer, | intent(in) | :: | Ng(3) |
|
||
| integer, | intent(in), | optional | :: | Nb(3) |
Explicit block decomposition |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| character(len=*), | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A(:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A(:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(inout) | :: | A(:,:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(inout) | :: | A(:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A(:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A(:,:) |
Send buffer |
MPI Broadcast operation from root rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(inout) | :: | A(:,:,:) |
Send buffer |
MPI LOGICAL OR reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(in) | :: | A |
Send buffer |
||
| logical, | intent(out) | :: | B |
Receive buffer |
MPI LOGICAL OR reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| logical, | intent(in) | :: | A(:) |
Send buffer |
||
| logical, | intent(out) | :: | B(:) |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
Send buffer |
||
| integer, | intent(out) | :: | B |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:) |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B |
Receive buffer |
MPI MAX reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:) |
Receive buffer |
MPI MIN reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
Send buffer |
||
| integer, | intent(out) | :: | B |
Receive buffer |
MPI MIN reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:) |
Receive buffer |
MPI MIN reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B |
Receive buffer |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
Send buffer |
||
| integer, | intent(out) | :: | B |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:,:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:,:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A(:,:,:) |
Send buffer |
||
| integer, | intent(out) | :: | B(:,:,:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:,:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:,:) |
Receive buffer |
MPI SUM reduction operation.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in) | :: | A(:,:,:) |
Send buffer |
||
| real(kind=wp), | intent(out) | :: | B(:,:,:) |
Receive buffer |
type :: parallel_obj !> Utility to handle MPI communications integer :: nproc !! Total number of ranks integer :: np(3) !! Number of ranks in each direction integer :: npx !! Number of ranks in the x direction integer :: npy !! Number of ranks in the y direction integer :: npz !! Number of ranks in the z direction type(patch) :: rank !! Rank and grid decompostion info type(communicators) :: comm !! Communicators integer, private :: RootRank = 1 !! Rank of the root process ! Elementary data types type(MPI_Datatype) :: REAL_SP !! MPI Datatype for single precision reals type(MPI_Datatype) :: REAL_DP !! MPI Datatype for double precision reals type(MPI_Datatype) :: REAL_WP !! MPI Datatype for working precision reals type(MPI_Datatype) :: COMPLEX_SP !!MPI Datatype for single precision complex numbers type(MPI_Datatype) :: COMPLEX_DP !! MPI Datatype for double precision complex numbers type(MPI_Datatype) :: COMPLEX_WP !! MPI Datatype for working precision complex numbers type(MPI_Datatype) :: INTEGER !! MPI Datatype for 4-byte integers type(MPI_Datatype) :: INT8 !! MPI Datatype for 8-byte integers type(MPI_Datatype) :: LOGICAL !! MPI Datatype for logicals contains procedure :: Initialize => parallel_obj_Init procedure, nopass :: Finalize => parallel_obj_Final procedure :: Topology => parallel_obj_Topology procedure, nopass :: Time => parallel_obj_Time procedure :: Stop => parallel_obj_Stop procedure :: RankIsRoot => parallel_obj_RankIsRoot generic :: Max => parallel_obj_Max_int_0d, parallel_obj_Max_int_1d, & parallel_obj_Max_real_0d,parallel_obj_Max_real_1d generic :: Min => parallel_obj_Min_int_0d, parallel_obj_Min_int_1d, & parallel_obj_Min_real_0d,parallel_obj_Min_real_1d generic :: Sum => parallel_obj_Sum_int_0d, parallel_obj_Sum_int_1d, & parallel_obj_Sum_int_2d, parallel_obj_Sum_int_3d, & parallel_obj_Sum_real_0d,parallel_obj_Sum_real_1d,& parallel_obj_Sum_real_2d,parallel_obj_Sum_real_3d generic :: LOR => parallel_obj_Lor_0d,parallel_obj_Lor_1d generic :: Bcast => parallel_obj_Bcast_int_0d, parallel_obj_Bcast_int_1d, & parallel_obj_Bcast_int_2d, parallel_obj_Bcast_int_3d, & parallel_obj_Bcast_real_0d,parallel_obj_Bcast_real_1d,& parallel_obj_Bcast_real_2d,parallel_obj_Bcast_real_3d,& parallel_obj_Bcast_log_0d, parallel_obj_Bcast_log_1d, & parallel_obj_Bcast_char ! Internal/private procedures procedure, private :: parallel_obj_Max_int_0d procedure, private :: parallel_obj_Max_real_0d procedure, private :: parallel_obj_Max_int_1d procedure, private :: parallel_obj_Max_real_1d procedure, private :: parallel_obj_Min_int_0d procedure, private :: parallel_obj_Min_real_0d procedure, private :: parallel_obj_Min_int_1d procedure, private :: parallel_obj_Min_real_1d procedure, private :: parallel_obj_Sum_int_0d procedure, private :: parallel_obj_Sum_int_1d procedure, private :: parallel_obj_Sum_int_2d procedure, private :: parallel_obj_Sum_int_3d procedure, private :: parallel_obj_Sum_real_0d procedure, private :: parallel_obj_Sum_real_1d procedure, private :: parallel_obj_Sum_real_2d procedure, private :: parallel_obj_Sum_real_3d procedure, private :: parallel_obj_Lor_0d procedure, private :: parallel_obj_Lor_1d procedure, private :: parallel_obj_Bcast_int_0d procedure, private :: parallel_obj_Bcast_int_1d procedure, private :: parallel_obj_Bcast_int_2d procedure, private :: parallel_obj_Bcast_int_3d procedure, private :: parallel_obj_Bcast_real_0d procedure, private :: parallel_obj_Bcast_real_1d procedure, private :: parallel_obj_Bcast_real_2d procedure, private :: parallel_obj_Bcast_real_3d procedure, private :: parallel_obj_Bcast_char procedure, private :: parallel_obj_Bcast_log_0d procedure, private :: parallel_obj_Bcast_log_1d end type parallel_obj