ocean_debug_config_t Derived Type

type, private :: ocean_debug_config_t

&ocean_debug_nml: forensic probes for the ocean dyn-core. Every knob defaults off ⇒ bit-identical (untaken branches); all are HEAVY when on (device waits / serialised apply chains) — investigation tools, not production diagnostics. Output is greppable fixed-format rows (BUDGET / KE_ATTR / CHKSUM / HOTFACE); reader: tools/read_chksum.py.


Inherited by

type~~ocean_debug_config_t~~InheritedByGraph type~ocean_debug_config_t ocean_debug_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_debug_config_t debug type~config_t config_t type~config_t->type~ocean_config_t ocean type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~config_t cfg

Components

Type Visibility Attributes Name Initial
logical, public :: budget = .false.

Per-stage BT power-budget probe (BUDGET rows).

logical, public :: chksum = .false.

MOM6-style per-phase field checksums (CHKSUM rows) + the HOTFACE argmax-face anatomy at the tendency seams — the first-diverging-operator / non-finite-minting attribution probe. Device waits + reductions per phase seam.

integer, public :: chksum_end_step = 0

Last outer step the chksum probe samples (0 = no upper bound).

logical, public :: chksum_interior = .false.

Restrict every chksum reduction to PHYSICAL cells (drop the ghost ring). Default .false. = legacy whole-array output.

Turn this ON to compare a 1-rank run against an N-rank run. With ghosts included the reduced value set genuinely differs between decompositions even for CORRECT code, so the otherwise decomposition-invariant bits column is unusable for that comparison. Interior-only makes the value set identical by construction, and bits is an exact integer (associative, commutative) reduction — so a correct run yields the SAME bits on any layout, and the first stage whose bits disagree is where a decomposition bug lives.

integer, public :: chksum_start_step = 0

First outer step the chksum probe samples (0 = from start).

logical, public :: ke_attr = .false.

Per-segment layer-KE attribution meter (KE_ATTR rows) — serialises the velocity-apply chain while sampling.

integer, public :: ke_attr_end_step = 0

Last outer step the KE meter samples (0 = no upper bound).

integer, public :: ke_attr_start_step = 0

First outer step the KE meter samples (0 = from start).


Source Code

   type :: ocean_debug_config_t
      !! `&ocean_debug_nml`: forensic probes for the ocean dyn-core.
      !! Every knob defaults off ⇒ bit-identical (untaken branches); all
      !! are HEAVY when on (device waits / serialised apply chains) —
      !! investigation tools, not production diagnostics.  Output is
      !! greppable fixed-format rows (BUDGET / KE_ATTR / CHKSUM /
      !! HOTFACE); reader: `tools/read_chksum.py`.
      logical :: budget = .false.
         !! Per-stage BT power-budget probe (BUDGET rows).
      logical :: ke_attr = .false.
         !! Per-segment layer-KE attribution meter (KE_ATTR rows) —
         !! serialises the velocity-apply chain while sampling.
      integer :: ke_attr_start_step = 0
         !! First outer step the KE meter samples (0 = from start).
      integer :: ke_attr_end_step = 0
         !! Last outer step the KE meter samples (0 = no upper bound).
      logical :: chksum = .false.
         !! MOM6-style per-phase field checksums (CHKSUM rows) + the
         !! HOTFACE argmax-face anatomy at the tendency seams — the
         !! first-diverging-operator / non-finite-minting attribution
         !! probe.  Device waits + reductions per phase seam.
      integer :: chksum_start_step = 0
         !! First outer step the chksum probe samples (0 = from start).
      integer :: chksum_end_step = 0
         !! Last outer step the chksum probe samples (0 = no upper bound).
      logical :: chksum_interior = .false.
         !! Restrict every chksum reduction to PHYSICAL cells (drop the
         !! ghost ring).  Default `.false.` = legacy whole-array output.
         !!
         !! Turn this ON to compare a 1-rank run against an N-rank run.
         !! With ghosts included the reduced value set genuinely differs
         !! between decompositions even for CORRECT code, so the
         !! otherwise decomposition-invariant `bits` column is unusable
         !! for that comparison.  Interior-only makes the value set
         !! identical by construction, and `bits` is an exact integer
         !! (associative, commutative) reduction — so a correct run
         !! yields the SAME `bits` on any layout, and the first stage
         !! whose `bits` disagree is where a decomposition bug lives.
   end type ocean_debug_config_t