MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_mpi_proxy Module Reference

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_neighborssend_requests
integer, dimension(max_neighborsrecv_requests
integer, dimension(max_neighborsrecv_offsets
integer, dimension(max_neighbors, 3) neighbor_list
integer n_neighbors

Detailed Description

MPI halo exchange, domain decomposition, and buffer packing/unpacking for the simulation solver.

Function/Subroutine Documentation

◆ neighbor_tag()

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.

Here is the caller graph for this function:

◆ s_add_particles_to_transfer_list()

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.

Parameters
nBubCurrent LOCAL number of bubbles
posCurrent position of each bubble
posPrevPrevious position of each bubble (optional, not used for communication of initial condition)

Definition at line 1156 of file m_mpi_proxy.fpp.f90.

Here is the call graph for this function:

◆ s_finalize_mpi_proxy_module()

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.

◆ s_initialize_mpi_proxy_module()

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.

Here is the caller graph for this function:

◆ s_initialize_particles_mpi()

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.

◆ s_mpi_bcast_user_inputs()

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.

◆ s_mpi_send_random_number()

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.

◆ s_mpi_sendrecv_particles()

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.

Here is the call graph for this function:

◆ s_wrap_particle_positions()

subroutine m_mpi_proxy::s_wrap_particle_positions ( real(wp), dimension(:,:,:) pos,
real(wp), dimension(:,:,:) posprev,
integer nbubs,
integer dest )

Definition at line 1475 of file m_mpi_proxy.fpp.f90.

Here is the caller graph for this function:

Variable Documentation

◆ i_halo_size

integer m_mpi_proxy::i_halo_size

Definition at line 352 of file m_mpi_proxy.fpp.f90.

◆ ib_buff_recv

integer, dimension(:), allocatable, private m_mpi_proxy::ib_buff_recv
private

IB marker receive buffer for halo exchange.

Definition at line 351 of file m_mpi_proxy.fpp.f90.

◆ ib_buff_send

integer, dimension(:), allocatable, private m_mpi_proxy::ib_buff_send
private

IB marker send buffer for halo exchange.

Definition at line 350 of file m_mpi_proxy.fpp.f90.

◆ max_neighbors

integer, parameter m_mpi_proxy::max_neighbors = 27

Definition at line 370 of file m_mpi_proxy.fpp.f90.

◆ n_neighbors

integer m_mpi_proxy::n_neighbors

Definition at line 374 of file m_mpi_proxy.fpp.f90.

◆ neighbor_list

integer, dimension(max_neighbors, 3) m_mpi_proxy::neighbor_list

Definition at line 373 of file m_mpi_proxy.fpp.f90.

◆ p_buff_size

integer m_mpi_proxy::p_buff_size

Definition at line 368 of file m_mpi_proxy.fpp.f90.

◆ p_recv_buff

character(len=1), dimension(:), allocatable m_mpi_proxy::p_recv_buff

Definition at line 367 of file m_mpi_proxy.fpp.f90.

◆ p_recv_counts

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.

◆ p_send_buff

character(len=1), dimension(:), allocatable m_mpi_proxy::p_send_buff

Definition at line 367 of file m_mpi_proxy.fpp.f90.

◆ p_send_counts

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.

◆ p_send_ids

integer, dimension(:,:,:,:), allocatable m_mpi_proxy::p_send_ids

Definition at line 366 of file m_mpi_proxy.fpp.f90.

◆ p_var_size

integer m_mpi_proxy::p_var_size

Definition at line 368 of file m_mpi_proxy.fpp.f90.

◆ recv_offsets

integer, dimension(max_neighbors) m_mpi_proxy::recv_offsets

Definition at line 372 of file m_mpi_proxy.fpp.f90.

◆ recv_requests

integer, dimension(max_neighbors) m_mpi_proxy::recv_requests

Definition at line 371 of file m_mpi_proxy.fpp.f90.

◆ send_requests

integer, dimension(max_neighbors) m_mpi_proxy::send_requests

Definition at line 371 of file m_mpi_proxy.fpp.f90.