init_sendBuffers Subroutine

private subroutine init_sendBuffers(send, remoteHalos, neigh, pattern, scheme, nSize)

Create the communication buffers

Receive buffers were before created. Now receive the buffers as send buffers from the remote processes. Assign the positions, where to fetch from and where to save to Solver specific part to identify the actual data locations to send use within the communication buffers.

Todo

this should be pattern specific, with typed exchange we do not need to store the pos, as it is done inside MPI with the defined datatype

Todo

does PULL and PUSH give the same results? as SAVE is used here

Access to state array: SAVE

Why? Because we need to work on the pdfs on which the compute kernel was working. The kernel stored to SAVE All actions taking place on the state array after the kernel need to be performed with SAVE access

Arguments

Type IntentOptional Attributes Name
type(tem_communication_type), intent(inout) :: send

send communication buffer

type(halo_commBitmask_type), intent(in) :: remoteHalos(:)

contains bitmask of remote halos with array size send%nProcs

integer, intent(in) :: neigh(:)

neighbor array for state array

type(tem_commPattern_type), intent(in) :: pattern

communication pattern

type(mus_scheme_type), intent(in) :: scheme

fluid, boundary and flow information

integer, intent(in) :: nSize

Calls

proc~~init_sendbuffers~~CallsGraph proc~init_sendbuffers init_sendBuffers state_varpos state_varpos proc~init_sendbuffers->state_varpos val val proc~init_sendbuffers->val

Called by

proc~~init_sendbuffers~~CalledByGraph proc~init_sendbuffers init_sendBuffers proc~init_levelbuffers init_levelBuffers proc~init_levelbuffers->proc~init_sendbuffers proc~mus_construct mus_construct proc~mus_construct->proc~init_levelbuffers proc~mus_initialize mus_initialize proc~mus_initialize->proc~mus_construct proc~mus_perform_dynloadbal mus_perform_dynLoadBal proc~mus_perform_dynloadbal->proc~mus_construct program~mus_harvesting mus_harvesting program~mus_harvesting->proc~mus_construct proc~mus_solve mus_solve proc~mus_solve->proc~mus_perform_dynloadbal program~musubi musubi program~musubi->proc~mus_initialize