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.
: 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
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
Type | Intent | Optional | 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 |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private, | allocatable | :: | pos(:) | |||
integer, | private | :: | iElem | ||||
integer, | private | :: | iDir | ||||
integer, | private | :: | iProc | ||||
integer, | private | :: | counter | ||||
integer, | private | :: | elemPos | ||||
integer, | private | :: | iField | ||||
integer, | private | :: | nScalars | ||||
integer, | private | :: | |||||
integer, | private | :: | varPos |