Gather the 2D solution to rank 0 and pack the requested primitive fields
into ONE flat buffer, one nxny block per primitive in request order,
each block i-fastest (x-contiguous) — the pack order of
solution_gather_2d.write_global_field, so these fields match
result_2d.dat columns exactly. offsets are 0-based BYTE offsets
((k-1)nxny8), computed identically on every rank. Supported names:
x, y, rho, u, v, p; unknown names copy x with a warning (1D wire-compat
leniency). Collective: every rank must call; buffer-size agreement is
reduced with par_lor so no rank can return early past the gather.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(solver_session_t), | intent(inout) | :: | session | |||
| character(len=*), | intent(in) | :: | primitives(:) | |||
| real(kind=wp), | intent(out) | :: | buf(:) | |||
| integer(kind=int64), | intent(out) | :: | offsets(:) | |||
| integer, | intent(out) | :: | nx | |||
| integer, | intent(out) | :: | ny | |||
| integer, | intent(out), | optional | :: | status | ||
| character(len=*), | intent(out), | optional | :: | message |