public subroutine mus_init_longBuffers(comm, pattern)
Wrapper around the actual communication, to avoid copy-in, copy-out by the
Intel compiler. (At least the intel compiler on pigeon (v12.0) seems to do
copying here, if a sub-array is passed to an assumed size dummy argument.
Therefore we use this wrapping with an assumed shape dummy argument, so we
can pass a complete field to the actual exchange which has an assumed size
argument, without copying complete state field around, just for
communication. Ugly, but it doesn't seem to have an impact on performance,
and right it seems to be the most suitable solution.
Copy the element position in send and recv buffer to pos array
in long type buffer
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.