Utility to handle MPI communications
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(MPI_Datatype), | public | :: | COMPLEX_DP | ||||
| type(MPI_Datatype), | public | :: | COMPLEX_SP | ||||
| type(MPI_Datatype), | public | :: | COMPLEX_WP | ||||
| type(MPI_Datatype), | public | :: | INT8 | ||||
| type(MPI_Datatype), | public | :: | INTEGER | ||||
| type(MPI_Datatype), | public | :: | LOGICAL | ||||
| type(MPI_Datatype), | public | :: | REAL_DP | ||||
| type(MPI_Datatype), | public | :: | REAL_SP | ||||
| type(MPI_Datatype), | public | :: | REAL_WP | ||||
| type(communicators), | public | :: | comm |
Communicators |
|||
| type(MPI_Info), | public | :: | mpi_info | ||||
| character(len=str8), | public | :: | mpiiofs | ||||
| 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 |
MPI communicators
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(MPI_Comm), | public | :: | g |
Grid communicator |
|||
| type(MPI_Comm), | public | :: | w |
Default World communicator |
Contains MPI ranks of current process and neighboring ones
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | L(3) |
Rank of left neighbor |
|||
| integer, | public | :: | R(3) |
Rank of right neighbor |
|||
| integer, | public | :: | dir(3) |
Process cooridnate in each direction |
|||
| integer, | public | :: | mine | = | 1 |
Rank of this process |
|
| integer, | public | :: | root | = | 1 |
Rank of root |
Returns the elapsed time since an arbitrary origin. Note that different ranks return different WTIMEs
Set the MPI file system hints
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| character(len=*), | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:,:) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:,:,:) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in), | dimension(:) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | dimension(:,:) | :: | A |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in), | dimension(:,:,:) | :: | A |
Finalize MPI and the parallel environment
Initialize the parallel environement
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A | |||
| integer, | intent(out) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:) | :: | A | ||
| integer, | intent(out), | dimension(:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in) | :: | A | |||
| real(kind=WP), | intent(out) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | A | ||
| real(kind=wp), | intent(out), | dimension(:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A | |||
| integer, | intent(out) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:) | :: | A | ||
| integer, | intent(out), | dimension(:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in) | :: | A | |||
| real(kind=WP), | intent(out) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=wp), | intent(in), | dimension(:) | :: | A | ||
| real(kind=wp), | intent(out), | dimension(:) | :: | B |
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 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in) | :: | A | |||
| integer, | intent(out) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:) | :: | A | ||
| integer, | intent(out), | dimension(:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:,:) | :: | A | ||
| integer, | intent(out), | dimension(:,:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| integer, | intent(in), | dimension(:,:,:) | :: | A | ||
| integer, | intent(out), | dimension(:,:,:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in) | :: | A | |||
| real(kind=WP), | intent(out) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in), | dimension(:) | :: | A | ||
| real(kind=WP), | intent(out), | dimension(:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in), | dimension(:,:) | :: | A | ||
| real(kind=WP), | intent(out), | dimension(:,:) | :: | B |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
| real(kind=WP), | intent(in), | dimension(:,:,:) | :: | A | ||
| real(kind=WP), | intent(out), | dimension(:,:,:) | :: | B |
Builds a Cartesian topolgy with MPI
| 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 |