init_recvBuffers Subroutine

private subroutine init_recvBuffers(me, myHalos, pattern, requireAll, haloRequired, halo_offset, scheme, stat, neigh, nSize)

Create the communication buffers

Assign the positions in state vectors, where to fetch from or 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

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) :: me

receive communication buffer

type(halo_commBitmask_type), intent(inout) :: myHalos(:)

contains bitmask of my halos with array size of recv%nProcs

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

communication pattern

logical, intent(in) :: requireAll

requires complete element information or only required links?

logical, intent(in) :: haloRequired(:)
integer, intent(in) :: halo_offset

Level descriptor

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

Scheme information on fluid, boundary and flow properties

type(mus_statistics_type), intent(inout) :: stat

Statistics

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

PDF neighbor array

integer, intent(in) :: nSize

number of Elements in neigh array


Calls

proc~~init_recvbuffers~~CallsGraph proc~init_recvbuffers init_recvBuffers cxdirinv cxdirinv proc~init_recvbuffers->cxdirinv state_varpos state_varpos proc~init_recvbuffers->state_varpos val val proc~init_recvbuffers->val

Called by

proc~~init_recvbuffers~~CalledByGraph proc~init_recvbuffers init_recvBuffers proc~init_levelbuffers init_levelBuffers proc~init_levelbuffers->proc~init_recvbuffers 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