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 | 
Finalize MPI and the parallel environment
Initialize the parallel environement
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this | Parallel object | 
Set the MPI file system hints
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this | Parallel object | 
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 | 
Returns the elapsed time since an arbitrary origin. Note that different ranks return different WTIMEs
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 | 
Broadcast to all ranks
| 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 | 
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(parallel_obj), | intent(inout) | :: | this | Parallel object | ||
| character(len=*), | intent(in) | :: | A | 
Compute the maximum across all ranks
| 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 | 
Compute the minimum across all ranks
| 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 | 
Sum across all ranks
| 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 | 
| 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 | 
| 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 | 
| 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 |