Make a validity flag rank-uniform (global AND, as an exact min of
0/1) BEFORE anyone acts on it: a rank-local early return would
strand the other ranks in the next substep’s exchange. No
collective unless the run is decomposed (a serial run inside a
multi-rank job — the bit-identity reference — stays local).
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.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
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.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Variables
Type
Visibility
Attributes
Name
Initial
real(kind=wp),
private
::
glob
real(kind=wp),
private
::
loc
Source Code
subroutine ok_all_ranks(ok)!! Make a validity flag rank-uniform (global AND, as an exact min of!! 0/1) BEFORE anyone acts on it: a rank-local early return would!! strand the other ranks in the next substep's exchange. No!! collective unless the run is decomposed (a serial run inside a!! multi-rank job — the bit-identity reference — stays local).logical,intent(inout)::okreal(wp)::loc,globif(.not.ocean_halo_is_decomposed())returnloc=merge(1.0_wp,0.0_wp,ok)call halo_allreduce_min(loc,glob)ok=glob>0.5_wpend subroutine ok_all_ranks