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