|
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 1557 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 1246 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_finalize_mpi_proxy_module |
Finalize the MPI proxy module.
Definition at line 1638 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_initialize_mpi_proxy_module |
Initialize the MPI proxy module.
Definition at line 402 of file m_mpi_proxy.fpp.f90.
| subroutine m_mpi_proxy::s_initialize_particles_mpi | ( | integer, intent(in) | lag_num_ts | ) |
Definition at line 469 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 571 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 1625 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 1328 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::i_halo_size |
Definition at line 364 of file m_mpi_proxy.fpp.f90.
|
private |
IB marker receive buffer for halo exchange.
Definition at line 363 of file m_mpi_proxy.fpp.f90.
|
private |
IB marker send buffer for halo exchange.
Definition at line 362 of file m_mpi_proxy.fpp.f90.
| integer, parameter m_mpi_proxy::max_neighbors = 27 |
Definition at line 382 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::n_neighbors |
Definition at line 386 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors, 3) m_mpi_proxy::neighbor_list |
Definition at line 385 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::p_buff_size |
Definition at line 380 of file m_mpi_proxy.fpp.f90.
| character(len=1), dimension(:), allocatable m_mpi_proxy::p_recv_buff |
Definition at line 379 of file m_mpi_proxy.fpp.f90.
| integer, dimension(-1:1,-1:1,-1:1) m_mpi_proxy::p_recv_counts |
Definition at line 377 of file m_mpi_proxy.fpp.f90.
| character(len=1), dimension(:), allocatable m_mpi_proxy::p_send_buff |
Definition at line 379 of file m_mpi_proxy.fpp.f90.
| integer, dimension(-1:1,-1:1,-1:1) m_mpi_proxy::p_send_counts |
Definition at line 377 of file m_mpi_proxy.fpp.f90.
| integer, dimension(:,:,:,:), allocatable m_mpi_proxy::p_send_ids |
Definition at line 378 of file m_mpi_proxy.fpp.f90.
| integer m_mpi_proxy::p_var_size |
Definition at line 380 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::recv_offsets |
Definition at line 384 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::recv_requests |
Definition at line 383 of file m_mpi_proxy.fpp.f90.
| integer, dimension(max_neighbors) m_mpi_proxy::send_requests |
Definition at line 383 of file m_mpi_proxy.fpp.f90.