scatter_boundary_ghosts_from_root Subroutine

public subroutine scatter_boundary_ghosts_from_root(state, lft, rgt, bot, top)

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).

Arguments

Type IntentOptional Attributes Name
type(solver_state_2d_t), intent(inout) :: state

This rank's solver state (ub receives the restored ghosts).

real(kind=wp), intent(in) :: lft(:,:,:)
real(kind=wp), intent(in) :: rgt(:,:,:)
real(kind=wp), intent(in) :: bot(:,:,:)
real(kind=wp), intent(in) :: top(:,:,:)