|
MFC
Exascale flow solver
|
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver. More...
Functions/Subroutines | |
| subroutine | s_initialize_mpi_proxy_module () |
| Initialize the MPI proxy module. | |
| subroutine | s_initialize_particles_mpi (lag_num_ts) |
| impure subroutine | s_mpi_bcast_user_inputs () |
| Since only the processor with rank 0 reads and verifies the consistency of user inputs, these are initially not available to the other processors. Then, the purpose of this subroutine is to distribute the user inputs to the remaining processors in the communicator. | |
| impure subroutine | s_add_particles_to_transfer_list (nbub, pos, posprev) |
| Adds particles to the transfer list for the MPI communication. | |
| impure subroutine | s_mpi_sendrecv_particles (bub_r0, rmax_stats, rmin_stats, gas_mg, gas_betat, gas_betac, bub_dphidt, lag_id, gas_p, gas_mv, rad, rvel, pos, posprev, vel, scoord, drad, drvel, dgasp, dgasmv, dpos, dvel, lag_num_ts, nbubs, dest) |
| Perform the MPI communication for lagrangian particles/bubbles. | |
| integer function | neighbor_tag (i, j, k) |
| Return a unique tag for each neighbor based on its position relative to the current process. | |
| subroutine | s_wrap_particle_positions (pos, posprev, nbubs, dest) |
| impure subroutine | s_mpi_send_random_number (phi_rn, num_freq) |
| Broadcast random phase numbers from rank 0 to all MPI processes. | |
| subroutine | s_finalize_mpi_proxy_module () |
| Finalize the MPI proxy module. | |
Variables | |
| integer, dimension(:), allocatable, private | ib_buff_send |
| IB marker send buffer for halo exchange. | |
| integer, dimension(:), allocatable, private | ib_buff_recv |
| IB marker receive buffer for halo exchange. | |
| integer | i_halo_size |
| integer, dimension(-1:1,-1:1,-1:1) | p_send_counts |
| integer, dimension(-1:1,-1:1,-1:1) | p_recv_counts |
| integer, dimension(:,:,:,:), allocatable | p_send_ids |
| character(len=1), dimension(:), allocatable | p_send_buff |
| character(len=1), dimension(:), allocatable | p_recv_buff |
| integer | p_buff_size |
| integer | p_var_size |
| integer, parameter | max_neighbors = 27 |
| integer, dimension(max_neighbors) | send_requests |
| integer, dimension(max_neighbors) | recv_requests |
| integer, dimension(max_neighbors) | recv_offsets |
| integer, dimension(max_neighbors, 3) | neighbor_list |
| integer | n_neighbors |
MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.
| integer function m_mpi_proxy::neighbor_tag | ( | integer, intent(in) | i, |
| integer, intent(in) | j, | ||
| integer, intent(in) | k ) |
Return a unique tag for each neighbor based on its position relative to the current process.
Definition at line 1467 of file m_mpi_proxy.fpp.f90.
| impure subroutine m_mpi_proxy::s_add_particles_to_transfer_list | ( | integer, intent(in) | nbub, |
| real(wp), dimension(:,:), intent(in) | pos, | ||
| real(wp), dimension(:,:), intent(in) | posprev ) |
Adds particles to the transfer list for the MPI communication.
| nBub | Current LOCAL number of bubbles |
| pos | Current position of each bubble |
| posPrev | Previous position of each bubble (optional, not used for communication of initial condition) |
Definition at line 1156 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_finalize_mpi_proxy_module |
Finalize the MPI proxy module.
Definition at line 1548 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_initialize_mpi_proxy_module |
Initialize the MPI proxy module.
Definition at line 390 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_initialize_particles_mpi | ( | integer, intent(in) | lag_num_ts | ) |
Definition at line 457 of file m_mpi_proxy.fpp.f90.
| impure subroutine m_mpi_proxy::s_mpi_bcast_user_inputs |
Since only the processor with rank 0 reads and verifies the consistency of user inputs, these are initially not available to the other processors. Then, the purpose of this subroutine is to distribute the user inputs to the remaining processors in the communicator.
Definition at line 559 of file m_mpi_proxy.fpp.f90.
| impure subroutine m_mpi_proxy::s_mpi_send_random_number | ( | real(wp), dimension(1:num_freq), intent(inout) | phi_rn, |
| integer, intent(in) | num_freq ) |
Broadcast random phase numbers from rank 0 to all MPI processes.
Definition at line 1535 of file m_mpi_proxy.fpp.f90.
| impure subroutine m_mpi_proxy::s_mpi_sendrecv_particles | ( | real(wp), dimension(:) | bub_r0, |
| real(wp), dimension(:) | rmax_stats, | ||
| real(wp), dimension(:) | rmin_stats, | ||
| real(wp), dimension(:) | gas_mg, | ||
| real(wp), dimension(:) | gas_betat, | ||
| real(wp), dimension(:) | gas_betac, | ||
| real(wp), dimension(:) | bub_dphidt, | ||
| integer, dimension(:,:) | lag_id, | ||
| real(wp), dimension(:,:) | gas_p, | ||
| real(wp), dimension(:,:) | gas_mv, | ||
| real(wp), dimension(:,:) | rad, | ||
| real(wp), dimension(:,:) | rvel, | ||
| real(wp), dimension(:,:,:) | pos, | ||
| real(wp), dimension(:,:,:) | posprev, | ||
| real(wp), dimension(:,:,:) | vel, | ||
| real(wp), dimension(:,:,:) | scoord, | ||
| real(wp), dimension(:,:) | drad, | ||
| real(wp), dimension(:,:) | drvel, | ||
| real(wp), dimension(:,:) | dgasp, | ||
| real(wp), dimension(:,:) | dgasmv, | ||
| real(wp), dimension(:,:,:) | dpos, | ||
| real(wp), dimension(:,:,:) | dvel, | ||
| integer | lag_num_ts, | ||
| integer | nbubs, | ||
| integer | dest ) |
Perform the MPI communication for lagrangian particles/bubbles.
Definition at line 1238 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::i_halo_size |
Definition at line 352 of file m_mpi_proxy.fpp.f90.
|
private |
IB marker receive buffer for halo exchange.
Definition at line 351 of file m_mpi_proxy.fpp.f90.
|
private |
IB marker send buffer for halo exchange.
Definition at line 350 of file m_mpi_proxy.fpp.f90.
| integer, parameter m_mpi_proxy::max_neighbors = 27 |
Definition at line 370 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::n_neighbors |
Definition at line 374 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors, 3) m_mpi_proxy::neighbor_list |
Definition at line 373 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::p_buff_size |
Definition at line 368 of file m_mpi_proxy.fpp.f90.
| character(len=1), dimension(:), allocatable m_mpi_proxy::p_recv_buff |
Definition at line 367 of file m_mpi_proxy.fpp.f90.
| integer, dimension(-1:1,-1:1,-1:1) m_mpi_proxy::p_recv_counts |
Definition at line 365 of file m_mpi_proxy.fpp.f90.
| character(len=1), dimension(:), allocatable m_mpi_proxy::p_send_buff |
Definition at line 367 of file m_mpi_proxy.fpp.f90.
| integer, dimension(-1:1,-1:1,-1:1) m_mpi_proxy::p_send_counts |
Definition at line 365 of file m_mpi_proxy.fpp.f90.
| integer, dimension(:,:,:,:), allocatable m_mpi_proxy::p_send_ids |
Definition at line 366 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::p_var_size |
Definition at line 368 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::recv_offsets |
Definition at line 372 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::recv_requests |
Definition at line 371 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::send_requests |
Definition at line 371 of file m_mpi_proxy.fpp.f90.