Derived Types

TypeLocationExtendsDescription
barotropic_state_t rdb_barotropic_state None

Depth-integrated state on an Arakawa C-grid (face-located velocities as continuity-PPM produces/consumes; cell-centred h-update by flux div).

barotropic_workstate_t rdb_barotropic_workstate None
bt_wide_t rdb_ocean_bt_wide None

Wide-halo shadow state for the barotropic fast loop.

budget_contributor_t rdb_ocean_budgets None

One source/sink of a conserved quantity, populated by a physics kernel each step (adds dt·delta into per_cell) and drained at eval cadence (drain_contributors integrates per_cell·mask·dA over k into total_integrated, then zeroes per_cell). total_integrated is the cumulative RHS checked against LHS = current_total − values_init.

chksum_probe_t rdb_ocean_chksum None

Config + one-shot header state. Lives on ocean_dyn_t; host-only (never device-mapped).

chksum_stats_t rdb_ocean_chksum None

One field’s reduction bundle.

config_t rdb_config None

Container for all runtime simulation parameters

conservation_budget_t rdb_console_stats None

Cumulative (time-integrated, since t=0) budget terms that CLOSE the domain integral of each extensive quantity, so the reported Error is a true numerical-leak residual even with open boundaries + surface forcing. For quantity Q the residual is

Read more…
console_stats_t rdb_console_stats None

Holds initial-snapshot values for relative-drift reporting. is_initialised flips on the first report call.

continuity_t rdb_continuity None
coriolis_adv_t rdb_coriolis_adv None
data_input_field_t rdb_ocean_data_input None

One registered (file, variable, destination-shape) triple. Array-of-derived-type element — NEVER dereference this from inside a do concurrent/device-kernel body (outer-shim + flat-impl rule); every place this type is touched below is a host-side registry walk that hands plain explicit-shape arrays to a pure flat-impl kernel.

dataovr_entry_config_t rdb_config None

One file-driven surface-forcing tag in &ocean_dataovr_nml. A blank file means “this tag is not file-driven” — the slot keeps whatever the configure-time scalar/formula path seeded.

decomp_t rdb_decomp None

Domain decomposition descriptor

derived_entry_t rdb_ocean_diag_derived None

One entry in the static catalog. Buffer layout is implicit in is_layered: layered → (nx, ny, nz_ml), 2D → (nx, ny, 1).

diag_mask_t rdb_ocean_diag_mask None
diag_spec_t rdb_ocean_diag None

One parsed entry of the &ocean_diag_nml diags selection list. Produced by parse_diag_spec; consumed by register_default_diags (canonical-default overrides / skips) and the derived-diagnostic orchestrator (apply_diag_selection). Unset attributes carry sentinels so the consumer falls back to the canonical default.

diag_var_t rdb_ocean_diag None

Per-variable diagnostic record. Owned by ocean_diag_t.

efp_t rdb_efp None

An order-invariant fixed-point value: Sum_n v(n) * pr(n). The component is PUBLIC (unlike MOM6’s private EFP_type%v) so the comm facade (halo_allreduce_efp_list) can pack/unpack it without an accessor procedure – Roundabout splits the arithmetic module (here) from the collective (in src/comm/), so the layering requires v to be reachable from both. Tests asserting bit- identity compare v(:) directly, never the reconstructed real.

eos_t rdb_eos None
evp_workspace_t rdb_ice_state None

Persistent EVP-rheology scratch (SIS2 C-grid dynamics), hung off ocean_sea_ice_t as the evp_ws slot — eagerly allocated in the ice state’s init and GPU-mapped via enter_data, so it matches the rest of src/core/ocean/ (which carries ZERO module-level save allocatables — every kernel puts its scratch on a state DT). Replaces the retired rdb_ice_evp module-level save workspace + its lazy evp_workspace_ensure/ice_evp_cleanup lifecycle. Allocated / mapped ONLY when ocean_sea_ice_t%dynamics is on (the workspace is EVP-dynamics-only).

Read more…
fold_plan_t rdb_ocean_fold_plan None

One north-row tile’s routing for the distributed fold. Entries of family f for peer p live at start(p,f)+1 .. start(p,f)+n(p,f) of the flat entry arrays (send and receive separately).

halo_async_t rdb_halo None

Persistent state for split begin/end halo exchange

Read more…
hgrid_t rdb_grid None
ice_evp_params_t rdb_ice_evp None

EVP physical + numerical parameters (SIS2 SIS_C_dyn_CS subset). Passed intent(in) into the core; every scalar is hoisted to a local before the substep loop (no derived-type deref inside a do concurrent). Defaults + meanings mirror the &ocean_ice_nml block in rdb_config.F90 (the config is the authoritative knob set; keep the two in sync).

ice_ic_params_t rdb_ice_init None

Sea-ice IC scalar knob bundle (mirrors ice_evp_params_t). Built ONCE from &ocean_ice_ic_nml via ice_ic_params_from_config; every field a plain scalar (no derived-type deref inside the host loop, same discipline as the EVP params — though this module never runs on-device at all).

ke_probe_t rdb_ocean_ke_probe None

Config + running state for the KE attribution meter. Lives on ocean_dyn_t; host-only (never device-mapped).

local_BT_cont_u_type rdb_barotropic_workstate None

Per-u-face coefficient pack for the piecewise-cubic barotropic-continuity flux closure (find_uhbt four-branch transport function consumes these).

local_BT_cont_v_type rdb_barotropic_workstate None

Meridional mirror of local_BT_cont_u_type — north-draw and south-draw branches around v=0.

multilayer_state_t rdb_multilayer_state None

Per-layer multilayer C-grid state.

nml_enum_key_t rdb_nml_schema nml_string_key_t

Enum key: a string restricted to an allowed list, validated case-insensitively and assigned its canonical spelling.

nml_group_t rdb_nml_schema None

A namelist group: a name, doc, growable key list, parse-state, and an optional cross-key validation callback.

nml_int_key_t rdb_nml_schema nml_key_t

Integer-valued key with optional [min,max] range validation.

nml_key_box_t rdb_nml_schema None

Boxes a polymorphic key so groups can hold a growable array.

nml_key_t rdb_nml_schema None

Abstract base for a single namelist key descriptor.

nml_logical_key_t rdb_nml_schema nml_key_t

Logical-valued key.

nml_real_array_key_t rdb_nml_schema nml_key_t

Real-array key: accepts 1..size(tgt) values, fills from element 1, errors if more than size(tgt) values are given.

nml_real_key_t rdb_nml_schema nml_key_t

Real-valued key with optional [min,max] range validation.

nml_schema_t rdb_nml_schema None

The top-level schema: validated groups plus external (skipped) group names.

nml_string_key_t rdb_nml_schema nml_key_t

String key. Deferred-len char pointer associates with a fixed-len target and assumes its length; parsing errors if the parsed value is LONGER than len(tgt) (no silent truncation).

ocean_bc_config_t rdb_config None

Boundary-condition configuration read from &ocean_bc_nml. All defaults reproduce a closed-wall run — existing nmls that omit this block are bit-identical to prior behaviour.

ocean_bc_face_tag_t rdb_ocean_boundary_types None

Configuration for one outer edge. Defaults yield a closed wall.

ocean_bc_state_t rdb_ocean_boundary_types None

Per-state OBC bookkeeping. Composed onto ocean_state_t; the dispatch helpers in rdb_ocean_boundary consume it via class(*) polymorphism, keeping kernels decoupled from the full state.

ocean_bdrag_config_t rdb_config None
ocean_bottom_drag_t rdb_ocean_bottom_drag None
ocean_boundary_data_constant_t rdb_ocean_boundary_data ocean_boundary_data_source_t

Trivial backend: writes user-supplied constant scalars straight to bc%west/east/south/north’s clamped_* fields. For fixed-inflow tests and as a polymorphic-dispatch sanity check.

ocean_boundary_data_source_t rdb_ocean_boundary_data None

Polymorphic base. Concrete backends extend this and provide update + destroy.

ocean_bt_config_t rdb_config None
ocean_budgets_t rdb_ocean_budgets None
ocean_cavity_const_t rdb_ocean_cavity_melt None

Thermodynamic + turbulence constants. All SI.

Read more…
ocean_cavity_dyn_config_t rdb_config None

Static ice-shelf cavity GEOMETRY (&ocean_cavity_dyn_nml, Phase 5.1). A prescribed, time-constant ice draft z_draft(i,j) (m, positive DOWN — the depth of the ice base below z = 0) is laid over the bed and absorbed into the barotropic DATUM:

Read more…
ocean_cavity_exchange_t rdb_ocean_cavity_melt None

Exchange-law selector + its parameters. ONE bundle for every law, so the dispatch is a single select case and a later do concurrent kernel can call it without reshaping. Members a given law does not read are ignored.

ocean_cavity_flux_t rdb_ocean_cavity_flux None

Ice-shelf basal-melt slot: the 2-D interface state plus the parameter bundles the kernel is called with.

Read more…
ocean_cavity_ice_t rdb_ocean_cavity_melt None

Ice-side conduction selector + its parameter.

ocean_cavity_melt_config_t rdb_config None

Ice-shelf basal-melt THERMODYNAMICS (&ocean_cavity_melt_nml, Phase 2b). The three-equation interface of Holland & Jenkins (1999), solved once per thermo step on every ice-covered column and delivered to the ocean as two OWNED surface-flux components (heat_cavity, salt_cavity).

Read more…
ocean_cavity_solution_t rdb_ocean_cavity_melt None

Everything cavity_solve_melt returns: the interface state, the fluxes a coupling seam needs, and the solver diagnostics.

Read more…
ocean_config_t rdb_config None

All ocean-path knobs, nested by concern. Parallel to the state composition pattern (ocean_state%dyn, %vcoord, etc.). Read-side: see the per-sub-nml blocks in read_config. Call-side: cfg%ocean%bt%use_cont_type, cfg%ocean%pgf%form, etc.

ocean_continuity_config_t rdb_config None
ocean_conv_config_t rdb_config None

Brunt-Vaisala-triggered convective adjustment (&ocean_conv_nml, CVMix_conv-style). Where the interior N^2 < n2_thresh (dense-over-light), raises kt -> max(kt, kd_conv) and kv -> max(kv, prandtl_conv*kd_conv), strictly below the active surface boundary layer (KPP/EPBL own that). An INTERIOR closure CONTRIBUTOR – it does not clip/floor on its own; it feeds vmix_assemble. enable = .false. keeps the existing path bit-identical. Knob table: docs/generated_nml_knobs.md.

ocean_coriolis_config_t rdb_config None

&ocean_coriolis_nml.

ocean_data_config_t rdb_config None

&ocean_data_nml: the shared time-varying NetCDF input reader (rdb_ocean_data_input, PR-14). Deliberately two knobs — this group carries NO per-field entries. Registration is programmatic: each consumer (surface forcing, OBC segments, sponge targets, tidal-mixing maps, …) calls ocean_data_input_register_2d/_3d from its OWN namelist group at setup and gets back an opaque id. A field never appears here. Zero registered fields on every shipped namelist today ⇒ ocean_data_input_update_all is a no-op ⇒ bit-identical.

ocean_data_forcing_t rdb_ocean_data_forcing None

Registration bookkeeping for the file-driven surface tags. A zero id_* means that tag is not file-driven (blank file in &ocean_dataovr_nml) and its slot keeps whatever the configure-time scalar/formula path seeded.

ocean_data_input_t rdb_ocean_data_input None
ocean_dataovr_config_t rdb_config None

&ocean_dataovr_nml: file-backed surface forcing (PR-15, the A3 keystone consumer). Binds time-varying NetCDF fields, through the shared PR-14 reader (&ocean_data_nml), onto the surface stress and surface-flux slots. enable = .false. registers nothing ⇒ ocean_data_input_update_all stays a no-op ⇒ bit-identical.

Read more…
ocean_ddiff_config_t rdb_config None

Double diffusion (&ocean_ddiff_nml, CVMix_ddiff-style): salt fingering (Large et al. 1994) + diffusive convection (Marmorino-Caldwell 1976 / Kelley 1990). Folded INTO the heat/salt split (not a kv/kt contributor) to give an asymmetric ks-vs-kt divergence. Defaults are the CVMix defaults; enable = .false. keeps the path bit-identical. Knob table: docs/generated_nml_knobs.md.

ocean_debug_config_t rdb_config None

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

ocean_diag_config_t rdb_config None
ocean_diag_nc_stream_t rdb_ocean_diag None

NetCDF output stream state. Carried inline on ocean_diag_t so the diag module stays NetCDF-free (no use netcdf here); the actual file operations live in rdb_ocean_diag_netcdf which manipulates these fields.

ocean_diag_t rdb_ocean_diag None
ocean_dyn_t rdb_ocean_dyn None
ocean_engine_t rdb_ocean_engine None

One ocean simulation’s setup products, minus the caller-owned time-loop bookkeeping (t_current/n_steps/status-restart cadence/console_stats stay with the caller — see the module docstring).

ocean_eos_config_t rdb_config None
ocean_epbl_config_t rdb_config None

Energetics-based planetary boundary layer (&ocean_epbl_nml). All defaults preserve bit-identity: enable = .false. keeps the existing PP81 + KPP path untouched. Knob table + MOM6 name mapping: docs/generated_nml_knobs.md.

ocean_epbl_t rdb_ocean_epbl None
ocean_forcing_config_t rdb_config None

&ocean_forcing_nml: PR-12 surface-flux component-set gate. Default OFF ⇒ bit-identical (no component array allocated, no assembler kernel runs; ocean_surface_flux_t%Q_heat/Q_salt are filled exactly as &ocean_thermo_nml always has).

ocean_foxkemper_config_t rdb_config None

&ocean_foxkemper_nml: Fox-Kemper mixed-layer-eddy restratification. Default off ⇒ bit-identical. Reads epbl%mld.

ocean_geothermal_config_t rdb_config None

&ocean_geothermal_nml: bottom-heat-flux knobs. Default OFF = bit-identical.

ocean_geothermal_t rdb_ocean_geothermal None
ocean_gm_config_t rdb_config None

&ocean_gm_nml: Gent-McWilliams thickness diffusion — eddy-induced bolus transport folded into continuity. Reads the slopes slot. Default off ⇒ no bolus flux.

ocean_gm_t rdb_ocean_gm None

Gent-McWilliams thickness-diffusion state. All fields default to the inert (enable=.false.) configuration so an ocean run that never sets &ocean_gm_nml is bit-identical.

ocean_grid_config_t rdb_config None

&ocean_grid_nml: horizontal-grid generator + geometry knobs.

ocean_handle_t rdb_handle None

One ocean simulation: config + the P2.4 setup/step/teardown engine (god-state + grid + geothermal + bc_source + decomp + sea-ice params — rdb_ocean_engine). state/grid below are thin views onto engine%state/engine%grid kept ONLY so the P2 accessor bodies (h%state%..., h%grid%...) did not all need touching when this handle was rewired onto the shared engine (P2.4): state is POINTER-associated to engine%state right after engine_enter_data (stable for the handle’s lifetime — engine is a component of this heap-allocated, pointer-accessed handle, never copied/reallocated); grid is a ONE-TIME VALUE COPY of engine%grid right after engine_setup (safe because grid metadata is read-only after setup — no kernel ever mutates nx_phys/dx/… mid-run). The standalone sf slot from P1 is gone: engine_setup now fully configures engine%state%surface_flux from the namelist (P2.4 closes the “API surface flux is a separate, minimally-seeded object” gap), so rdb_ocean_get/set_*_flux read/write h%state%surface_flux directly, same as the driver.

ocean_hdiff_config_t rdb_config None

&ocean_hdiff_nml — along-coordinate tracer Laplacian (rdb_ocean_hdiff_tracer). Diffusion along the MODEL coordinate, not neutral surfaces (that is &ocean_redi_nml, a separate already-reachable capability).

ocean_hdiff_tracer_t rdb_ocean_hdiff_tracer None
ocean_horizontal_viscosity_t rdb_ocean_horizontal_viscosity None
ocean_hvisc_config_t rdb_config None
ocean_ic_config_t rdb_config None

Initial-condition overlay + EOS reference state. Drives the analytical configurations (eady-front, geostrophic- adjustment, …) plus the linear-EOS reference values that the rest of the ocean dyn step reads.

ocean_ice_config_t rdb_config None

&ocean_ice_nml: sea-ice model master switch + category/layer counts (SIS2 port, PLAN_SEA_ICE.md). PR 0 scaffold — the knobs size the gated ocean_sea_ice_t slot. PR 3c adds the v1 scalar restoring atmospheric-forcing filler (air_temp/restore_lambda/ sw_down) that drives the column live in the driver. Default OFF ⇒ byte-identical.

ocean_ice_ic_config_t rdb_config None

&ocean_ice_ic_nml: sea-ice ANALYTIC initial-condition path (PR 24). Default conc_config="zero" early-returns before touching a single ice array => byte-identical to today for every existing nml/test. v1 ships "uniform" (scalar) and "latitudes" (SIS2 polar-cap analytic form) only — file-backed ICs are deliberately NOT in the allowed list ("file" is v1.1, PR-14).

ocean_isopycnal_config_t rdb_config None

&ocean_isopycnal_nml: grounding-stability controls for the Lagrangian (isopycnal-class, remap-free) vertical coordinate. Every knob here engages ONLY under sim_type=’ocean’ + VCOORD_LAGRANGIAN, so the whole group is bit-identical on every other vertical coordinate. All are default-OFF except pgf_skip_nonoverlap, which is a correctness fix and defaults ON.

ocean_kappa_shear_config_t rdb_config None

&ocean_kappa_shear_nml: shear-driven interior turbulence (Jackson, Hallberg & Legg 2008). Coexists with KPP/EPBL/PP81 — kappa is ADDED to the interior diffusivities. Default off ⇒ bit-identical.

ocean_kappa_shear_t rdb_ocean_kappa_shear None
ocean_lateral_mix_t rdb_ocean_lateral_mix None
ocean_meke_config_t rdb_config None

&ocean_meke_nml: mesoscale eddy kinetic energy — a 2D prognostic eddy-energy field fed back as a thickness/tracer diffusivity into VarMix’s KhTh/KhTr. Reads gm%gm_src. Default off ⇒ no-op.

ocean_meke_t rdb_ocean_meke None

Mesoscale eddy kinetic energy state. All fields default to the inert (enable=.false.) configuration so an ocean run that never sets &ocean_meke_nml is bit-identical.

ocean_metrics_t rdb_ocean_metrics None
ocean_mle_t rdb_ocean_mle None

Fox-Kemper mixed-layer-eddy restratification state. All fields default to the inert (enable=.false.) configuration so an ocean run that never sets &ocean_foxkemper_nml is bit-identical.

ocean_mpi_config_t rdb_config None

&ocean_mpi_nml: multi-rank MPI debug and tuning controls.

ocean_obc_t rdb_ocean_obc None
ocean_p_surf_t rdb_ocean_p_surf None
ocean_pgf_config_t rdb_config None
ocean_porous_config_t rdb_config None

Porous barriers (&ocean_porous_nml): subgrid sill/strait blocking of the C-grid face widths via the Adcroft (2013) three-parameter fit. The layer-averaged OPEN-AREA fraction multiplies dy_cu / dx_cv in the layer mass transport (continuity-PPM + Coriolis advection), so a deep sill blocks the bottom layers while the surface layers stay fully open. enable = .false. keeps the existing path bit-identical. Knob table: docs/generated_nml_knobs.md.

ocean_pressure_force_t rdb_ocean_pressure_force None
ocean_psurf_config_t rdb_config None

Atmospheric surface-pressure loading / inverse barometer (&ocean_psurf_nml, PR-17). Folds eta_ib = -p_surf/(rho0 g) into the barotropic eta_forcing seam so an atmospheric high depresses SSH (~1 cm/hPa; Wunsch & Stammer 1997). enable = .false. keeps the existing path bit-identical. Split-solver only and mutually exclusive with &ocean_bt_nml bt_halo > 0. Requires &ocean_forcing_nml enable_components=.true. (the p_surf field is allocated only with the component set). ρ₀ is NOT a knob here — it is taken from ocean_state%eos%rho0 (the single ρ₀ of record).

ocean_redi_config_t rdb_config None

&ocean_redi_nml: Redi continuous neutral (along-isopycnal) tracer diffusion — the rotated diffusion tensor. Default off ⇒ no neutral flux.

ocean_redi_t rdb_ocean_redi None

Redi continuous neutral-diffusion state. Defaults inert (enable=.false.) ⇒ bit-identical. Reads the prognostic T/S + EOS directly (recomputes its own interface dR/dT, dR/dS — does NOT consume GM slopes). Augments rdb_ocean_hdiff_tracer.

ocean_restart_metadata_t rdb_ocean_restart_io None

Grid/coordinate/tracer fingerprint validated on read. Distinct from the decomposition metadata (px/py/dims) so a file built with a different vertical resolution, ghost width, vcoord, or tracer set is rejected loudly rather than silently mis-mapped.

ocean_restart_t rdb_ocean_restart None

Restart-manager lifecycle marker. The registry is built per-run by ocean_state_build_restart_registry (it holds live pointers into the freshly allocated slots), not stored here. Cadence is driven by the driver off cfg%restart_interval/cfg%output_dir.

ocean_restore_config_t rdb_config None

&ocean_restore_nml: surface buoyancy restoring of top-layer T/S toward scalar targets via a piston velocity. Default OFF = bit-identical.

ocean_sea_ice_t rdb_ice_state None

Sea-ice state slot. All fields default to the inert (enable=.false.) configuration so an ocean run that never sets &ocean_ice_nml is byte-identical to a build without this slot.

ocean_slopes_config_t rdb_config None

&ocean_slopes_nml: isopycnal (neutral) slope diagnostics (Griffies 1998) at C-grid interfaces. Foundational gate for GM/Redi/VarMix. Default off ⇒ no-op.

ocean_slopes_t rdb_ocean_isopycnal_slopes None
ocean_sponge_config_t rdb_config None

&ocean_sponge_nml: the map-driven sponge (PR-23). Default OFF (enable = .false.) ⇒ the legacy &ocean_bc_nml band kernels run unchanged ⇒ bit-identical. See rdb_ocean_sponge.F90’s module docstring for the physics; docs/plans/PLAN_PR23_real_sponge.md for the design record.

ocean_sponge_t rdb_ocean_sponge None

Map-driven sponge state: per-cell Idamp [1/s] + a 3-D reference state. See the module docstring for the physics + the MOM6 divergences. Value-semantics slot (no CS pointer, no associated(CS) guards) per src/core/ocean/README.md.

ocean_state_t rdb_ocean_state None
ocean_surface_flux_t rdb_ocean_surface_flux None
ocean_surface_stress_t rdb_ocean_surface_stress None
ocean_tdrag_config_t rdb_config None

&ocean_tdrag_nml — ICE-SHELF TOP drag, the mirror of &ocean_bdrag_nml at k = nz. Requires &ocean_cavity_dyn_nml enable (without a draft there is no ice base and cover_frac is identically zero, so the kernel would be a no-op with a cost). Default enable = .false. ⇒ the slot is a placeholder, no kernel runs, every path is bit-identical.

ocean_thermo_config_t rdb_config None

Thermodynamics master switches + scalar surface fluxes.

ocean_tidal_mixing_config_t rdb_config None

St-Laurent/Simmons internal-tide interior mixing (&ocean_tidal_mixing_nml). Bottom-intensified diapycnal diffusivity from the local dissipation of internal-tide energy over rough topography (Jayne & St Laurent 2001; St Laurent et al. 2002; Simmons et al. 2004). An INTERIOR closure: its Kd is ADDED to the surface PBL schemes (KPP or EPBL) and to PP81/background/kappa-shear. enable = .false. keeps the existing path bit-identical. Knob table: docs/generated_nml_knobs.md.

ocean_tidal_mixing_t rdb_ocean_tidal_mixing None
ocean_tides_config_t rdb_config None

Equilibrium (astronomical) body-force tide (&ocean_tides_nml, capability C1). Drives -g grad(eta - eta_eq) in the barotropic momentum solve from a set of harmonic constituents. enable = .false. keeps the existing path bit-identical. Requires a non-cartesian grid (needs lat/lon).

ocean_tides_t rdb_ocean_tides None
ocean_top_drag_t rdb_ocean_top_drag None

Ice-shelf top-drag slot. Every array is full size when enable, a (1,1) / (1,1,1) placeholder otherwise — the ocean_cavity_flux_t gating convention, latched in ocean_state_init_from_config BEFORE init so the allocation gate can read it.

ocean_topo_config_t rdb_config None

Basin geometry + surface-forcing setup. Despite the name, this carries forcing knobs (wind_config / taux_magnitude) and Coriolis tilt (beta / y_ref) alongside the bathymetry profile, because all of them live in the same logical “set up the box and what’s pushing it” slot at init — the &ocean_topo_nml block is read once before the IC is seeded. This grouping is settled (reviewed 2026-05-27); the form knob in &ocean_coriolis_nml is the scheme selector (Sadourny vs HK), distinct from the beta/y_ref parameters here.

ocean_tracers_config_t rdb_config None

Prognostic-tracer registry switches.

ocean_varmix_config_t rdb_config None

&ocean_varmix_nml: spatially-varying GM/Redi lateral-diffusivity coefficients = (background + Visbeck) × resolution_fn, clamped. Reads the slopes + wavespeed slots. Default off ⇒ GM keeps constant khth.

ocean_varmix_t rdb_ocean_varmix None

Spatially-varying lateral-diffusivity-coefficient state. All fields default to the inert (enable=.false.) configuration so an ocean run that never sets &ocean_varmix_nml is bit-identical.

ocean_vcoord_t rdb_ocean_vcoord None
ocean_vdiff_config_t rdb_config None

Backward-Euler vertical-friction solver knobs (&ocean_vdiff_nml). The implicit folds default .false. (explicit wind-stress apply); MOM6’s face treatment (hvel_mom6 + bbl_glue) defaults ON.

ocean_vdiff_t rdb_ocean_vdiff None
ocean_vertical_advection_t rdb_ocean_vertical_advection None
ocean_vmix_config_t rdb_config None
ocean_vmix_t rdb_ocean_vmix None
ocean_wave_speed_config_t rdb_config None

&ocean_wavespeed_nml: first-baroclinic wave speed + deformation radius. Diagnostic, default off — feeds GM/Redi/MEKE resolution scaling.

ocean_wave_speed_t rdb_ocean_wave_speed None
ocean_wetdry_config_t rdb_config None

&ocean_wetdry_nml: dynamic wetting/drying for the split-explicit barotropic substep (docs/ocean_wetdry_plan.md). Default off ⇒ byte-identical everywhere (the wd_* workspaces stay unallocated and the substep runs its unmodified centred-face path).

ocean_zinit_config_t rdb_config None

Z-level T/S initial-condition overlay (&ocean_zinit_nml, capability A2). Reads pre-regridded T/S from a model-grid NetCDF and interpolates linearly in depth onto the seeded layer-centre depths, overwriting any analytical T/S. All defaults preserve bit-identity: enable = .false. is a no-op. Design + MOM6 divergences: local_archive/specs/a2_zinit_spec.md.

profiler_state rdb_profiler None
restart_entry_t rdb_ocean_restart None

One registered checkpoint field. Holds a pointer to the slot’s host array (or host scalar) plus the interior extents needed to slice owned cells. Exactly one of p0 / p2 / p3 is associated (per rank: 0 = host scalar, 2/3 = array).

restart_registry_t rdb_ocean_restart None

Append-only registry of checkpoint fields. Slots call register_2d / register_3d from their (or the state’s) init.

scratch_3d_buffer_t rdb_scratch_3d None
tracer_t rdb_tracer None
tracked_region rdb_profiler None
vcoord_t rdb_vcoord None
type~~graph~~TypeGraph type~barotropic_state_t barotropic_state_t type~barotropic_workstate_t barotropic_workstate_t type~local_bt_cont_u_type local_BT_cont_u_type type~barotropic_workstate_t->type~local_bt_cont_u_type BTCL_u type~local_bt_cont_v_type local_BT_cont_v_type type~barotropic_workstate_t->type~local_bt_cont_v_type BTCL_v type~bt_wide_t bt_wide_t type~hgrid_t hgrid_t type~bt_wide_t->type~hgrid_t grid_w type~ocean_metrics_t ocean_metrics_t type~bt_wide_t->type~ocean_metrics_t metrics_w type~budget_contributor_t budget_contributor_t type~chksum_probe_t chksum_probe_t type~chksum_stats_t chksum_stats_t type~config_t config_t type~ocean_config_t ocean_config_t type~config_t->type~ocean_config_t ocean type~conservation_budget_t conservation_budget_t type~console_stats_t console_stats_t type~efp_t efp_t type~console_stats_t->type~efp_t mass0_efp, salt0_efp, heat0_efp type~continuity_t continuity_t type~scratch_3d_buffer_t scratch_3d_buffer_t type~continuity_t->type~scratch_3d_buffer_t h_face_left_x, h_face_right_x, h_face_left_y, h_face_right_y, mt_h_new, mt_grounded, pd_theta type~coriolis_adv_t coriolis_adv_t type~coriolis_adv_t->type~scratch_3d_buffer_t q_corner, ke_centre, pv_flux_x, pv_flux_y, mass_flux_u, mass_flux_v type~data_input_field_t data_input_field_t type~dataovr_entry_config_t dataovr_entry_config_t type~decomp_t decomp_t type~derived_entry_t derived_entry_t type~diag_mask_t diag_mask_t type~diag_spec_t diag_spec_t type~diag_var_t diag_var_t type~diag_var_t->type~diag_mask_t mask type~eos_t eos_t type~evp_workspace_t evp_workspace_t type~fold_plan_t fold_plan_t type~halo_async_t halo_async_t type~halo_async_t->type~decomp_t decomp request_t request_t type~halo_async_t->request_t reqs type~ice_evp_params_t ice_evp_params_t type~ice_ic_params_t ice_ic_params_t type~ke_probe_t ke_probe_t type~multilayer_state_t multilayer_state_t type~tracer_t tracer_t type~multilayer_state_t->type~tracer_t tracers type~nml_enum_key_t nml_enum_key_t type~nml_string_key_t nml_string_key_t type~nml_enum_key_t->type~nml_string_key_t type~nml_group_t nml_group_t type~nml_key_box_t nml_key_box_t type~nml_group_t->type~nml_key_box_t keys type~nml_int_key_t nml_int_key_t type~nml_key_t nml_key_t type~nml_int_key_t->type~nml_key_t type~nml_key_box_t->type~nml_key_t key type~nml_logical_key_t nml_logical_key_t type~nml_logical_key_t->type~nml_key_t type~nml_real_array_key_t nml_real_array_key_t type~nml_real_array_key_t->type~nml_key_t type~nml_real_key_t nml_real_key_t type~nml_real_key_t->type~nml_key_t type~nml_schema_t nml_schema_t type~nml_schema_t->type~nml_group_t groups type~nml_string_key_t->type~nml_key_t type~ocean_bc_config_t ocean_bc_config_t type~ocean_bc_face_tag_t ocean_bc_face_tag_t type~ocean_bc_state_t ocean_bc_state_t type~ocean_bc_state_t->type~ocean_bc_face_tag_t west, east, south, north type~ocean_bdrag_config_t ocean_bdrag_config_t type~ocean_bottom_drag_t ocean_bottom_drag_t type~ocean_bottom_drag_t->type~scratch_3d_buffer_t du_drag, dv_drag, lambda_side_u, lambda_side_v type~ocean_boundary_data_constant_t ocean_boundary_data_constant_t type~ocean_boundary_data_source_t ocean_boundary_data_source_t type~ocean_boundary_data_constant_t->type~ocean_boundary_data_source_t type~ocean_bt_config_t ocean_bt_config_t type~ocean_budgets_t ocean_budgets_t type~ocean_budgets_t->type~budget_contributor_t contributors type~ocean_budgets_t->type~diag_mask_t mask type~ocean_budgets_t->type~hgrid_t grid type~ocean_cavity_const_t ocean_cavity_const_t type~ocean_cavity_dyn_config_t ocean_cavity_dyn_config_t type~ocean_cavity_exchange_t ocean_cavity_exchange_t type~ocean_cavity_flux_t ocean_cavity_flux_t type~ocean_cavity_flux_t->type~ocean_cavity_const_t const type~ocean_cavity_flux_t->type~ocean_cavity_exchange_t par type~ocean_cavity_ice_t ocean_cavity_ice_t type~ocean_cavity_flux_t->type~ocean_cavity_ice_t ice type~ocean_cavity_melt_config_t ocean_cavity_melt_config_t type~ocean_cavity_solution_t ocean_cavity_solution_t type~ocean_config_t->type~ocean_bc_config_t bc type~ocean_config_t->type~ocean_bdrag_config_t bdrag type~ocean_config_t->type~ocean_bt_config_t bt type~ocean_config_t->type~ocean_cavity_dyn_config_t cavity_dyn type~ocean_config_t->type~ocean_cavity_melt_config_t cavity_melt type~ocean_continuity_config_t ocean_continuity_config_t type~ocean_config_t->type~ocean_continuity_config_t continuity type~ocean_conv_config_t ocean_conv_config_t type~ocean_config_t->type~ocean_conv_config_t conv type~ocean_coriolis_config_t ocean_coriolis_config_t type~ocean_config_t->type~ocean_coriolis_config_t coriolis type~ocean_data_config_t ocean_data_config_t type~ocean_config_t->type~ocean_data_config_t data type~ocean_dataovr_config_t ocean_dataovr_config_t type~ocean_config_t->type~ocean_dataovr_config_t dataovr type~ocean_ddiff_config_t ocean_ddiff_config_t type~ocean_config_t->type~ocean_ddiff_config_t ddiff type~ocean_debug_config_t ocean_debug_config_t type~ocean_config_t->type~ocean_debug_config_t debug type~ocean_diag_config_t ocean_diag_config_t type~ocean_config_t->type~ocean_diag_config_t diag type~ocean_eos_config_t ocean_eos_config_t type~ocean_config_t->type~ocean_eos_config_t eos type~ocean_epbl_config_t ocean_epbl_config_t type~ocean_config_t->type~ocean_epbl_config_t epbl type~ocean_forcing_config_t ocean_forcing_config_t type~ocean_config_t->type~ocean_forcing_config_t forcing type~ocean_foxkemper_config_t ocean_foxkemper_config_t type~ocean_config_t->type~ocean_foxkemper_config_t foxkemper type~ocean_geothermal_config_t ocean_geothermal_config_t type~ocean_config_t->type~ocean_geothermal_config_t geothermal type~ocean_gm_config_t ocean_gm_config_t type~ocean_config_t->type~ocean_gm_config_t gm type~ocean_grid_config_t ocean_grid_config_t type~ocean_config_t->type~ocean_grid_config_t grid type~ocean_hdiff_config_t ocean_hdiff_config_t type~ocean_config_t->type~ocean_hdiff_config_t hdiff type~ocean_hvisc_config_t ocean_hvisc_config_t type~ocean_config_t->type~ocean_hvisc_config_t hvisc type~ocean_ic_config_t ocean_ic_config_t type~ocean_config_t->type~ocean_ic_config_t ic type~ocean_ice_config_t ocean_ice_config_t type~ocean_config_t->type~ocean_ice_config_t ice type~ocean_ice_ic_config_t ocean_ice_ic_config_t type~ocean_config_t->type~ocean_ice_ic_config_t ice_ic type~ocean_isopycnal_config_t ocean_isopycnal_config_t type~ocean_config_t->type~ocean_isopycnal_config_t isopycnal type~ocean_kappa_shear_config_t ocean_kappa_shear_config_t type~ocean_config_t->type~ocean_kappa_shear_config_t kshear type~ocean_meke_config_t ocean_meke_config_t type~ocean_config_t->type~ocean_meke_config_t meke type~ocean_mpi_config_t ocean_mpi_config_t type~ocean_config_t->type~ocean_mpi_config_t mpi type~ocean_pgf_config_t ocean_pgf_config_t type~ocean_config_t->type~ocean_pgf_config_t pgf type~ocean_porous_config_t ocean_porous_config_t type~ocean_config_t->type~ocean_porous_config_t porous type~ocean_psurf_config_t ocean_psurf_config_t type~ocean_config_t->type~ocean_psurf_config_t psurf type~ocean_redi_config_t ocean_redi_config_t type~ocean_config_t->type~ocean_redi_config_t redi type~ocean_restore_config_t ocean_restore_config_t type~ocean_config_t->type~ocean_restore_config_t restore type~ocean_slopes_config_t ocean_slopes_config_t type~ocean_config_t->type~ocean_slopes_config_t slopes type~ocean_sponge_config_t ocean_sponge_config_t type~ocean_config_t->type~ocean_sponge_config_t sponge type~ocean_tdrag_config_t ocean_tdrag_config_t type~ocean_config_t->type~ocean_tdrag_config_t tdrag type~ocean_thermo_config_t ocean_thermo_config_t type~ocean_config_t->type~ocean_thermo_config_t thermo type~ocean_tidal_mixing_config_t ocean_tidal_mixing_config_t type~ocean_config_t->type~ocean_tidal_mixing_config_t tidal_mixing type~ocean_tides_config_t ocean_tides_config_t type~ocean_config_t->type~ocean_tides_config_t tides type~ocean_topo_config_t ocean_topo_config_t type~ocean_config_t->type~ocean_topo_config_t topo type~ocean_tracers_config_t ocean_tracers_config_t type~ocean_config_t->type~ocean_tracers_config_t tracers type~ocean_varmix_config_t ocean_varmix_config_t type~ocean_config_t->type~ocean_varmix_config_t varmix type~ocean_vdiff_config_t ocean_vdiff_config_t type~ocean_config_t->type~ocean_vdiff_config_t vdiff type~ocean_vmix_config_t ocean_vmix_config_t type~ocean_config_t->type~ocean_vmix_config_t vmix type~ocean_wave_speed_config_t ocean_wave_speed_config_t type~ocean_config_t->type~ocean_wave_speed_config_t wavespeed type~ocean_wetdry_config_t ocean_wetdry_config_t type~ocean_config_t->type~ocean_wetdry_config_t wetdry type~ocean_zinit_config_t ocean_zinit_config_t type~ocean_config_t->type~ocean_zinit_config_t zinit type~ocean_data_forcing_t ocean_data_forcing_t type~ocean_data_input_t ocean_data_input_t type~ocean_data_input_t->type~data_input_field_t fields type~ocean_dataovr_config_t->type~dataovr_entry_config_t tau_x, tau_y, heat, evap, lprec, salt type~ocean_diag_nc_stream_t ocean_diag_nc_stream_t type~ocean_diag_t ocean_diag_t type~ocean_diag_t->type~diag_var_t vars type~ocean_diag_t->type~hgrid_t grid type~ocean_diag_t->type~ocean_diag_nc_stream_t nc_stream type~ocean_dyn_t ocean_dyn_t type~ocean_dyn_t->type~barotropic_workstate_t bt_work type~ocean_dyn_t->type~bt_wide_t bt_wide type~ocean_dyn_t->type~chksum_probe_t chksum_probe type~ocean_dyn_t->type~ke_probe_t ke_probe type~ocean_engine_t ocean_engine_t type~ocean_engine_t->type~decomp_t decomp type~ocean_engine_t->type~hgrid_t grid type~ocean_engine_t->type~ice_evp_params_t evp_params type~ocean_engine_t->type~ice_ic_params_t ic_par type~ocean_engine_t->type~ocean_boundary_data_constant_t bc_source type~ocean_geothermal_t ocean_geothermal_t type~ocean_engine_t->type~ocean_geothermal_t geo type~ocean_state_t ocean_state_t type~ocean_engine_t->type~ocean_state_t state type~ocean_epbl_t ocean_epbl_t type~ocean_epbl_t->type~eos_t eos type~ocean_epbl_t->type~scratch_3d_buffer_t t0, s0, dpe_t, dpe_s, dcolht_t, dcolht_s, ctke_sw type~ocean_gm_t ocean_gm_t type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~config_t cfg type~ocean_handle_t->type~hgrid_t grid type~ocean_handle_t->type~ocean_engine_t engine type~ocean_handle_t->type~ocean_state_t state type~ocean_hdiff_tracer_t ocean_hdiff_tracer_t type~ocean_hdiff_tracer_t->type~scratch_3d_buffer_t T_centre, F_x_face, F_y_face type~ocean_horizontal_viscosity_t ocean_horizontal_viscosity_t type~ocean_horizontal_viscosity_t->type~scratch_3d_buffer_t du_visc, dv_visc, lap_u, lap_v, str_xx, str_xy, ah_t, ah_q type~ocean_kappa_shear_t ocean_kappa_shear_t type~ocean_kappa_shear_t->type~eos_t eos type~ocean_lateral_mix_t ocean_lateral_mix_t type~ocean_lateral_mix_t->type~scratch_3d_buffer_t vort_corner type~ocean_meke_t ocean_meke_t type~ocean_mle_t ocean_mle_t type~ocean_obc_t ocean_obc_t type~ocean_p_surf_t ocean_p_surf_t type~ocean_pressure_force_t ocean_pressure_force_t type~ocean_pressure_force_t->type~scratch_3d_buffer_t p_edge, z_centre, mont_M, rho_insitu, dpdx_face, dpdy_face, e_face, pa, intz_dpa, intx_pa, inty_pa, intx_dpa, inty_dpa, conc_T, conc_S, recon_T_t, recon_T_b, recon_S_t, recon_S_b type~ocean_redi_t ocean_redi_t type~ocean_restart_metadata_t ocean_restart_metadata_t type~ocean_restart_t ocean_restart_t type~ocean_sea_ice_t ocean_sea_ice_t type~ocean_sea_ice_t->type~evp_workspace_t evp_ws type~ocean_slopes_t ocean_slopes_t type~ocean_sponge_t ocean_sponge_t type~ocean_state_t->type~barotropic_state_t barotropic type~ocean_state_t->type~continuity_t continuity type~ocean_state_t->type~coriolis_adv_t coriolis_adv type~ocean_state_t->type~eos_t eos type~ocean_state_t->type~multilayer_state_t multilayer type~ocean_state_t->type~ocean_bc_state_t bc type~ocean_state_t->type~ocean_bottom_drag_t bdrag type~ocean_state_t->type~ocean_cavity_flux_t cavity_flux type~ocean_state_t->type~ocean_data_forcing_t data_forcing type~ocean_state_t->type~ocean_data_input_t data_input type~ocean_state_t->type~ocean_diag_t diag type~ocean_state_t->type~ocean_dyn_t dyn type~ocean_state_t->type~ocean_epbl_t epbl type~ocean_state_t->type~ocean_gm_t gm type~ocean_state_t->type~ocean_hdiff_tracer_t hdiff_tracer type~ocean_state_t->type~ocean_horizontal_viscosity_t hvisc type~ocean_state_t->type~ocean_kappa_shear_t kshear type~ocean_state_t->type~ocean_lateral_mix_t lateral_mix type~ocean_state_t->type~ocean_meke_t meke type~ocean_state_t->type~ocean_metrics_t metrics type~ocean_state_t->type~ocean_mle_t mle type~ocean_state_t->type~ocean_obc_t obc type~ocean_state_t->type~ocean_p_surf_t p_surf type~ocean_state_t->type~ocean_pressure_force_t pressure_force type~ocean_state_t->type~ocean_redi_t redi type~ocean_state_t->type~ocean_restart_t restart type~ocean_state_t->type~ocean_sea_ice_t ice type~ocean_state_t->type~ocean_slopes_t slopes type~ocean_state_t->type~ocean_sponge_t sponge type~ocean_surface_flux_t ocean_surface_flux_t type~ocean_state_t->type~ocean_surface_flux_t surface_flux type~ocean_surface_stress_t ocean_surface_stress_t type~ocean_state_t->type~ocean_surface_stress_t surface_stress type~ocean_tidal_mixing_t ocean_tidal_mixing_t type~ocean_state_t->type~ocean_tidal_mixing_t vmix_tidal type~ocean_tides_t ocean_tides_t type~ocean_state_t->type~ocean_tides_t tides type~ocean_top_drag_t ocean_top_drag_t type~ocean_state_t->type~ocean_top_drag_t tdrag type~ocean_varmix_t ocean_varmix_t type~ocean_state_t->type~ocean_varmix_t varmix type~ocean_vcoord_t ocean_vcoord_t type~ocean_state_t->type~ocean_vcoord_t vcoord type~ocean_vdiff_t ocean_vdiff_t type~ocean_state_t->type~ocean_vdiff_t vdiff type~ocean_vertical_advection_t ocean_vertical_advection_t type~ocean_state_t->type~ocean_vertical_advection_t vert_advect type~ocean_vmix_t ocean_vmix_t type~ocean_state_t->type~ocean_vmix_t vmix type~ocean_wave_speed_t ocean_wave_speed_t type~ocean_state_t->type~ocean_wave_speed_t wavespeed type~ocean_surface_stress_t->type~scratch_3d_buffer_t du_stress, dv_stress type~ocean_tidal_mixing_t->type~eos_t eos type~ocean_top_drag_t->type~scratch_3d_buffer_t du_drag, dv_drag type~ocean_vdiff_t->type~scratch_3d_buffer_t a_diag_t, b_diag_t, c_diag_t, rhs_t, a_diag_u, b_diag_u, c_diag_u, rhs_u, a_diag_v, b_diag_v, c_diag_v, rhs_v, kv_scalar_buf type~ocean_vertical_advection_t->type~scratch_3d_buffer_t F_face type~ocean_vmix_t->type~eos_t eos type~profiler_state profiler_state type~tracked_region tracked_region type~profiler_state->type~tracked_region regions type~restart_entry_t restart_entry_t type~restart_registry_t restart_registry_t type~restart_registry_t->type~restart_entry_t entries type~vcoord_t vcoord_t
Help