|
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 1735 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 1424 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_finalize_mpi_proxy_module |
Finalize the MPI proxy module.
Definition at line 1816 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_initialize_mpi_proxy_module |
Initialize the MPI proxy module.
Definition at line 425 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_initialize_particles_mpi | ( | integer, intent(in) | lag_num_ts | ) |
Definition at line 494 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 598 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 1803 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 1506 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::i_halo_size |
Definition at line 385 of file m_mpi_proxy.fpp.f90.
|
private |
IB marker receive buffer for halo exchange.
Definition at line 384 of file m_mpi_proxy.fpp.f90.
|
private |
IB marker send buffer for halo exchange.
Definition at line 383 of file m_mpi_proxy.fpp.f90.
| integer, parameter m_mpi_proxy::max_neighbors = 27 |
Definition at line 404 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::n_neighbors |
Definition at line 408 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors, 3) m_mpi_proxy::neighbor_list |
Definition at line 407 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::p_buff_size |
Definition at line 402 of file m_mpi_proxy.fpp.f90.
| character(len=1), dimension(:), allocatable m_mpi_proxy::p_recv_buff |
Definition at line 401 of file m_mpi_proxy.fpp.f90.
| integer, dimension(-1:1,-1:1,-1:1) m_mpi_proxy::p_recv_counts |
Definition at line 399 of file m_mpi_proxy.fpp.f90.
| character(len=1), dimension(:), allocatable m_mpi_proxy::p_send_buff |
Definition at line 401 of file m_mpi_proxy.fpp.f90.
| integer, dimension(-1:1,-1:1,-1:1) m_mpi_proxy::p_send_counts |
Definition at line 399 of file m_mpi_proxy.fpp.f90.
| integer, dimension(:,:,:,:), allocatable m_mpi_proxy::p_send_ids |
Definition at line 400 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::p_var_size |
Definition at line 402 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::recv_offsets |
Definition at line 406 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::recv_requests |
Definition at line 405 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::send_requests |
Definition at line 405 of file m_mpi_proxy.fpp.f90.