Inverse of gather_boundary_ghosts_to_root: deliver the checkpoint's
GLOBAL boundary-ghost frame bands into this rank's ub ghost cells.
Same band layout and disjoint ownership as the gather (the slab geometry
lives ONLY in frame_slab_extents, so gather and scatter cannot drift).
Unlike the 1D twin (scatter_edge_ghosts_from_root, where only rank 0
reads the checkpoint and MPI-delivers the edges), 2D's read path opens
the global checkpoint file on EVERY rank (checkpoint_2d.f90's documented
contract) — each rank already holds the root-authored band buffers it
read itself, so delivery is a pure local slice: no MPI traffic, exactly
like the per-rank glob interior slice. The _from_root name mirrors
the 1D twin and the bands' root-gathered layout. Collective discipline
still applies: every rank must call, at a fixed position, with the bands
it read (zero-filled if its read failed — harmless, the caller's
collective conclude aborts the restart in that case).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(solver_state_2d_t), | intent(inout) | :: | state |
This rank's solver state ( |
||
| real(kind=wp), | intent(in) | :: | lft(:,:,:) | |||
| real(kind=wp), | intent(in) | :: | rgt(:,:,:) | |||
| real(kind=wp), | intent(in) | :: | bot(:,:,:) | |||
| real(kind=wp), | intent(in) | :: | top(:,:,:) |