MPI context for hydrodynamic operations.
Stores rank information and pre-calculated cell ranges to avoid repeated division logic during the simulation loop.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | cell_halo_max_components | = | 4 | ||
| integer, | public, | allocatable | :: | cell_owner(:) | |||
| integer, | public, | allocatable | :: | cell_recv_cells(:) | |||
| integer, | public, | allocatable | :: | cell_recv_counts(:) | |||
| integer, | public, | allocatable | :: | cell_recv_displs(:) | |||
| integer, | public, | allocatable | :: | cell_recv_ranks(:) | |||
| real(kind=rk), | public, | allocatable | :: | cell_recvbuf(:) | |||
| type(MPI_Request), | public, | allocatable | :: | cell_requests(:) | |||
| integer, | public, | allocatable | :: | cell_send_cells(:) | |||
| integer, | public, | allocatable | :: | cell_send_counts(:) | |||
| integer, | public, | allocatable | :: | cell_send_displs(:) | |||
| integer, | public, | allocatable | :: | cell_send_ranks(:) | |||
| real(kind=rk), | public, | allocatable | :: | cell_sendbuf(:) | |||
| type(MPI_Comm), | public | :: | comm | = | MPI_COMM_NULL | ||
| integer, | public, | allocatable | :: | face_recv_counts(:) | |||
| integer, | public, | allocatable | :: | face_recv_displs(:) | |||
| integer, | public, | allocatable | :: | face_recv_faces(:) | |||
| integer, | public, | allocatable | :: | face_recv_ranks(:) | |||
| real(kind=rk), | public, | allocatable | :: | face_recvbuf(:) | |||
| type(MPI_Request), | public, | allocatable | :: | face_requests(:) | |||
| integer, | public, | allocatable | :: | face_send_counts(:) | |||
| integer, | public, | allocatable | :: | face_send_displs(:) | |||
| integer, | public, | allocatable | :: | face_send_faces(:) | |||
| integer, | public, | allocatable | :: | face_send_ranks(:) | |||
| real(kind=rk), | public, | allocatable | :: | face_sendbuf(:) | |||
| integer, | public | :: | first_cell | = | 0 | ||
| integer, | public, | allocatable | :: | gather_counts(:) | |||
| integer, | public, | allocatable | :: | gather_displs(:) | |||
| integer, | public, | allocatable | :: | gather_firsts(:) | |||
| integer, | public, | allocatable | :: | gather_matrix_counts(:) | |||
| integer, | public, | allocatable | :: | gather_matrix_displs(:) | |||
| real(kind=rk), | public, | allocatable | :: | gather_matrix_recvbuf(:) | |||
| real(kind=rk), | public, | allocatable | :: | gather_matrix_sendbuf(:) | |||
| integer, | public | :: | gather_max_components | = | 0 | ||
| real(kind=rk), | public, | allocatable | :: | gather_recvbuf(:) | |||
| real(kind=rk), | public, | allocatable | :: | gather_sendbuf(:) | |||
| integer, | public, | allocatable | :: | ghost_cells(:) | |||
| integer, | public | :: | last_cell | = | -1 | ||
| integer, | public | :: | ncell_recv_ranks | = | 0 | ||
| integer, | public | :: | ncell_send_ranks | = | 0 | ||
| integer, | public | :: | nface_recv_ranks | = | 0 | ||
| integer, | public | :: | nface_send_ranks | = | 0 | ||
| integer, | public | :: | nlocal | = | 0 | ||
| integer, | public | :: | nprocs | = | 0 | ||
| logical, | public, | allocatable | :: | owned(:) | |||
| integer, | public, | allocatable | :: | owned_faces(:) | |||
| integer, | public | :: | rank | = | -1 |
type :: flow_mpi_t type(MPI_Comm) :: comm = MPI_COMM_NULL !< MPI Communicator for flow. integer :: rank = -1 !< Local rank ID (0 to nprocs-1). integer :: nprocs = 0 !< Total number of flow processors. integer :: first_cell = 0 !< First cell index owned by this rank. integer :: last_cell = -1 !< Last cell index owned by this rank. integer :: nlocal = 0 !< Total number of cells owned locally. logical, allocatable :: owned(:) !< Bitmask for all cells (True if owned by this rank). integer, allocatable :: cell_owner(:) !< Zero-based MPI owner rank for each cell. integer, allocatable :: ghost_cells(:) !< Off-rank neighbor cells needed by owned cells. integer, allocatable :: owned_faces(:) !< Faces whose mesh owner cell is owned locally. ! Cached metadata/buffers for gathering owned cell ranges. integer, allocatable :: gather_counts(:) integer, allocatable :: gather_displs(:) integer, allocatable :: gather_firsts(:) real(rk), allocatable :: gather_sendbuf(:) real(rk), allocatable :: gather_recvbuf(:) integer :: gather_max_components = 0 integer, allocatable :: gather_matrix_counts(:) integer, allocatable :: gather_matrix_displs(:) real(rk), allocatable :: gather_matrix_sendbuf(:) real(rk), allocatable :: gather_matrix_recvbuf(:) ! Cached metadata/buffers for owned-cell halo exchange. integer :: cell_halo_max_components = 4 integer :: ncell_send_ranks = 0 integer :: ncell_recv_ranks = 0 integer, allocatable :: cell_send_ranks(:) integer, allocatable :: cell_recv_ranks(:) integer, allocatable :: cell_send_counts(:) integer, allocatable :: cell_recv_counts(:) integer, allocatable :: cell_send_displs(:) integer, allocatable :: cell_recv_displs(:) integer, allocatable :: cell_send_cells(:) integer, allocatable :: cell_recv_cells(:) real(rk), allocatable :: cell_sendbuf(:) real(rk), allocatable :: cell_recvbuf(:) type(MPI_Request), allocatable :: cell_requests(:) ! Cached metadata/buffers for face-flux exchange. integer :: nface_send_ranks = 0 integer :: nface_recv_ranks = 0 integer, allocatable :: face_send_ranks(:) integer, allocatable :: face_recv_ranks(:) integer, allocatable :: face_send_counts(:) integer, allocatable :: face_recv_counts(:) integer, allocatable :: face_send_displs(:) integer, allocatable :: face_recv_displs(:) integer, allocatable :: face_send_faces(:) integer, allocatable :: face_recv_faces(:) real(rk), allocatable :: face_sendbuf(:) real(rk), allocatable :: face_recvbuf(:) type(MPI_Request), allocatable :: face_requests(:) end type flow_mpi_t