| Procedure | Location | Procedure Type | Description |
|---|---|---|---|
| accel_visc_rem_reweight | rdb_ocean_dyn | Subroutine | accel_visc_rem post-apply reweight:
|
| accel_visc_rem_snapshot | rdb_ocean_dyn | Subroutine | accel_visc_rem stage-entry snapshot: |
| accumulate_flux_x | rdb_continuity | Subroutine | Accumulate one RK2 stage’s zonal mass flux into the windowed
accumulator with the ½ RK2 weight baked in:
|
| accumulate_flux_y | rdb_continuity | Subroutine | Meridional analogue of |
| adcroft_recip | rdb_ocean_metrics | Function | Adcroft reciprocal: |
| add_dataovr_entry | rdb_config | Subroutine | Register the four flat knobs of one |
| add_err | rdb_nml_schema | Subroutine | Append a message to a growable error list. |
| add_top_drag_into_F_slow | rdb_barotropic_coupling | Subroutine | Add the ice-shelf top-drag tendency into the already-summed
slow forcing. Separate from |
| aniso_mode_is_implemented | rdb_ocean_horizontal_viscosity | Function |
|
| any_nan | rdb_console_stats | Function |
|
| append_val | rdb_nml_schema | Subroutine | Append one value token to the values buffer. |
| apply_bt_correction | rdb_barotropic_coupling | Subroutine | Replace the bt mode in the per-layer face velocities with the
barotropic-substep end-step value, adding |
| apply_cartesian_degrees | rdb_config | Subroutine | Post-parse Cartesian domain sizing (MOM6 GRID_CONFIG=”cartesian” +
AXIS_UNITS / LENLON / LENLAT). When |
| apply_clamped_meridional_north | rdb_ocean_obc_baroclinic | Subroutine | |
| apply_clamped_meridional_south | rdb_ocean_obc_baroclinic | Subroutine | |
| apply_clamped_zonal_east | rdb_ocean_obc_baroclinic | Subroutine | |
| apply_clamped_zonal_west | rdb_ocean_obc_baroclinic | Subroutine | |
| apply_diag_selection | rdb_ocean_diag_derived | Subroutine | Configure the ocean diagnostic set from the unified
|
| apply_factored_tracer | rdb_ocean_vdiff | Subroutine | Apply the pre-factored tridiagonal (from
|
| apply_geothermal_src_impl | rdb_ocean_geothermal | Subroutine | Stamp |
| apply_layer_rho_init | rdb_ocean_state | Subroutine | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
Helper: write per-layer density from |
| apply_maxvel_clamp | rdb_ocean_dyn | Subroutine | Truncate face velocities to |
| apply_meridional_baroclinic | rdb_ocean_obc_baroclinic | Subroutine | Set south and north wall-face per-layer v. Mirror of
|
| apply_nudge_meridional_north | rdb_ocean_obc_baroclinic | Subroutine | Post-anomaly nudging for the north edge. “Incoming” at north = v_wall < 0 ⟹ tau_in. |
| apply_nudge_meridional_south | rdb_ocean_obc_baroclinic | Subroutine | Post-anomaly nudging for the south edge. “Incoming” at south = v_wall > 0 ⟹ tau_in. |
| apply_nudge_zonal_east | rdb_ocean_obc_baroclinic | Subroutine | Post-anomaly nudging for the east edge. “Incoming” at east = u_wall < 0 (westward, into domain) ⟹ tau_in. |
| apply_nudge_zonal_west | rdb_ocean_obc_baroclinic | Subroutine | Post-anomaly nudging for the west edge. “Incoming” at west = u_wall > 0 (eastward, into domain) ⟹ tau_in. |
| apply_one_pair | rdb_nml_schema | Subroutine | Consume one |
| apply_orlanski_east | rdb_ocean_obc_baroclinic | Subroutine | Orlanski radiation for the east open edge (Orlanski 1976). Interior face index I = i_e-1 (1st), I-1 = i_e-2 (2nd). Outward normal = +x. dhdx = u(i_e-1) - u(i_e-2) (eastward gradient). |
| apply_orlanski_north | rdb_ocean_obc_baroclinic | Subroutine | Orlanski radiation for the north open edge (Orlanski 1976). Interior face J = j_n-1 (1st), J-1 = j_n-2 (2nd). Outward normal = +y. dhdx = v(j_n-1) - v(j_n-2) (northward gradient). |
| apply_orlanski_south | rdb_ocean_obc_baroclinic | Subroutine | Orlanski radiation for the south open edge (Orlanski 1976). Interior face J = j_s+1 (1st), J-1 = j_s+2 (2nd). Outward normal = -y. dhdx = v(j_s+1) - v(j_s+2) (southward gradient). |
| apply_orlanski_west | rdb_ocean_obc_baroclinic | Subroutine | Orlanski radiation for the west open edge (Orlanski 1976). Interior face index I = i_w+1 (1st), I-1 = i_w+2 (2nd). Outward normal = -x. dhdx = u(i_w+1) - u(i_w+2) (westward gradient). rx updated in-place; u_prev NOT updated here (done by the caller after all edges are set). |
| apply_surface_restore_2d_cover_impl | rdb_ocean_surface_flux | Subroutine | Ice-shelf-cover twin of |
| apply_surface_restore_2d_impl | rdb_ocean_surface_flux | Subroutine | Stamp the per-step restoring increment |
| apply_surface_src_2d_dyn_impl | rdb_ocean_surface_flux | Subroutine | Wet/dry variant of |
| apply_surface_src_2d_dyn_nobudget_impl | rdb_ocean_surface_flux | Subroutine | Wet/dry NOBUDGET twin — see |
| apply_surface_src_2d_impl | rdb_ocean_surface_flux | Subroutine | Stamp |
| apply_surface_src_2d_nobudget_impl | rdb_ocean_surface_flux | Subroutine | Byte-for-byte copy of |
| apply_sw_and_restore | rdb_ocean_dyn | Subroutine | The two cell-centred surface kernels that do NOT route through
the assembler’s |
| apply_sw_penetration_cover_impl | rdb_ocean_surface_flux | Subroutine | Ice-shelf-cover twin of |
| apply_sw_penetration_impl | rdb_ocean_surface_flux | Subroutine | Per-column two-band shortwave redistribution. Explicit-shape
dummies so NVHPC stdpar compiles device kernels against static
bounds. Difference form ( |
| apply_time_unit_cascade | rdb_config | Subroutine | Post-parse time-unit fixup shared by the file + string config
paths. |
| apply_velocity_truncation | rdb_ocean_dyn | Subroutine | Post-RK2 velocity housekeeping: the advective-CFL truncation
(E7) followed by the absolute |
| apply_w_to_h_layer | rdb_ocean_vertical_advection | Subroutine |
|
| apply_zonal_baroclinic | rdb_ocean_obc_baroclinic | Subroutine | Set west and east wall-face per-layer u to Flather mean + zero-gradient baroclinic anomaly (radiating edges) or uniform clamped_u (CLAMPED edge). Explicit-shape dummies; one do concurrent per edge (j outer, k inner). |
| arr_bytes | rdb_mem_report | Interface | Byte footprint of an allocatable array (0 when unallocated), so a
gated-off slot naturally contributes nothing to a counted total.
The COUNTED companion to the runtime’s MEASURED free-memory
delta: each |
| arr_bytes_i1 | rdb_mem_report | Function | |
| arr_bytes_i2 | rdb_mem_report | Function | |
| arr_bytes_i3 | rdb_mem_report | Function | |
| arr_bytes_l1 | rdb_mem_report | Function | |
| arr_bytes_l2 | rdb_mem_report | Function | |
| arr_bytes_l3 | rdb_mem_report | Function | |
| arr_bytes_r1 | rdb_mem_report | Function | |
| arr_bytes_r2 | rdb_mem_report | Function | |
| arr_bytes_r3 | rdb_mem_report | Function | |
| arr_bytes_r4 | rdb_mem_report | Function | |
| assign_h_layer | rdb_ocean_min_thickness | Subroutine | Copy the target field into h_layer on grounded columns only — non-grounded columns’ h_new was never written, and their old h_layer is already the exact target. |
| barotropic_state_bytes | rdb_barotropic_state | Function | Counted allocatable footprint of the ocean C-grid barotropic slot. |
| barotropic_state_destroy | rdb_barotropic_state | Subroutine | Tear down host allocations. Call |
| barotropic_state_enter_data | rdb_barotropic_state | Subroutine | Attach the C-grid barotropic allocatables to the device. The parent
struct is mapped by the orchestrating routine. Read+write fields use
|
| barotropic_state_enter_data_impl | rdb_barotropic_state | Subroutine | |
| barotropic_state_exit_data | rdb_barotropic_state | Subroutine | Reverse of |
| barotropic_state_exit_data_impl | rdb_barotropic_state | Subroutine | |
| barotropic_state_init | rdb_barotropic_state | Subroutine | Allocate every C-grid barotropic array zero-filled. East-face arrays
are (nx+1, ny), north-face (nx, ny+1). Scalars (manning_n, coriolis_f)
are populated by |
| barotropic_substep_linear | rdb_barotropic_substep | Subroutine | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
Linearized barotropic-substep kernel. Forward-Euler steps
the barotropic state (eta, ubt, vbt) at dt_inner for n_steps
against the constant slow forcing |
| barotropic_substep_nonlinear | rdb_barotropic_substep | Subroutine | Nonlinear barotropic substep. Same time-mean accumulator
pattern as |
| barotropic_substep_nonlinear_interior | rdb_barotropic_substep | Subroutine | Interior (normal-width) entry point for the nonlinear barotropic
fast loop. Unpacks the |
| barotropic_workstate_bytes | rdb_barotropic_workstate | Function | Counted allocatable footprint of the barotropic fast-loop work state (BTCL_u/v derived-type coeffs excluded) slot (0 when unallocated). |
| barotropic_workstate_destroy | rdb_barotropic_workstate | Subroutine | |
| barotropic_workstate_enter_data | rdb_barotropic_workstate | Subroutine | Attaches component arrays only — no bare |
| barotropic_workstate_enter_data_impl | rdb_barotropic_workstate | Subroutine | |
| barotropic_workstate_exit_data | rdb_barotropic_workstate | Subroutine | |
| barotropic_workstate_exit_data_impl | rdb_barotropic_workstate | Subroutine | |
| barotropic_workstate_init | rdb_barotropic_workstate | Subroutine | Allocate the 2D barotropic-substep arrays. Pass |
| bathy_io_ok | rdb_bathymetry | Function | Translate a raw |
| bathymetry_fill_ghosts_array | rdb_ocean_bathymetry_inject | Subroutine | Fill ghost-cell bathymetry by constant extrapolation from the
nearest interior cell. Deliberate duplicate of
|
| bathymetry_median | rdb_ocean_bathymetry_inject | Function | Approximate median via a full sort — |
| bathymetry_normalise_sign | rdb_ocean_bathymetry_inject | Subroutine | In-place sign-normalise |
| bbl_column_conc_impl | rdb_ocean_vdiff | Subroutine | Cell concentrations of one tracer through THE vanished-layer column
rule ( |
| bbl_faces_impl | rdb_ocean_vdiff | Subroutine | Per-face body of |
| bbl_glue_is_effective | rdb_config | Function | Will |
| bdrag_variant_is_implemented | rdb_ocean_bottom_drag | Function |
|
| beta5_0 | rdb_coriolis_adv | Function | |
| beta5_1 | rdb_coriolis_adv | Function | |
| beta5_2 | rdb_coriolis_adv | Function | |
| beta7_0 | rdb_coriolis_adv | Function | |
| beta7_1 | rdb_coriolis_adv | Function | |
| beta7_2 | rdb_coriolis_adv | Function | |
| beta7_3 | rdb_coriolis_adv | Function | |
| bipolar_corner_latlon | rdb_ocean_bipolar | Subroutine | Map a logical cap location to geographic (lat, lon) in degrees.
|
| bipolar_pole_lat | rdb_ocean_bipolar | Function | Latitude (deg) of the two cap poles — they sit ON the join
latitude, so this is simply |
| bkgnd_henyey_conflicts_profile | rdb_ocean_vmix | Function |
|
| boole_dpa_face | rdb_ocean_pgf_reconstruct | Subroutine | HORIZONTAL (cross-face) Boole quadrature of the layer pressure
increment |
| boole_dpa_face_pcm | rdb_ocean_pgf_reconstruct | Subroutine | The cross-face Boole quadrature of |
| boole_dpa_face_wright | rdb_ocean_pressure_force | Subroutine |
|
| boole_dpa_intz_layer | rdb_ocean_pgf_reconstruct | Subroutine | 5-point Boole-quadrature density-anomaly integral over one layer
(Adcroft, Hallberg & Harrison 2008; White, Adcroft & Hallberg
2009). Returns the layer-integrated pressure-anomaly increment
|
| boole_dpa_intz_layer_wright | rdb_ocean_pressure_force | Subroutine |
|
| boole_layer_combine | rdb_ocean_pressure_force | Subroutine | Boole weights of the five sub-point density anomalies |
| boole_layer_points | rdb_ocean_pressure_force | Subroutine | The five sub-point (T, S, p) triples of the in-layer Boole rule,
top (n = 1) to bottom (n = 5), for the per-EOS twins – the same
points |
| boundary_edges_linear | rdb_ocean_pressure_force | Subroutine | Linear-exact one-sided edge pair for a BOUNDARY layer (k=1 or k=nz), where a centred slope has no second neighbour. |
| boundary_half_jump | rdb_remap_column | Subroutine | Linear-exact half-jump across a BOUNDARY cell (k=1 or k=nz), where a centred stencil has no second neighbour. |
| bt_auto_n_inner | rdb_ocean_setup | Function | Smallest barotropic substep count |
| bt_auto_n_inner_from_dt | rdb_ocean_setup | Function | Smallest |
| bt_cfl_dt_wet | rdb_ocean_setup | Subroutine | Per-WET-CELL external-gravity-wave CFL limit (MOM6 |
| bt_halo_auto_exclusion | rdb_config | Subroutine | Single source of truth for the BT march-in exclusion set (mirrors the
explicit- |
| bt_rem_open_impl | rdb_barotropic_coupling | Subroutine |
|
| bt_rem_wave_drag_open_impl | rdb_barotropic_coupling | Subroutine |
|
| bt_wide_bytes | rdb_ocean_bt_wide | Function | Counted allocatable footprint of the wide-halo BT shadow state
(0 when unallocated, i.e. whenever |
| bt_wide_copy_in | rdb_ocean_bt_wide | Subroutine | Offset-copy normal-width input arrays into the wide shadow arrays.
Dispatches to the non-polymorphic |
| bt_wide_copy_in_impl | rdb_ocean_bt_wide | Subroutine | Non-polymorphic copy_in body. Offset = bt_halo:
w_X(iw, jw) = X(clamp(iw-off), clamp(jw-off)) over the FULL wide
extent — the inner band is a direct offset copy; the outer bt_halo
ring is a clamped-index (constant-extrapolation) fill. The ring
fill matters: without it the ring carries stale end-of-fast-loop
values from the previous stage (H_ref = 0, eta from t-1), which at
a PHYSICAL (non-seam) edge is never refreshed by any exchange and
free-runs an inconsistent zero-depth integration that blows up in
O(25) outer steps. At an MPI seam the ring is immediately
overwritten with true neighbour data by |
| bt_wide_copy_out | rdb_ocean_bt_wide | Subroutine | Offset-copy wide output arrays back to the normal-width arrays.
Dispatches to the non-polymorphic |
| bt_wide_copy_out_impl | rdb_ocean_bt_wide | Subroutine | Non-polymorphic copy_out body. X(i,j) = w_X(i+off, j+off) over the full normal index range. Outputs: time-mean eta/ubt/vbt, uhbt/vhbt, *_end snapshots. |
| bt_wide_destroy | rdb_ocean_bt_wide | Subroutine | Deallocate all wide state. |
| bt_wide_enter_data | rdb_ocean_bt_wide | Subroutine | Attach all wide arrays (and wide metrics leaf arrays) to the GPU
present table. The containing |
| bt_wide_enter_data_impl | rdb_ocean_bt_wide | Subroutine | Non-polymorphic enter_data body (avoids class-box GPU descriptor issue). |
| bt_wide_entry_exchange | rdb_ocean_bt_wide | Subroutine | One wide grouped exchange (eta+ubt+vbt) + wide singles for the other
7 input arrays (H_ref, ubt_prev, rem_u, force_u, vbt_prev, rem_v,
force_v). Fills the entire wide ghost band before the fast loop.
Counter effect: +1 bt_group, +1 centre_2d, +3 face_x_2d, +3 face_y_2d.
Dispatches to the non-polymorphic |
| bt_wide_entry_exchange_impl | rdb_ocean_bt_wide | Subroutine | Non-polymorphic entry_exchange body. |
| bt_wide_exit_data | rdb_ocean_bt_wide | Subroutine | Detach all wide arrays from the GPU present table. |
| bt_wide_exit_data_impl | rdb_ocean_bt_wide | Subroutine | Non-polymorphic exit_data body. |
| bt_wide_init | rdb_ocean_bt_wide | Subroutine | Allocate the wide shadow state. Builds |
| bt_wide_substep | rdb_ocean_bt_wide | Subroutine | Wide-halo (march-in) entry point for the nonlinear barotropic fast
loop. Unpacks the wide shadow arrays ( |
| budget_area_field | rdb_ocean_budgets | Subroutine | Per-cell T-area (m²) for physical integrals: cached metrics |
| budget_total_ke | rdb_ocean_budgets | Function | Total KE: Σ over masked interior of |
| budget_total_mass | rdb_ocean_budgets | Function | Total mass: Σ over masked interior of |
| budget_total_tracer | rdb_ocean_budgets | Function | Total tracer content: Σ over masked interior of |
| build_factorize_tracer_matrix | rdb_ocean_vdiff | Subroutine | Build the backward-Euler tridiagonal per cell column and run the
Thomas forward factorization — the tracer-INDEPENDENT half of the
vertical-diffusion solve (depends only on kv/h/dt). Run once per
stage; every registered tracer then reuses the factored
coefficients via |
| build_grounded_mask | rdb_ocean_min_thickness | Subroutine | ONE coalesced pass: mask(i,j,1) = 1.0 iff any layer of column (i,j)
is strictly below the floor; |
| build_pending_handle | rdb_ocean_api | Subroutine | Shared prefix of |
| build_rdb_schema | rdb_config | Subroutine | Register the validated groups + the still-external groups onto
|
| build_target_field | rdb_ocean_min_thickness | Subroutine | target. Non-grounded columns are SKIPPED — their h_new is never read downstream (every consumer falls back to h_old via the mask). |
| build_ts_concentration | rdb_ocean_remap | Subroutine | Build layer-mean T/S concentrations (c = hTr/h) from extensive tracer
content + pre-remap thicknesses, for the VCOORD_RHO density inversion.
Per-layer |
| build_z_ctr | rdb_ocean_z_init | Subroutine | Layer-centre GEOPOTENTIAL depths (positive-down from the |
| c_to_f_string | rdb_ocean_api | Subroutine | Convert a |
| canonical_diag_catalog_name | rdb_ocean_diag_fills | Function | Name of canonical-catalog entry |
| canonical_diag_catalog_size | rdb_ocean_diag_fills | Function | Number of names in the canonical-diagnostic catalog (the static
set |
| canonical_diag_gate_hint | rdb_ocean_diag_fills | Function | The namelist gate whose closure suppresses canonical diagnostic
|
| catalog_name_list | rdb_ocean_diag_derived | Function | Comma-separated list of catalog diagnostic names (for error text). |
| cavity_apply_land_exclusion | rdb_ocean_cavity | Subroutine | NO ICE OVER LAND (design rule R2): force |
| cavity_bound_to_grid | rdb_ocean_state | Function | Convert ONE shelf-box bound from metres to grid coordinate units,
leaving the |
| cavity_buoyancy_flux | rdb_ocean_cavity_melt | Function | Interfacial buoyancy flux |
| cavity_comp_apply_impl | rdb_ocean_cavity_flux | Subroutine | The |
| cavity_comp_scale_tracer_impl | rdb_ocean_cavity_flux | Subroutine | Apply the compensation sink’s top-layer ratio to one PASSIVE
tracer’s load. Unconditional ( |
| cavity_comp_withdrawal | rdb_ocean_cavity_flux | Function | The uniform per-unit-area thickness the |
| cavity_count_grounded | rdb_ocean_cavity | Subroutine | Count the INTERIOR columns the cavity grounds: wet bed
( |
| cavity_count_unloaded_p_top | rdb_ocean_setup | Function | Count cells whose top-of-column pressure does NOT carry the
isostatic ice load — the melt path’s guard that
|
| cavity_count_zero_f | rdb_ocean_setup | Function | Count ice-covered WET columns sitting at exactly |
| cavity_datum_impl | rdb_ocean_cavity | Subroutine | The BAROTROPIC DATUM: |
| cavity_datum_residual | rdb_ocean_cavity | Function | Max violation of the counted-once invariant (I) in METRES of
reference depth, over the WET columns:
|
| cavity_diff_impl | rdb_ocean_diag_derived | Subroutine |
|
| cavity_draft_apply_sign | rdb_ocean_cavity | Subroutine | Normalise a freshly loaded draft field onto Roundabout’s
convention (DEPTH, positive down, |
| cavity_draft_is_finite_nonneg | rdb_ocean_cavity | Function | Configure-time guard: every draft entry is finite and |
| cavity_draft_is_uniform | rdb_config | Function | Is the configured ice-shelf draft UNIFORM over the whole array? |
| cavity_exchange_velocities | rdb_ocean_cavity_melt | Subroutine | Exchange-velocity dispatch with the Coriolis parameter taken from
the bundle ( |
| cavity_exchange_velocities_f | rdb_ocean_cavity_melt | Subroutine | Exchange-velocity dispatch — ONE argument list for every law, so
a later |
| cavity_far_field_impl | rdb_ocean_cavity_flux | Subroutine | Thickness-weighted mean of |
| cavity_fill_cover_frac | rdb_ocean_cavity | Subroutine | v1 ice-cover fraction: BINARY, |
| cavity_fill_p_ice_ref | rdb_ocean_cavity | Subroutine |
|
| cavity_flux_fill_impl | rdb_ocean_cavity_flux | Subroutine | Fill the two OWNED surface-flux components from the solved
interface. FULL OVERWRITE of the whole plane, never |
| cavity_gamma_hj99 | rdb_ocean_cavity_melt | Subroutine | Holland & Jenkins (1999) eqs. (14)-(18) p. 1792: |
| cavity_gamma_yung25 | rdb_ocean_cavity_melt | Subroutine | Yung et al. (2025) “StratFeedback”, eqs. (7)-(8) p. 5832: |
| cavity_heat_fluxes | rdb_ocean_cavity_melt | Subroutine | The three heat fluxes of (E2), W/m^2: |
| cavity_ice_terms | rdb_ocean_cavity_melt | Subroutine |
|
| cavity_l_plus_from_state | rdb_ocean_cavity_melt | Function | Viscous Obukhov scale |
| cavity_l_plus_is_neutral | rdb_ocean_cavity_melt | Function | Is this trial |
| cavity_law_is_implicit | rdb_ocean_cavity_melt | Function | Does this law’s |
| cavity_m_ice_from_mass | rdb_ocean_cavity_melt | Function | Solid-ice thickness rate (m/s) from the canonical mass flux,
|
| cavity_m_weq_from_mass | rdb_ocean_cavity_melt | Function | Freshwater-equivalent thickness rate (m/s) from the canonical
mass flux, |
| cavity_mask_impl | rdb_ocean_diag_derived | Subroutine | Copy a 2-D cavity field into the diag buffer, writing IEEE NaN wherever the column was not solved. Every cavity fill that is a plain read of a slot array routes through here, so the missing-value convention cannot drift between them. |
| cavity_mass_apply_impl | rdb_ocean_cavity_flux | Subroutine | The real-mass top-layer source: add the meltwater VOLUME to
|
| cavity_mass_salt_mirror_impl | rdb_ocean_cavity_flux | Subroutine | The pseudo-salt mirror of |
| cavity_mass_thin_is_fatal | rdb_ocean_cavity_flux | Function | Is this step’s clamped-withdrawal tally a FAIL-LOUD condition? |
| cavity_mass_totals_impl | rdb_ocean_cavity_flux | Subroutine | The two INTERIOR integrals the mass budget and the compensation sink need, reduced on device in one pass: |
| cavity_melt_columns | rdb_ocean_cavity_melt | Subroutine | Data-parallel driver: solve |
| cavity_melt_columns_2d | rdb_ocean_cavity_melt | Subroutine | Masked 2-D driver: form the friction velocity and solve the
interface on every ICE-COVERED column of an |
| cavity_melt_point | rdb_ocean_cavity_melt | Subroutine | Scalar entry point returning only what a coupling seam consumes:
the interface state, the canonical melt mass flux and the ocean
-> interface heat flux. A thin wrapper over |
| cavity_melt_point_gamma | rdb_ocean_cavity_melt | Subroutine |
|
| cavity_melt_point_gamma_f | rdb_ocean_cavity_melt | Subroutine |
|
| cavity_melt_status_is_fatal | rdb_ocean_cavity_flux | Function | Is this step’s status tally a FAIL-LOUD condition? |
| cavity_obukhov_length | rdb_ocean_cavity_melt | Function | Dimensional Obukhov length |
| cavity_outer_residual | rdb_ocean_cavity_melt | Function | Outer-iteration residual |
| cavity_resolve_gamma_s | rdb_ocean_setup | Function | Resolve the |
| cavity_safe_state | rdb_ocean_cavity_melt | Subroutine | The documented SAFE STATE returned on every non-OK status: zero
melt, interface salinity equal to the far field, interface
temperature on the liquidus there. |
| cavity_salt_fluxes | rdb_ocean_cavity_melt | Subroutine | The two sides of (E3), in (g/kg)*kg/m^2/s: |
| cavity_scale_impl | rdb_ocean_diag_derived | Subroutine |
|
| cavity_solution_reset | rdb_ocean_cavity_melt | Subroutine | Define every component of the solution bundle. Called FIRST by
|
| cavity_solve_melt | rdb_ocean_cavity_melt | Subroutine |
|
| cavity_solve_melt_f | rdb_ocean_cavity_melt | Subroutine | Solve the three-equation system with any implemented exchange law, and return the full interface state plus the fluxes a coupling seam will consume. |
| cavity_state_at_x | rdb_ocean_cavity_melt | Subroutine | Evaluate the whole interface at a trial |
| cavity_status_counts_impl | rdb_ocean_cavity_flux | Subroutine | Reduce the per-column status plane into four counts, ON DEVICE. |
| cavity_status_impl | rdb_ocean_diag_derived | Subroutine | |
| cavity_t_ice | rdb_ocean_cavity_melt | Function | Ice temperature actually used: exactly zero when the mode ignores
it, so an unset or stale |
| cavity_three_equation | rdb_ocean_cavity_melt | Subroutine | Closed-form solve of (E1)-(E3) on the linear liquidus carried by
|
| cavity_trim_eta_linear_impl | rdb_ocean_cavity | Subroutine | The TRIMMED initial surface (MOM6 |
| cavity_two_equation | rdb_ocean_cavity_melt | Subroutine | Two-equation variant: the interface salinity is the FAR-FIELD
salinity, |
| cavity_ustar | rdb_ocean_cavity_melt | Subroutine | Interface friction velocity (m/s), |
| cavity_water_column_impl | rdb_ocean_cavity | Subroutine |
|
| cell_area_weighted_sum | rdb_ocean_api | Function |
|
| cfl_cell_value | rdb_ocean_console_stats | Function | Per-cell advective CFL from the C-grid face-velocity pairs and metric
inverses: |
| check_dataovr_file | rdb_config | Subroutine | Existence check for one tag’s file. NOT |
| check_fresh | rdb_ocean_data_input | Subroutine | Ordering guard: |
| check_h_positive_or_die | rdb_ocean_dyn | Subroutine |
|
| check_registered | rdb_ocean_data_input | Subroutine | Fail-loud guard shared by every per-step/fill accessor: |
| check_remap_preconditions_or_die | rdb_ocean_dyn | Subroutine |
|
| check_time_mode | rdb_ocean_data_forcing | Subroutine | Fail loud on a |
| check_unsupported | rdb_nml_schema | Subroutine | Flag unsupported namelist syntax embedded in a bare token. |
| check_vanished_invariant_or_die | rdb_ocean_dyn | Subroutine | Fail-loud TRIPWIRE for invariant I1′ — |
| chksum_active | rdb_ocean_chksum | Function | Gate: enabled AND inside the step window. |
| chksum_argmax | rdb_ocean_chksum | Subroutine | Interior argmax of |arr|: first-encountered strict maximum over
|
| chksum_bt | rdb_ocean_chksum | Subroutine | Sample the BT substep’s 2D in/out fields at the fold seam:
the fold delta is |
| chksum_hotface | rdb_ocean_chksum | Subroutine | Hot-face anatomy at a phase seam: interior argmax |u| and |v|
with the local thickness pair (donor/receiver cells), the
per-face viscous remnant, and the column context (thickness of
the layer below/above at the max face). The forensic question
this answers: WHICH face takes the explicit dt·F kick, is it an
outcrop edge (massive|vanished thickness pair), and is visc_rem
actually small there (i.e. would MOM6’s attenuation have caught
it)? Row format (grep “HOTFACE”):
HOTFACE |
| chksum_loc_extents | rdb_ocean_chksum | Subroutine | Map a grid-location tag ( |
| chksum_loc_interior | rdb_ocean_chksum | Subroutine | Physical-cell index range for a grid-location tag: the ghost
ring excluded. Face locations carry one MORE physical entry
than cell centres in their staggered direction (an x-face array
spans |
| chksum_row | rdb_ocean_chksum | Subroutine | Emit one CHKSUM row (write(*,…) like the KE_ATTR probe — probe output bypasses the logger by design: greppable, no prefix, survives logger-level filtering). |
| chksum_state | rdb_ocean_chksum | Subroutine | Sample the prognostics (h, u, v, every tracer) at a phase seam. Call
AFTER the phase named by |
| chksum_stats_2d | rdb_ocean_chksum | Subroutine | 2D twin of chksum_stats_3d (BT work fields). |
| chksum_stats_3d | rdb_ocean_chksum | Subroutine | Device-side sum/min/max/nonfinite over an explicit-shape 3D
field. No |
| clamp_fraction | rdb_ocean_porous | Function | Clamp an open-area fraction into |
| close_stream | rdb_ocean_diag_netcdf | Subroutine | Flush + close the NetCDF file. Idempotent. |
| closed_faces_update_bt_widths | rdb_ocean_porous | Subroutine | Refresh the BAROTROPIC face widths from the LIVE layer
thicknesses when |
| collect_tokens | rdb_nml_schema | Subroutine | Tokenize a group body up to and including the terminating ‘/’. Token kinds are encoded by their text: “=” , “,” , a quoted or bare value, an identifier, or special markers for unsupported syntax which are flagged here. The ‘/’ ends collection. |
| comm_env_abort | rdb_comm_env | Subroutine | Abort all MPI processes with given error code |
| comm_env_bcast_real | rdb_comm_env | Subroutine | Broadcast a single real(wp) scalar from compute rank 0 Uses compute communicator so I/O server ranks don’t participate. |
| comm_env_compute_comm | rdb_comm_env | Function | Return the compute-only communicator Falls back to comm_world() if comm_env_init has not been called (e.g. tests that use raw MPI_Init). |
| comm_env_compute_rank | rdb_comm_env | Function | Return this process’s rank in the compute communicator |
| comm_env_compute_size | rdb_comm_env | Function | Return number of compute ranks (excludes I/O ranks) |
| comm_env_finalize | rdb_comm_env | Subroutine | Finalise MPI. No-op if the comm-env was never initialised, so it is safe to call unconditionally at program exit – the shared per-test main does this for the few tests that init MPI, and it costs nothing for the rest (and on serial builds via the stub). |
| comm_env_global_comm | rdb_comm_env | Function | Return the cached global (world) communicator. |
| comm_env_init | rdb_comm_env | Subroutine | Phase 1: Initialise MPI, cache world rank/size Call this before reading config. Idempotent: a second call is a no-op, so multiple entry points / testdrive cases can call it. |
| comm_env_io_server_rank | rdb_comm_env | Function | Return world rank of this node’s I/O server (-1 if none) |
| comm_env_is_io_server | rdb_comm_env | Function | Return .true. if this rank is a dedicated I/O server |
| comm_env_node_compute_ranks | rdb_comm_env | Function | Return world ranks of compute processes on this node |
| comm_env_node_n_compute | rdb_comm_env | Function | Return number of compute ranks on this node |
| comm_env_pop_compute_comm | rdb_comm_env | Subroutine | TEST/TOOLING-ONLY. Pops the override pushed by
|
| comm_env_push_compute_comm | rdb_comm_env | Subroutine | TEST/TOOLING-ONLY. Temporarily overrides what
|
| comm_env_rank | rdb_comm_env | Function | Return this process’s world MPI rank |
| comm_env_setup_roles | rdb_comm_env | Subroutine | Phase 2: Assign roles (I/O server vs compute), bind GPU Call this after reading config, before decomp/solver init. |
| comm_env_size | rdb_comm_env | Function | Return total number of MPI processes (including I/O ranks) |
| complete_ocean_create | rdb_ocean_api | Subroutine | Shared tail of |
| compute_bt_rem | rdb_barotropic_coupling | Subroutine | Per-face multiplicative damping factor for the BT-substep velocity
update (linear-drag branch):
bt_rem_face = Htot_face / (Htot_face + r·hbbl·dt_inner)
applied as ubt_new = bt_rem_u·(ubt_old + dt_inner·forces) each inner
step. When the |
| compute_bt_rem_from_visc_rem | rdb_barotropic_coupling | Subroutine | PR-2 (bt-rem-from-av-rem): build |
| compute_bt_rem_wave_drag | rdb_barotropic_coupling | Subroutine | MULTIPLIES the Egbert & Ray (2001) / Jayne & St Laurent (2001)
linear (Rayleigh) barotropic wave drag into |
| compute_channel_drag_rates | rdb_ocean_bottom_drag | Subroutine | Device kernel for the per-layer side-drag Rayleigh rate. See
|
| compute_distributed_drag | rdb_ocean_bottom_drag | Subroutine | HBBL-distributed bottom drag. Mirrors MOM6’s LINEAR_DRAG
and quadratic-with-HBBL formulations: the drag stress is
spread across the bottom |
| compute_e_anom | rdb_barotropic_coupling | Subroutine | SSH anomaly = 0.5·(bt_eta_end + bt_eta) − eta_PF: the part of η the BT substep produced beyond what the slow PGF saw. Zero at steady state. |
| compute_fv_mom6_impl | rdb_ocean_pressure_force | Subroutine | Faithful port of MOM6’s |
| compute_fv_mom6_insitu_pcm_impl | rdb_ocean_pressure_force | Subroutine | FV_MOM6 pressure gradient, constant-by-layer (PCM) T/S, density at
the IN-SITU pressure — MOM6 |
| compute_fv_mom6_reconstruct_impl | rdb_ocean_pressure_force | Subroutine | FV_MOM6 pressure-gradient with in-layer T/S reconstruction. |
| compute_gprime_impl | rdb_ocean_pressure_force | Subroutine | Reduced-gravity / gprime PGF for NK = 2. |
| compute_gtot_faces | rdb_barotropic_coupling | Subroutine | Face-centred depth-weighted column averages of |
| compute_h_face_upstream | rdb_barotropic_coupling | Subroutine | Per-face upstream column-sum thickness |
| compute_ice_totals | rdb_ocean_console_stats | Subroutine | Σ wet_T·areaT, Σ ci·areaT and Σ (mice/ICE_RHO_ICE)·areaT over
PHYSICAL cells (ghosts excluded) — ci/mice from the two-mode
per-cell gather ( |
| compute_ice_totals_efp | rdb_ocean_console_stats | Subroutine | EFP twin of |
| compute_max_cfl | rdb_ocean_console_stats | Function | max (|u_c|·dt·idxT + |v_c|·dt·idyT) over PHYSICAL cells (ghosts excluded). idxT/idyT are metric inverses (= 1/dx,1/dy on uniform). |
| compute_pbce | rdb_barotropic_coupling | Subroutine | Per-layer pressure-anomaly gravity coefficient (m/s²): the response of
layer k’s pressure to a unit change in η. Montgomery form, bottom-up
convention (k=1 bed, k=nz surface):
pbce(:,:,nz) = g·ρ_ref/ρ_0
do k = nz-1, 1, -1
g_prime_K = g·(rho_layer(k+1) − rho_layer(k))/ρ_0
pbce(:,:,k) = pbce(:,:,k+1) + g_prime_K·(e_top_of_k − e_bed)/H
Uniform-density column ⇒ pbce−gtot ≡ 0 ⇒ bc-PGF correction a no-op.
Reads |
| compute_total_h | rdb_ocean_console_stats | Function |
|
| compute_total_h_efp | rdb_ocean_console_stats | Function | EFP twin of |
| compute_total_ke | rdb_ocean_console_stats | Function | Σ 0.5·h·(u_c²+v_c²)·areaT over PHYSICAL cells (ghosts excluded), using cell-centred face averages. Direct OpenACC reduction. |
| compute_total_ke_efp | rdb_ocean_console_stats | Function | EFP twin of |
| compute_total_tracer | rdb_ocean_console_stats | Function |
|
| compute_total_tracer_efp | rdb_ocean_console_stats | Function | EFP twin of |
| compute_w_from_continuity | rdb_ocean_vertical_advection | Subroutine | Fill |
| configure_log_level | rdb_driver | Subroutine | Set logger verbosity from string |
| configure_obc_edge_nodal | rdb_ocean_setup | Subroutine | Bake the C3 nodal/astronomical correction into one OBC edge, then
fail loud (rank-0 error + |
| configure_ocean_bc | rdb_ocean_setup | Subroutine | Populate |
| configure_ocean_bt | rdb_ocean_setup | Subroutine | Barotropic-substep correction knobs (MOM6 frhatu h-weighting, bc-PGF retro-correction, bt_rem_u drag damping, visc_rem joint weight), the BT_cont_type / upstream-PPM h_face workspace allocations, and the rank-0 PGF/BT configuration log lines. |
| configure_ocean_bt_split | rdb_ocean_setup | Subroutine | Auto-derive the barotropic substep count n_inner from the external
gravity-wave CFL (MOM6 set_dtbt) when requested, then latch the
mode-split reference column depth bt_H_ref from the seeded bathymetry.
|
| configure_ocean_cavity | rdb_ocean_setup | Subroutine | Build the static ice-shelf cavity LOAD field
|
| configure_ocean_cavity_melt | rdb_ocean_setup | Subroutine | Configure the ice-shelf basal-melt slot ( |
| configure_ocean_closed_faces | rdb_ocean_setup | Subroutine | Build the static partial-step z-level FACE-CLOSURE mask
( |
| configure_ocean_conv | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_ddiff | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_drag | rdb_ocean_setup | Subroutine | Bottom-drag variant + coefficients, the continuity PPM positivity guard, and the BT-budget diagnostic probe — plus their rank-0 log lines. All knobs default off/zero (bit-identical to pre-knob nmls). |
| configure_ocean_epbl | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_forcing | rdb_ocean_setup | Subroutine | Wire surface wind stress, horizontal-viscosity coefficients, and the Coriolis beta-plane + PV-scheme variant from cfg into the ocean slots. |
| configure_ocean_foxkemper | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_hdiff | rdb_ocean_setup | Subroutine | Along-coordinate tracer Laplacian coefficient ( |
| configure_ocean_k_bot | rdb_ocean_setup | Subroutine | Fill |
| configure_ocean_k_top | rdb_ocean_setup | Subroutine | Fill |
| configure_ocean_kappa_shear | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_land_mask | rdb_ocean_setup | Subroutine | Derive the static C-grid land masks from the seeded T-cell
|
| configure_ocean_lateral | rdb_ocean_setup | Subroutine | Flow-aware lateral-viscosity closure (Leith / Smagorinsky + biharmonic Smagorinsky_AH), the vertical coordinate (VCOORD_* code + z_fixed reference depth), and the PP81/KPP vertical-mixing switches — with their rank-0 log lines. |
| configure_ocean_meke | rdb_ocean_setup | Subroutine | Fill the MEKE slot’s cell-centre |Coriolis| from the same
|
| configure_ocean_metrics | rdb_ocean_setup | Subroutine | Fill the |
| configure_ocean_p_surf | rdb_ocean_setup | Subroutine | Configure the atmospheric surface-pressure loading slot (PR-17):
copy |
| configure_ocean_pgf | rdb_ocean_setup | Subroutine | Pressure-force variant, the reference densities ( |
| configure_ocean_porous | rdb_ocean_setup | Subroutine | Configure porous barriers ( |
| configure_ocean_reference_density | rdb_ocean_setup | Subroutine | Fan the ONE configured Boussinesq reference density out to every
remaining slot that carries its own |
| configure_ocean_sponge | rdb_ocean_setup | Subroutine | Populate |
| configure_ocean_tidal_mixing | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_tides | rdb_ocean_setup | Subroutine | Configure the equilibrium body-force tide slot (C1): parse the
constituent list + reference dates, fill the astronomy catalog
(phase0, nodal f/u), and build the (nx,ny,3) spatial-structure
arrays from |
| configure_ocean_top_drag | rdb_ocean_setup | Subroutine | Ice-shelf TOP drag ( |
| configure_ocean_tracers | rdb_ocean_setup | Subroutine |
|
| configure_ocean_varmix | rdb_ocean_setup | Subroutine | Build the STATIC VarMix grid terms ( |
| configure_ocean_vmix | rdb_ocean_setup | Subroutine | Thermodynamics on/off, velocity-truncation clamp (MAXVEL), DIRECT_STRESS surface-stress distribution, KV_ML_INVZ2 surface-band viscosity, HARMONIC_VISC face-thickness mean, and the DT_THERM thermo/tracer cadence — with their rank-0 log lines. |
| configure_ocean_wave_drag | rdb_ocean_setup | Subroutine | Configure the barotropic linear (Rayleigh) wave-drag piston-velocity
maps (Egbert & Ray 2001; Jayne & St Laurent 2001) — the bulk energy
sink for the barotropic tide, MOM6 |
| configure_ocean_wavespeed | rdb_ocean_setup | Subroutine | Copy the |
| configure_ocean_wetdry | rdb_ocean_setup | Subroutine | Dynamic wetting/drying (docs/ocean_wetdry_plan.md): copy the
|
| configure_ocean_z_fixed_profile | rdb_ocean_setup | Subroutine | Resolve the |
| configure_rho_target | rdb_ocean_setup | Subroutine | Populate the isopycnal |
| console_stats_report | rdb_console_stats | Subroutine | Emit one MOM6-style console block from pre-computed totals. The
caller has already area-weighted + reduced each scalar over its
own state; this routine only latches the t=0 reference (first
call), formats the lines, and runs the panic guards. When a
|
| constant_destroy | rdb_ocean_boundary_data | Subroutine | |
| constant_update | rdb_ocean_boundary_data | Subroutine | |
| continuity_apply_fluxes | rdb_continuity | Subroutine | Test-only (no production caller): unsplit apply, paired with
|
| continuity_apply_fluxes_barotropic | rdb_continuity | Subroutine | Forward-Euler step: h <- h - dt * flux_h. The full split-explicit RK2 scheme (Phase 4) wraps two of these calls around an RK2 averaging pass; for Phase 2 this single-stage step is enough to exercise the kernel under the lake-at-rest, Gaussian-hump, and mass-conservation tests. |
| continuity_apply_meridional | rdb_continuity | Subroutine | Apply the meridional (y-flux) thickness update on top of
the zonally-updated state:
h(i,j,k) ← h(i,j,k) - dt · (Φy(i,j+1,k) - Φy(i,j,k)) · iareaT
Adds the y-divergence to |
| continuity_apply_zonal | rdb_continuity | Subroutine | Apply the zonal (x-flux) thickness update:
h(i,j,k) ← h(i,j,k) - dt · (Φx(i+1,j,k) - Φx(i,j,k)) · iareaT
Overwrites |
| continuity_bytes | rdb_continuity | Function | Counted allocatable footprint of the continuity-PPM slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| continuity_compute_fluxes | rdb_continuity | Subroutine | Test-only (no production caller): the unsplit reference path,
kept as the oracle the split production path is checked against.
Multilayer counterpart to
|
| continuity_compute_fluxes_barotropic | rdb_continuity | Subroutine | PPM face reconstruction + per-face mass flux + cell-centred flux divergence for the barotropic C-grid state. |
| continuity_destroy | rdb_continuity | Subroutine | |
| continuity_enter_data | rdb_continuity | Subroutine | Bare |
| continuity_enter_data_impl | rdb_continuity | Subroutine | |
| continuity_exit_data | rdb_continuity | Subroutine | |
| continuity_exit_data_impl | rdb_continuity | Subroutine | |
| continuity_gm_apply | rdb_continuity | Subroutine | Gent-McWilliams thickness diffusion as its OWN sequential operator:
move |
| continuity_init | rdb_continuity | Subroutine | Allocate the 4 face-reconstruction scratch buffers sized at
(nx_face, ny_face, nz). Default nz=1 covers the barotropic
kernel; passing |
| continuity_meridional_flux | rdb_continuity | Subroutine | Meridional (y-only) PPM reconstruction + per-face mass
flux. Mirror of |
| continuity_step_split | rdb_continuity | Subroutine | Test-only (no production caller): continuity-only split wrapper;
production runs the tracer-interleaved |
| continuity_tracer_drain | rdb_continuity | Subroutine | Phase-2 (6b) windowed horizontal tracer-advection drain. |
| continuity_tracer_step_split | rdb_continuity | Subroutine | Production entry point for the directionally-split continuity + tracer step. Interleaves the two so the CWC discrete theorem holds in the split form: |
| continuity_zonal_flux | rdb_continuity | Subroutine | Zonal (x-only) PPM reconstruction + per-face mass flux on
the multilayer C-grid. Companion to
|
| coord_remap_proc | rdb_ocean_diag_fills | Subroutine | Return the default remap procedure pointer for an output vgrid. Used by the registration path to attach the right conservative remap when a diagnostic selects a non-layer output coordinate. Null for LAYER / unknown (no remap needed). |
| copy3_impl | rdb_ocean_diag_derived | Subroutine | Shared device copy |
| copy_field_3d | rdb_ocean_dyn | Subroutine | src -> dst flat copy on the device. Bare-array shim avoids the deep struct deref inside do-concurrent (tracer hTr lives in an array-of-derived-types registry). |
| coradv_split_impl | rdb_ocean_ke_probe | Subroutine | Device pass: per-face PV/∇KE work split, three regions. Faces attributed to their west/south cell’s region mask. |
| coriolis_adv_apply_tendencies | rdb_coriolis_adv | Subroutine | Per-layer forward-Euler velocity update.
|
| coriolis_adv_apply_tendencies_barotropic | rdb_coriolis_adv | Subroutine | Forward-Euler velocity update from the tendencies the compute step wrote into pv_flux_x / pv_flux_y. u_face_x(i, j) <- u_face_x(i, j) + dt * pv_flux_x(i, j) v_face_y(i, j) <- v_face_y(i, j) + dt * pv_flux_y(i, j) Split-explicit RK2 (Phase 4) wraps a pair of these around an RK2 averaging pass. |
| coriolis_adv_bytes | rdb_coriolis_adv | Function | Counted allocatable footprint of the Coriolis-advection slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| coriolis_adv_compute_tendencies | rdb_coriolis_adv | Subroutine | Per-layer Coriolis + advection dispatcher. Reads
|
| coriolis_adv_compute_tendencies_barotropic | rdb_coriolis_adv | Subroutine | Sadourny (1975) energy-conserving Coriolis + horizontal- momentum-advection form on the barotropic C-grid state: |
| coriolis_adv_compute_tendencies_hk | rdb_coriolis_adv | Subroutine | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. Per-layer PV-conserving Coriolis + horizontal-advection tendency in the Arakawa-Hsu (1990) form (“HK correction”). The wider 3-corner PV stencil at each face suppresses the spurious Hollingsworth-Källén instability that biases the simpler Sadourny 2-corner form at eddy-resolving resolutions. |
| coriolis_adv_compute_tendencies_sadourny | rdb_coriolis_adv | Subroutine | Per-layer Sadourny Coriolis + advection tendency. Same algorithm as the barotropic counterpart, lifted with a k-axis on every loop. Each k-slice is independent (ζ stencil only reads same-k velocities; KE at centre only reads same-k face values), so the do-concurrent kernels parallelise over (k, j, i) for full GPU occupancy. |
| coriolis_adv_compute_tendencies_sadourny_energy | rdb_coriolis_adv | Subroutine | Faithful MOM6 SADOURNY75_ENERGY (Sadourny 1975 energy-conserving)
per-layer Coriolis + horizontal-advection tendency. This is the
TRANSPORT form: the absolute-vorticity flux is the potential
vorticity |
| coriolis_adv_destroy | rdb_coriolis_adv | Subroutine | |
| coriolis_adv_enter_data | rdb_coriolis_adv | Subroutine | |
| coriolis_adv_enter_data_impl | rdb_coriolis_adv | Subroutine | |
| coriolis_adv_exit_data | rdb_coriolis_adv | Subroutine | |
| coriolis_adv_exit_data_impl | rdb_coriolis_adv | Subroutine | |
| coriolis_adv_init | rdb_coriolis_adv | Subroutine | Allocate the 4 scratch buffers sized at
(nx_face / ny_face / corner, nz). Default nz=1 covers the
barotropic kernel; passing |
| coriolis_adv_set_beta_plane | rdb_coriolis_adv | Subroutine | Populate |
| corner_abs_vort | rdb_coriolis_adv | Function | BOUND_CORIOLIS abs_vort recovery: return |
| corner_is_wet | rdb_ocean_porous | Function |
|
| cos_reduced | rdb_safe_math | Function | Horner cos Taylor on |r| ≤ π/4. 9 even-power terms. |
| data_input_blend_2d_impl | rdb_ocean_data_input | Subroutine | |
| data_input_blend_3d_impl | rdb_ocean_data_input | Subroutine | |
| data_input_dims_ok | rdb_ocean_data_input | Function | Self-contained, non-erroring dimension validator — the
single-rank ( |
| data_input_locate | rdb_ocean_data_input | Subroutine | Bracket search + blend weight for a query time |
| data_input_read_slab_impl | rdb_ocean_data_input | Subroutine | Host-ONLY NetCDF slab read for file record |
| data_input_refresh_brackets | rdb_ocean_data_input | Subroutine | Host-side registry walk (outer shim) for field |
| data_input_time_mode_from_string | rdb_ocean_data_input | Function | Translate a namelist/registration-time string into a
|
| data_input_time_mode_is_implemented | rdb_ocean_data_input | Function |
|
| data_input_time_scale_from_units | rdb_ocean_data_input | Subroutine | CF |
| data_input_workspace_cleanup | rdb_ocean_data_input | Subroutine | |
| data_input_workspace_ensure | rdb_ocean_data_input | Subroutine | |
| dataovr_any_tag_set | rdb_config | Function |
|
| dataovr_entry_is_valid | rdb_config | Function |
|
| dataovr_freshwater_needs_components | rdb_config | Function |
|
| dataovr_time_is_valid | rdb_config | Function |
|
| days_since_1900 | rdb_ocean_tide_astro | Function | Days since the astronomical origin 1900-01-01 00:00 UT. |
| decomp_auto_factor | rdb_decomp | Subroutine | Choose px, py to minimise halo communication cost |
| decomp_global_to_local | rdb_decomp | Subroutine | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. Convert global physical indices to local physical indices |
| decomp_init | rdb_decomp | Subroutine | Initialise decomposition for a given rank |
| decomp_init_from_config | rdb_decomp | Subroutine | Initialise decomposition from config, with optional auto-factoring |
| decomp_local_to_global | rdb_decomp | Subroutine | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. Convert local physical indices to global physical indices |
| decomp_log_summary | rdb_decomp | Subroutine | Log the process grid + this rank’s subdomain shape. Call from rank 0 after decomp_init_from_config so a run’s decomposition is visible at startup (the halo perimeter is what auto_factor minimises, printed here as the per-rank interior:ghost ratio cue). |
| decomp_rank_from_coords | rdb_decomp | Function | Compute rank from process grid coordinates (row-major) |
| derive_bt_from_layers | rdb_barotropic_coupling | Subroutine | Populate |
| derived_catalog_name | rdb_ocean_diag_derived | Function | Public only for the unit-test suite. |
| derived_catalog_requires | rdb_ocean_diag_derived | Function | The |
| derived_catalog_size | rdb_ocean_diag_derived | Function | Public only for the unit-test suite. |
| derived_requires_fail | rdb_ocean_diag_derived | Subroutine | Fail loud on a derived diagnostic whose prerequisite knob is
off. Same three-step shape |
| det_sign | rdb_ocean_wave_speed | Function | Sign of det(M(lam)) on rows 2..kc (Sturm/Hallberg recursion). |
| device_num | rdb_mem_report | Function | Active OpenACC device number, or |
| diag_density_levels_ok | rdb_config | Function | .true. iff a density-coordinate diagnostic selection (global
|
| diag_field_stats | rdb_ocean_diag | Subroutine | The |
| diag_io_ok | rdb_ocean_diag_netcdf | Function | Translate a raw |
| diag_mask_bbox | rdb_ocean_diag_mask | Function | Index-based bounding box (test-only). Weight = 1 inside the
closed interval |
| diag_mask_bytes | rdb_ocean_diag_mask | Function | Counted allocatable footprint of one region mask (0 when
unallocated). |
| diag_mask_destroy | rdb_ocean_diag_mask | Subroutine | |
| diag_mask_global | rdb_ocean_diag_mask | Function | Whole-grid mask — all weights = 1. Equivalent to “no mask”; exists for explicit registration and global-integral tests. |
| diag_mask_h_section | rdb_ocean_diag_mask | Function | Horizontal section (test-only): one cell row at |
| diag_mask_v_section | rdb_ocean_diag_mask | Function | Vertical section (test-only): one cell column at |
| diag_mask_vanished_is_on | rdb_ocean_diag_fills | Function | Query the vanished-masking mode (used by the registration path to
tag non-layer diagnostics with |
| diag_reduce_stats | rdb_ocean_diag | Subroutine | Whole-array min / max / sum of a diagnostic buffer in ONE pass, over the FINITE cells only. |
| diag_var_bytes | rdb_ocean_diag | Function | Counted allocatable footprint of ONE registered diagnostic (0 for every buffer that is unallocated). |
| diag_vgrid_from_name | rdb_ocean_engine | Function | Map the |
| diag_xtype_from_name | rdb_ocean_diag_netcdf | Function | Map the |
| diffuse_velocity_columns_impl | rdb_ocean_vdiff | Subroutine | Build + solve the tridiagonal system per face column.
|
| dims_geometry_ok | rdb_ocean_data_input | Function | Low-level geometry check used inline by |
| dispatch_group | rdb_nml_schema | Subroutine | Resolve a group name to known / external / unknown and parse (or skip) its body up to the terminating ‘/’. |
| draft_shape_ok | rdb_ocean_z_init | Function | True iff |
| drain_avail_limit | rdb_continuity | Subroutine | Conservative upfront availability limiter on the accumulated window
transports |
| drain_avail_scale_x | rdb_continuity | Subroutine | Scale each interior x-face transport by its INFLOW-receiving cell’s factor (drain_avail_limit step 2). Face i between cell (i-1) and cell (i): uhtr(i)>0 ⇒ receiver i, uhtr(i)<0 ⇒ receiver i-1. |
| drain_avail_scale_y | rdb_continuity | Subroutine | Meridional analogue of drain_avail_scale_x. Face j between cell (j-1) and cell (j): vhtr(j)>0 ⇒ receiver j, vhtr(j)<0 ⇒ receiver j-1. |
| drain_copy_3d | rdb_continuity | Subroutine | dst = src (explicit-shape device copy). |
| drain_fill_conc | rdb_continuity | Subroutine | Concentration field Tr = hTr / max(hprev, DRAIN_MIN_H) for the WENO drain (the CW path builds the same field as the first loop of drain_parabola_*; factored out so the WENO path can reuse it without the parabola coefficients). |
| drain_limit_x | rdb_continuity | Subroutine | MOM6 hup/hlos/min_h two-test limiter on the zonal face transport (volume units). Face i between cell (i-1) and cell (i). Positive flow (uhr_x(i) > 0), donor = cell (i-1): hup = areaT(i-1)·hprev(i-1) − areaT(i-1)·min_h hlos = max(0, −uhr_x(i-1)) (already-committed outflow via the donor’s OTHER (west) face) cap when (hup−hlos)−uhr < 0 AND 0.5·hup−uhr < 0. Negative flow mirror, donor = cell (i). |
| drain_limit_y | rdb_continuity | Subroutine | Meridional analogue of drain_limit_x. Face j between cell (i,j-1) and cell (i,j); positive donor = cell (i,j-1). |
| drain_parabola_x | rdb_continuity | Subroutine | Rebuild the per-cell zonal CW PPM parabola from the CURRENT Tr =
hTr/hprev (V2 — per pass). Interior cells (3..nx-2) use the
limited PPM edges; the 2-cell boundary band falls back to PCM
(aL=aR=Tr ⇒ swept reduces to the donor value, 1st order),
matching tracer_advect_zonal_one_impl’s near-wall band.
TODO(MOM6-fidelity): MOM6 advect_tracer keeps full PPM up to the wall
(dropping to PCM only at genuine local extrema / zero |
| drain_parabola_y | rdb_continuity | Subroutine | Meridional analogue of drain_parabola_x. aL = south-edge, aR = north-edge value of each cell. Mirror-T at land neighbours (C2); bit-identical for all-wet. |
| drain_reconstruct_hprev | rdb_continuity | Subroutine | hprev = max(0, areaT·h_end + div(uhtr,vhtr)) · iareaT, then the
vanishing-layer hatch |
| drain_rescale_hTr | rdb_continuity | Subroutine | Re-weight a tracer’s thickness-weighted content onto a new layer thickness, holding the CONCENTRATION fixed: |
| drain_rescale_hTr_budget | rdb_continuity | Subroutine |
|
| drain_subtract_3d | rdb_continuity | Subroutine | fld = fld - sub (uhr -= uhh). |
| drain_swept_flux_x | rdb_continuity | Subroutine | MOM6 swept-average CW parabola flux for the zonal faces. Face i, donor = cell (i-1) if uhh>0 else cell (i). Per-pass Courant CFL = |uhh| / (areaT·hprev) on the donor, clamped [0,1]. uhh >= 0: F = uhh·( aR − 0.5·CFL·((aR−aL) − a6·(1 − ⅔·CFL)) ) uhh < 0: F = uhh·( aL + 0.5·CFL·((aR−aL) + a6·(1 − ⅔·CFL)) ) |
| drain_swept_flux_x_weno | rdb_continuity | Subroutine | WENO analogue of drain_swept_flux_x: swept-average zonal face flux
from the concentration field |
| drain_swept_flux_y | rdb_continuity | Subroutine | Meridional analogue of drain_swept_flux_x. |
| drain_swept_flux_y_weno | rdb_continuity | Subroutine | Meridional analogue of drain_swept_flux_x_weno. |
| drain_update_h_x | rdb_continuity | Subroutine | hprev(i) -= (uhh(i+1) - uhh(i))·iareaT (volume div → thickness). |
| drain_update_h_y | rdb_continuity | Subroutine | Meridional analogue of drain_update_h_x. |
| drain_update_tracer_x | rdb_continuity | Subroutine | hTr(i) -= (F(i+1) - F(i))·iareaT (zonal flux divergence; dt is already baked into uhh⊂uhtr, so no dt here). |
| drain_update_tracer_x_budget | rdb_continuity | Subroutine |
|
| drain_update_tracer_y | rdb_continuity | Subroutine | Meridional analogue of drain_update_tracer_x. |
| drain_update_tracer_y_budget | rdb_continuity | Subroutine | Meridional analogue of |
| drain_wrap_centre | rdb_continuity | Subroutine | Periodic wrap (+ north fold) of a cell-centred drain field.
|
| drain_wrap_face_x | rdb_continuity | Subroutine | Periodic wrap (+ north fold) of an x-face drain field (nx+1,ny,nz). |
| drain_wrap_face_y | rdb_continuity | Subroutine | Periodic wrap (+ north fold) of a y-face drain field (nx,ny+1,nz). |
| drain_zero_3d | rdb_continuity | Subroutine | fld = 0. |
| driver_run | rdb_driver | Subroutine | Compute-rank entry point. Runs the Arakawa C-grid +
continuity-PPM split-RK2 ocean dynamical core in |
| driver_run_ocean | rdb_driver | Subroutine | Run the full compute-rank lifecycle for the ocean regime. |
| driver_validate | rdb_driver | Subroutine |
|
| efp_bin1_within_transport_bound | rdb_efp | Function | Bin 1 is NOT bounded by |
| efp_carry | rdb_efp | Subroutine | Renormalise bins 6..2 into |
| efp_decompose | rdb_efp | Subroutine | Greedy sign-magnitude fixed-point decomposition of |
| efp_decompose_impl | rdb_ocean_console_stats | Subroutine | In-module |
| efp_from_real | rdb_efp | Function |
|
| efp_from_transport | rdb_efp | Subroutine | Inverse of |
| efp_minus | rdb_efp | Function | Exact bin-wise integer subtraction, regularised. See |
| efp_plus | rdb_efp | Function | Exact bin-wise integer addition, REGULARISED (not merely
carried). Order-invariant BIT-FOR-BIT:
|
| efp_real_diff | rdb_efp | Function |
|
| efp_regularize | rdb_efp | Subroutine |
|
| efp_summands_guard | rdb_ocean_console_stats | Subroutine | Fail-loud (never silent) guard: a k-slab’s physical cell count
must not exceed |
| efp_to_real | rdb_efp | Function |
|
| efp_to_transport | rdb_efp | Subroutine | Pack a list of |
| emit_drift_line | rdb_console_stats | Subroutine | One |
| emit_row | rdb_ocean_bt_budget_probe | Subroutine | |
| enforce_vanished_one_impl | rdb_multilayer_state | Subroutine | Flat-impl of the I1′ sweep for ONE tracer. Explicit-shape dummies so NVHPC does not walk a descriptor per launch. |
| engine_configure_diag | rdb_ocean_engine | Subroutine | Register the default diag-manager variable set and open the
per-rank NetCDF stream. No-op when diagnostics are disabled.
|
| engine_enter_data | rdb_ocean_engine | Subroutine | Map the ocean state onto the device, then (when |
| engine_exit_data | rdb_ocean_engine | Subroutine | Unwind device residency. Idempotent-adjacent: caller checks
|
| engine_setup | rdb_ocean_engine | Subroutine | Host-side setup: decomposition -> grid -> god state -> IC seed
-> restart (optional) -> the 21 |
| engine_step | rdb_ocean_engine | Subroutine | Advance one outer step at fixed |
| engine_step_finalize | rdb_ocean_engine | Subroutine | Second half of one outer step: derive |
| engine_step_ice | rdb_ocean_engine | Subroutine | P2.4b: sea-ice per-step physics — ocean-side frazil
accumulation, EVP dynamics (every outer step, independent of
the thermo cadence: the ice’s own fast/slow split) plus the
resulting ice->ocean stress coupling, and, at thermo cadence
( |
| engine_teardown | rdb_ocean_engine | Subroutine | Close the diag NetCDF stream (if one was opened), release the
process-global ocean-halo and fold-exchange module state, then release host-side
allocations. Call after |
| ensure_catalog_initialised | rdb_ocean_diag_derived | Subroutine | Populate the catalog at runtime (procedure pointers can’t be a parameter constructor). Idempotent. |
| ensure_directory_exists | rdb_io_netcdf | Subroutine | Create |
| enum_parse | rdb_nml_schema | Subroutine | |
| eos_apply_tfreeze_set | rdb_eos | Subroutine | Write the named liquidus coefficient SET onto the EOS handle.
Called once, at configure time, from the earliest
|
| eos_buoyancy_coeffs | rdb_eos | Subroutine | Thermal-expansion and haline-contraction coefficients of the
ACTIVE equation of state at a point, in the SAME DIMENSIONAL
convention the |
| eos_compute_arrays | rdb_eos | Subroutine | Variant dispatch on bare 3D arrays — the state-agnostic body of
|
| eos_density_derivs | rdb_eos | Subroutine | Density sensitivities |
| eos_density_point | rdb_eos | Function | Scalar density evaluation at a point — the same formulas the
3D |
| eos_density_specvol_derivs | rdb_eos | Subroutine |
|
| eos_destroy | rdb_eos | Subroutine | |
| eos_freezing_point | rdb_eos | Function | Seawater freezing point T_f (degC) at salinity |
| eos_init | rdb_eos | Subroutine | |
| eos_linear_impl | rdb_eos | Subroutine | Linear two-tracer EOS, flat-impl form: |
| eos_roquet_spv_impl | rdb_eos | Subroutine | Roquet et al. (2015) SpV EOS evaluated at a single reference
pressure |
| eos_specvol_derivs | rdb_eos | Subroutine | Analytic specific-volume sensitivities dSV/dT and dSV/dS (SV = 1/rho) at a point. Needed by the EPBL energy bookkeeping (pressure-weighted PE-per-unit-tracer-change weights) and kappa-shear buoyancy — dSV/dX = -(1/rho^2) d(rho)/dX. |
| eos_validate | rdb_eos | Subroutine | Host-side fail-loud gate over the device-supported variant
set. Device point routines ( |
| eos_wright_impl | rdb_eos | Subroutine | Wright (1997) rational EOS evaluated at a single reference
pressure |
| eos_wright_pgf_column_sweep_impl | rdb_eos | Subroutine | FV-Wright PGF column sweep. Top-down per-column traversal
that simultaneously produces the hydrostatic pressure stack
|
| epbl_column_kernel | rdb_ocean_epbl | Subroutine | Per-column EPBL solve. One |
| epbl_compute | rdb_ocean_epbl | Subroutine | Run EPBL over the domain: fill |
| epbl_find_mstar | rdb_ocean_epbl | Subroutine | mstar = (mechanical TKE available for entrainment) / u^3. Schemes: constant; OM4 Ekman/Obukhov balance; RH18 fits. All followed by the optional convective reduction (mstar_conv_adj in [0,1]; the u=0 corner multiplies by (1 - adj), matching the reference behaviour). |
| epbl_lf17_la | rdb_ocean_epbl | Function | Turbulent Langmuir number La = sqrt(u*/u_s_SL): the Stokes
drift averaged over the surface layer of thickness |
| epbl_lf17_wave_state | rdb_ocean_epbl | Subroutine | LF17 statistical wave state from the water-side friction velocity alone: COARE 3.5 fixed-point inversion u* -> U10 (Edson et al. 2013), then the Pierson-Moskowitz-based surface Stokes drift and Phillips peak wavenumber (Li & Fox-Kemper 2017; Breivik et al. 2016). BLD-independent — call once per column, outside the MLD iteration. |
| epbl_lt_enhance | rdb_ocean_epbl | Subroutine | Apply the Langmuir enhancement to mstar (Reichl & Li 2019; Li et al. 2016 stability modification). The modified Langmuir number folds the boundary-layer stability regime in via Ekman / Obukhov / MLD length-scale ratios, split by the sign of the surface buoyancy flux; all-zero lac coefficients give La_mod = La exactly. |
| epbl_merge_into_kv_kt | rdb_ocean_epbl | Subroutine | Fold the EPBL diffusivity into the vmix interface fields.
Called EVERY stage (the interior closure rewrites kv/kt each
stage; |
| epbl_mixlen_shape | rdb_ocean_epbl | Function | Mixing-length shape factor in [translay_scale, 1]: 1 at the
surface, decaying to the transition-layer floor at the MLD.
|
| equilibrium_arguments | rdb_ocean_tide_astro | Subroutine | Equilibrium argument |
| error_ring_clear | rdb_error_ring | Subroutine | Reset the ring to empty. |
| error_ring_count | rdb_error_ring | Function | Number of live messages in the ring (0..ERROR_RING_SLOTS). |
| error_ring_get | rdb_error_ring | Function | Message at ring-relative index |
| error_ring_push | rdb_error_ring | Subroutine | Push one message; |
| evp_average_stress_impl | rdb_ice_evp | Subroutine |
|
| evp_build_masks_impl | rdb_ice_evp | Subroutine |
|
| evp_copy_u_impl | rdb_ice_evp | Subroutine |
|
| evp_fill_cell_fields_impl | rdb_ice_evp | Subroutine | Interior copy of the gathered |
| evp_mi_face_impl | rdb_ice_evp | Subroutine |
|
| evp_pres_mice_impl | rdb_ice_evp | Subroutine |
|
| evp_project_ci_impl | rdb_ice_evp | Subroutine | PR 36: |
| evp_q_and_mi_ratio_impl | rdb_ice_evp | Subroutine |
|
| evp_sh_dd_dt_impl | rdb_ice_evp | Subroutine | sh_Dt / sh_Dd at cells (:1053-1061). |
| evp_sh_ds_impl | rdb_ice_evp | Subroutine | sh_Ds at corners (:1045-1050) — requirement (4): the SINGLE
scalar no-slip factor |
| evp_str_s_relax_impl | rdb_ice_evp | Subroutine | str_s relax (:1137-1143). Corners in [1,nx+1]x[1,ny+1]; the 4
surrounding T-cells at an array-edge corner are handled by
|
| evp_stress_relax_impl | rdb_ice_evp | Subroutine | str_d/str_t semi-implicit relax (:1124-1134), non-weak_low_shear branch only. |
| evp_truncate_final_impl | rdb_ice_evp | Subroutine | PR 36: the FINAL CFL clip (SIS2 |
| evp_truncate_velocity_impl | rdb_ice_evp | Subroutine | PR 36: the shared CFL-clip algebra – the transport-CFL bound on
the ice velocity (SIS2 |
| evp_u_momentum_impl | rdb_ice_evp | Subroutine | u-momentum (:1172-1231, requirement 1: fxic_now carries the FULL
str_t force term). Loop over u-faces |
| evp_v_momentum_impl | rdb_ice_evp | Subroutine | v-momentum (:1257-1334, mirror of u). D4: reads |
| evp_workspace_bytes | rdb_ice_state | Function | Counted allocatable footprint of the EVP scratch (0 when
unallocated, i.e. whenever |
| evp_workspace_destroy | rdb_ice_state | Subroutine | Reverse of |
| evp_workspace_enter_data | rdb_ice_state | Subroutine | |
| evp_workspace_enter_data_impl | rdb_ice_state | Subroutine | Attach the scratch to the device with |
| evp_workspace_exit_data | rdb_ice_state | Subroutine | |
| evp_workspace_exit_data_impl | rdb_ice_state | Subroutine | Reverse of |
| evp_workspace_init | rdb_ice_state | Subroutine | Allocate the EVP scratch for an |
| evp_wrap_corner_impl | rdb_ice_evp | Subroutine | Periodic ghost-wrap for a corner-staggered field (e.g. |
| evp_zero_massless_velocity_impl | rdb_ice_evp | Subroutine | SIS2 :899-907 — zero ice velocities where BOTH neighbouring cells are massless (or the face is masked/land). |
| evp_zero_stress_impl | rdb_ice_evp | Subroutine | Zero the subcycle-averaged ice->ocean stress accumulators via an
explicit |
| evp_zeta_impl | rdb_ice_evp | Subroutine | del_sh / zeta (:1082-1095). |
| ew_rank_east | rdb_ocean_halo | Function | East neighbour rank with periodic wrap-around. |
| ew_rank_west | rdb_ocean_halo | Function | West neighbour rank with periodic wrap-around. |
| fac_weno | rdb_coriolis_adv | Function | MOM6 |
| face_depth_mean_rem_u | rdb_barotropic_coupling | Subroutine |
|
| face_depth_mean_rem_v | rdb_barotropic_coupling | Subroutine | Symmetric v-face counterpart of |
| face_depth_mean_u | rdb_barotropic_coupling | Subroutine | Depth-average a u-face 3D field, weighted by the per-layer face
thickness |
| face_depth_mean_v | rdb_barotropic_coupling | Subroutine | Symmetric v-face counterpart of |
| face_thick | rdb_ocean_vdiff | Function | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. Face-thickness for the vdiff implicit operator. |
| fail | rdb_error_ring | Subroutine | Push |
| fill_2d_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_age | rdb_ocean_diag_fills | Subroutine | Layer ideal age = tracers(idx_age)%hTr / h_layer (s). Read-out only;
registered when |
| fill_and_remap | rdb_ocean_diag | Subroutine | Invoke the var’s |
| fill_bathymetry_ghosts_array | rdb_bathymetry | Subroutine | Fill ghost cell bathymetry by constant extrapolation from the nearest interior cell. This ensures boundary flux computations see a consistent bottom elevation across the ghost-interior interface. Works on a target 2D array directly so both the coastal and ocean barotropic slots can reuse it. |
| fill_bbl_constants | rdb_ocean_vdiff | Subroutine | The historical constant-piston glue ( |
| fill_buffer_impl | rdb_ocean_diag | Subroutine | Device-side scalar fill. Used by reset_accumulator and (when
|
| fill_cavity_melt_status | rdb_ocean_diag_derived | Subroutine | Per-column |
| fill_coriolis_centre | rdb_ocean_setup | Subroutine | Fill a cell-centre |Coriolis| array via |
| fill_coriolis_corner | rdb_ocean_setup | Subroutine | Fill a C-grid corner Coriolis array via the single
generator-driven routine |
| fill_exch_vel_s | rdb_ocean_diag_derived | Subroutine | Haline exchange velocity |
| fill_exch_vel_t | rdb_ocean_diag_derived | Subroutine | Thermal exchange velocity |
| fill_f_corner_seam_ghosts | rdb_ocean_setup | Subroutine | Periodic-x wrap + north-fold (scalar copy) of the static corner Coriolis array for a tripolar grid. f is reflection-invariant (same latitude at the conjugate corner), so negate=.false. |
| fill_getter_2d | rdb_ocean_api | Subroutine | 2D counterpart of |
| fill_getter_3d | rdb_ocean_api | Subroutine | Shared tail of every 3D P2 getter: base-address |
| fill_ghost_east_res | rdb_ocean_obc_baroclinic | Subroutine | Reservoir-based ghost fill, east edge. |
| fill_ghost_east_sign | rdb_ocean_obc_baroclinic | Subroutine | Sign-switch ghost fill for the east edge. |
| fill_ghost_north_res | rdb_ocean_obc_baroclinic | Subroutine | Reservoir-based ghost fill, north edge. |
| fill_ghost_north_sign | rdb_ocean_obc_baroclinic | Subroutine | Sign-switch ghost fill for the north edge. |
| fill_ghost_south_res | rdb_ocean_obc_baroclinic | Subroutine | Reservoir-based ghost fill, south edge. |
| fill_ghost_south_sign | rdb_ocean_obc_baroclinic | Subroutine | Sign-switch ghost fill for the south edge. |
| fill_ghost_west_res | rdb_ocean_obc_baroclinic | Subroutine | Reservoir-based ghost fill, west edge. hTr_ghost = tres_w(j, k, it) * h_ghost — unconditional. |
| fill_ghost_west_sign | rdb_ocean_obc_baroclinic | Subroutine | Sign-switch ghost fill for the west edge. |
| fill_gpu | rdb_array_utils | Interface | |
| fill_gpu_1d | rdb_array_utils | Subroutine | |
| fill_gpu_2d | rdb_array_utils | Subroutine | |
| fill_gpu_3d | rdb_array_utils | Subroutine | |
| fill_h_layer | rdb_ocean_diag_derived | Subroutine | |
| fill_h_layer_ghosts | rdb_ocean_obc_baroclinic | Subroutine | Zero-gradient fill of h_layer ghosts at open-ish edges. |
| fill_haline_driving | rdb_ocean_diag_derived | Subroutine |
|
| fill_ice_conc | rdb_ocean_diag_fills | Subroutine | Total sea-ice concentration (0..1) at T-centres — the two-mode
per-cell gather of |
| fill_ice_conc_thick_impl | rdb_ocean_diag_fills | Subroutine | Shared conc/thick device kernel. Inlines the two-mode gather of
|
| fill_ice_speed | rdb_ocean_diag_derived | Subroutine | Sea-ice drift speed |u_ice| at T-centres (m/s) — C-face pairs
averaged to centre, 2-D twin of the ocean |
| fill_ice_speed_impl | rdb_ocean_diag_derived | Subroutine | |
| fill_ice_thick | rdb_ocean_diag_fills | Subroutine | Grid-mean sea-ice thickness (m) at T-centres: mice/ICE_RHO_ICE
(MOM6 effective-thickness convention) — the two-mode per-cell
gather of |
| fill_ice_u | rdb_ocean_diag_derived | Subroutine | Eastward sea-ice velocity at T-centres (m/s) — u-face pair
averaged to centre, 2-D twin of |
| fill_ice_u_impl | rdb_ocean_diag_derived | Subroutine | |
| fill_ice_v | rdb_ocean_diag_derived | Subroutine | Northward sea-ice velocity at T-centres (m/s) — v-face pair
averaged to centre, 2-D twin of |
| fill_ice_v_impl | rdb_ocean_diag_derived | Subroutine | |
| fill_kd_epbl | rdb_ocean_diag_fills | Subroutine | EPBL interface diffusivity (m^2/s). Buffer is layer-shaped (nx, ny, nz); we emit the value at the BOTTOM interface of each layer (kd_int(:, :, k) convention), losing only the identically-zero surface interface. |
| fill_kd_epbl_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_kd_kshear | rdb_ocean_diag_fills | Subroutine | Kappa-shear interface diffusivity (m^2/s). Buffer is layer-shaped (nx, ny, nz); we emit the value at the BOTTOM interface of each layer (kd_int(:, :, k) convention), losing only the identically-zero surface interface. |
| fill_ke | rdb_ocean_diag_fills | Subroutine | KE per cell on the C-grid: KE = 0.25·(u_W² + u_E² + v_S² + v_N²), the discrete C-grid KE-density (consistent with the Coriolis KE_ARAKAWA stencil). Public only for the unit-test suite. |
| fill_ke_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_ke_total | rdb_ocean_diag_derived | Subroutine | Depth-integrated kinetic energy at each cell: KE_total(i, j) = Σ_k 0.5 · h_layer(k) · (u_c² + v_c²) |
| fill_ke_total_impl | rdb_ocean_diag_derived | Subroutine | |
| fill_kv_scalar_buf | rdb_ocean_vdiff | Subroutine | Broadcast the scalar viscosity |
| fill_melt | rdb_ocean_diag_derived | Subroutine | Basal melt mass flux (kg m-2 s-1), positive = melting. |
| fill_melt_m_per_yr | rdb_ocean_diag_derived | Subroutine | Basal melt rate in the ISOMIP+ reporting unit (m yr-1 of
ice-equivalent freshwater) — see |
| fill_mld_density | rdb_ocean_diag_derived | Subroutine | Mixed-layer depth via the de Boyer Montégut threshold. |
| fill_mld_density_impl | rdb_ocean_diag_derived | Subroutine | Per-column scan from the first LIVE layer ( |
| fill_mld_epbl | rdb_ocean_diag_fills | Subroutine | EPBL active-mixing-layer depth (m) into the k=1 plane. |
| fill_pseudo_salt | rdb_ocean_diag_fills | Subroutine | Layer pseudo-salt = tracers(idx_pseudo_salt)%hTr / h_layer (psu).
Read-out only; registered when |
| fill_pseudo_salt_diff | rdb_ocean_diag_fills | Subroutine | Pseudo-salt deviation D = pseudo_salt - S (psu): a direct, measured proxy for how far the passive-tracer transport path has drifted from the active-tracer (salinity) path. Gated on BOTH indices being registered. |
| fill_rho_layer | rdb_ocean_diag_derived | Subroutine | In-situ density per layer — direct read of the EOS slot (driver
must have run |
| fill_rho_layer_impl | rdb_ocean_diag_derived | Subroutine |
|
| fill_salinity | rdb_ocean_diag_fills | Subroutine | Layer salinity, same pattern as temperature. |
| fill_sbdry | rdb_ocean_diag_derived | Subroutine | Interface salinity |
| fill_ssh | rdb_ocean_diag_fills | Subroutine | SSH = total column thickness minus bathymetry depth, into the k=1
plane of |
| fill_ssh_bt_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_ssh_ml_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_tbdry | rdb_ocean_diag_derived | Subroutine | Interface temperature |
| fill_temperature | rdb_ocean_diag_fills | Subroutine | Layer temperature = tracers(idx_temperature)%hTr / h_layer. Tracer-registry indirection dereferenced HOST-side before the flat-impl kernel (array-of-DT deep deref blocks NVHPC device codegen). Public only for the unit-test suite. |
| fill_tfreeze_ib | rdb_ocean_diag_derived | Subroutine |
|
| fill_thermal_driving | rdb_ocean_diag_derived | Subroutine |
|
| fill_tracer_ghosts_meridional | rdb_ocean_obc_baroclinic | Subroutine | Upwind-aware tracer ghost fill for south and north open edges. |
| fill_tracer_ghosts_zerograd | rdb_ocean_obc_baroclinic | Subroutine | Zero-gradient CONCENTRATION fill of a tracer’s hTr ghosts at open-ish edges over the FULL cross-extent (ghost×ghost corners included): hTr_ghost = (hTr_int / h_int) * h_ghost. Runs BEFORE the upwind-aware per-edge fill, so corners keep this zero-gradient value (no corner T/S blow-up under inflow). Same gating/corner coverage as fill_h_layer_ghosts. |
| fill_tracer_ghosts_zonal | rdb_ocean_obc_baroclinic | Subroutine | Upwind-aware tracer ghost fill for west and east open edges. West inflow : u(i_w,j,k) > 0 → ghost = clamped_tr * h_ghost West outflow : u(i_w,j,k) <= 0 → ghost = interior (zero-gradient) East inflow : u(i_e,j,k) < 0 East outflow : u(i_e,j,k) >= 0 |
| fill_tracer_impl | rdb_ocean_diag_fills | Subroutine | Shared flat-impl for any tracer concentration field. |
| fill_transport_x | rdb_ocean_diag_derived | Subroutine | Depth-integrated zonal transport (m²/s): T_x(i, j) = Σ_k h_c · u_c (cell-centre form) |
| fill_transport_x_impl | rdb_ocean_diag_derived | Subroutine | |
| fill_transport_y | rdb_ocean_diag_derived | Subroutine | Depth-integrated meridional transport (m²/s) — mirror of x. |
| fill_transport_y_impl | rdb_ocean_diag_derived | Subroutine | |
| fill_u_centre | rdb_ocean_diag_fills | Subroutine | C-grid u-face → cell centre by simple 2-point average. |
| fill_u_centre_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_ustar_shelf | rdb_ocean_diag_derived | Subroutine | Melt friction velocity |
| fill_uv_layer_ghosts | rdb_ocean_obc_baroclinic | Subroutine | Zero-gradient fill of per-layer face velocities into the OPEN-edge ghost region, corners included. u_layer (nx_total+1, ny_total, nz); v_layer (nx_total, ny_total+1, nz). x-pass over the full cross extent; y-pass clipped to the physical span unless the adjacent x-edge is open. Gated on open-ish tags ⇒ WALL/PERIODIC ⇒ no DC ⇒ bit-identical. |
| fill_v_centre | rdb_ocean_diag_fills | Subroutine | |
| fill_v_centre_impl | rdb_ocean_diag_fills | Subroutine | |
| fill_vorticity_z | rdb_ocean_diag_derived | Subroutine | The model’s OWN relative vorticity ζ = ∂v/∂x − ∂u/∂y, at the same
C-grid corners |
| fill_vorticity_z_impl | rdb_ocean_diag_derived | Subroutine | Cell-centred relative vorticity that MIRRORS the dynamics’ own
corner ζ bit-for-bit — the shared |
| fill_water_column | rdb_ocean_diag_derived | Subroutine | Water-column thickness under the shelf, |
| fill_z_draft | rdb_ocean_diag_derived | Subroutine | Ice-shelf draft (m, POSITIVE DOWN from the geoid) — geometry,
so it needs only |
| fill_zero_impl | rdb_ocean_diag_fills | Subroutine | Device-side zero of |
| finalise_accumulator | rdb_ocean_diag | Subroutine | Copy the accumulator into |
| finalise_copy_impl | rdb_ocean_diag | Subroutine | |
| finalise_scale_impl | rdb_ocean_diag | Subroutine | Device-side |
| find_duhbt_du | rdb_bt_cont_type | Function | Marginal zonal face area |
| find_dvhbt_dv | rdb_bt_cont_type | Function | Meridional mirror of |
| find_or_create_region | rdb_profiler | Function | |
| find_uhbt | rdb_bt_cont_type | Function | Zonal mass transport through a u-face given face velocity |
| find_var | rdb_ocean_z_init | Subroutine | Resolve a variable id: try the namelist |
| find_vhbt | rdb_bt_cont_type | Function | Meridional mirror of |
| fmt_int | rdb_nml_schema | Function | Format an integer. |
| fmt_json_bool | rdb_nml_schema | Function | Format a logical as a JSON |
| fmt_logical | rdb_nml_schema | Function | Format a logical as namelist |
| fmt_real | rdb_nml_schema | Function | Format a real in a stable, namelist-valid exponential form. |
| fold_centre_2d | rdb_ocean_fold_exchange | Subroutine | Cell-centred 2D north fold (copy). |
| fold_centre_3d | rdb_ocean_fold_exchange | Subroutine | Cell-centred 3D north fold (copy). |
| fold_corner_2d | rdb_ocean_fold_exchange | Subroutine | SW-corner 2D north fold (+ fold-line projection); |
| fold_north_centre | rdb_ocean_fold | Interface | |
| fold_north_centre_2d | rdb_ocean_fold | Subroutine | Fill the north halo of a 2D cell-centred field by the T-fold. |
| fold_north_centre_3d | rdb_ocean_fold | Subroutine | 3D T-fold halo-fill — identical per level. |
| fold_north_corner | rdb_ocean_fold | Interface | |
| fold_north_corner_2d | rdb_ocean_fold | Subroutine | 2D Bu-corner fold: north-halo fill + on-line projection. |
| fold_north_u_face | rdb_ocean_fold | Interface | |
| fold_north_u_face_2d | rdb_ocean_fold | Subroutine | Fill the north halo of a 2D x-face (Cu) field. Sign-flipped by
default ( |
| fold_north_u_face_3d | rdb_ocean_fold | Subroutine | 3D x-face (Cu) north-halo fill, per-level identical. See the 2D
twin for the |
| fold_north_v_face | rdb_ocean_fold | Interface | |
| fold_north_v_face_2d | rdb_ocean_fold | Subroutine | 2D y-face (Cv) fold: north-halo fill + on-line antisymmetric
projection at the fold row. Used for the barotropic |
| fold_north_v_face_3d | rdb_ocean_fold | Subroutine | 3D y-face (Cv) fold: north-halo fill + on-line antisymmetric
projection at the fold row. See the 2D twin for the |
| fold_plan_build | rdb_ocean_fold_plan | Subroutine | Build tile |
| fold_plan_destroy | rdb_ocean_fold_plan | Subroutine | Free the plan’s lists and reset it to the empty default. Safe on a plan that was never built. |
| fold_receiver_entries | rdb_ocean_fold_plan | Subroutine | Every destination column |
| fold_row_map | rdb_ocean_fold_plan | Subroutine | Storage rows of message row |
| fold_sample | rdb_ocean_diag | Subroutine | Combine the current |
| fold_sample_masked_impl | rdb_ocean_diag | Subroutine | Masked fold — multiplies sample by |
| fold_sample_unmasked_impl | rdb_ocean_diag | Subroutine | Whole-buffer fold without a region mask. One |
| fold_stagger_family | rdb_ocean_fold_plan | Function | Column family of a stagger ( |
| fold_stagger_nrows | rdb_ocean_fold_plan | Function | Rows a stagger moves per column: |
| fold_tile_extent | rdb_ocean_fold_plan | Subroutine | First global cell |
| fold_tile_owner | rdb_ocean_fold_plan | Function | Tile holding global cell |
| fold_u_2d | rdb_ocean_fold_exchange | Subroutine | x-face (u) 2D north fold (negate). |
| fold_u_3d | rdb_ocean_fold_exchange | Subroutine | x-face (u) 3D north fold (negate). |
| fold_v_2d | rdb_ocean_fold_exchange | Subroutine | y-face (v) 2D north fold (negate + fold-line projection). |
| fold_v_3d | rdb_ocean_fold_exchange | Subroutine | y-face (v) 3D north fold (negate + fold-line projection). |
| forcing_components_need_thermo | rdb_config | Function |
|
| fv_mom6_mass_weights | rdb_ocean_pressure_force | Subroutine | MOM6 near-bottom |
| gate_clause | rdb_ocean_diag_derived | Function | Render |
| get_clamped_tracer | rdb_ocean_obc_baroclinic | Function | Safe accessor: return clamped_tracer(it) or 0 if unallocated/out of range. |
| get_wall_time | rdb_profiler | Function | |
| gm_block_below_bed | rdb_ocean_gm | Function | MOM6 bottom-blocking (“Avoid moving dense water upslope from below the
level of the bottom on the receiving side”). |
| gm_clamp_khth | rdb_ocean_gm | Subroutine | Fill the 2D face KhTh fields from the per-face base, CFL-clamped
per face (native u-face idxCu/idyCu, v-face idxCv/idyCv) and zeroed
on wall faces. Base = VarMix |
| gm_clamp_slope | rdb_ocean_gm | Function | Clamp a slope to +/- smax (bounded slope for the PE release).
A non-finite slope reads as 0 (no release) rather than being
laundered into |
| gm_column_x | rdb_ocean_gm | Subroutine | u-face GM streamfunction + bolus-transport column recurrence.
Interior u-face (i=2..nx) pairs columns iw=i-1 (west) and i (east).
Bottom-up sweep: interior interfaces Kr=2 (bed-most) -> nz
(surface-most), uhtot=0 at the bed; the surface BC (Sfn=0 at
Kr=nz+1) is closed after the loop by |
| gm_column_y | rdb_ocean_gm | Subroutine | v-face GM column recurrence — mirror of |
| gm_compute_impl | rdb_ocean_gm | Subroutine | Flat-impl GM kernel. Passes: CFL-clamp the 2D face KhTh, the
u-face and v-face column recurrences into |
| gm_compute_transports | rdb_ocean_gm | Subroutine | Fill |
| gm_h_frac | rdb_ocean_gm | Function | Donor mass fraction |
| gm_pe_release | rdb_ocean_gm | Subroutine | GM potential-energy release at cell centres for the MEKE seam:
gm_src = 1/4 * Sum_k rho0 * (KHSlope^2N^2) * h
over the four straddling faces, summed over interior interfaces;
slope clamped to |
| gm_pos_n2 | rdb_ocean_gm | Function |
|
| gm_refreshes_varmix | rdb_ocean_dyn | Function |
|
| gm_tracer_advect_x | rdb_continuity | Subroutine | Zonal PPM tracer advection of every horizontally-advected tracer by
the GM bolus flux |
| gm_tracer_advect_y | rdb_continuity | Subroutine | Meridional twin of |
| gprime_nz_is_supported | rdb_ocean_pressure_force | Function |
|
| great_circle | rdb_ocean_metrics | Function | Great-circle distance (m) between two geographic points (deg), via the haversine formula (numerically stable for short arcs). |
| gregorian_day_number | rdb_ocean_tide_astro | Function | Proleptic-Gregorian Julian Day Number (integer, at 00:00 UT). Fliegel & Van Flandern algorithm. |
| grid_init | rdb_grid | Subroutine | |
| group_add | rdb_nml_schema | Subroutine | Add a key to the group (sourced-allocate into a box). Error stop on duplicate key name (programming error). |
| group_find_key | rdb_nml_schema | Function | Index of |
| group_key_list | rdb_nml_schema | Function | All key names of a group as a char array. |
| group_name_list | rdb_nml_schema | Function | All registered + external group names as a char array. |
| grow_buffers | rdb_ocean_fold_exchange | Subroutine | (Re)allocate both buffers for |
| h_face_upstream_open_impl | rdb_barotropic_coupling | Subroutine | OPEN-column upstream face thickness, for |
| halo_allreduce_efp_list | rdb_halo | Subroutine | Order-invariant EXACT cross-rank combine of |
| halo_allreduce_max | rdb_halo | Subroutine | MPI_Allreduce with MPI_MAX — max-type reductions are exact in FP, so a global max stays layout-reproducible (ocean-MPI plan D5). Used for auto_n_inner’s global gravity-wave CFL (shared n_inner). |
| halo_allreduce_min | rdb_halo | Subroutine | MPI_Allreduce with MPI_MIN for global timestep |
| halo_allreduce_sum | rdb_halo | Subroutine | MPI_Allreduce with MPI_SUM for CG dot products |
| halo_allreduce_sum_i8 | rdb_halo | Subroutine | Cross-rank int64 sum for the decomposition-invariant chksum
bitcount ( |
| halo_async_destroy | rdb_halo | Subroutine | Free pre-allocated halo buffers |
| halo_async_init | rdb_halo | Subroutine | Pre-allocate halo buffers for all 4 fields |
| halo_exchange_2d | rdb_halo | Subroutine | Exchange ghost-cell halos for a single 2D field |
| halo_exchange_2d_device | rdb_halo | Subroutine | GPU-direct halo exchange via CUDA-aware MPI |
| halo_exchange_3d | rdb_halo | Subroutine | Exchange ghost-cell halos for a 3D field (all nz layers packed per direction) |
| halo_exchange_3d_device | rdb_halo | Subroutine | GPU-direct halo exchange for a 3D field, batched across layers. |
| halo_exchange_begin | rdb_halo | Subroutine | Pack and post non-blocking MPI sends/recvs for all 4 fields |
| halo_exchange_end | rdb_halo | Subroutine | Wait for MPI to complete and unpack received ghost cells |
| halo_sync_buffers_cleanup | rdb_halo | Subroutine | Release the persistent halo buffers. Idempotent. |
| halo_sync_buffers_cleanup_3d | rdb_halo | Subroutine | Release the persistent 3D halo buffers. Idempotent. |
| halo_sync_buffers_ensure | rdb_halo | Subroutine | Lazy-allocate the persistent send/recv buffers used by
|
| halo_sync_buffers_ensure_3d | rdb_halo | Subroutine | Lazy-allocate the persistent 3D send/recv buffers used by
|
| handle_check | rdb_handle | Function | Resolve an opaque |
| handle_create | rdb_handle | Function | Allocate a new ocean handle and return its opaque C pointer. Caller
( |
| handle_destroy | rdb_handle | Subroutine | Free an ocean handle. Idempotent on null/already-destroyed/garbage
handles — silently no-ops rather than aborting, so a Python
|
| handle_has_area | rdb_ocean_api | Function | True when the handle’s metrics carry a full ghosted |
| has_biharmonic_backstop | rdb_ocean_lateral_mix | Function |
|
| henyey_lat_factor_impl | rdb_ocean_vmix | Function | Henyey, Wright & Flatte (1986) JGR 91:8487 latitude dependence of
the internal-wave-driven mixing rate, in the SIMPLIFIED constant- |
| hk_corner_h | rdb_coriolis_adv | Function | Corner thickness of the HK PV, recomputed with EXACTLY the Pass 2
formula of |
| hk_pair_coef | rdb_coriolis_adv | Function | One Arakawa-Hsu pair coefficient |
| hotface_row | rdb_ocean_chksum | Subroutine | One HOTFACE row (see chksum_hotface docstring for columns). |
| hvisc_add_aniso_coef | rdb_ocean_horizontal_viscosity | Subroutine | Add the Smith & McWilliams (2003) anisotropic direction-tensor
coefficients onto the co-located isotropic viscosities. The
tension (T-cell) coefficient gains |
| hvisc_apply_impl | rdb_ocean_horizontal_viscosity | Subroutine | |
| hvisc_avg_A_face | rdb_ocean_horizontal_viscosity | Subroutine | Average the per-face harmonic viscosity ( |
| hvisc_biharm_lap_closed | rdb_ocean_horizontal_viscosity | Subroutine | Pass 1 of BOTH velocity biharmonics (scalar |
| hvisc_clamp_A | rdb_ocean_horizontal_viscosity | Subroutine | Per-cell CFL viscosity limiter (MOM6 |
| hvisc_compute_biharmonic_face_impl | rdb_ocean_horizontal_viscosity | Subroutine | Flow-aware biharmonic friction (MOM6 SMAGORINSKY_AH analogue).
Identical to |
| hvisc_compute_biharmonic_impl | rdb_ocean_horizontal_viscosity | Subroutine | Constant-coefficient biharmonic friction: applies
|
| hvisc_compute_face_impl | rdb_ocean_horizontal_viscosity | Subroutine | Per-face metric Laplacian × spatially-varying viscosity.
Explicit-shape dummies so NVHPC stdpar emits a device kernel
without per-launch descriptor walks. See
|
| hvisc_compute_scalar_impl | rdb_ocean_horizontal_viscosity | Subroutine | Per-face metric Laplacian × scalar viscosity. Used when no
lateral-mix closure is active — falls back to constant
|
| hvisc_compute_stress | rdb_ocean_horizontal_viscosity | Subroutine | MOM6 thickness-weighted stress-divergence operator. Three
phases: (1) tension |
| hvisc_fill_A_scalar | rdb_ocean_horizontal_viscosity | Subroutine | Fill the T-cell and corner harmonic-viscosity fields with the
scalar |
| hvisc_ke_diss_impl | rdb_ocean_horizontal_viscosity | Subroutine | C-grid KE budget: each face’s |
| hvisc_kh_cfl_bound | rdb_ocean_horizontal_viscosity | Function | Per-face harmonic-viscosity ceiling for the velocity-Laplacian
paths (MOM6 |
| hvisc_nu4_cfl_bound | rdb_ocean_horizontal_viscosity | Function | Per-face explicit-biharmonic CFL ceiling on the biharmonic
viscosity |
| hycom_top_dz | rdb_ocean_setup | Function | Surface-layer thickness of the |
| ice_adjust_categories | rdb_ice_itd | Subroutine | Outer shim (outer-shim + flat-impl pattern). No-op when the ice
slot is not live ( |
| ice_adjust_categories_impl | rdb_ice_itd | Subroutine | Device kernel: ONE |
| ice_atm_forcing_restoring | rdb_ice_atm_forcing | Subroutine | Outer shim: forward the four seam arrays + four scalars to the device kernel. No registry indirection here, but keep the shim+_impl split for the explicit-shape device-kernel discipline. |
| ice_atm_forcing_restoring_impl | rdb_ice_atm_forcing | Subroutine | Full-array fill (incl. ghosts). Explicit-shape + decl-order (dims first). Runs on device-resident seam arrays (mapped by ice%enter_data). |
| ice_bottom_freeze | rdb_ice_mass | Subroutine | Bottom-freezing branch of |
| ice_bottom_melt_peel | rdb_ice_mass | Subroutine | Bottom melt peel (SIS2_ice_thm.F90:1246-1271; prototype
sis2_resize.py:83-111). Same peel as |
| ice_cas_to_ist_impl | rdb_ice_transport | Subroutine | SIS2 |
| ice_cat_flux_x_impl | rdb_ice_transport | Subroutine | SIS2 |
| ice_cat_flux_y_impl | rdb_ice_transport | Subroutine | Meridional twin of |
| ice_cell_concentration_impl | rdb_ice_state | Subroutine | Two-mode per-cell concentration/mass gather (module docstring
convention), shared by |
| ice_column_step | rdb_ice_column | Subroutine | Per-(cell,category) orchestrator: gather (bottom-up -> top-down
flip, TRAP #2), optics, conduction ( |
| ice_compress_cell_inline | rdb_ice_transport | Subroutine | KEEP IN SYNC with |
| ice_compress_impl | rdb_ice_transport | Subroutine | Outer per-cell dispatch: ONE |
| ice_compute_basal_flux | rdb_ice_basal_flux | Subroutine | Outer shim (outer-shim + flat-impl pattern): dereference the
tracer registry ( |
| ice_compute_basal_flux_impl | rdb_ice_basal_flux | Subroutine | Device kernel over PHYSICAL cells (ghosts excluded — same
physical-cells-only contract as |
| ice_enth_from_ts | rdb_ice_enthalpy | Function | Ice specific enthalpy (J/kg) from temperature + bulk salinity —
SIS2 |
| ice_enthalpy_liquid | rdb_ice_enthalpy | Function | Enthalpy (J/kg) of liquid water at temperature |
| ice_enthalpy_liquid_freeze | rdb_ice_enthalpy | Function | Enthalpy (J/kg) of liquid water at the freezing point for
salinity |
| ice_evp_dynamics | rdb_ice_evp | Subroutine | One outer (slow) EVP call: |
| ice_evp_dynamics_impl | rdb_ice_evp | Subroutine | Flat-impl core of |
| ice_evp_mi_ratio_point | rdb_ice_evp | Function |
|
| ice_evp_params_from_config | rdb_ice_evp | Function | Small constructor — build once from |
| ice_evp_step | rdb_ice_evp | Subroutine | Gathers |
| ice_fb_part_sum_fill_impl | rdb_ice_thermo_driver | Subroutine | Fill |
| ice_frazil_accumulate | rdb_ice_frazil | Subroutine | Outer shim (outer-shim + flat-impl pattern): dereference the
tracer registry ( |
| ice_frazil_accumulate_impl | rdb_ice_frazil | Subroutine | Device kernel over PHYSICAL surface cells (ghosts excluded — wall ghosts are inert and seam ghosts are rebuilt by the wrap / exchange, so clamping them would double-count the bank in any area integral). Per wet cell at k = nz: |
| ice_frazil_uptake | rdb_ice_frazil_uptake | Subroutine | Outer shim (outer-shim + flat-impl pattern): dereference the
tracer registry ( |
| ice_frazil_uptake_column | rdb_ice_frazil_uptake | Subroutine | Per-(cell,category-1) column worker: gather + flip
(bottom-up -> top-down, TRAP #2 discipline), spend the whole
|
| ice_frazil_uptake_impl | rdb_ice_frazil_uptake | Subroutine | Device kernel over PHYSICAL cells (ghosts excluded — same
physical-cells-only contract as |
| ice_frazil_uptake_multicat_impl | rdb_ice_frazil_uptake | Subroutine | ncat>1 SIS2 ITD-mode frazil spend. Port of SIS2
|
| ice_gather_flux_x_impl | rdb_ice_transport | Subroutine | Gather pass (race-free): |
| ice_gather_flux_x_layer_impl | rdb_ice_transport | Subroutine | Layer-indexed twin of |
| ice_gather_flux_y_impl | rdb_ice_transport | Subroutine | Meridional twin of |
| ice_gather_flux_y_layer_impl | rdb_ice_transport | Subroutine | Meridional twin of |
| ice_halo_centre_flat | rdb_ocean_halo_state | Subroutine | Explicit-shape seam: a contiguous ice array of any rank ( |
| ice_hlim_count | rdb_config | Function | Length of the LEADING run of non-sentinel (>= 0) entries in
|
| ice_hlim_spec_is_valid | rdb_config | Subroutine | Shape/monotonicity predicate for a supplied |
| ice_ic_params_from_config | rdb_ice_init | Function | Small constructor — build once from |
| ice_ic_parse_conc_config | rdb_ice_init | Function |
|
| ice_ic_target_category | rdb_ice_init | Function | The IC’s target category for a pack of mass |
| ice_init_apply | rdb_ice_init | Subroutine | Outer shim (outer-shim + flat-impl pattern, mirrors
|
| ice_init_apply_impl | rdb_ice_init | Subroutine | Per-cell seeder. Decl-order: integer dims before the explicit-shape arrays that use them. |
| ice_ist_to_cas_impl | rdb_ice_transport | Subroutine | SIS2 |
| ice_itd_category_bounds | rdb_ice_state | Subroutine | SIS2 |
| ice_limit_stresses | rdb_ice_evp | Subroutine | SIS2 |
| ice_mask_snow_by_ice_impl | rdb_ice_transport | Subroutine | SIS2 |
| ice_mass_update_x_impl | rdb_ice_transport | Subroutine | SIS2 |
| ice_mass_update_y_impl | rdb_ice_transport | Subroutine | Meridional twin of |
| ice_max_speed_impl | rdb_ice_transport | Subroutine | Max |u_ice|/|v_ice| over PHYSICAL faces only (the array-edge
ghost faces carry no meaning here). |
| ice_ocean_brine_flux | rdb_ice_ocean_coupler | Subroutine | Refresh the ocean surface salt-flux field from the ice slot.
Components off (default):
Q_salt(i,j) = Q_salt_const + salt_flux_diag(i,j)
POSITIVE SALINIFIES (TRAP #2 above — matches
|
| ice_ocean_brine_flux_components_impl | rdb_ice_ocean_coupler | Subroutine | Components-on branch: full-array overwrite of the |
| ice_ocean_brine_flux_impl | rdb_ice_ocean_coupler | Subroutine | Full-array overwrite (including ghosts — they get
|
| ice_ocean_heat_flux | rdb_ice_ocean_coupler | Subroutine | Refresh the ocean surface heat-flux field from the ice slot.
Components off (default):
Q_heat(i,j) = Q_heat_const + heat_flux_diag(i,j)
POSITIVE DOWN into the ocean (the apply-tracers convention:
d(hT) = Q_heatdt/(rho0cp)). Full overwrite from the const + last
window’s rate — a window with no ice exchange resets to background.
Components on ( |
| ice_ocean_heat_flux_components_impl | rdb_ice_ocean_coupler | Subroutine | Components-on branch: full-array overwrite of the |
| ice_ocean_heat_flux_impl | rdb_ice_ocean_coupler | Subroutine | Full-array overwrite (including ghosts — same no-op-there
reasoning as |
| ice_ocean_stress_cleanup | rdb_ice_ocean_coupler | Subroutine | Release the persistent tau-blend scratch. Idempotent (safe on an
already-clean workspace — the driver calls it unconditionally at
ocean teardown, next to |
| ice_ocean_stress_flux | rdb_ice_ocean_coupler | Subroutine | Ice->ocean momentum-mediation blend (PR 5), the momentum mirror
of |
| ice_ocean_stress_flux_impl | rdb_ice_ocean_coupler | Subroutine | Face-blend kernel. |
| ice_ocean_stress_resume_apply | rdb_ice_ocean_coupler | Subroutine | Configure-time resume apply (PR 63). |
| ice_ocean_sw_flux | rdb_ice_ocean_coupler | Subroutine | Refresh the ocean-surface shortwave from the ice slot’s
|
| ice_ocean_sw_flux_add_impl | rdb_ice_ocean_coupler | Subroutine | Components-off branch: ADD the ice-transmitted shortwave into the
net |
| ice_ocean_sw_flux_components_impl | rdb_ice_ocean_coupler | Subroutine | Components-on branch: full-array overwrite of the |
| ice_optics_csim4 | rdb_ice_optics | Subroutine | CSIM4 albedo + Beer’s-law vertical SW partition
(SIS_optics.F90:371-409). Exact port; inline literals
|
| ice_pass_x | rdb_ice_transport | Subroutine | One zonal pass: total-mass PPM + proportionate ice-flux split, the snow twin + co-located mask, PCM tracer riding (gather then cell update), the mass update (AFTER every ride reads the pre-update mass), and the post-pass validity reduction. |
| ice_pass_y | rdb_ice_transport | Subroutine | Meridional twin of |
| ice_rebalance_layers | rdb_ice_mass | Subroutine | Equal-mass repartition of ice layers 1..nk, mass-weighting
enthalpy and salinity (SIS2_ice_thm.F90:1448-1512; prototype
sis2_resize.py:114-161). The snow slot ( |
| ice_ride_update_x_impl | rdb_ice_transport | Subroutine | Cell-update pass (race-free): reads |
| ice_ride_update_x_layer_impl | rdb_ice_transport | Subroutine | Layer-indexed twin of |
| ice_ride_update_y_impl | rdb_ice_transport | Subroutine | Meridional twin of |
| ice_ride_update_y_layer_impl | rdb_ice_transport | Subroutine | Layer-indexed twin of |
| ice_sample_velocity_impl | rdb_ice_transport | Subroutine |
|
| ice_snow_accumulate | rdb_ice_mass | Subroutine | Snow source-term branch of |
| ice_snow_ice_flood | rdb_ice_mass | Subroutine | Archimedes freeboard snow-ice flooding — the FINAL substantive
block of |
| ice_snow_part_ocn_fill_impl | rdb_ice_thermo_driver | Subroutine | PR 26: fill |
| ice_snowfall_ocean_share | rdb_ice_snow | Subroutine | Outer shim (outer-shim + flat-impl pattern): forward the ice
slot’s arrays to the device kernel. Called only when
|
| ice_snowfall_ocean_share_impl | rdb_ice_snow | Subroutine | Device kernel over PHYSICAL cells (ghosts excluded). Gated on
|
| ice_t_freeze | rdb_ice_enthalpy | Function | Freezing temperature (degC) of the ice brine at bulk salinity
|
| ice_tau_mirror_impl | rdb_ice_ocean_coupler | Subroutine | PR 63. Device copy of the blend’s OUTPUT into the restart-carried
mirror fields — deliberately NOT fused into
|
| ice_temp_from_en_s | rdb_ice_enthalpy | Function | Ice temperature (degC) from specific enthalpy + bulk salinity —
SIS2 |
| ice_temp_sis2 | rdb_ice_column | Subroutine | SEB + vertical-conduction column solve — SIS2 |
| ice_thermo_columns | rdb_ice_column | Subroutine |
|
| ice_thermo_driver_reduce_impl | rdb_ice_thermo_driver | Subroutine | Device kernel over PHYSICAL cells (ghosts excluded). Reduces the
per-category column outputs into the per-cell coupling diags.
|
| ice_thermo_driver_reduce_multicat_impl | rdb_ice_thermo_driver | Subroutine | ncat>1 SIS2 ITD-mode reduce (module docstring). Same zero/gate/
ordering contract as |
| ice_thermo_driver_step | rdb_ice_thermo_driver | Subroutine | Outer shim (outer-shim + flat-impl pattern): |
| ice_top_melt_peel | rdb_ice_mass | Subroutine | Top melt peel (SIS2_ice_thm.F90:1217-1242; prototype
sis2_resize.py:48-80). Peels mass from k=0 (snow) upward
through k=nk until |
| ice_transport_compress_cell | rdb_ice_transport | Subroutine | KEEP IN SYNC with |
| ice_transport_step | rdb_ice_transport | Subroutine | Entry point (host orchestration; kernels inside). Outer-shim +
flat-impl: every phase below dispatches to a |
| ice_validity_reduce_impl | rdb_ice_transport | Subroutine |
|
| in_shelf_box | rdb_ocean_cavity | Function |
|
| int_default_string | rdb_nml_schema | Function | |
| int_is_default | rdb_nml_schema | Function | |
| int_parse | rdb_nml_schema | Subroutine | |
| int_value_string | rdb_nml_schema | Function | |
| interp_column_linear_z | rdb_ocean_z_init | Subroutine | Linear-in-depth interpolation of source profile |
| invert_density_targets | rdb_ocean_vcoord | Subroutine | Density-space interface inversion — the single source of truth
for the RHO vcoord regrid ( |
| is_canonical_diag_name | rdb_ocean_diag_fills | Function |
|
| is_ident_char | rdb_nml_schema | Function | True for identifier characters (alnum + underscore). |
| is_open_ish | rdb_ocean_obc_baroclinic | Function | Returns .true. for edge types that need baroclinic velocity treatment. |
| is_radiating | rdb_ocean_obc_baroclinic | Function | Returns .true. for Flather-class edges (not CLAMPED). |
| is_repeat_count | rdb_nml_schema | Function | True if |
| isomip_logistic | rdb_ocean_state | Function |
|
| isomip_plus_bx | rdb_ocean_state | Function | Along-flow bedrock elevation, Asay-Davis et al. (2016) Eq. (2): |
| isomip_plus_by | rdb_ocean_state | Function | Across-flow bedrock elevation, Asay-Davis et al. (2016) Eq. (4): |
| isopycnal_vanish_tol | rdb_ocean_dyn | Function | Shared vanish-tolerance for Phase-2/3 kernels: the layer is
considered vanished when its thickness is at or below this value.
Defined as max(angstrom_h, H_VANISHED) so both the physical
floor (Phase 1) and the skip/merge marker are covered by a
single threshold. Providing this as a |
| json_escape | rdb_nml_schema | Function | Minimal JSON string escaping: backslash, double-quote, and the common control characters. Doc/name/units strings in this codebase are plain single-line ASCII, so this is deliberately not a general-purpose escaper. |
| json_fmt_real | rdb_nml_schema | Function | Real -> JSON number, robust to extreme magnitude (e.g. |
| json_real_array | rdb_nml_schema | Function | Render |
| json_string_array | rdb_nml_schema | Function | Render |
| kappa_shear_column_kernel | rdb_ocean_kappa_shear | Subroutine | Per-column JHL08 solve. One |
| kappa_shear_compute | rdb_ocean_kappa_shear | Subroutine | Run kappa-shear over the domain: fill |
| kappa_shear_merge_into_kv_kt | rdb_ocean_kappa_shear | Subroutine | Fold the kappa-shear diffusivity into the vmix interface
fields, ADDITIVELY (MOM6 interior-diffusivity semantics).
Called EVERY stage (the interior closure rewrites kv/kt each
stage; |
| kappa_shear_vertex_kernel | rdb_ocean_kappa_shear | Subroutine | Per-CORNER JHL08 solve (MOM6 vertex form, Pass B). One
|
| kappa_shear_vertex_scatter | rdb_ocean_kappa_shear | Subroutine | Corner -> tracer-point averaging (MOM6 vertex form, Pass C).
Cell (i,j) reads its four corners SW=(i,j), SE=(i+1,j),
NW=(i,j+1), NE=(i+1,j+1) — a read-only corner stencil into an
own-cell write, safe as its own |
| ke_probe_active | rdb_ocean_ke_probe | Function | Gate: enabled AND inside the step window. |
| ke_probe_coradv_split | rdb_ocean_ke_probe | Subroutine | Sub-attribute the coriolis_adv segment: split the just-applied
tendency into its PV-flux part and its −∇KE part and print each
part’s work integral per region ( |
| ke_probe_sample | rdb_ocean_ke_probe | Subroutine | Sample the three-region layer KE and print the attribution row. Call AFTER the segment being attributed; the printed dKE is “this sample minus the previous one” — i.e. the segment’s energy contribution. Drains all device queues first so the async velocity-apply chain (queue 1) has landed. |
| ke_regions_impl | rdb_ocean_ke_probe | Subroutine | h-weighted layer KE over the three regions, one device pass.
Per cell: KE = Σ_k [ ¼(h_W·u_W² + h_E·u_E²) + ¼(h_S·v_S² + h_N·v_N²) ]
with h_face the centred face thickness (m³/s² per unit area;
uniform-Δx Cartesian, so the area factor is a constant and is
dropped — attribution only needs a consistent measure).
Explicit OpenACC reduction — a |
| kpp_surface_buoyancy_flux | rdb_ocean_vmix | Function | Surface buoyancy flux for the KPP overlay’s convective scale: |
| kpp_sw_method_is_implemented | rdb_ocean_vmix | Function | Fail-loud predicate for |
| ks_adaptive_dt | rdb_ocean_kappa_shear | Function | Largest dt_test <= dt_rem such that, after mixing for
0.5*dt_test with |
| ks_find_kappa_tke | rdb_ocean_kappa_shear | Subroutine | The inner Picard solve (design doc section 5.4): alternate a TKE tridiagonal sweep (Dirichlet surface, e1 tail below the deepest active interface) with a kappa tridiagonal sweep (smooth truncation ramp + active-range tracking) until the Picard increment converges. Scratch arrays are supplied by the caller to avoid double-allocating per-thread stack. |
| ks_gather_corner | rdb_ocean_kappa_shear | Subroutine | Assemble the surface-down column at corner (ic,jc) from the 2x2 cell patch + 4 adjacent faces (JHL08 vertex form; the interpolation recipes of the reference implementation): u,v : 2-point THICKNESS-weighted average across the corner, with the face thickness itself a mask-weighted 2-cell average (recomputed inline — deterministic, so the repeated evaluation is bitwise identical to MOM6’s precomputed h_at_u/h_at_v Pass A, non-OBC-bug form). T,S : 4-cell mask-AND-thickness-weighted average. The registry stores hTr = hT, which is exactly the weighted quantity, so we sum wethTr directly. h : 4-cell mask-weighted average (no thickness weight — it IS the thickness). Returns RAW h (no floor) — the caller decides floor vs massless-merge exactly as the column path does. The deliberate (SW+NE)+(SE+NW) bracketing is reproducible-sum ordering — do not reassociate. |
| ks_precompute | rdb_ocean_kappa_shear | Subroutine | Build the thickness-derived interface grids that the iteration reuses: 1/h, the interface 1/dz, the harmonic-mean interface FV cell thicknesses h_Int (Sum h_Int = Sum h), and the inverse boundary length scale squared (design doc section 5.1). |
| ks_projected_state | rdb_ocean_kappa_shear | Subroutine | Mix (u0,v0,T0,S0) implicitly with |
| ks_solve_column | rdb_ocean_kappa_shear | Subroutine | Full JHL08 column solve in surface-down indices (design doc
section 5.1-5.2): background kappa_0 pre-step (no-slip bed for
u,v; insulating T,S), frozen interface buoyancy derivatives,
e1 tail recursion, then the adaptive predictor-corrector outer
loop driving the Picard inner solve. Returns the time-mean
diffusivity |
| ks_src_func | rdb_ocean_kappa_shear | Function | Shear-source function K_src at one interface (JHL08 eq. for the source term): nonzero only where N^2 < Ri_c * S^2. |
| lateral_closure_conflicts_smag_ah | rdb_ocean_lateral_mix | Function |
|
| lateral_closure_is_implemented | rdb_ocean_lateral_mix | Function |
|
| lateral_mix_uses_resoln | rdb_ocean_dyn | Function |
|
| laytemp_sis2 | rdb_ice_column | Function | Per-layer implicit heat-budget solve for the new layer
temperature — SIS2 |
| leith_biharm_is_inert | rdb_ocean_lateral_mix | Function |
|
| levenshtein | rdb_nml_schema | Function | Levenshtein edit distance between two (capped) strings. |
| linear_in_z | rdb_ocean_z_init | Function | Affine profile |
| load_bathymetry_into_array | rdb_bathymetry | Subroutine | Load bathymetry from a NetCDF file into a target 2D array
shaped |
| logical_default_string | rdb_nml_schema | Function | |
| logical_is_default | rdb_nml_schema | Function | |
| logical_parse | rdb_nml_schema | Subroutine | |
| logical_value_string | rdb_nml_schema | Function | |
| lower | rdb_nml_schema | Function | Lowercase an ASCII string. |
| lower_ascii | rdb_ocean_diag | Function | ASCII lowercase a string (attribute matching is case-insensitive). |
| make_prefix | rdb_nml_schema | Function | Build a |
| mask_bt_rem | rdb_barotropic_coupling | Subroutine | Fold the static land face masks into the BT-substep damping factor
(bt_rem_u(land)=0 ⇒ no velocity across a land face). Runs every outer
step AFTER |
| mask_layer_velocities | rdb_ocean_dyn | Subroutine | Zero the per-layer face velocities at land faces (spec §14 C4 /
R4(b.2) / MOM6 |
| mask_time_mean_velocities | rdb_ocean_dyn | Subroutine | Apply the land contract of |
| massless_build_maps | rdb_massless | Subroutine | Build the merged massive-layer grid and the maps |
| massless_interp_back | rdb_massless | Subroutine | Inverse map: interpolate an interface quantity |
| massless_merge_fields | rdb_massless | Subroutine | Thickness-weighted merged means for u, v, T, S — the solver receives
MEANS, not integrals, and must not re-divide. Accumulation runs in the
same surface-down |
| mean_longitudes | rdb_ocean_tide_astro | Subroutine | Mean longitudes at day number |
| meke_advect | rdb_ocean_meke | Subroutine | Upwind flux-form advection of E by the barotropic mass transport.
advFac = adv_fac/sdt
uflux(I) = baroHu(I)advFacE_upwind (E_{I-1} if baroHu>0 else E_I)
E += sdtIareaTI_mass((uflux_{i-1}-uflux_i)+(vflux_{j-1}-vflux_j))
Conservative on a closed domain (interior faces only; the
divergence telescopes ⇒ Sum Earea*mass conserved). |
| meke_backscatter_apply | rdb_ocean_meke | Subroutine | Inject the MEKE harmonic backscatter into the per-face resolved
harmonic viscosity (capability Gap 2, v1). Subtracts a face-average
of the cell-centred |
| meke_backscatter_apply_impl | rdb_ocean_meke | Subroutine | harmonic viscosity and floor the net at the CFL-stable minimum.
Explicit-shape dummies for NVHPC stdpar (no descriptor walk).
The backscatter coefficient is z-independent in v1 ( |
| meke_baro_transport | rdb_ocean_meke | Subroutine | Depth-integrated, mass-weighted barotropic transport through each
C-grid face: |
| meke_bbl_speed2 | rdb_ocean_meke | Subroutine | Resolved bed-layer speed² at cell centres:
|
| meke_drag | rdb_ocean_meke | Subroutine | Implicit (backward-Euler) bottom-drag half-step.
drag_rate = rho0i_masssqrt(cdrag^2(max(0,2bf2E)+u_bbl2+uscale^2)) [1/s]
damp_rate = damping + drag_ratebf2 ; =0 where E<0
E <- E/(1 + sdt_dampdamp_rate)
|
| meke_feed_khth | rdb_ocean_meke | Subroutine | Add the geometric mean of neighbour |
| meke_inv_lmix | rdb_ocean_meke | Function | Harmonic inverse mixing length |
| meke_kh_closure | rdb_ocean_meke | Subroutine | Derived diffusivity |
| meke_ku_closure | rdb_ocean_meke | Subroutine | Derived harmonic backscatter viscosity
|
| meke_lateral | rdb_ocean_meke | Subroutine | Harmonic-mass Laplacian diffusion of MEKE (+ optional biharmonic). Flux-form, conservative on a closed domain (interior faces only; array-edge faces carry zero flux). Kh_u = max(0,kh_bg) + khmeke_fac0.5(kh_i+kh_{i+1}), CFL-capped 0.25 uflux = Kh_u(dy_cuidxCu)[2 m_i m_{i+1}/(m_i+m_{i+1}+eps)](E_i-E_{i+1}) E += sdtiareaTi_mass((uflux_{i-1}-uflux_i)+(vflux_{j-1}-vflux_j)) Biharmonic: del2 = iareaT(d uflux’ + d vflux’) with the bare-gradient flux uflux’ = (dy_cuidxCu)(E_{i+1}-E_i); then a harmonic-mass flux of del2 with CFL cap 0.3 and E += that divergence (additive). |
| meke_length_scales | rdb_ocean_meke | Subroutine | Fill the structure factors gamma_b^2 ( |
| meke_mass | rdb_ocean_meke | Subroutine | Column mass |
| meke_source | rdb_ocean_meke | Subroutine | Aggregate source |
| meke_stage_rd | rdb_ocean_meke | Subroutine | Copy rd_over_dx onto the device workspace. Thermo-cadence; explicit-shape; on-device (source slot is device-resident). |
| meke_stage_sn | rdb_ocean_meke | Subroutine | Copy the SN faces onto the device workspaces. Thermo-cadence; explicit-shape; on-device (VarMix slot is device-resident). |
| meke_step | rdb_ocean_meke | Subroutine | Advance the MEKE field one thermo step (Strang split), update the
derived diffusivity |
| meke_zero_2d | rdb_ocean_meke | Subroutine | Zero a device-resident 2D workspace (absent-source fallback). |
| melt_m_per_yr_factor | rdb_ocean_diag_derived | Function | The ISOMIP+ melt-rate conversion, |
| mem_device_free_bytes | rdb_mem_report | Function | Free memory on the bound device, in bytes. Returns |
| mem_device_total_bytes | rdb_mem_report | Function | Total memory of the device that the OpenACC runtime is bound to,
in bytes. Returns |
| mem_device_used_bytes | rdb_mem_report | Function | Device memory currently in use, in bytes ( |
| mem_format_bytes | rdb_mem_report | Function | Human-readable byte count: two decimals, GB at/above 1 GiB, MB below. Used for every figure in the budget log so the units stay consistent. |
| mem_host_rss_bytes | rdb_mem_report | Function | Resident set size of the current process, in bytes, parsed from
|
| mem_log_computed_budget | rdb_mem_report | Subroutine | Log the COUNTED state-array footprint. Unlike the RSS figure
(host-only I/O buffers + library pages) and the device query
(needs an OpenACC runtime), this is an exact sum of the state’s
allocatable arrays — available on every toolchain, so a CPU build
gets a real footprint line too. Latching for the reconciliation
is |
| mem_log_computed_line | rdb_mem_report | Subroutine | Log one indented breakdown line for a component of the counted footprint (barotropic / layers / closures / …). Skipped when the component is empty so gated-off slots don’t clutter the report. |
| mem_log_device_actuals | rdb_mem_report | Subroutine | Log actual device memory after |
| mem_log_device_growth | rdb_mem_report | Subroutine | Report device-memory growth since the post- |
| mem_log_state_budget | rdb_mem_report | Subroutine | Log the pre-mapping memory budget. Always logs the host-side
allocation growth (ADVISORY — includes host-only I/O buffers +
library pages, NOT a device estimate); when the device queries
succeed it also logs the device number + free/total and latches
the free-memory snapshot that |
| mem_set_counted_budget | rdb_mem_report | Subroutine | Latch the COUNTED state-array footprint for the |
| metrics_apply_land_mask | rdb_ocean_metrics | Subroutine | Derive the static C-grid face / corner masks from the T-cell
|
| metrics_assemble_from_supergrid_arrays | rdb_ocean_metrics | Subroutine | Fill all model metric arrays from an in-memory MOM6-style supergrid (2x-refined corner geography + edge segments + sub-cell areas), using the even/odd index sums. This is the battle-tested assembly path the NetCDF reader used inline; the tripolar generator builds the supergrid analytically and feeds it here so tripolar metrics flow through identical index logic. |
| metrics_bt_cfl_length | rdb_ocean_setup | Function | 2-D external-gravity-wave CFL length over the PHYSICAL region:
l_cfl = min_cell 1 / sqrt(1/dxT^2 + 1/dyT^2).
Length scale for the barotropic CFL |
| metrics_closed_faces_alloc | rdb_ocean_metrics | Subroutine | Grow the z-level closed-face masks from their |
| metrics_dx_min | rdb_ocean_setup | Function | Representative minimum grid length over the PHYSICAL region,
taken over both |
| metrics_fill_cartesian | rdb_ocean_metrics | Subroutine | Uniform Cartesian: every length is constant, |
| metrics_fill_coriolis | rdb_ocean_metrics | Subroutine | Fill a corner array AND a centre array with the Coriolis parameter, from one of two schemes (D7). Does NOT touch any existing fill sites in coriolis_adv / EPBL / kappa-shear (that re-routing is M2d); this routine just exists + is tested. |
| metrics_fill_from_supergrid | rdb_ocean_metrics | Subroutine | Load an MOM6 supergrid (mosaic) NetCDF file and fill all metric
arrays. After this call the caller must invoke |
| metrics_fill_spherical | rdb_ocean_metrics | Subroutine | Spherical lon-lat sector. For each stagger, geolat/geolon are evaluated at THAT point’s own location; the metric lengths use the cos of that stagger’s own latitude (the consistency trick that keeps the C-grid metrics compatible, D6): dx = rad_earth * cos(lat) * dlon_rad dy = rad_earth * dlat_rad area = dx * dy (analytic-derivative form, NOT great-circle). |
| metrics_fill_tripolar | rdb_ocean_metrics | Subroutine | Fill every metric array for an analytic TRIPOLAR grid (Murray
1996): ordinary lon-lat for cell-corner latitude <= |
| metrics_fill_tripolar_whole | rdb_ocean_metrics | Subroutine | The undecomposed tripolar build behind |
| metrics_finalize | rdb_ocean_metrics | Subroutine | Compute every stored inverse + the hvisc ratio bundle ONCE from the length/area arrays a generator already wrote, via the Adcroft reciprocal (D4). No kernel ever recomputes these. |
| metrics_fold_north_cu_scalar | rdb_ocean_metrics | Subroutine | |
| metrics_fold_north_cv_scalar | rdb_ocean_metrics | Subroutine | |
| metrics_fold_north_faces | rdb_ocean_metrics | Subroutine | North fold of the face and corner metric arrays (the Cu / Cv / Bu
part of |
| metrics_fold_periodic_ghosts | rdb_ocean_metrics | Subroutine | Tripolar ghost-metric fill (M4c): periodic-x wrap of the
east/west ghost columns + north-fold of the north ghost rows,
for EVERY metric + geography array. Replaces the constant
extrapolation the supergrid assembler left on those edges. The
ONE routine both the analytic tripolar generator and the MOM6
mosaic reader ( |
| metrics_periodic_x_2d | rdb_ocean_metrics | Subroutine | West/east ghost columns of a T-array (nx_total,ny_total) by periodic wrap (column i <= ng ← i+ni; i > ng+ni ← i-ni). |
| metrics_periodic_x_all | rdb_ocean_metrics | Subroutine | Periodic-x wrap of the east/west ghost columns of every metric,
geography and rotation array (the first half of
|
| metrics_periodic_x_bu | rdb_ocean_metrics | Subroutine | Bu-array (nx_total+1,ny_total+1): face-type in x, same as Cu. |
| metrics_periodic_x_cu | rdb_ocean_metrics | Subroutine | Cu-array (nx_total+1,ny_total): faces 1..ni+1 physical at i=ng+1..ng+ni+1. |
| metrics_periodic_x_cv | rdb_ocean_metrics | Subroutine | Cv-array (nx_total,ny_total+1): centre-type in x, same as T. |
| metrics_periodic_y_2d | rdb_ocean_metrics | Subroutine | South/north ghost rows of a T-array by periodic wrap (the y
analogue of |
| metrics_porous_alloc | rdb_ocean_metrics | Subroutine | Grow the porous-barrier arrays from their |
| metrics_window_2d | rdb_ocean_metrics | Subroutine | Copy a tile’s storage window (ghosts included) out of the
undecomposed array: |
| metrics_window_all | rdb_ocean_metrics | Subroutine | Cut a tile’s storage window (ghosts included) out of a larger
assembled metric set, for every array the supergrid assembler and
the fold/periodic ghost fill write: |
| min_thickness_target_column | rdb_ocean_min_thickness | Subroutine | Build the floor-only conservative target thickness column. |
| mle_bodner_timescale | rdb_ocean_mle | Function | Bodner et al. (2023) frontogenesis-arrest MLE timescale [s]:
ts = Cr · ds · |f| · h / w’u’
where the frontal-arrest length enters inline as |
| mle_compute_transports | rdb_ocean_mle | Subroutine | Fill |
| mle_face_ustar_x | rdb_ocean_mle | Function | Friction velocity u* = sqrt(|tau|/rho0) at the u-face from the surface wind stress, averaged onto the face. Only used by the FK11 mixrate form. Returns 0 if stress fields are absent. |
| mle_face_ustar_y | rdb_ocean_mle | Function | u* at the v-face; mirror of |
| mle_fold_x | rdb_ocean_mle | Subroutine | Add the FK x-face transport into the per-layer zonal mass flux,
AFTER |
| mle_fold_y | rdb_ocean_mle | Subroutine | Add the FK y-face transport into the per-layer meridional mass
flux. Mirror of |
| mle_layer_weights | rdb_ocean_mle | Subroutine | Per-layer transport weights a(k) = mu(sigma_top) - mu(sigma_bot),
walking surface (k=nz) -> bed (k=1). |
| mle_mu_shape | rdb_ocean_mle | Function | FK08 second-order vertical structure function mu(sigma). sigma in [-1,0]: 0 = surface interface, -1 = ML base. mu = 0 at sigma=0 (surface) and sigma <= -1 (ML base); peaks near sigma=-0.5. |
| mle_timescale | rdb_ocean_mle | Function | FK restratification timescale [s]. |
| move_group | rdb_nml_schema | Subroutine | Transfer a group’s contents without copying any polymorphic key box (descriptor moves only — see schema_add_group). |
| multilayer_enforce_vanished_content | rdb_multilayer_state | Subroutine | THE enforcement point for invariant I1′. |
| multilayer_enforce_vanished_content_host | rdb_multilayer_state | Subroutine | HOST twin of |
| multilayer_register_passive_tracer | rdb_multilayer_state | Subroutine | Append a passive tracer ( |
| multilayer_scan_vanished_content | rdb_multilayer_state | Subroutine | Pure I1′ TRIPWIRE scan — counts the vanished cells that do NOT hold
their donor’s concentration ( |
| multilayer_state_bytes | rdb_multilayer_state | Function | Counted allocatable footprint of the ocean C-grid layer slot: the layer prognostics + face transports + RK2 saves + density/vertical diagnostics, the per-tracer registry (each tracer sums its own arrays; ideal-age rides the registry when on), and the device-resident conservation-budget accumulators. |
| multilayer_state_destroy | rdb_multilayer_state | Subroutine | |
| multilayer_state_enter_data | rdb_multilayer_state | Subroutine | Attach the C-grid multilayer allocatables to the device. The
tracer registry uses the two-step pattern: array descriptor
first, then each element’s hTr / hTr0 — NVHPC stdpar can’t
dereference |
| multilayer_state_enter_data_impl | rdb_multilayer_state | Subroutine | |
| multilayer_state_exit_data | rdb_multilayer_state | Subroutine | Reverse of |
| multilayer_state_exit_data_impl | rdb_multilayer_state | Subroutine | |
| multilayer_state_init | rdb_multilayer_state | Subroutine | Allocate per-layer C-grid arrays at the grid size and the
configured layer count (caller must set |
| n_tracers | rdb_ocean_fold_apply | Function | Registered tracers carrying an allocated |
| nc_check | rdb_io_netcdf | Subroutine | Check NetCDF return status and log error if it failed |
| nc_close | rdb_io_netcdf | Subroutine | Close a NetCDF file |
| nc_create_file | rdb_io_netcdf | Subroutine | Create a new NetCDF-4 file (overwrites if exists) |
| nc_def_dim | rdb_io_netcdf | Subroutine | Define a dimension (use nf90_unlimited for unlimited) |
| nc_def_var_2d | rdb_io_netcdf | Subroutine | Define a 2D variable with working precision type |
| nc_def_var_3d | rdb_io_netcdf | Subroutine | Define a 3D variable (x, y, time) with working precision type |
| nc_def_var_4d | rdb_io_netcdf | Subroutine | Define a 4D variable (x, y, z, time) with working precision type |
| nc_emit_post_fire | rdb_ocean_diag_netcdf | Subroutine | Post-fire emit hook. Appends one slice + time value for the
var that just fired. Bound to |
| nc_enddef | rdb_io_netcdf | Subroutine | End define mode, switch to data mode |
| nc_get_att_int | rdb_io_netcdf | Subroutine | Read a global integer attribute |
| nc_get_att_text | rdb_io_netcdf | Subroutine | Read a character (text) attribute from a variable — used for the
CF |
| nc_get_dim_len | rdb_io_netcdf | Subroutine | Get the length of a named dimension |
| nc_get_var_1d | rdb_io_netcdf | Subroutine | Read a full 1D array (the read sibling of |
| nc_get_var_2d | rdb_io_netcdf | Subroutine | Read a full 2D array |
| nc_get_var_3d | rdb_io_netcdf | Subroutine | Read a full 3D array. Mirrors |
| nc_get_var_slab_2d | rdb_io_netcdf | Subroutine | Windowed read of a 2D variable: |
| nc_get_var_slab_3d | rdb_io_netcdf | Subroutine | Strided slab read: |
| nc_get_varid | rdb_ocean_restart_io | Subroutine | |
| nc_get_varid | rdb_io_netcdf | Subroutine | Get the variable ID for a named variable |
| nc_open_read | rdb_io_netcdf | Subroutine | Open an existing NetCDF file for reading |
| nc_open_write | rdb_io_netcdf | Subroutine | Open an existing NetCDF file for writing |
| nc_put_att | rdb_io_netcdf | Subroutine | Write a character attribute to a variable |
| nc_put_att_global | rdb_io_netcdf | Subroutine | Write a global character attribute |
| nc_put_att_global_int | rdb_io_netcdf | Subroutine | Write a global integer attribute |
| nc_put_att_int | rdb_io_netcdf | Subroutine | Write an integer attribute to a variable |
| nc_put_att_real | rdb_io_netcdf | Subroutine | Write a real-valued attribute to a variable |
| nc_put_att_real_r4 | rdb_io_netcdf | Subroutine | Write a 32-bit real attribute to a variable. NetCDF rejects a
|
| nc_put_var_2d | rdb_io_netcdf | Subroutine | Write a full 2D array |
| nc_put_var_3d_slice | rdb_io_netcdf | Subroutine | Write a 2D slice into a 3D variable at a given time index |
| nc_put_var_3d_slice_r4 | rdb_io_netcdf | Subroutine | Write a 32-bit 2D slice into a 3D variable at a given time index.
The real32 twin of |
| nc_put_var_4d_slice | rdb_io_netcdf | Subroutine | Write a 3D slice into a 4D variable at a given time index |
| nc_put_var_4d_slice_r4 | rdb_io_netcdf | Subroutine | Write a 32-bit 3D slice into a 4D variable at a given time index.
The real32 twin of |
| needs_flags | rdb_ocean_halo | Subroutine | Compute which directions need actual MPI or local-wrap work. |
| next_amp | rdb_nml_schema | Subroutine | Advance (li,col) to the character AFTER the next ‘&’. On EOF sets li = n_lines + 1. Bare non-blank tokens before ‘&’ are tolerated as inter-group whitespace. |
| nml_dirname | rdb_config_schema | Function | Directory part of |
| nml_enum | rdb_nml_schema | Function | Construct an enum key restricted to |
| nml_int | rdb_nml_schema | Function | Construct an integer key, capturing the current target as default. |
| nml_logical | rdb_nml_schema | Function | Construct a logical key, capturing the current target as default. |
| nml_real | rdb_nml_schema | Function | Construct a real key, capturing the current target as default. |
| nml_real_array | rdb_nml_schema | Function | Construct a real-array key, capturing the current target as default (whole-array compare for is_default). |
| nml_string | rdb_nml_schema | Function | Construct a string key, capturing the current target as default. |
| nodal_fu | rdb_ocean_tide_astro | Subroutine | Nodal amplitude factor |
| nonoverlap_vanish_tol_for | rdb_ocean_pressure_force | Function | The grounded-layer gate’s “vanished on one side” threshold,
|
| ns_rank_north | rdb_ocean_halo | Function | North neighbour rank with periodic wrap-around. |
| ns_rank_south | rdb_ocean_halo | Function | South neighbour rank with periodic wrap-around. |
| nvtx_range_pop | rdb_profiler | Subroutine | |
| nvtx_range_push | rdb_profiler | Subroutine | |
| nw2_cosbell | rdb_ocean_state | Function | Cosine-bell kernel for the Neverworld2 basin: |
| nw2_spike | rdb_ocean_state | Function | Sin-spike kernel for the Neverworld2 basin: |
| nz_stack_is_sufficient | rdb_constants | Function |
|
| nz_stack_required | rdb_constants | Function | Smallest |
| obc_match_constituent | rdb_ocean_boundary_types | Function | Resolve an OBC edge constituent’s angular frequency |
| obc_tide_nodal_fill | rdb_ocean_boundary_types | Subroutine | Bake the nodal/astronomical correction into one edge’s per-constituent
|
| ocean_accumulate_mass_out | rdb_ocean_dyn | Subroutine | Accumulate the net mass (kg) that left the domain this RK stage into
|
| ocean_apply_ale_remap_centres | rdb_ocean_remap | Subroutine | Orchestrate the centre-cell pass of the ALE remap step (h_layer +
tracers). Public only for the unit-test suite.
Sequence: skip if EULERIAN_Z/LAGRANGIAN; snapshot column total + h_old;
build |
| ocean_apply_ale_remap_faces | rdb_ocean_remap | Subroutine | Face-velocity pass of the ALE remap. Remaps u_face_x_layer and v_face_y_layer h_old→h_new using arithmetic-mean face thicknesses and the per-column kernel. Public only for the unit-test suite. Velocity treated as the face “concentration” (analogous to T=hTr/h at centres); per-face conservation sum_k(h_face·u_face) preserved (momentum-conserving). Outer-wall faces take the adjacent cell’s thickness verbatim (no across-cell to average). |
| ocean_apply_ale_remap_step | rdb_ocean_remap | Subroutine | Top-level entry the driver calls between outer steps: snapshot h_old once,
remap centres (h_layer + tracers) AND faces using the same snapshot, then
re-derive bt_eta. Returns early for EULERIAN_Z/LAGRANGIAN.
|
| ocean_apply_conservative_min_thickness | rdb_ocean_min_thickness | Subroutine | Apply the conservative minimum-thickness adjustment in place on |
| ocean_bc_outer_face_tag | rdb_ocean_boundary_types | Function | The tag an edge’s OUTER FACE behaves as for the no-normal-flow
closures (mass-flux zeroing in the continuity, the |
| ocean_bc_state_bytes | rdb_ocean_boundary_types | Function | Counted allocatable footprint of the boundary state slot (0 when unallocated). |
| ocean_bc_state_destroy | rdb_ocean_boundary_types | Subroutine | |
| ocean_bc_state_enter_data | rdb_ocean_boundary_types | Subroutine | GPU mapping for |
| ocean_bc_state_exit_data | rdb_ocean_boundary_types | Subroutine | GPU unmapping — components first, parent last (reverse of enter_data). |
| ocean_bc_state_init | rdb_ocean_boundary_types | Subroutine | Cache grid extents and derive periodic flags. Data buffers stay
unallocated until a data source asks for them. Call
|
| ocean_bc_state_set_edges | rdb_ocean_boundary_types | Subroutine | Set the physical-domain-edge flags from a decomposition descriptor.
Called once by the driver after configure_ocean_bc so kernels can
gate wall / BC / periodic closures on physical edges (a subdomain
seam is never a wall), and re-derives the rank-local |
| ocean_bc_state_set_topology | rdb_ocean_boundary_types | Subroutine | Pre-create GRID TOPOLOGY injection (Python runtime API plan,
P2.5): force per-dimension periodicity the Oceananigans way
( |
| ocean_bc_type_from_string | rdb_ocean_boundary_types | Function | Convert a config-namelist edge string → integer OBC tag.
Case-INSENSITIVE ( |
| ocean_bc_validate_fold | rdb_ocean_boundary_types | Subroutine | Validate the tripolar north-fold tag. Call after all per-edge
tags are set and after |
| ocean_bc_validate_periodic | rdb_ocean_boundary_types | Subroutine | Validate periodic pairing + ghost-width + sponge incompatibility.
Call after all per-edge tags are set and after ocean_bc_state_init.
Derives |
| ocean_bdrag_destroy | rdb_ocean_bottom_drag | Subroutine | |
| ocean_bdrag_enter_data | rdb_ocean_bottom_drag | Subroutine | |
| ocean_bdrag_enter_data_impl | rdb_ocean_bottom_drag | Subroutine | |
| ocean_bdrag_exit_data | rdb_ocean_bottom_drag | Subroutine | |
| ocean_bdrag_exit_data_impl | rdb_ocean_bottom_drag | Subroutine | |
| ocean_bdrag_init | rdb_ocean_bottom_drag | Subroutine | |
| ocean_bottom_drag_apply_tendencies | rdb_ocean_bottom_drag | Subroutine |
|
| ocean_bottom_drag_bytes | rdb_ocean_bottom_drag | Function | Counted allocatable footprint of the bottom drag slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_bottom_drag_compute_tendencies | rdb_ocean_bottom_drag | Subroutine | Fill |
| ocean_bt_forcing_visc_rem_on | rdb_config | Function | PR-3 (D1): is the MOM6 |
| ocean_bt_rem_from_visc_rem_on | rdb_config | Function | PR-3 (D1): is |
| ocean_bt_renorm_visc_rem_on | rdb_config | Function | PR-3 (D1): is the MOM6 continuity |
| ocean_bt_visc_rem_producer_on | rdb_config | Function | D1 follow-up: is the visc_rem PRODUCER needed, independent of
the (retired) weighted BT-correction fold? |
| ocean_budget_is_active | rdb_ocean_console_stats | Function | Whether a tracer’s closed budget ( |
| ocean_budget_out | rdb_ocean_console_stats | Function | Console |
| ocean_budget_src | rdb_ocean_console_stats | Function | Console |
| ocean_budget_stage_weight | rdb_ocean_console_stats | Function | The per-outer-step weight that turns the salt/heat budget ACCUMULATORS into the state change they must account for. |
| ocean_budgets_bytes | rdb_ocean_budgets | Function | Counted allocatable footprint of the conservation budgets (own accumulator; registry contributors are counted by their owning slot) slot (0 when unallocated). |
| ocean_budgets_destroy | rdb_ocean_budgets | Subroutine | |
| ocean_budgets_drain_contributors | rdb_ocean_budgets | Subroutine | For each contributor: integrate |
| ocean_budgets_evaluate | rdb_ocean_budgets | Subroutine | Recompute |
| ocean_budgets_init | rdb_ocean_budgets | Subroutine | |
| ocean_budgets_init_snapshot | rdb_ocean_budgets | Subroutine | Snapshot |
| ocean_budgets_register_contributor | rdb_ocean_budgets | Subroutine | Register a per-kernel contributor: store a non-owning pointer to
the kernel-owned |
| ocean_budgets_set_area | rdb_ocean_budgets | Subroutine | Cache the per-cell T-area (m²) from the metrics slot. After this,
physical integrals weight by |
| ocean_budgets_set_mask | rdb_ocean_budgets | Subroutine | Override the default global mask. Useful for regional conservation diagnostics — “mass north of 30°S stays at FP.” |
| ocean_cavity_flux_bytes | rdb_ocean_cavity_flux | Function | Counted allocatable footprint (0 when unallocated). One
|
| ocean_cavity_flux_destroy | rdb_ocean_cavity_flux | Subroutine | Release the slot. |
| ocean_cavity_flux_enter_data | rdb_ocean_cavity_flux | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl so the device-attach map base is the heap object, not a polymorphic stack box. |
| ocean_cavity_flux_enter_data_impl | rdb_ocean_cavity_flux | Subroutine |
|
| ocean_cavity_flux_exit_data | rdb_ocean_cavity_flux | Subroutine | |
| ocean_cavity_flux_exit_data_impl | rdb_ocean_cavity_flux | Subroutine | |
| ocean_cavity_flux_init | rdb_ocean_cavity_flux | Subroutine | Allocate the slot. Gated on |
| ocean_cavity_flux_step | rdb_ocean_cavity_flux | Subroutine | One cavity basal-melt update: sample the far field, solve the three-equation interface on every covered column, deliver the two owned surface-flux components, and account for the solver status. |
| ocean_cavity_mass_step | rdb_ocean_cavity_flux | Subroutine | The real-freshwater MASS update — one call, at the THERMO
cadence, from inside the RK2 stage immediately after
|
| ocean_channel_drag_apply_tendencies | rdb_ocean_bottom_drag | Subroutine | Apply the per-layer side drag IMPLICITLY:
|
| ocean_channel_drag_compute_tendencies | rdb_ocean_bottom_drag | Subroutine | Per-layer lateral side-wall (channel) Rayleigh RATE
( |
| ocean_console_stats_report | rdb_ocean_console_stats | Subroutine | Compute current totals + means + max-CFL and emit a MOM6-style
console block via the shared |
| ocean_data_forcing_apply | rdb_ocean_data_forcing | Subroutine | Blend every active tag’s current bracket into its slot. |
| ocean_data_forcing_configure | rdb_ocean_data_forcing | Subroutine | Register every configured tag against the shared reader and
resolve the heat/salt destinations. A no-op when
|
| ocean_data_input_bytes | rdb_ocean_data_input | Function | Counted allocatable footprint (0 when unallocated). Summed over
every registered field’s |
| ocean_data_input_destroy | rdb_ocean_data_input | Subroutine | |
| ocean_data_input_enter_data | rdb_ocean_data_input | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl (the
AMD libomptarget cross-slot-overlap fix; see
|
| ocean_data_input_enter_data_impl | rdb_ocean_data_input | Subroutine | |
| ocean_data_input_exit_data | rdb_ocean_data_input | Subroutine | |
| ocean_data_input_exit_data_impl | rdb_ocean_data_input | Subroutine | |
| ocean_data_input_fill_static_host | rdb_ocean_data_input | Subroutine | One-shot HOST-side fill of a |
| ocean_data_input_fill_static_host_3d | rdb_ocean_data_input | Subroutine | 3-D twin of |
| ocean_data_input_init | rdb_ocean_data_input | Subroutine | Allocate the field registry. |
| ocean_data_input_load_static_2d | rdb_ocean_data_input | Subroutine | One-shot STATIC 2-D read: register, fill, close. The setup-time
convenience wrapper over |
| ocean_data_input_register_2d | rdb_ocean_data_input | Subroutine | Register a 2-D time-varying field |
| ocean_data_input_register_3d | rdb_ocean_data_input | Subroutine | Register a 3-D time-varying field |
| ocean_data_input_register_segment_2d | rdb_ocean_data_input | Subroutine | Register a 2-D OBC-segment field. The degenerate horizontal
axis (x for west/east, y for south/north) reads as |
| ocean_data_input_register_segment_3d | rdb_ocean_data_input | Subroutine | 3-D twin of |
| ocean_data_input_update_2d | rdb_ocean_data_input | Subroutine | Blend field |
| ocean_data_input_update_3d | rdb_ocean_data_input | Subroutine | 3-D twin of |
| ocean_data_input_update_all | rdb_ocean_data_input | Subroutine | Driver hook: refresh every registered field’s bracket for model
time |
| ocean_diag_bytes | rdb_ocean_diag | Function | Counted allocatable footprint of the diagnostics slot: the flat
remap-level arrays, the host NetCDF staging buffer, AND the
per-variable registry buffers (0 when unallocated). One
arr_bytes term per array — add a term here when a new allocatable
joins the type; new |
| ocean_diag_destroy | rdb_ocean_diag | Subroutine | |
| ocean_diag_disable | rdb_ocean_diag | Subroutine | Turn OFF the registered diagnostic |
| ocean_diag_enter_data | rdb_ocean_diag | Subroutine | Attach each registered var’s per-buffer allocatables to the device.
Called by |
| ocean_diag_enter_data_impl | rdb_ocean_diag | Subroutine | |
| ocean_diag_exit_data | rdb_ocean_diag | Subroutine | Detach in reverse order of enter_data. Idempotency-safe via
|
| ocean_diag_exit_data_impl | rdb_ocean_diag | Subroutine | |
| ocean_diag_init | rdb_ocean_diag | Subroutine | Allocate an empty registry sized at |
| ocean_diag_is_registered | rdb_ocean_diag | Function |
|
| ocean_diag_register | rdb_ocean_diag | Subroutine | Register a new diagnostic variable. Grows the registry via
capacity doubling on overflow. Buffer allocation depends on
|
| ocean_diag_set_output_density_levels | rdb_ocean_diag | Subroutine | Configure the isopycnal (DENSITY) output grid — monotone-increasing
target potential densities (kg/m³). Stored copy; must be called
BEFORE any |
| ocean_diag_set_output_sigma_levels | rdb_ocean_diag | Subroutine | Configure the terrain-following (SIGMA) output grid — cumulative
sigma fractions (0..1, monotone shallow->deep). Stored copy; must
be called BEFORE any |
| ocean_diag_set_output_z_levels | rdb_ocean_diag | Subroutine | Configure the fixed-z output grid. Stored copy; the original
|
| ocean_diag_set_output_zstar_levels | rdb_ocean_diag | Subroutine | Configure the SSH-tracking (ZSTAR) output grid — reference interface
depths (m, positive-down, monotone shallow->deep; deepest = H_ref).
Stored copy; must be called BEFORE any |
| ocean_diag_step | rdb_ocean_diag | Subroutine | Advance every registered variable. Behaviour by |
| ocean_diffusive_number | rdb_ocean_stability_audit | Function | Two-axis explicit forward-Euler diffusive number
|
| ocean_diffusive_number_limit | rdb_ocean_stability_audit | Function | Accessor for |
| ocean_dt_tracer_advect_ratios_ok | rdb_ocean_dyn | Function | Configure-time validity of the ( |
| ocean_dyn_bytes | rdb_ocean_dyn | Function | Counted allocatable footprint of the split-RK2 driver (BT work state + wide-halo shadow state) slot (0 when unallocated). |
| ocean_dyn_destroy | rdb_ocean_dyn | Subroutine | |
| ocean_dyn_enable_bt_wide | rdb_ocean_dyn | Subroutine | Allocate, initialise, and GPU-attach the wide-halo shadow state
from |
| ocean_dyn_enter_data | rdb_ocean_dyn | Subroutine | |
| ocean_dyn_enter_data_impl | rdb_ocean_dyn | Subroutine | |
| ocean_dyn_exit_data | rdb_ocean_dyn | Subroutine | |
| ocean_dyn_exit_data_impl | rdb_ocean_dyn | Subroutine | |
| ocean_dyn_flush_tracer_window | rdb_ocean_dyn | Subroutine | Mandatory end-of-segment flush of the windowed tracer-advect
accumulators (spec §(c) — MOM6’s |
| ocean_dyn_init | rdb_ocean_dyn | Subroutine | Initialise the barotropic working-state slot. Pass |
| ocean_dyn_is_thermo_step | rdb_ocean_dyn | Function | Returns |
| ocean_dyn_is_tracer_advect_step | rdb_ocean_dyn | Function | Returns |
| ocean_dyn_step | rdb_ocean_dyn | Subroutine | Multilayer extension of |
| ocean_dyn_step_barotropic | rdb_ocean_dyn | Subroutine | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. Unsplit SSP-RK2 (Heun’s method) outer step on the barotropic C-grid state. Couples continuity-PPM (h-update) and the Sadourny Coriolis-advection tendency (u, v update) into one second-order-accurate step. |
| ocean_dyn_step_split | rdb_ocean_dyn | Subroutine | Split-explicit SSP-RK2 outer step on the multilayer state.
Parallel to |
| ocean_dyn_therm_dt | rdb_ocean_dyn | Function | Effective |
| ocean_eos_compute | rdb_ocean_eos_compute | Subroutine | Compute |
| ocean_epbl_bytes | rdb_ocean_epbl | Function | Counted allocatable footprint of the EPBL slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_epbl_destroy | rdb_ocean_epbl | Subroutine | |
| ocean_epbl_enter_data | rdb_ocean_epbl | Subroutine | |
| ocean_epbl_enter_data_impl | rdb_ocean_epbl | Subroutine | |
| ocean_epbl_exit_data | rdb_ocean_epbl | Subroutine | |
| ocean_epbl_exit_data_impl | rdb_ocean_epbl | Subroutine | |
| ocean_epbl_init | rdb_ocean_epbl | Subroutine | Allocate the persistent fields + column workspaces. Always
allocates (configure runs after init, so |
| ocean_epbl_set_f_centre | rdb_ocean_epbl | Subroutine | Fill |
| ocean_fold_begin | rdb_ocean_fold_exchange | Subroutine | Open a group of |
| ocean_fold_end | rdb_ocean_fold_exchange | Subroutine | Close the group: every packed slab must have been unpacked. |
| ocean_fold_exchange | rdb_ocean_fold_exchange | Subroutine | Move every packed message: one isend + irecv per non-self peer
with a non-empty message, the self pair as a local copy, then
|
| ocean_fold_exchange_destroy | rdb_ocean_fold_exchange | Subroutine | Release the plan, buffers and topology. Idempotent. |
| ocean_fold_exchange_init | rdb_ocean_fold_exchange | Subroutine | Record the topology and, on a north-row rank of an east-west split
folded grid, build the routing plan and map it to the device.
Every rank may call it (it is not collective); a rank that does
not fold, or a |
| ocean_fold_exchange_reserve | rdb_ocean_fold_exchange | Subroutine | Pre-size the buffers for the largest group of the run, in
(row x layer) slabs summed over its fields — e.g. the
|
| ocean_fold_is_distributed | rdb_ocean_fold_exchange | Function | True iff this rank folds through the exchange ( |
| ocean_fold_north_centre | rdb_ocean_fold_exchange | Interface | |
| ocean_fold_north_corner | rdb_ocean_fold_exchange | Interface | |
| ocean_fold_north_u_face | rdb_ocean_fold_exchange | Interface | |
| ocean_fold_north_v_face | rdb_ocean_fold_exchange | Interface | |
| ocean_fold_pack | rdb_ocean_fold_exchange | Interface | |
| ocean_fold_pack_2d | rdb_ocean_fold_exchange | Subroutine | Pack a 2D field of storage shape (nxa, nya) into the open group. |
| ocean_fold_pack_3d | rdb_ocean_fold_exchange | Subroutine | Pack every layer of a 3D field into the open group: the sender’s owned mirror-source points, rows below (and, for v / corner, on) the fold line. |
| ocean_fold_unpack | rdb_ocean_fold_exchange | Interface | |
| ocean_fold_unpack_2d | rdb_ocean_fold_exchange | Subroutine | Unpack the next field of the exchanged group into a 2D field. |
| ocean_fold_unpack_3d | rdb_ocean_fold_exchange | Subroutine | Unpack the next field of the exchanged group: write every north ghost row (all storage columns) and, for v / corner, the fold-line row’s west half (self-conjugate column → 0 for a vector). |
| ocean_fold_wrap_centre_3d_state | rdb_ocean_fold_apply | Subroutine | Fold ONLY h_layer + tracers (centre fields) — the continuity mid-split site, which re-wraps the centre fields between the zonal and meridional Lie-split halves. No-op when not folding. |
| ocean_fold_wrap_centre_flat | rdb_ocean_fold_apply | Subroutine | Fold the north seam of an arbitrary flat cell-centred (T-stagger)
SCALAR field — copy, no sign flip, exactly |
| ocean_fold_wrap_eta_2d | rdb_ocean_fold_apply | Subroutine | Fold a 2D cell-centred η field (driver-level SSH wrap site). No-op when not folding. |
| ocean_fold_wrap_state | rdb_ocean_fold_apply | Subroutine | Fold the north seam of h_layer, u/v layer faces, and every
registered tracer. Call AFTER |
| ocean_fold_wrap_stress | rdb_ocean_fold_apply | Subroutine | Fold the surface-stress pair: |
| ocean_fold_wrap_time_means | rdb_ocean_fold_apply | Subroutine | Fold the |
| ocean_fold_wrap_visc_rem | rdb_ocean_fold_apply | Subroutine | Fold the viscous-remnant pair: |
| ocean_frazil_heat_src | rdb_ocean_console_stats | Function | Console |
| ocean_geothermal_apply_tracers | rdb_ocean_geothermal | Subroutine | Add the geothermal bottom heat flux to the lowest massive
tracer layer. Operates in |
| ocean_geothermal_destroy | rdb_ocean_geothermal | Subroutine | No-op shell mirroring the surface-flux destroy. |
| ocean_geothermal_init | rdb_ocean_geothermal | Subroutine | No-op shell mirroring the surface-flux init; sets |
| ocean_gm_bytes | rdb_ocean_gm | Function | Counted allocatable footprint of the GM slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_gm_destroy | rdb_ocean_gm | Subroutine | |
| ocean_gm_enter_data | rdb_ocean_gm | Subroutine | |
| ocean_gm_enter_data_impl | rdb_ocean_gm | Subroutine | |
| ocean_gm_exit_data | rdb_ocean_gm | Subroutine | |
| ocean_gm_exit_data_impl | rdb_ocean_gm | Subroutine | |
| ocean_gm_init | rdb_ocean_gm | Subroutine | Allocate the 2D face KhTh fields, per-layer face transports, and
the |
| ocean_halo_bt_group_2d | rdb_ocean_halo | Subroutine | Single-call two-pass exchange of three barotropic fields. Calls the three individual 2D exchanges in order, which each run their own full two-pass X-then-Y exchange. |
| ocean_halo_bt_group_2d_wide | rdb_ocean_halo | Subroutine | Width-parameterized grouped barotropic exchange (eta+ubt+vbt). Bumps oh_count_bt_group; suppresses the three inner primitive counters exactly as ocean_halo_bt_group_2d does. |
| ocean_halo_buffers_ensure_nz | rdb_ocean_halo | Subroutine | Grow the persistent send/recv buffers to hold at least nz layers. Called at the top of each 3D exchange routine before pack/unpack. The 2D routines use the same buffers and always need <= any 3D capacity, so they are unaffected. |
| ocean_halo_buffers_ensure_wide | rdb_ocean_halo | Subroutine | Grow the persistent send/recv buffers to hold at least a wide 2D exchange at ghost width ng_wide. Uses the same exit-delete / dealloc / alloc / enter-create pattern as ocean_halo_buffers_ensure_nz. Safe to call with ng_wide == oh_nghost (no-op if already large enough). |
| ocean_halo_centre | rdb_ocean_halo | Interface | |
| ocean_halo_centre_2d | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a cell-centred 2D field. |
| ocean_halo_centre_2d_impl | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a cell-centred 2D field. Core body shared by ocean_halo_centre_2d (ng=oh_nghost) and ocean_halo_centre_2d_wide (ng=ng_wide). |
| ocean_halo_centre_2d_wide | rdb_ocean_halo | Subroutine | Width-parameterized centre-2D halo exchange. Identical algorithm to ocean_halo_centre_2d but operates on a wider ghost band ng_wide (>= oh_nghost). Fail-loud guards prevent ng_wide from exceeding the neighbour interior. |
| ocean_halo_centre_3d | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a cell-centred 3D field. Batched: packs ALL nz layers into one buffer per direction and posts ONE isend+irecv pair per needed direction (not per layer). Buffer index formula: ((L-1)rows + (row-1))width + k_within_strip where L=layer, rows=nyt, width=ng (centre X-pass). |
| ocean_halo_destroy | rdb_ocean_halo | Subroutine | Release buffers and topology state. Idempotent. |
| ocean_halo_exchange_ice_fluxes | rdb_ocean_halo_state | Subroutine | Seam ghosts of the three per-cell ice->ocean flux diagnostics the
couplers hand to the ocean — |
| ocean_halo_exchange_ice_state | rdb_ocean_halo_state | Subroutine | Make the sea-ice CATEGORY state valid in every ghost cell (X1 of
the sea-ice MPI plan): |
| ocean_halo_exchange_ice_transport | rdb_ocean_halo_state | Subroutine | X4 of the sea-ice MPI plan: the seam ghosts every advective
substep of |
| ocean_halo_exchange_ml_state | rdb_ocean_halo_state | Subroutine | Exchange ghost cells for the four multilayer prognostic field kinds via the O1 halo primitives: |
| ocean_halo_face_x | rdb_ocean_halo | Interface | |
| ocean_halo_face_x_2d | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a 2D x-face field. |
| ocean_halo_face_x_2d_impl | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a 2D x-face field. Core body shared by ocean_halo_face_x_2d (ng=oh_nghost) and ocean_halo_face_x_2d_wide (ng=ng_wide). |
| ocean_halo_face_x_2d_wide | rdb_ocean_halo | Subroutine | Width-parameterized face-x-2D halo exchange. |
| ocean_halo_face_x_3d | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a 3D x-face field. Batched: packs ALL nz layers into one buffer per direction. Face-x ownership: west rank sends (ng+1)nytnz eastward, east rank sends ngnytnz westward (D1 asymmetry preserved). Y-pass strip is nxt1ngnz (full face-x i extent × ng rows × nz). |
| ocean_halo_face_y | rdb_ocean_halo | Interface | |
| ocean_halo_face_y_2d | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a 2D y-face field. Symmetric to face_x_2d with i↔j, x↔y. |
| ocean_halo_face_y_2d_impl | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a 2D y-face field. Core body shared by ocean_halo_face_y_2d (ng=oh_nghost) and ocean_halo_face_y_2d_wide (ng=ng_wide). |
| ocean_halo_face_y_2d_wide | rdb_ocean_halo | Subroutine | Width-parameterized face-y-2D halo exchange. |
| ocean_halo_face_y_3d | rdb_ocean_halo | Subroutine | Two-pass X-then-Y halo exchange for a 3D y-face field. Batched: packs ALL nz layers into one buffer per direction. Face-y ownership (D1): south rank sends (ng+1)nxtnz northward, north rank sends ngnxtnz southward. X-pass uses standard centre-style (ng per column per layer over nyt1 rows). |
| ocean_halo_init | rdb_ocean_halo | Subroutine | Initialise topology and allocate persistent device-resident buffers. Idempotent: destroys prior state before re-init on grid change. |
| ocean_halo_is_decomposed | rdb_ocean_halo | Function | True iff a genuine multi-rank seam exists (initialised, px>1 or py>1). |
| ocean_halo_is_decomposed_x | rdb_ocean_halo | Function | True iff the X axis is split across ranks (px>1); skip the local x wrap. |
| ocean_halo_is_decomposed_y | rdb_ocean_halo | Function | Y analogue of ocean_halo_is_decomposed_x (py>1). |
| ocean_halo_is_init | rdb_ocean_halo | Function | True if ocean_halo_init has been called and not yet destroyed. |
| ocean_halo_reserve | rdb_ocean_halo | Subroutine | Pre-size the pack/recv buffers to the worst-case capacity for this run at init time, so that NO device reallocation fires mid-run. |
| ocean_handle_refresh_host | rdb_ocean_api | Subroutine | Lazy D->H refresh of every P2-exposed leaf array, gated on
|
| ocean_hdiff_tracer_bytes | rdb_ocean_hdiff_tracer | Function | Counted allocatable footprint of the horizontal tracer diffusion slot (0 when unallocated). |
| ocean_hdiff_tracer_destroy | rdb_ocean_hdiff_tracer | Subroutine | |
| ocean_hdiff_tracer_enter_data | rdb_ocean_hdiff_tracer | Subroutine | |
| ocean_hdiff_tracer_enter_data_impl | rdb_ocean_hdiff_tracer | Subroutine | |
| ocean_hdiff_tracer_exit_data | rdb_ocean_hdiff_tracer | Subroutine | |
| ocean_hdiff_tracer_exit_data_impl | rdb_ocean_hdiff_tracer | Subroutine | |
| ocean_hdiff_tracer_init | rdb_ocean_hdiff_tracer | Subroutine | |
| ocean_heat_src_sum | rdb_ocean_console_stats | Function | Assemble the total HEAT source integral (pre-weight, pre-ρ) that
feeds |
| ocean_horizontal_viscosity_apply_tendencies | rdb_ocean_horizontal_viscosity | Subroutine | Forward-Euler accumulation of the viscous tendency onto the
face velocities. Shim — hoists |
| ocean_horizontal_viscosity_bytes | rdb_ocean_horizontal_viscosity | Function | Counted allocatable footprint of the horizontal viscosity slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_horizontal_viscosity_compute_ke_diss | rdb_ocean_horizontal_viscosity | Subroutine | Fill |
| ocean_horizontal_viscosity_compute_tendencies | rdb_ocean_horizontal_viscosity | Subroutine | Source-selecting shim over |
| ocean_horizontal_viscosity_compute_tendencies_on | rdb_ocean_horizontal_viscosity | Subroutine | Fill |
| ocean_hvisc_destroy | rdb_ocean_horizontal_viscosity | Subroutine | |
| ocean_hvisc_enter_data | rdb_ocean_horizontal_viscosity | Subroutine | |
| ocean_hvisc_enter_data_impl | rdb_ocean_horizontal_viscosity | Subroutine | |
| ocean_hvisc_exit_data | rdb_ocean_horizontal_viscosity | Subroutine | |
| ocean_hvisc_exit_data_impl | rdb_ocean_horizontal_viscosity | Subroutine | |
| ocean_hvisc_init | rdb_ocean_horizontal_viscosity | Subroutine | Allocate the two tendency scratch buffers. Same
optional- |
| ocean_hvisc_set_aniso_direction | rdb_ocean_horizontal_viscosity | Subroutine | Precompute the constant Smith & McWilliams (2003) direction-
tensor factors from the anisotropy direction vector |
| ocean_ideal_age_age_step | rdb_ocean_ideal_age | Subroutine | Interior aging, |
| ocean_ideal_age_apply | rdb_ocean_ideal_age | Subroutine | Driver-facing entry point for the interior-aging SOURCE term.
Self-gates on |
| ocean_ideal_age_reset_step | rdb_ocean_ideal_age | Subroutine | Surface Dirichlet BC, |
| ocean_ideal_age_reset_surface | rdb_ocean_ideal_age | Subroutine | Driver-facing entry point for the surface Dirichlet BC.
Self-gates on |
| ocean_ideal_age_young_val | rdb_ocean_ideal_age | Function | Host-scalar evaluation of the surface-band age value |
| ocean_kappa_shear_bytes | rdb_ocean_kappa_shear | Function | Counted allocatable footprint of the kappa-shear slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_kappa_shear_destroy | rdb_ocean_kappa_shear | Subroutine | |
| ocean_kappa_shear_enter_data | rdb_ocean_kappa_shear | Subroutine | |
| ocean_kappa_shear_enter_data_impl | rdb_ocean_kappa_shear | Subroutine | |
| ocean_kappa_shear_exit_data | rdb_ocean_kappa_shear | Subroutine | |
| ocean_kappa_shear_exit_data_impl | rdb_ocean_kappa_shear | Subroutine | |
| ocean_kappa_shear_init | rdb_ocean_kappa_shear | Subroutine | Allocate the persistent fields. Always allocates (configure
runs after init, so |
| ocean_kappa_shear_init_vertex | rdb_ocean_kappa_shear | Subroutine | Allocate the vertex-mode corner fields and set |
| ocean_kappa_shear_set_f_centre | rdb_ocean_kappa_shear | Subroutine | Fill |
| ocean_kappa_shear_set_f_corner | rdb_ocean_kappa_shear | Subroutine | Fill |
| ocean_lateral_mix_bytes | rdb_ocean_lateral_mix | Function | Counted allocatable footprint of the lateral viscosity slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_lateral_mix_compute | rdb_ocean_lateral_mix | Subroutine | Dispatcher — runs the compute kernel for the active closure tag.
|
| ocean_lateral_mix_compute_leith | rdb_ocean_lateral_mix | Subroutine | Public only for the unit-test suite; ignore in production code.
Populate |
| ocean_lateral_mix_compute_leith_biharm | rdb_ocean_lateral_mix | Subroutine | Public only for the unit-test suite; ignore in production code.
Populate |
| ocean_lateral_mix_compute_smag | rdb_ocean_lateral_mix | Subroutine | Populate |
| ocean_lateral_mix_compute_smag_ah | rdb_ocean_lateral_mix | Subroutine | Public only for the unit-test suite; ignore in production code.
Populate |
| ocean_lateral_mix_compute_vel_scale | rdb_ocean_lateral_mix | Subroutine | Public only for the unit-test suite; ignore in production code.
Live velocity-scale viscosity (MOM6 |
| ocean_lateral_mix_destroy | rdb_ocean_lateral_mix | Subroutine | |
| ocean_lateral_mix_enter_data | rdb_ocean_lateral_mix | Subroutine | |
| ocean_lateral_mix_enter_data_impl | rdb_ocean_lateral_mix | Subroutine | |
| ocean_lateral_mix_exit_data | rdb_ocean_lateral_mix | Subroutine | |
| ocean_lateral_mix_exit_data_impl | rdb_ocean_lateral_mix | Subroutine | |
| ocean_lateral_mix_init | rdb_ocean_lateral_mix | Subroutine | Allocate the face viscosity coefficients + corner-vorticity
scratch. Default |
| ocean_linear_layer_density | rdb_ocean_state | Function | Linearly-spaced layer densities for the MOM6 |
| ocean_meke_bytes | rdb_ocean_meke | Function | Counted allocatable footprint of the MEKE slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_meke_destroy | rdb_ocean_meke | Subroutine | |
| ocean_meke_enter_data | rdb_ocean_meke | Subroutine | |
| ocean_meke_enter_data_impl | rdb_ocean_meke | Subroutine | |
| ocean_meke_exit_data | rdb_ocean_meke | Subroutine | |
| ocean_meke_exit_data_impl | rdb_ocean_meke | Subroutine | |
| ocean_meke_init | rdb_ocean_meke | Subroutine | Allocate the prognostic field, the derived diffusivity, and the
Strang-stage workspaces. Always allocates (configure runs after
init); setup uses plain host allocation (no |
| ocean_meke_set_f_centre | rdb_ocean_meke | Subroutine | Copy a pre-filled cell-centre Coriolis magnitude |f| (1/s) onto the
MEKE slot, so |
| ocean_metrics_bytes | rdb_ocean_metrics | Function | Counted allocatable footprint of the grid metrics slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_metrics_destroy | rdb_ocean_metrics | Subroutine | |
| ocean_metrics_enter_data | rdb_ocean_metrics | Subroutine | |
| ocean_metrics_enter_data_impl | rdb_ocean_metrics | Subroutine | Arrays-only attach. The parent |
| ocean_metrics_exit_data | rdb_ocean_metrics | Subroutine | |
| ocean_metrics_exit_data_impl | rdb_ocean_metrics | Subroutine | |
| ocean_metrics_init | rdb_ocean_metrics | Subroutine | Allocate + zero every metric array. Always allocates (configure
runs after init, before |
| ocean_mle_bytes | rdb_ocean_mle | Function | Counted allocatable footprint of the MLE / Fox-Kemper slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_mle_destroy | rdb_ocean_mle | Subroutine | |
| ocean_mle_enter_data | rdb_ocean_mle | Subroutine | |
| ocean_mle_enter_data_impl | rdb_ocean_mle | Subroutine | |
| ocean_mle_exit_data | rdb_ocean_mle | Subroutine | |
| ocean_mle_exit_data_impl | rdb_ocean_mle | Subroutine | |
| ocean_mle_init | rdb_ocean_mle | Subroutine | Allocate the 2D ML diagnostics + per-layer face transports. Always allocates (configure runs after init); the off-state footprint is two 2D + two face-shaped 3D arrays. |
| ocean_munk_delta_m | rdb_ocean_stability_audit | Function | Munk boundary-layer width |
| ocean_munk_min_cells | rdb_ocean_stability_audit | Function | Accessor for |
| ocean_munk_required_nu_h | rdb_ocean_stability_audit | Function |
|
| ocean_munk_worst_case | rdb_ocean_stability_audit | Subroutine | Worst-case (smallest) |
| ocean_obc_any_open_edge | rdb_ocean_obc_baroclinic | Function | True when ANY edge TAG of the domain needs the baroclinic open-edge
treatment. Reads the global tags only (never |
| ocean_obc_apply_baroclinic | rdb_ocean_obc_baroclinic | Subroutine | Set per-layer normal velocity at open-ish faces after
|
| ocean_obc_bytes | rdb_ocean_obc | Function | Counted allocatable footprint of the open boundary condition slot (0 when unallocated). |
| ocean_obc_destroy | rdb_ocean_obc | Subroutine | |
| ocean_obc_fill_ghosts | rdb_ocean_obc_baroclinic | Subroutine | Fill h_layer and tracer hTr ghosts at open-ish edges. h_layer: zero-gradient (copy adjacent interior column). Tracer hTr per (j,k): outflow ⇒ ghost := interior (zero-gradient); inflow ⇒ ghost hTr := clamped_tracer(it) * h_ghost. Inflow criterion uses the per-layer wall-face velocity sign (outward-normal convention): west inflow u_wall>0, east u_wall<0, south v_wall>0, north v_wall<0. No-op when no edge is open-ish. Per-tracer loop outside the DCs. |
| ocean_obc_init | rdb_ocean_obc | Subroutine | |
| ocean_obc_refill_ghost_ssh | rdb_ocean_obc_baroclinic | Subroutine | Re-establish a zero-gradient free surface in the open-edge GHOST columns, called at the END of the outer step (after the ALE remap) so the diagnostic manager sees a consistent halo. |
| ocean_obc_update_reservoirs | rdb_ocean_obc_baroclinic | Subroutine | Evolve per-edge reservoir concentrations |
| ocean_p_surf_bytes | rdb_ocean_p_surf | Function | Counted allocatable footprint of the p_surf slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_p_surf_destroy | rdb_ocean_p_surf | Subroutine | |
| ocean_p_surf_enter_data | rdb_ocean_p_surf | Subroutine | Attach the device-resident seam arrays. Only when enabled.
select-type -> non-poly |
| ocean_p_surf_enter_data_impl | rdb_ocean_p_surf | Subroutine | |
| ocean_p_surf_exit_data | rdb_ocean_p_surf | Subroutine | |
| ocean_p_surf_exit_data_impl | rdb_ocean_p_surf | Subroutine | |
| ocean_p_surf_init | rdb_ocean_p_surf | Subroutine | Minimal init — the real allocation happens in |
| ocean_periodic_wrap_centre_2d | rdb_ocean_periodic | Subroutine | Fill ghost cells of a cell-centred 2D field (e.g. η, bt_H_ref) with the periodically-matching interior values. Explicit-shape dummies avoid per-launch descriptor-walk memcpys. |
| ocean_periodic_wrap_centre_3d | rdb_ocean_periodic | Subroutine | Fill ghost cells of a cell-centred 3D field (e.g. h_layer, hTr, T, S).
|
| ocean_periodic_wrap_face_x_2d | rdb_ocean_periodic | Subroutine | Fill ghost faces of a 2D x-face field (e.g. bt_ubt, shape nx_total+1). Also copies the west physical-wall face value onto the east physical-wall face (belt-and-braces seam invariant, §1.1 property b). nx_face = nx_total + 1. |
| ocean_periodic_wrap_face_x_3d | rdb_ocean_periodic | Subroutine | Fill ghost faces of a 3D x-face field (e.g. u_face_x_layer).
nx_face = nx_total + 1. |
| ocean_periodic_wrap_face_y_2d | rdb_ocean_periodic | Subroutine | Fill ghost faces of a 2D y-face field (e.g. bt_vbt, shape ny_total+1). Also copies south physical-wall face onto north physical-wall face. ny_face = ny_total + 1. |
| ocean_periodic_wrap_face_y_3d | rdb_ocean_periodic | Subroutine | Fill ghost faces of a 3D y-face field (e.g. v_face_y_layer).
ny_face = ny_total + 1. |
| ocean_periodic_wrap_state | rdb_ocean_periodic | Subroutine | Convenience wrapper: wrap h_layer, u/v layer faces, and every
registered tracer. Called at stage entry (before
|
| ocean_poison_ghost_bands | rdb_ocean_ghost_poison | Subroutine | Sentinel-NaN the exchange-covered ghost bands of all multilayer prognostic fields and the BT workstate fields. Called at the TOP of each outer step (before any exchange or kernel) so that any kernel consuming an unexchanged ghost produces a loud NaN at the offending step. |
| ocean_porous_refresh | rdb_ocean_dyn | Subroutine | Recompute the porous-barrier layer-averaged open-area fractions
from the current layer thicknesses. No-op (and untouched
placeholder arrays) when |
| ocean_pressure_force_apply | rdb_ocean_pressure_force | Subroutine | Forward-Euler accumulation of the PGF acceleration onto the face
velocities. Additive (not overwriting), so apply ordering vs the
Coriolis apply doesn’t matter before the next tendency-compute.
|
| ocean_pressure_force_bytes | rdb_ocean_pressure_force | Function | Counted allocatable footprint of the pressure force slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_pressure_force_compute | rdb_ocean_pressure_force | Subroutine | Compute the hydrostatic pressure-gradient acceleration at every C-grid face. Variants (see the OPGF_VARIANT_* / GPRIME / FV_MOM6 constants for the per-variant formulas): MONT (layer-mean ρgh), FV_LITE (+ z-correction), FV_WRIGHT (+ in-situ Wright density), GPRIME, FV_MOM6. |
| ocean_pressure_force_destroy | rdb_ocean_pressure_force | Subroutine | |
| ocean_pressure_force_enter_data | rdb_ocean_pressure_force | Subroutine | |
| ocean_pressure_force_enter_data_impl | rdb_ocean_pressure_force | Subroutine | |
| ocean_pressure_force_exit_data | rdb_ocean_pressure_force | Subroutine | |
| ocean_pressure_force_exit_data_impl | rdb_ocean_pressure_force | Subroutine | |
| ocean_pressure_force_init | rdb_ocean_pressure_force | Subroutine | Allocate the scratch buffers. Default nz_ml=1 keeps the barotropic-only path constructible; passing nz_ml sizes them for the multilayer kernel. |
| ocean_pressure_force_set_bathymetry | rdb_ocean_pressure_force | Subroutine | Copy |
| ocean_pseudo_salt_deviation | rdb_ocean_pseudo_salt | Subroutine | Diagnostic helper: |
| ocean_pseudo_salt_register | rdb_ocean_pseudo_salt | Subroutine | Setup-time entry point: registers the “pseudo_salt” passive
tracer (name/units/long_name copied verbatim from Shao 2016)
and records its slot on |
| ocean_pseudo_salt_seed | rdb_ocean_pseudo_salt | Subroutine | Seed |
| ocean_redi_bytes | rdb_ocean_redi | Function | Counted allocatable footprint of the Redi slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_redi_destroy | rdb_ocean_redi | Subroutine | |
| ocean_redi_enter_data | rdb_ocean_redi | Subroutine | |
| ocean_redi_enter_data_impl | rdb_ocean_redi | Subroutine | |
| ocean_redi_exit_data | rdb_ocean_redi | Subroutine | |
| ocean_redi_exit_data_impl | rdb_ocean_redi | Subroutine | |
| ocean_redi_init | rdb_ocean_redi | Subroutine | Allocate the Phase-A coefficient arrays. Always allocates
(configure runs after init); off-state footprint is the six
face-shaped (nsurf) coefficient arrays. Plain host allocation
(no |
| ocean_remap_merge_vanished_content | rdb_ocean_remap | Subroutine | Public test shim over the included |
| ocean_remap_scan_preconditions | rdb_ocean_remap | Subroutine | Scan every column for the two remap preconditions and report how
badly they are missed — the domain-wide counterpart of
|
| ocean_remap_tracer_column | rdb_ocean_remap | Subroutine | Single-column unit-test entry: wraps |
| ocean_remap_tracer_field | rdb_ocean_remap | Subroutine | Flat-impl tracer remap. Per (i,j) column: c = hTr/h (vanishing-layer-
guarded) → per-column remap kernel → hTr_new = c_new·h_new. Conservative.
|
| ocean_restart_check_decomp | rdb_ocean_restart_io | Subroutine | Validate schema + decomposition (+ optional grid/vcoord/tracer)
metadata in |
| ocean_restart_destroy | rdb_ocean_restart | Subroutine | |
| ocean_restart_init | rdb_ocean_restart | Subroutine | |
| ocean_restart_read_local | rdb_ocean_restart_io | Subroutine | Read a per-rank ocean restart into the registry’s host arrays
(FULL local extent) + return the scalar metadata. Validates
decomp + grid/vcoord/tracer metadata first and error-stops on
mismatch unless |
| ocean_restart_write_local | rdb_ocean_restart_io | Subroutine | Write a per-rank ocean restart file from the registry durably
(to |
| ocean_salt_src_sum | rdb_ocean_console_stats | Function | Assemble the total SALT source integral (pre-weight, pre-ρ) that
feeds |
| ocean_sea_ice_bytes | rdb_ice_state | Function | Counted allocatable footprint of the sea-ice slot (one
|
| ocean_sea_ice_destroy | rdb_ice_state | Subroutine | Reverse of |
| ocean_sea_ice_enter_data | rdb_ice_state | Subroutine | |
| ocean_sea_ice_enter_data_impl | rdb_ice_state | Subroutine | Attach the slot’s allocatables to the device. |
| ocean_sea_ice_exit_data | rdb_ice_state | Subroutine | |
| ocean_sea_ice_exit_data_impl | rdb_ice_state | Subroutine | Reverse of |
| ocean_sea_ice_init | rdb_ice_state | Subroutine | Cache the grid extents, allocate the frazil (PR 1) + Winton
column (PR 3a) prognostics, and mark the slot live. Allocation
is gated on |
| ocean_seam_refresh_surface_stress | rdb_ocean_halo_state | Subroutine | Make the surface-stress pair valid in every ghost cell, then
re-derive |
| ocean_sigma_stiffness | rdb_ocean_stability_audit | Function | One face’s terrain-following stiffness |
| ocean_sigma_stiffness_limit | rdb_ocean_stability_audit | Function | Accessor for |
| ocean_sigma_stiffness_worst | rdb_ocean_stability_audit | Subroutine | Worst (largest) |
| ocean_slopes_build_e | rdb_ocean_isopycnal_slopes | Subroutine | Build GEOPOTENTIAL interface heights bottom-up: |
| ocean_slopes_bytes | rdb_ocean_isopycnal_slopes | Function | Counted allocatable footprint of the isopycnal slopes slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_slopes_compute | rdb_ocean_isopycnal_slopes | Subroutine | Public entry point — fill |
| ocean_slopes_compute_impl | rdb_ocean_isopycnal_slopes | Subroutine | NVHPC doesn’t descriptor-walk per launch. |
| ocean_slopes_destroy | rdb_ocean_isopycnal_slopes | Subroutine | |
| ocean_slopes_enter_data | rdb_ocean_isopycnal_slopes | Subroutine | Poly TBP delegating to a |
| ocean_slopes_enter_data_impl | rdb_ocean_isopycnal_slopes | Subroutine | |
| ocean_slopes_exit_data | rdb_ocean_isopycnal_slopes | Subroutine | |
| ocean_slopes_exit_data_impl | rdb_ocean_isopycnal_slopes | Subroutine | |
| ocean_slopes_init | rdb_ocean_isopycnal_slopes | Subroutine | Allocate the slope / N² outputs + the vert-fill T/S scratch +
the interface-height buffer. Default |
| ocean_slopes_mask_open_column | rdb_ocean_isopycnal_slopes | Subroutine | Zero slope / N² at every interior interface |
| ocean_slopes_pass_x | rdb_ocean_isopycnal_slopes | Subroutine | u-face slope + N² pass. Interface |
| ocean_slopes_pass_y | rdb_ocean_isopycnal_slopes | Subroutine | v-face slope + N² pass — mirror of |
| ocean_slopes_set_bathymetry | rdb_ocean_isopycnal_slopes | Subroutine | Copy the bed depth |
| ocean_slopes_vert_fill_ts | rdb_ocean_isopycnal_slopes | Subroutine | Fill massless layers in T/S with sensible values via one pass of
constant- |
| ocean_sponge_apply | rdb_ocean_sponge | Subroutine | Apply momentum relaxation in any sponge-tagged edge band. No-op when no edge is OBC_SPONGE. |
| ocean_sponge_apply_maps | rdb_ocean_sponge | Subroutine | Map-driven sponge dispatch ( |
| ocean_sponge_apply_tracers | rdb_ocean_sponge | Subroutine | Relax tracer concentrations (hTr/h) toward per-edge targets in any
sponge band with |
| ocean_sponge_bytes | rdb_ocean_sponge | Function | Counted allocatable footprint (0 when |
| ocean_sponge_destroy | rdb_ocean_sponge | Subroutine | |
| ocean_sponge_enter_data | rdb_ocean_sponge | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl so the
device-attach map base is the heap object, not a polymorphic stack
box (AMD libomptarget cross-slot-overlap fix; copied verbatim from
|
| ocean_sponge_enter_data_impl | rdb_ocean_sponge | Subroutine | |
| ocean_sponge_exit_data | rdb_ocean_sponge | Subroutine | |
| ocean_sponge_exit_data_impl | rdb_ocean_sponge | Subroutine | |
| ocean_sponge_init | rdb_ocean_sponge | Subroutine | Allocate the maps + reference-state arrays. Call ONLY when
|
| ocean_sponge_refresh_target | rdb_ocean_sponge | Subroutine | Re-evaluate the ANALYTIC |
| ocean_sponge_snapshot_reference | rdb_ocean_sponge | Subroutine | Snapshot the seeded initial condition into |
| ocean_stability_audit | rdb_ocean_stability_audit | Subroutine | Run all configure-time stability checks. Must run AFTER
|
| ocean_stability_min_cell | rdb_ocean_stability_audit | Subroutine | Smallest actual cell edge over the WET PHYSICAL domain (excludes
ghosts and land), taken over BOTH |
| ocean_state_build_restart_registry | rdb_ocean_state | Subroutine | Walk the ocean god state and register every field that must checkpoint for a bit-exact step-(N+1) resume (ROADMAP A1). |
| ocean_state_bytes | rdb_ocean_state | Function | Counted allocatable footprint of the whole ocean god state, summed
from each slot’s own |
| ocean_state_destroy | rdb_ocean_state | Subroutine | |
| ocean_state_enter_data | rdb_ocean_state | Subroutine | Attach the ocean god state’s allocatables to the device.
Map the parent struct first so the device knows the shape of
|
| ocean_state_exit_data | rdb_ocean_state | Subroutine | Reverse of |
| ocean_state_fill_restart_metadata | rdb_ocean_state | Subroutine | Build the grid/vcoord/tracer fingerprint validated on resume (review #7). |
| ocean_state_init | rdb_ocean_state | Subroutine | Construct the ocean god state. Each slot’s |
| ocean_state_init_from_config | rdb_ocean_state | Subroutine | Seed the cfg-derived scalars the slot inits read up front (layer count, ideal-age toggle), allocate via init(grid), then override the linear-EOS params (after eos%init has set its defaults). Carries the ocean branch that state_init_from_config held before the coastal / ocean state split — the order (nz_ml + ideal_age before init, eos after) is load-bearing and matches the pre-split behaviour. |
| ocean_state_restart_read | rdb_ocean_state | Subroutine | Read a per-rank ocean restart into the (host) prognostic arrays.
MUST run BEFORE |
| ocean_state_restart_write | rdb_ocean_state | Subroutine | Build the registry, pull every DEVICE-MAPPED registered array
down with |
| ocean_state_restart_write_drop_field | rdb_ocean_state | Subroutine | Test-only sibling of |
| ocean_state_seed_from_cfg | rdb_ocean_state | Subroutine | Populate the ocean prognostic state with an analytical IC
derived from cfg scalars. Bathymetry is set per |
| ocean_state_seed_land_cells | rdb_ocean_state | Subroutine | Hold land T-cells ( |
| ocean_surface_flux_apply_cover_const | rdb_ocean_surface_flux | Subroutine | Mask the STATIC scalar |
| ocean_surface_flux_apply_sw_penetration | rdb_ocean_surface_flux | Subroutine | Additive correction that redistributes the penetrating
shortwave fraction of |
| ocean_surface_flux_apply_tracers | rdb_ocean_surface_flux | Subroutine | Add the surface heat + salt fluxes directly to the top
tracer layer. Operates in |
| ocean_surface_flux_assemble | rdb_ocean_surface_flux | Subroutine | The single gate that derives |
| ocean_surface_flux_bytes | rdb_ocean_surface_flux | Function | Counted allocatable footprint of the surface flux slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_surface_restore_apply_tracers | rdb_ocean_surface_flux | Subroutine | Surface buoyancy restoring (MOM6 |
| ocean_surface_stress_apply_cover | rdb_ocean_surface_stress | Subroutine | Zero the wind-stress pair on every C-grid face that touches an
ice-covered cell, then refresh |
| ocean_surface_stress_apply_tendencies | rdb_ocean_surface_stress | Subroutine | Outer-shim — flattens the derived-type derefs before the
|
| ocean_surface_stress_bytes | rdb_ocean_surface_stress | Function | Counted allocatable footprint of the surface stress slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_surface_stress_compute_tendencies | rdb_ocean_surface_stress | Subroutine | Fill |
| ocean_surface_stress_refresh_mag | rdb_ocean_surface_stress | Subroutine | Recompute |
| ocean_surface_stress_set_derived | rdb_ocean_surface_stress | Subroutine | Fill |
| ocean_surface_stress_set_shelf_from_ustar | rdb_ocean_surface_stress | Subroutine | Publish the ice-base stress from a FRICTION VELOCITY:
|
| ocean_surfflux_alloc_components | rdb_ocean_surface_flux | Subroutine | Allocate the 22-field component set + the two |
| ocean_surfflux_assemble_cover_impl | rdb_ocean_surface_flux | Subroutine | Ice-shelf-cover twin of |
| ocean_surfflux_assemble_impl | rdb_ocean_surface_flux | Subroutine | Flat |
| ocean_surfflux_cover_const_impl | rdb_ocean_surface_flux | Subroutine | Flat |
| ocean_surfflux_dealloc_components | rdb_ocean_surface_flux | Subroutine | Deallocate the component set (no-op on an already-unallocated
slot — every |
| ocean_surfflux_destroy | rdb_ocean_surface_flux | Subroutine | |
| ocean_surfflux_enter_data | rdb_ocean_surface_flux | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl so the device-attach map base is the heap object, not a polymorphic stack box (AMD libomptarget cross-slot-overlap fix). |
| ocean_surfflux_enter_data_impl | rdb_ocean_surface_flux | Subroutine | |
| ocean_surfflux_exit_data | rdb_ocean_surface_flux | Subroutine | |
| ocean_surfflux_exit_data_impl | rdb_ocean_surface_flux | Subroutine | |
| ocean_surfflux_init | rdb_ocean_surface_flux | Subroutine | |
| ocean_surfflux_set_components | rdb_ocean_surface_flux | Subroutine | Configure-time gate for the PR-12 component set
( |
| ocean_surfflux_set_const | rdb_ocean_surface_flux | Subroutine | Fill |
| ocean_surfflux_set_p_surf_const | rdb_ocean_surface_flux | Subroutine | Seed the atmospheric surface-pressure INPUT component
|
| ocean_surfflux_set_restore | rdb_ocean_surface_flux | Subroutine | Seed the surface buoyancy restoring (MOM6 |
| ocean_surfflux_set_sw | rdb_ocean_surface_flux | Subroutine | Seed the shortwave-penetration band parameters and set the
|
| ocean_surfstress_cover_impl | rdb_ocean_surface_stress | Subroutine | Flat |
| ocean_surfstress_derived_impl | rdb_ocean_surface_stress | Subroutine |
|
| ocean_surfstress_destroy | rdb_ocean_surface_stress | Subroutine | |
| ocean_surfstress_enter_data | rdb_ocean_surface_stress | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl so the device-attach map base is the heap object, not a polymorphic stack box (AMD libomptarget cross-slot-overlap fix). Slot-header presence comes from the orchestrator’s root copyin(state); only the leaf arrays + scratch are attached here. |
| ocean_surfstress_enter_data_impl | rdb_ocean_surface_stress | Subroutine | |
| ocean_surfstress_exit_data | rdb_ocean_surface_stress | Subroutine | |
| ocean_surfstress_exit_data_impl | rdb_ocean_surface_stress | Subroutine | |
| ocean_surfstress_init | rdb_ocean_surface_stress | Subroutine | |
| ocean_surfstress_refresh_stress_mag | rdb_ocean_surface_stress | Subroutine | Type-bound-facing shim behind every |
| ocean_surfstress_set_2gyre | rdb_ocean_surface_stress | Subroutine | Fill |
| ocean_surfstress_set_const | rdb_ocean_surface_stress | Subroutine | Fill |
| ocean_surfstress_set_neverworld2 | rdb_ocean_surface_stress | Subroutine | Fill |
| ocean_tidal_mixing_bytes | rdb_ocean_tidal_mixing | Function | Counted allocatable footprint of the tidal mixing slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_tidal_mixing_destroy | rdb_ocean_tidal_mixing | Subroutine | |
| ocean_tidal_mixing_enter_data | rdb_ocean_tidal_mixing | Subroutine | |
| ocean_tidal_mixing_enter_data_impl | rdb_ocean_tidal_mixing | Subroutine | |
| ocean_tidal_mixing_exit_data | rdb_ocean_tidal_mixing | Subroutine | |
| ocean_tidal_mixing_exit_data_impl | rdb_ocean_tidal_mixing | Subroutine | |
| ocean_tidal_mixing_init | rdb_ocean_tidal_mixing | Subroutine | Allocate the persistent fields. Always allocates (configure
runs after init, so |
| ocean_tidal_mixing_set_e_uniform | rdb_ocean_tidal_mixing | Subroutine | Fill the bottom energy field |
| ocean_tides_bytes | rdb_ocean_tides | Function | Counted allocatable footprint of the tides slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_tides_destroy | rdb_ocean_tides | Subroutine | |
| ocean_tides_enter_data | rdb_ocean_tides | Subroutine | Attach the device-resident tide arrays. Only when enabled.
select-type -> non-poly |
| ocean_tides_enter_data_impl | rdb_ocean_tides | Subroutine | |
| ocean_tides_exit_data | rdb_ocean_tides | Subroutine | |
| ocean_tides_exit_data_impl | rdb_ocean_tides | Subroutine | |
| ocean_tides_init | rdb_ocean_tides | Subroutine | Minimal init — the real allocation + astronomy fill happens in
|
| ocean_top_drag_apply_tendencies | rdb_ocean_top_drag | Subroutine |
|
| ocean_top_drag_bytes | rdb_ocean_top_drag | Function | Counted allocatable footprint of the top-drag slot (0 when
unallocated). One |
| ocean_top_drag_compute_tendencies | rdb_ocean_top_drag | Subroutine | Fill |
| ocean_top_drag_destroy | rdb_ocean_top_drag | Subroutine | Release the slot. |
| ocean_top_drag_enter_data | rdb_ocean_top_drag | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl so the device-attach map base is the heap object, not a polymorphic box. |
| ocean_top_drag_enter_data_impl | rdb_ocean_top_drag | Subroutine |
|
| ocean_top_drag_exit_data | rdb_ocean_top_drag | Subroutine | |
| ocean_top_drag_exit_data_impl | rdb_ocean_top_drag | Subroutine | |
| ocean_top_drag_init | rdb_ocean_top_drag | Subroutine | Allocate the slot. Gated on |
| ocean_varmix_build_static | rdb_ocean_varmix | Subroutine | Fill the static |
| ocean_varmix_bytes | rdb_ocean_varmix | Function | Counted allocatable footprint of the VarMix slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_varmix_destroy | rdb_ocean_varmix | Subroutine | |
| ocean_varmix_enter_data | rdb_ocean_varmix | Subroutine | |
| ocean_varmix_enter_data_impl | rdb_ocean_varmix | Subroutine | |
| ocean_varmix_exit_data | rdb_ocean_varmix | Subroutine | |
| ocean_varmix_exit_data_impl | rdb_ocean_varmix | Subroutine | |
| ocean_varmix_init | rdb_ocean_varmix | Subroutine | Allocate the static grid terms, the per-step diagnostics, and the
KhTh/KhTr base face fields. Always allocates (configure runs after
init); the static |
| ocean_vcoord_build_zref_full | rdb_ocean_vcoord | Subroutine | Populate |
| ocean_vcoord_bytes | rdb_ocean_vcoord | Function | Counted allocatable footprint of the vertical coordinate slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_vcoord_closed_face_masks | rdb_ocean_vcoord | Subroutine | Partial-step z-level FACE CLOSURE mask for |
| ocean_vcoord_compute_target_h | rdb_ocean_vcoord | Subroutine | Thin polymorphic wrapper. A type-bound procedure’s passed object
must be |
| ocean_vcoord_compute_target_h_impl | rdb_ocean_vcoord | Subroutine | Populate |
| ocean_vcoord_compute_target_h_rho | rdb_ocean_vcoord | Subroutine | Thin polymorphic wrapper for the isopycnal ( |
| ocean_vcoord_compute_target_h_rho_impl | rdb_ocean_vcoord | Subroutine | Isopycnal regrid: place layer interfaces on the prescribed
|
| ocean_vcoord_count_bed_steps | rdb_ocean_vcoord | Function | Count the wet velocity faces at which the two columns’ BED falls
in different nominal |
| ocean_vcoord_count_ledges | rdb_ocean_vcoord | Function | Count LEDGE cells: a cell that is LIVE at layer |
| ocean_vcoord_destroy | rdb_ocean_vcoord | Subroutine | |
| ocean_vcoord_enter_data | rdb_ocean_vcoord | Subroutine | Map every host allocatable onto the device. Idempotent guard
via |
| ocean_vcoord_enter_data_impl | rdb_ocean_vcoord | Subroutine | |
| ocean_vcoord_eta0_target | rdb_ocean_vcoord | Subroutine | The target layer thickness at |
| ocean_vcoord_exit_data | rdb_ocean_vcoord | Subroutine | |
| ocean_vcoord_exit_data_impl | rdb_ocean_vcoord | Subroutine | |
| ocean_vcoord_geometric_target | rdb_ocean_vcoord | Subroutine | Geometric target-grid kernels (EULERIAN_Z, SIGMA, ZSIGMA,
ZSTAR_SIGMA, ZSTAR_FULL; formulae documented on
|
| ocean_vcoord_init | rdb_ocean_vcoord | Subroutine | Allocate every per-column array the slot owns: |
| ocean_vcoord_is_terrain_following | rdb_ocean_stability_audit | Function | Does this |
| ocean_vcoord_k_bot_from_target | rdb_ocean_vcoord | Subroutine | The shared FIRST-LIVE-LAYER index counting UP from the bed —
|
| ocean_vcoord_k_top_from_target | rdb_ocean_vcoord | Subroutine | The shared FIRST-LIVE-LAYER index, counting down from the top —
|
| ocean_vcoord_rho_target | rdb_ocean_vcoord | Subroutine | Column kernel of the RHO / HYCOM regrid (algorithm: see
|
| ocean_vcoord_rho_target_column | rdb_ocean_vcoord | Subroutine | One column of the RHO / HYCOM regrid (steps 0-5 of
|
| ocean_vcoord_set_z_fixed_profile | rdb_ocean_vcoord | Subroutine | Install a stretched |
| ocean_vcoord_z_fixed_target | rdb_ocean_vcoord | Subroutine |
|
| ocean_vcoord_z_fixed_target_uniform | rdb_ocean_vcoord | Subroutine |
|
| ocean_vcoord_zstar_target | rdb_ocean_vcoord | Subroutine |
|
| ocean_vdiff_bytes | rdb_ocean_vdiff | Function | Counted allocatable footprint of the implicit vertical diffusion slot (0 when unallocated). |
| ocean_vdiff_destroy | rdb_ocean_vdiff | Subroutine | |
| ocean_vdiff_enter_data | rdb_ocean_vdiff | Subroutine | |
| ocean_vdiff_enter_data_impl | rdb_ocean_vdiff | Subroutine | |
| ocean_vdiff_exit_data | rdb_ocean_vdiff | Subroutine | |
| ocean_vdiff_exit_data_impl | rdb_ocean_vdiff | Subroutine | |
| ocean_vdiff_init | rdb_ocean_vdiff | Subroutine | |
| ocean_vert_adv_destroy | rdb_ocean_vertical_advection | Subroutine | |
| ocean_vert_adv_enter_data | rdb_ocean_vertical_advection | Subroutine | Type-bound wrapper — delegates to the non-polymorphic impl so the device-attach map base is the heap object, not a polymorphic stack box (AMD libomptarget cross-slot-overlap fix). |
| ocean_vert_adv_enter_data_impl | rdb_ocean_vertical_advection | Subroutine | |
| ocean_vert_adv_exit_data | rdb_ocean_vertical_advection | Subroutine | |
| ocean_vert_adv_exit_data_impl | rdb_ocean_vertical_advection | Subroutine | |
| ocean_vert_adv_init | rdb_ocean_vertical_advection | Subroutine | |
| ocean_vertical_advection_bytes | rdb_ocean_vertical_advection | Function | Counted allocatable footprint of the vertical advection slot (0 when unallocated). |
| ocean_viscous_cfl_limit | rdb_ocean_stability_audit | Function | Accessor for |
| ocean_viscous_cfl_max_dt | rdb_ocean_stability_audit | Function | Largest |
| ocean_viscous_cfl_max_nu_h | rdb_ocean_stability_audit | Function | Largest |
| ocean_viscous_cfl_number | rdb_ocean_stability_audit | Function |
|
| ocean_vmix_bytes | rdb_ocean_vmix | Function | Counted allocatable footprint of the vertical mixing slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_vmix_destroy | rdb_ocean_vmix | Subroutine | |
| ocean_vmix_enter_data | rdb_ocean_vmix | Subroutine | |
| ocean_vmix_enter_data_impl | rdb_ocean_vmix | Subroutine | |
| ocean_vmix_exit_data | rdb_ocean_vmix | Subroutine | |
| ocean_vmix_exit_data_impl | rdb_ocean_vmix | Subroutine | |
| ocean_vmix_init | rdb_ocean_vmix | Subroutine | Allocate the kv / kt / ks diffusivity fields at layer
interfaces. Default values: kv = kv_bg (= pp81_nu_bg),
kt = ks = kt_bg (= pp81_kappa_bg) at interior interfaces;
boundary interfaces k=1 and k=nz+1 are zeroed (closed BC).
BL fields ( |
| ocean_wave_speed_build_static | rdb_ocean_wave_speed | Subroutine | Copy a pre-filled cell-centre Coriolis magnitude |f| (1/s) onto
the slot (mirror of |
| ocean_wave_speed_bytes | rdb_ocean_wave_speed | Function | Counted allocatable footprint of the wave speed slot (0 when unallocated). One arr_bytes term per array — add a term here when a new allocatable joins the type. |
| ocean_wave_speed_destroy | rdb_ocean_wave_speed | Subroutine | |
| ocean_wave_speed_enter_data | rdb_ocean_wave_speed | Subroutine | |
| ocean_wave_speed_enter_data_impl | rdb_ocean_wave_speed | Subroutine | |
| ocean_wave_speed_exit_data | rdb_ocean_wave_speed | Subroutine | |
| ocean_wave_speed_exit_data_impl | rdb_ocean_wave_speed | Subroutine | |
| ocean_wave_speed_init | rdb_ocean_wave_speed | Subroutine | Allocate the persistent (nx, ny) fields. Always allocates
(configure runs after init, so |
| oh_count_bt_group | rdb_ocean_halo_counters | Subroutine | Increment the bt_group counter. Called once in ocean_halo_bt_group_2d bodies. |
| oh_count_bt_u_mid | rdb_ocean_halo_counters | Subroutine | Increment the bt_u_mid counter. Called at the mid-substep bt_ubt face_x exchange site. |
| oh_count_centre_2d | rdb_ocean_halo_counters | Subroutine | Increment the centre_2d standalone counter. Called at the top of each ocean_halo_centre_2d body. |
| oh_count_centre_3d | rdb_ocean_halo_counters | Subroutine | Increment the centre_3d standalone counter. Called once in ocean_halo_centre_3d (after suppressing inner 2d bumps). |
| oh_count_face_x_2d | rdb_ocean_halo_counters | Subroutine | Increment the face_x_2d standalone counter. Called at the top of each ocean_halo_face_x_2d body. |
| oh_count_face_x_3d | rdb_ocean_halo_counters | Subroutine | Increment the face_x_3d standalone counter. Called once in ocean_halo_face_x_3d (after suppressing inner 2d bumps). |
| oh_count_face_y_2d | rdb_ocean_halo_counters | Subroutine | Increment the face_y_2d standalone counter. Called at the top of each ocean_halo_face_y_2d body. |
| oh_count_face_y_3d | rdb_ocean_halo_counters | Subroutine | Increment the face_y_3d standalone counter. Called once in ocean_halo_face_y_3d (batched, no per-layer 2d loop). |
| oh_count_ml_state | rdb_ocean_halo_counters | Subroutine | Increment the ml_state counter. Called once in ocean_halo_exchange_ml_state. |
| oh_count_msgs | rdb_ocean_halo_counters | Subroutine | Increment the MPI isend post counter by n.
NOT subject to the suppress depth: messages are physical MPI
operations regardless of semantic grouping. Called in the MPI
|
| oh_count_suppress_off | rdb_ocean_halo_counters | Subroutine | Decrement suppress depth (floored at 0) after a wrapper completes. |
| oh_count_suppress_on | rdb_ocean_halo_counters | Subroutine | Increment suppress depth so inner primitive increments are no-ops. Nesting-safe: each on/off pair increments/decrements a counter so nested suppress pairs (ml_state wrapping 3d wrappers) work correctly. |
| oh_count_suppressed | rdb_ocean_halo_counters | Function | Return .true. if suppress depth > 0 (any suppress scope is active). |
| oh_counters_format | rdb_ocean_halo_counters | Function | Return a one-line counter summary string. |
| oh_counters_get | rdb_ocean_halo_counters | Subroutine | Return all 9 semantic counters in one call. |
| oh_counters_msgs | rdb_ocean_halo_counters | Function | Return the total MPI ISEND post count. NOT included in oh_counters_total (separate physical counter). |
| oh_counters_reset | rdb_ocean_halo_counters | Subroutine | Reset all 9 semantic counters and the message counter to zero. Does NOT reset the suppress flag. |
| oh_counters_total | rdb_ocean_halo_counters | Function | Return the sum of all 9 semantic counters. |
| ok_all_ranks | rdb_ice_transport | Subroutine | 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). |
| one_m_exp_x | rdb_ocean_epbl | Function | (1 - exp(-x)) / x, Taylor-safe at small x. |
| open_ghost_fill_edge | rdb_ocean_obc_baroclinic | Function | Edge types that receive the open zero-gradient ghost fill (velocity here, η in the barotropic substep — kept identical on purpose). OPEN / TIDAL / CHAPMAN / CLAMPED; NOT NESTED (barotropic-wall path). |
| open_stream | rdb_ocean_diag_netcdf | Subroutine | Create the NetCDF file, define dims + vars for every
currently-registered diag var, and bind the post-fire emit hook.
Must be called AFTER all |
| output_rank_filename | rdb_io_netcdf | Function | Generate a per-rank filename: |
| p_surf_configure | rdb_ocean_p_surf | Subroutine | Allocate |
| p_surf_update_seam | rdb_ocean_p_surf | Subroutine | Refresh the combined seam field |
| p_surf_update_seam_impl | rdb_ocean_p_surf | Subroutine | Flat-impl device fill (explicit-shape dummies — no descriptor walk).
|
| p_top_has_producer | rdb_config | Function | Is there anything in this configuration that WRITES
|
| parse_bdrag_variant | rdb_ocean_bottom_drag | Function | Translate a namelist string into a |
| parse_buoyancy_coeffs | rdb_ocean_vmix | Function | Map the |
| parse_cadence_attr | rdb_ocean_diag | Subroutine | Parse a cadence attribute |
| parse_cavity_draft_config | rdb_ocean_cavity | Function |
|
| parse_cavity_draft_sign | rdb_ocean_cavity | Function |
|
| parse_cavity_draft_source | rdb_ocean_cavity | Function |
|
| parse_cavity_exchange_law | rdb_ocean_cavity_melt | Function | Translate an exchange-law string into a |
| parse_cavity_freshwater | rdb_ocean_cavity_melt | Function | Translate a |
| parse_cavity_ice_mode | rdb_ocean_cavity_melt | Function | Translate an ice-conduction string into a |
| parse_cavity_volume_comp | rdb_ocean_cavity_melt | Function | Translate a |
| parse_constituent_list | rdb_ocean_setup | Subroutine | Tokenize a whitespace/comma-separated constituent list into
catalog indices (case-insensitive). Unknown tokens fail loud;
|
| parse_coriolis_scheme | rdb_ocean_metrics | Function | Map a |
| parse_date_string | rdb_ocean_tide_astro | Subroutine | Parse a “YYYY-MM-DD” calendar date. |
| parse_diag_remap_scheme | rdb_ocean_diag_fills | Function | Map a |
| parse_diag_spec | rdb_ocean_diag | Function | Parse the |
| parse_eos_variant | rdb_eos | Function | Translate a |
| parse_epbl_combine | rdb_ocean_epbl | Function | |
| parse_epbl_lt_scheme | rdb_ocean_epbl | Function | |
| parse_epbl_mstar_scheme | rdb_ocean_epbl | Function | |
| parse_epbl_vstar_scheme | rdb_ocean_epbl | Function | |
| parse_file | rdb_nml_schema | Subroutine | Read the namelist file at |
| parse_frhat_scheme | rdb_constants | Function | Convert an |
| parse_from_lines | rdb_nml_schema | Subroutine | Walk an in-memory namelist (already split into |
| parse_grid_config | rdb_ocean_metrics | Function | Map a |
| parse_group_body | rdb_nml_schema | Subroutine | Tokenize and apply |
| parse_kpp_sw_method | rdb_ocean_vmix | Function | Map the |
| parse_lateral_closure | rdb_ocean_lateral_mix | Function | Translate a namelist string into an |
| parse_ocean_vcoord_type | rdb_ocean_vcoord | Function | Ocean-path wrapper around the canonical |
| parse_one_spec_token | rdb_ocean_diag | Subroutine | Parse a single |
| parse_opgf_variant | rdb_ocean_pressure_force | Function | Translate a namelist string into an |
| parse_porous_eta_interp | rdb_ocean_porous | Function | Map |
| parse_porous_source | rdb_ocean_porous | Function | Map |
| parse_pv_adv_scheme | rdb_coriolis_adv | Function | Translate a namelist string into a |
| parse_pv_variant | rdb_coriolis_adv | Function | Translate a namelist string into a |
| parse_remap_method | rdb_vcoord | Function | Convert a namelist string to a REMAP_* constant. |
| parse_stretching_mode | rdb_vcoord | Function | Convert a namelist string to a STRETCH_* constant. |
| parse_tdrag_variant | rdb_ocean_top_drag | Function | Translate a namelist string into a |
| parse_tfreeze_set | rdb_eos | Function | Translate a |
| parse_tracer_recon | rdb_recon_weno | Function | Map a namelist string onto a TRACER_RECON_* code. |
| parse_vcoord_type | rdb_vcoord | Function | Convert a namelist string to a |
| parse_z_fixed_profile | rdb_vcoord | Function |
|
| path_to_c_string | rdb_io_netcdf | Function | Pack a Fortran string into a null-terminated c_char array for
the |
| pd_limit_meridional_impl | rdb_continuity | Subroutine | Positive-definite per-donor outflux limiter — meridional (y) pass
(P2). Mirror of |
| pd_limit_zonal_impl | rdb_continuity | Subroutine | Positive-definite per-donor outflux limiter — zonal (x) pass (P2,
plan §P2 / decision D2). Scales the per-layer east-face mass fluxes
DOWN so no donor cell loses more thickness than it holds above the
floor |
| pgf_free_surface_gravity | rdb_barotropic_coupling | Function | The gravity of the free-surface term the slow layer PGF CARRIES,
i.e. |
| pgf_nonoverlap_gate_on | rdb_ocean_state | Function | Single source of truth for “is the grounded-layer PGF gate armed?”
( |
| plm_edges_layer | rdb_ocean_pressure_force | Subroutine | PLM top/bottom edge values of ONE layer |
| plm_face_swept | rdb_recon_weno | Function | PLM (piecewise-linear) swept-average face value. |
| plm_slope_nonuniform | rdb_remap_column | Subroutine | Thickness-weighted PLM slope — Colella & Woodward (1984) eq (1.7)
with the (1.8) bound, the form MOM6 ships as |
| poison_centre_2d | rdb_ocean_ghost_poison | Subroutine | Poison centre-type 2D ghost bands. |
| poison_centre_3d | rdb_ocean_ghost_poison | Subroutine | Poison centre-type 3D ghost bands. |
| poison_face_x_2d | rdb_ocean_ghost_poison | Subroutine | Poison x-face 2D ghost bands. fld has shape (nx_total+1, ny_total) = (nxl+2ng+1, nyl+2ng). NEVER poison i = ng+1 (west seam face) or i = ng+nxl+1 (east seam face): these carry ownership/wrap-direction asymmetries that make it unsafe to overwrite them. West ghost faces: i = 1..ng. East ghost faces: i = ng+nxl+2..nx_face. Y-bands centre-type. |
| poison_face_x_3d | rdb_ocean_ghost_poison | Subroutine | Poison x-face 3D ghost bands. Seam-face exclusion: see poison_face_x_2d. |
| poison_face_y_2d | rdb_ocean_ghost_poison | Subroutine | Poison y-face 2D ghost bands. fld has shape (nx_total, ny_total+1) = (nxl+2ng, nyl+2ng+1). NEVER poison j = ng+1 (south seam face) or j = ng+nyl+1 (north seam face). South ghost faces: j = 1..ng. North ghost faces: j = ng+nyl+2..ny_face. X-bands are centre-type: i = 1..ng and i = ng+nxl+1..nx_total. |
| poison_face_y_3d | rdb_ocean_ghost_poison | Subroutine | Poison y-face 3D ghost bands. Seam-face exclusion: see poison_face_y_2d. |
| porous_cum_area | rdb_ocean_porous | Function | Cumulative open area of a face from the deepest along-face point
up to interface height |
| porous_eta_face | rdb_ocean_porous | Function | Interface height at a velocity point from the two adjacent
cell-centre interface heights. MOM6’s |
| porous_fill_stats_resolved | rdb_ocean_porous | Subroutine | Fill the per-face |
| porous_narrow_3d | rdb_ocean_porous | Subroutine | Multiply a face-staggered per-layer field by the open-area
fraction: |
| porous_open_width | rdb_ocean_porous | Function | Open WIDTH fraction of a face at interface height |
| porous_stats_are_ordered | rdb_ocean_porous | Function |
|
| porous_update_face_areas | rdb_ocean_porous | Subroutine | Recompute the layer-averaged open-area fractions from the CURRENT layer thicknesses. Interface-height dependent, so this runs once per RK2 stage on the device. |
| posix_rename | rdb_ocean_restart_io | Function | Atomically rename |
| post_parse_validate | rdb_nml_schema | Subroutine | Required-key + cross-check pass shared by the file and buffer parsers, then the error-return / error-stop finalization. |
| ppm_cell_limiter | rdb_continuity | Subroutine | Colella-Woodward 1984 eq 1.10 monotonic limiter on the parabolic profile in a single cell. Three branches: |
| ppm_edge_nonuniform | rdb_remap_column | Subroutine | Colella & Woodward (1984) eq (1.6): the fourth-order interface value
between cells 1 and 2 on a NON-UNIFORM stencil |
| ppm_edge_two_cell | rdb_remap_column | Subroutine | Thickness-weighted two-cell interface value — the non-uniform
generalisation of |
| ppm_edges_layer | rdb_ocean_pressure_force | Subroutine | PPM top/bottom edge values of salinity and temperature in ONE layer
|
| ppm_interface_values | rdb_ocean_pressure_force | Subroutine | The PPM estimates of salinity and temperature at the interface
between layer |
| ppm_jump_nonuniform | rdb_remap_column | Subroutine | Colella & Woodward (1984) eq (1.7) — the thickness-weighted
second-order jump |
| ppm_limit_edges | rdb_ocean_pressure_force | Subroutine | The PPM edge limiter of one interior layer: clip both interface estimates into the monotone bounds of the three adjacent means, flatten a local extremum to PCM, and apply the Colella & Woodward (1984) parabola limiter. |
| ppm_limit_pos | rdb_continuity | Subroutine | Positivity-preserving limiter on the PPM reconstruction.
Mirrors MOM6’s |
| ppm_limited_slope | rdb_continuity | Subroutine | Van Leer monotonized centred slope for cell i. Returns 0 at local extrema (sign change between left and right differences) and the slope-limited centred derivative otherwise. Standard PPM convention; see Colella-Woodward 1984. |
| ppm_mirror_h | rdb_continuity | Function | Mirror-h at a land neighbour (spec §14 C2 / MOM6’s
reflected-coast PPM): substitute the LOCAL cell’s
thickness (or tracer) for a LAND neighbour’s held floor value
so the PPM parabola sees a flat, reflected coast and the
wet-side face value is not biased by the dry column. Branchless:
|
| pqm_end_value_h4 | rdb_remap_column | Subroutine | One-sided 4th-order polynomial fit of the cell averages |
| pqm_solve_diag_dominant | rdb_remap_column | Subroutine | Diagonally-dominant tridiagonal solve; central diagonal supplied as the
OFFSET |
| pressure_above_x | rdb_ocean_isopycnal_slopes | Function | Surface-relative hydrostatic pressure at the interface K straddled
by layer |
| print_banner | rdb_banner | Subroutine | Print a cute banner to the console when the simulation starts. The
subtitle line adapts to the regime: “ocean circulation model” for
|
| print_bt_budget | rdb_ocean_bt_budget_probe | Subroutine | Compute + print the per-region BT-mode budget snapshot. |
| print_gpu_binding | rdb_comm_env | Subroutine | Per-rank one-shot diagnostic: world rank -> requested device num / actual device num reported by the OpenACC runtime. Lets us confirm that mpirun is binding each rank to its own GPU rather than serialising N ranks on device 0. |
| print_status_line | rdb_driver | Subroutine | Print a table-formatted status line with estimated remaining time. When mean_S / mean_T are present, two extra columns are written between Mass and Wall so the multilayer header lines up. |
| probe_dS | rdb_ocean_dyn | Subroutine | Debug-gated diagnostic. Pulls |
| probe_h_vs_eta_residual | rdb_ocean_dyn | Subroutine | Debug probe: print max|sum_k(h_layer) - (H_ref + bt_eta_end)|
over interior cells. In Eulerian-z this is forced to zero
by |
| profiler_disable | rdb_profiler | Subroutine | Public for the unit-test suite only. |
| profiler_enable | rdb_profiler | Subroutine | Public for the unit-test suite only. |
| profiler_end | rdb_profiler | Subroutine | Finalise the profiler |
| profiler_get_time | rdb_profiler | Function | Accumulated time (s) for a named region. Public for the unit-test suite only. |
| profiler_init | rdb_profiler | Subroutine | Initialise the profiler |
| profiler_report | rdb_profiler | Subroutine | Print profiling report If root_region is specified, percentages are relative to that region |
| profiler_reset | rdb_profiler | Subroutine | Reset all timing data |
| profiler_start | rdb_profiler | Subroutine | Start a named profiling region If nvtx_only is true, the region only appears in NVTX timeline, not in text report |
| profiler_stop | rdb_profiler | Subroutine | Stop a named profiling region |
| pseudo_salt_conflicts_ice | rdb_ocean_pseudo_salt | Function |
|
| pseudo_salt_conflicts_restore | rdb_ocean_pseudo_salt | Function |
|
| pseudo_salt_needs_thermo_warning | rdb_ocean_pseudo_salt | Function |
|
| push_tok | rdb_nml_schema | Subroutine | Append a token, growing the buffer as needed. |
| pv_adv_required_nghost | rdb_coriolis_adv | Function | Minimum |
| pv_adv_scheme_is_implemented | rdb_coriolis_adv | Function |
|
| pv_variant_is_implemented | rdb_coriolis_adv | Function |
|
| raw_sh_xx | rdb_ocean_horizontal_viscosity | Function | Raw tension strain |
| raw_sh_xy | rdb_ocean_horizontal_viscosity | Function | Raw shear strain |
| rdb_debug_chksum | rdb_ocean_chksum | Interface | Grid-location-aware checksum: derives the array extents from
|
| rdb_debug_chksum_2d | rdb_ocean_chksum | Subroutine | 2D twin of rdb_debug_chksum_3d (BT-work fields). |
| rdb_debug_chksum_3d | rdb_ocean_chksum | Subroutine | Location-aware 3D checksum: derives |
| rdb_def_var_1d | rdb_io_netcdf | Subroutine | Define a 1D variable with working precision type |
| rdb_flush_logs | rdb_ocean_api | Subroutine | Flush the buffered log stream (unit 6 / stdout — what
|
| rdb_ocean_canonical_catalog_name | rdb_ocean_api | Function | Name of canonical-catalog entry |
| rdb_ocean_canonical_catalog_size | rdb_ocean_api | Function | Number of names in the CANONICAL diagnostic catalog (SSH,
temperature, salinity, u, v, KE, … — the set
|
| rdb_ocean_create_finalize | rdb_ocean_api | Function | P2.5 phase 2 of 2: complete a handle started by
|
| rdb_ocean_create_from_string | rdb_ocean_api | Function | Build a config from an in-memory namelist string (no filesystem
touch), set up the ocean dyn-core exactly as |
| rdb_ocean_create_pending | rdb_ocean_api | Function | P2.5 phase 1 of 2: build + validate a config and allocate a
handle EXACTLY like |
| rdb_ocean_derived_catalog_name | rdb_ocean_api | Function | Name of derived-catalog entry |
| rdb_ocean_derived_catalog_size | rdb_ocean_api | Function | Number of names in the DERIVED diagnostic catalog (vorticity_z,
ke_total, mld_density, … — |
| rdb_ocean_destroy | rdb_ocean_api | Function | success (so a Python |
| rdb_ocean_get_b_ptr | rdb_ocean_api | Function | Bathymetry (m, POSITIVE DOWN — |
| rdb_ocean_get_bt_eta_ptr | rdb_ocean_api | Function | Sea-surface height (m): |
| rdb_ocean_get_diag_count | rdb_ocean_api | Function | Number of diagnostics REGISTERED on this live instance right
now (canonical + derived + anything the |
| rdb_ocean_get_diagnostic_ptr | rdb_ocean_api | Function | Raw |
| rdb_ocean_get_grid_info | rdb_ocean_api | Function | Physical (interior, ghost-excluded) grid shape + ghost width. |
| rdb_ocean_get_h_layer_ptr | rdb_ocean_api | Function | Layer thickness (m), cell-centred, FULL extent (ghosts included):
|
| rdb_ocean_get_hu_ptr | rdb_ocean_api | Function | West-face x transport (h*u, m^2/s): |
| rdb_ocean_get_hv_ptr | rdb_ocean_api | Function | South-face y transport (h*v, m^2/s): |
| rdb_ocean_get_kinetic_energy | rdb_ocean_api | Function | Total kinetic energy (J, up to the Boussinesq reference-density
factor — matches |
| rdb_ocean_get_ks_ptr | rdb_ocean_api | Function | Vertical salt (+ every passive tracer) diffusivity (m^2/s):
|
| rdb_ocean_get_kt_ptr | rdb_ocean_api | Function | Vertical heat diffusivity (m^2/s): |
| rdb_ocean_get_kv_ptr | rdb_ocean_api | Function | Vertical viscosity (m^2/s): |
| rdb_ocean_get_q_heat_ptr | rdb_ocean_api | Function | Net surface heat flux (W/m^2): |
| rdb_ocean_get_q_salt_ptr | rdb_ocean_api | Function | Net surface salt flux: |
| rdb_ocean_get_rho_layer_ptr | rdb_ocean_api | Function | In-situ density (kg/m^3): |
| rdb_ocean_get_step_count | rdb_ocean_api | Function | Outer-step counter. Reads |
| rdb_ocean_get_tau_x_ptr | rdb_ocean_api | Function | East-face wind stress (N/m^2): |
| rdb_ocean_get_tau_y_ptr | rdb_ocean_api | Function | North-face wind stress (N/m^2): |
| rdb_ocean_get_time | rdb_ocean_api | Function | Current simulation time (seconds). |
| rdb_ocean_get_total_mass | rdb_ocean_api | Function | One scalar diagnostic — total water mass over the physical domain
( |
| rdb_ocean_get_tracer_count | rdb_ocean_api | Function | Number of registered tracers (S, T, + any passive tracers) —
bounds for |
| rdb_ocean_get_tracer_ptr | rdb_ocean_api | Function | Raw |
| rdb_ocean_get_u_face_x_layer_ptr | rdb_ocean_api | Function | West-face x-velocity (m/s): |
| rdb_ocean_get_v_face_y_layer_ptr | rdb_ocean_api | Function | South-face y-velocity (m/s): |
| rdb_ocean_get_w_interface_ptr | rdb_ocean_api | Function | Vertical velocity at layer interfaces (m/s):
|
| rdb_ocean_get_wet_t_ptr | rdb_ocean_api | Function | Wet mask at T points (1 = wet, 0 = land): |
| rdb_ocean_last_error | rdb_ocean_api | Function | Read the error ring at ring-relative index |
| rdb_ocean_list_diags | rdb_ocean_api | Function | Name of the registered diagnostic at index |
| rdb_ocean_list_tracers | rdb_ocean_api | Function | Name of the tracer at registry index |
| rdb_ocean_refresh_host | rdb_ocean_api | Function | Lazy device->host refresh of every P2-exposed leaf array, gated on
|
| rdb_ocean_required_halo | rdb_ocean_api | Function | Stateless (no handle required — like |
| rdb_ocean_set_bathymetry | rdb_ocean_api | Function | Overwrite bathymetry |
| rdb_ocean_set_h | rdb_ocean_api | Function | Overwrite |
| rdb_ocean_set_heat_flux | rdb_ocean_api | Function | Overwrite net surface heat flux |
| rdb_ocean_set_salt_flux | rdb_ocean_api | Function | Overwrite net surface salt flux |
| rdb_ocean_set_tracer | rdb_ocean_api | Function | Set the tracer named |
| rdb_ocean_set_u | rdb_ocean_api | Function | Overwrite |
| rdb_ocean_set_v | rdb_ocean_api | Function | Overwrite |
| rdb_ocean_set_wind | rdb_ocean_api | Function | Overwrite the C-grid surface wind stress (N/m^2) mid-run:
|
| rdb_ocean_stage_bathymetry | rdb_ocean_api | Function | P2.5: stage an interior-sized |
| rdb_ocean_stage_metrics | rdb_ocean_api | Function | P2.5: stage in-memory MOM6-style supergrid arrays on the PENDING
handle |
| rdb_ocean_stage_topology | rdb_ocean_api | Function | P2.5: stage Oceananigans-style grid topology (per-dimension
periodicity — “the grid owns periodicity”, not the per-edge
|
| rdb_ocean_step | rdb_ocean_api | Function | Advance |
| rdb_put_var_1d | rdb_io_netcdf | Subroutine | Write a full 1D array |
| rdb_put_var_2d_slice | rdb_io_netcdf | Subroutine | Write a 1D slice into a 2D variable at a given time index |
| rdb_working_precision | rdb_ocean_api | Function | Bytes per |
| read_config | rdb_config | Subroutine | Read simulation configuration from a namelist file. |
| read_config_from_string | rdb_config | Subroutine | In-memory sibling of read_config: build + strict-parse +
apply a namelist held entirely in the |
| read_config_from_string_impl | rdb_config | Subroutine | Body of read_config_from_string — mirrors read_config_impl with the line array replacing the file unit. |
| read_config_impl | rdb_config | Subroutine | Body of read_config: build the strict schema (capturing
defaults from the pristine |
| read_dims | rdb_ocean_z_init | Subroutine | Validate the T/S variable’s dims against the model grid and
detect whether the file is C-ordered (z, y, x) =>
|
| read_field_xyz | rdb_ocean_z_init | Subroutine | Read this tile’s |
| read_group_name | rdb_nml_schema | Subroutine | Read an identifier starting at (li,col); advance past it. |
| read_lines | rdb_nml_schema | Subroutine | Read the whole file into a deferred-len line array. |
| real_array_default_string | rdb_nml_schema | Function | |
| real_array_is_default | rdb_nml_schema | Function | |
| real_array_parse | rdb_nml_schema | Subroutine | |
| real_array_value_string | rdb_nml_schema | Function | |
| real_default_string | rdb_nml_schema | Function | |
| real_is_default | rdb_nml_schema | Function | |
| real_parse | rdb_nml_schema | Subroutine | |
| real_value_string | rdb_nml_schema | Function | |
| recompute_total_area | rdb_ocean_diag_mask | Subroutine | |
| recon_rho_surf | rdb_ocean_pressure_force | Function | Recover the layer-mean surface density from the reconstructed pressure-anomaly stack: dpa(nz) = pa(nz) - pa(nz+1) = (rho_surf - rho_ref)gh_surf, so rho_surf = rho_ref + dpa/(g*h). Used only by the gfs_scale Montgomery correction (Pass 5). |
| recon_rung_for_face | rdb_recon_weno | Function | Return the highest feasible reconstruction rung for one face. |
| redi_absolute_position | rdb_ocean_redi | Function | Absolute (pressure) position of neutral surface |
| redi_apply_flux | rdb_ocean_redi | Subroutine | Public Phase-B entry: apply the neutral-diffusion tracer update for
every registered tracer. No-op if absent / uninit / disabled / zero
diffusivity. Run at thermo cadence after |
| redi_apply_flux_impl | rdb_ocean_redi | Subroutine | Flat-impl Phase-B kernel for ONE tracer. Cell-centric double-visit
(no-scatter rule on the C-grid): cell (i,j) recomputes the
along-neutral flux on each of its four bounding faces and accumulates
ONLY into its own |
| redi_budget_accumulate | rdb_ocean_redi | Subroutine |
|
| redi_build_column | rdb_ocean_redi | Subroutine | Build one column’s TOP-DOWN interface P/T/S + density derivs from the
BOTTOM-UP native column, restricted to the face’s open window
|
| redi_calc_coeffs | rdb_ocean_redi | Subroutine | Public entry: fill the Phase-A coefficient arrays. No-op if absent / uninitialised / disabled. Run once per outer step at THERMO cadence (a slow, tracer-independent geometry). Outer-shim: dereference the tracer-registry hTr arrays on the host, pass the flat top-level allocatables to the flat-impl kernels. |
| redi_calc_coeffs_x | rdb_ocean_redi | Subroutine | Flat-impl Phase-A u-face kernel. Parallel over (i,j) interior
u-faces (i=2..nx); the 2*nz+2 sweep runs serially inside each
thread over a column pair (iw=i-1 west, i east). Wall faces and
land faces leave the inert (zero/identity) coefficients. The
sweep runs on each face’s open window |
| redi_calc_coeffs_y | rdb_ocean_redi | Subroutine | Flat-impl Phase-A v-face kernel — mirror of |
| redi_face_coeffs | rdb_ocean_redi | Subroutine | The per-face Phase-A core: build both columns TOP-DOWN on the open
window |
| redi_face_const | rdb_ocean_redi | Subroutine | Broadcast the scalar KhTr |
| redi_face_copy | rdb_ocean_redi | Subroutine | Copy a face KhTr field |
| redi_face_flux | rdb_ocean_redi | Subroutine | Accumulate ONE C-grid face’s neutral-surface tracer flux into the
owning cell’s |
| redi_fv_diff | rdb_ocean_redi | Function | Second-order centred finite-volume slope of a layer scalar (MOM6
|
| redi_interface_scalar | rdb_ocean_redi | Subroutine | PPM continuous edge reconstruction of a layer scalar to interfaces
(MOM6 |
| redi_interpolate_position | rdb_ocean_redi | Function | Non-dimensional position in [0,1] where the interpolated density difference is zero. Guards the vanished/inverted (Ppos==Pneg) and degenerate (dRhoPos==dRhoNeg) cases device-safely (clamped values, no host I/O). |
| redi_neutral_positions_continuous | rdb_ocean_redi | Subroutine | The continuous neutral-surface sweep over a column pair. A single
deterministic top→bottom sweep of |
| redi_open_window | rdb_ocean_redi | Subroutine | A face’s OPEN WINDOW from its per-layer |
| redi_open_windows_x | rdb_ocean_redi | Subroutine | Fill every interior u-face’s OPEN WINDOW ( |
| redi_open_windows_y | rdb_ocean_redi | Subroutine | v-face twin of |
| redi_plm_diff | rdb_ocean_redi | Subroutine | PLM van-Leer-limited layer-difference array (MOM6 |
| redi_ppm_ave | rdb_ocean_redi | Function | Mean of a PPM parabola between fractional positions xL,xR in [0,1]
(MOM6 |
| redi_ppm_edge | rdb_ocean_redi | Function | PPM quasi-fourth-order edge value at interface k+1/2 (MOM6 |
| redi_signum | rdb_ocean_redi | Function | A true signum: -|a| if x<0, +|a| if x>0, 0 if x==0 (MOM6 |
| redi_signum1 | rdb_ocean_redi | Function | signum(1.,x): -1 if x<0, +1 if x>0, 0 if x==0 (MOM6 sign guard). |
| redi_snapshot | rdb_ocean_redi | Subroutine | Device-side copy |
| redi_sublayer_dT | rdb_ocean_redi | Function | Along-neutral tracer difference for one sublayer (MOM6 neutral_surface_flux continuous branch). TOP-DOWN layer indices (klt/klb = KoL at the surface/bed bound of the sublayer; krt/krb mirror) and fractional positions. Returns dT_layer when the top/bottom/ave/layer triad is sign-consistent, else 0 (the down-gradient guard that prevents up-gradient transport). |
| redi_tracer_column | rdb_ocean_redi | Subroutine | Build one column’s TOP-DOWN layer-average tracer |
| refill_h_ghost_scaled | rdb_ocean_obc_baroclinic | Subroutine | Overwrite open-edge h_layer ghost columns with the nearest interior
column scaled so |
| refresh_linear_z_impl | rdb_ocean_sponge | Subroutine | One tracer plane of the |
| refresh_tracer_ghosts | rdb_ocean_dyn | Subroutine | Re-fill every tracer’s ghost band from its owners: the halo exchange (MPI seams, and the local periodic wrap on an undecomposed periodic axis — the halo primitive does both), then the tripolar north fold on the rank that owns it. Thickness and velocity are left alone. Collective (every rank calls it). |
| refuse_open_zfixed_staircase | rdb_ocean_setup | Subroutine | The |
| reg_io_ok | rdb_ocean_data_input | Function | Translate a raw |
| region_eta_uv | rdb_ocean_bt_budget_probe | Subroutine | Walk cells (interior x-range, j in [j_lo, j_hi]); collect η extremes, |u|/|v| extremes at surface + bed, and the cell-area-averaged BT KE. |
| region_power | rdb_ocean_bt_budget_probe | Subroutine | Cell-centred BT power per region: P = ⟨u_bt·F_u + v_bt·F_v⟩.
|
| region_power_drag_implicit | rdb_ocean_bt_budget_probe | Subroutine | Bottom drag in implicit mode: the slow tendency for u at a
face is |
| register_boundary | rdb_config | Subroutine |
|
| register_common | rdb_ocean_data_input | Subroutine | Shared registration body for register_2d/_3d/_segment_2d/_segment_3d.
|
| register_conv | rdb_config | Subroutine |
|
| register_ddiff | rdb_config | Subroutine |
|
| register_default_diags | rdb_ocean_diag_fills | Subroutine | Register the canonical ocean diagnostic variable set. Called once
from setup (driver init or test) after |
| register_default_tracers | rdb_state | Subroutine | Overlay scalar config onto the already-allocated salinity / temperature tracer slots (by reference, so every caller shares the overlay). Does not touch hTr / hTr0 — those are populated by the path’s IC step once h_layer is known. |
| register_derived | rdb_ocean_diag_derived | Subroutine | Register ONE derived diagnostic by catalog |
| register_epbl | rdb_config | Subroutine |
|
| register_foxkemper | rdb_config | Subroutine |
|
| register_full_3d | rdb_ocean_state | Subroutine | Register a rank-3 field as a FULL local array (interior +
ghosts) — ng=0 over the total extent. See the ghost-cell
policy note in |
| register_full_3d_opt | rdb_ocean_state | Subroutine |
|
| register_gm | rdb_config | Subroutine |
|
| register_grid | rdb_config | Subroutine |
|
| register_initial_condition | rdb_config | Subroutine |
|
| register_kappa_shear | rdb_config | Subroutine |
|
| register_logging | rdb_config | Subroutine |
|
| register_meke | rdb_config | Subroutine |
|
| register_mpi | rdb_config | Subroutine |
|
| register_nonhydrostatic | rdb_config | Subroutine |
|
| register_ocean_bc | rdb_config | Subroutine |
|
| register_ocean_bdrag | rdb_config | Subroutine |
|
| register_ocean_bt | rdb_config | Subroutine |
|
| register_ocean_cavity_dyn | rdb_config | Subroutine |
|
| register_ocean_cavity_melt | rdb_config | Subroutine |
|
| register_ocean_continuity | rdb_config | Subroutine |
|
| register_ocean_coriolis | rdb_config | Subroutine |
|
| register_ocean_data | rdb_config | Subroutine |
|
| register_ocean_dataovr | rdb_config | Subroutine |
|
| register_ocean_debug | rdb_config | Subroutine |
|
| register_ocean_diag | rdb_config | Subroutine |
|
| register_ocean_eos | rdb_config | Subroutine |
|
| register_ocean_forcing | rdb_config | Subroutine |
|
| register_ocean_geothermal | rdb_config | Subroutine |
|
| register_ocean_grid | rdb_config | Subroutine |
|
| register_ocean_hdiff | rdb_config | Subroutine |
|
| register_ocean_hvisc | rdb_config | Subroutine |
|
| register_ocean_ic | rdb_config | Subroutine |
|
| register_ocean_ice | rdb_config | Subroutine |
|
| register_ocean_ice_ic | rdb_config | Subroutine |
|
| register_ocean_isopycnal | rdb_config | Subroutine |
|
| register_ocean_mpi | rdb_config | Subroutine |
|
| register_ocean_pgf | rdb_config | Subroutine |
|
| register_ocean_psurf | rdb_config | Subroutine |
|
| register_ocean_restore | rdb_config | Subroutine |
|
| register_ocean_sponge | rdb_config | Subroutine |
|
| register_ocean_tdrag | rdb_config | Subroutine |
|
| register_ocean_thermo | rdb_config | Subroutine |
|
| register_ocean_tides | rdb_config | Subroutine |
|
| register_ocean_topo | rdb_config | Subroutine |
|
| register_ocean_tracers | rdb_config | Subroutine |
|
| register_ocean_vdiff | rdb_config | Subroutine |
|
| register_ocean_vmix | rdb_config | Subroutine |
|
| register_ocean_wetdry | rdb_config | Subroutine |
|
| register_ocean_zinit | rdb_config | Subroutine |
|
| register_one_canonical | rdb_ocean_diag_fills | Subroutine | Register one canonical diagnostic, applying its |
| register_output | rdb_config | Subroutine |
|
| register_physics | rdb_config | Subroutine |
|
| register_porous | rdb_config | Subroutine |
|
| register_redi | rdb_config | Subroutine |
|
| register_sim | rdb_config | Subroutine |
|
| register_slopes | rdb_config | Subroutine |
|
| register_tag | rdb_ocean_data_forcing | Subroutine | Register one tag if it names a file, else leave |
| register_tidal_mixing | rdb_config | Subroutine |
|
| register_time | rdb_config | Subroutine |
|
| register_tracer | rdb_config | Subroutine |
|
| register_varmix | rdb_config | Subroutine |
|
| register_vcoord | rdb_config | Subroutine |
|
| register_wavespeed | rdb_config | Subroutine |
|
| registry_clear | rdb_ocean_restart | Subroutine | |
| registry_entry_found | rdb_ocean_restart | Function | Was |
| registry_register_2d | rdb_ocean_restart | Subroutine | Register a rank-2 owned field. |
| registry_register_3d | rdb_ocean_restart | Subroutine | Register a rank-3 owned field. The vertical extent is taken
from |
| registry_register_scalar | rdb_ocean_restart | Subroutine | Register a host scalar (rank-0 persistent state, e.g. the Chapman
|
| relative_drift | rdb_console_stats | Function |
|
| relax_band_x_impl | rdb_ocean_sponge | Subroutine | Cosine-ramp tracer relaxation in a west/east sponge band.
Explicit-shape dummies (flat-impl + outer-shim — the per-tracer
slice is passed by the caller, never dereferenced inside the DC).
|
| relax_band_y_impl | rdb_ocean_sponge | Subroutine | Cosine-ramp tracer relaxation in a south/north sponge band.
Mirror of |
| relax_map_tracer_budget_impl | rdb_ocean_sponge | Subroutine |
|
| relax_map_tracer_impl | rdb_ocean_sponge | Subroutine | Relax one tracer’s |
| relax_map_u_impl | rdb_ocean_sponge | Subroutine | Relax |
| relax_map_v_impl | rdb_ocean_sponge | Subroutine | Relax |
| relax_one | rdb_ocean_sponge | Function | Cosine-ramp implicit relaxation of one cell toward |
| relax_toward | rdb_ocean_sponge | Function | Shared core algebra for BOTH sponge paths: |
| remap_column | rdb_remap_column | Subroutine | Dispatch to the requested remapping method. |
| remap_column_pcm | rdb_remap_column | Subroutine | Piecewise-constant (donor cell) remap. Diffusive, guaranteed monotone. |
| remap_column_plm | rdb_remap_column | Subroutine | Piecewise-linear (minmod-limited) remap. Monotone (no new extrema).
Per old layer k: q_hat(xi) = q(k) + slope(k)(2xi - 1), xi in [0,1],
slope(k) = 0.5*minmod(q(k+1)-q(k), q(k)-q(k-1)).
|
| remap_column_ppm | rdb_remap_column | Subroutine | Piecewise-parabolic (Colella & Woodward 1984) remap.
Per old layer k, xi in [0,1]:
q_hat(xi) = q_L + xi(q_R - q_L + q6(1 - xi)), q6 = 6q_bar - 3(q_L+q_R)
Edge values: 4th-order interp + CW monotonicity limiting; boundary
layers fall back to PLM-quality edges, or — under |
| remap_column_ppm_h4 | rdb_remap_column | Subroutine | PPM with non-uniform 4th-order (H4) edge values (White & Adcroft 2008).
As |
| remap_column_pqm | rdb_remap_column | Subroutine | Piecewise-quartic (PQM_IH4IH3) conservative remap (White & Adcroft 2008). Implicit-h4 edge VALUES + implicit-h3 edge SLOPES (each a diagonally-dominant tridiagonal solve with one-sided 4-cell boundary closure), per-cell quartic, W&A monotonicity limiter, conservative quartic overlap integral. Cuts diapycnal mixing per remap vs PPM/PPM_H4 (Ilicak et al. 2012). Per cell k, xi in [0,1]: q_hat(xi) = a + bxi + cxi^2 + dxi^3 + exi^4. Boundary cells reconstruct as PCM. nz < 5 falls back to REMAP_PPM (W&A boundary closure needs >= 4 cells). |
| remap_column_preconditions_ok | rdb_remap_column | Function | Precondition test for one remap column, as a |
| remap_fold_filler_defect | rdb_ocean_remap | Subroutine | On a column that carries a vanished layer (source or target), make
the tracer remap conservative EXACTLY, not just on a matched column:
the content the remap failed to place, |
| remap_layer_to_density | rdb_ocean_diag_fills | Subroutine | Conservative layer→DENSITY-space remap ( |
| remap_layer_to_density_impl | rdb_ocean_diag_fills | Subroutine | Per-column density-space remap, |
| remap_layer_to_sigma | rdb_ocean_diag_fills | Subroutine | Layer→fixed-sigma vertical remap (terrain-following output grid).
|
| remap_layer_to_vcoord_impl | rdb_ocean_diag_fills | Subroutine | Per-column conservative layer→output-coordinate remap as a
|
| remap_layer_to_z | rdb_ocean_diag_fills | Subroutine | Layer→fixed-z vertical remap, CONSERVATIVE (donor-cell overlap via
|
| remap_layer_to_zstar | rdb_ocean_diag_fills | Subroutine | Layer→fixed-z* vertical remap (SSH-tracking stretched-depth output
grid). |
| remap_tracer_grounded | rdb_ocean_min_thickness | Subroutine | Conservative tracer remap gated on the grounded mask. Non-grounded columns are skipped -> hTr byte-unchanged; the concentration divisions only happen on grounded columns. |
| remap_x_face_grounded | rdb_ocean_min_thickness | Subroutine | Conservative east-face velocity remap gated on the grounded mask. A
face is active iff either adjacent cell is grounded (2 mask loads —
no neighbour-column re-scan); inactive faces are left byte-unchanged.
Face thickness is the arithmetic mean of the two adjacent cells
(outer walls take the single interior cell); the target side reads
h_new only where the mask is set — elsewhere h_new ≡ h_old by
construction, so h_old is read directly. |
| remap_x_face_velocity | rdb_ocean_remap | Subroutine | Flat-impl x-face remap. East faces at i+1/2; u_face_x(1..nx+1) covers
west wall (I=1), interior (I=2..nx), east wall (I=nx+1).
|
| remap_y_face_grounded | rdb_ocean_min_thickness | Subroutine | Conservative north-face velocity remap, mirror of the x routine. |
| remap_y_face_velocity | rdb_ocean_remap | Subroutine | Flat-impl y-face remap, mirror of |
| renormalise_meridional_flux_to_vhbt | rdb_continuity | Subroutine | Apply a uniform per-face velocity correction so
|
| renormalise_zonal_flux_to_uhbt | rdb_continuity | Subroutine | Apply a uniform per-face velocity correction so
|
| report_throughput | rdb_driver | Subroutine | Log per-GPU and total horizontal throughput on the root compute rank. |
| required_halo | rdb_ocean_halo_width | Function |
|
| rescale_anomaly_ke | rdb_ocean_remap | Subroutine | KE-conserving rescale of a remapped face-velocity column. The column remap conserves momentum (Σ h·u) but not KE; restore it by rescaling ONLY the baroclinic anomaly (Adcroft & Hallberg 2006): scale = sqrt(KE_old_anom/KE_new_anom), clamped to [0, 1.25] u_new(k) = u_bar_new + scale·(u_new(k) - u_bar_new) Barotropic mean u_bar preserved verbatim; degenerate columns untouched. |
| reset_accumulator | rdb_ocean_diag | Subroutine | Zero (MEAN), -huge (MAX), or +huge (MIN) the accumulator —
so the first accumulate step seeds correctly. Runs on device
via the flat-impl shim because |
| reset_bt_rem | rdb_barotropic_coupling | Subroutine | bt_rem_u/v ≡ 1 (the init value). |
| reset_state | rdb_nml_schema | Subroutine | Reset parse-state (found flags) before a parse. |
| reset_vanished_layer_velocities | rdb_ocean_dyn | Subroutine | Zero the per-layer face velocity at any face where BOTH adjacent
centre-cell thicknesses are at or below |
| resolve_bt_halo | rdb_config | Function | Resolve the |
| resolve_canonical_spec | rdb_ocean_diag_fills | Subroutine | Look up canonical diagnostic |
| resolve_flux_targets | rdb_ocean_data_forcing | Subroutine | Pick the heat/salt destination for this run and reject the freshwater tags when the component set they need is absent. |
| resolve_ocean | rdb_ocean_api | Function | Resolve + verify a handle is a live, fully-initialised ocean simulation. Every query/step entry point funnels through this so the bad-handle and not-yet-initialised cases are reported with one consistent status code each, in one place. |
| resolve_ocean_pending | rdb_ocean_api | Function | P2.5: resolve + verify a handle is a live, PENDING (not yet
finalised) ocean simulation — the window every
|
| resolve_time_var | rdb_ocean_data_input | Subroutine | Look up the time coordinate variable by the CF convention (dim
name == var name); fall back to a variable literally named
“time”. |
| restart_io_ok | rdb_ocean_restart_io | Function | Translate a raw |
| restart_mismatch_kind | rdb_ocean_state | Function | Map the check-decomp ierr code (INTERNAL 1/2/3 convention —
see |
| restart_mismatch_status_code | rdb_ocean_state | Function | Map the check-decomp ierr code (INTERNAL 1/2/3 convention) onto
the PUBLIC, collision-free |
| restore_state | rdb_ocean_dyn | Subroutine | Copy the *_0 save buffers back into h_layer / u_face_x_layer / v_face_y_layer — the pred_corr between-stage reset (SPEC §2): the predictor’s provisional up/vp/hp are DISCARDED (only u_av/v_av/ h_av survive it), and the corrector advances from u^n / h^n. Tracers are untouched by the predictor (TR_MODE_NONE + no thermodynamics), so no tracer restore is needed. |
| rk2_average | rdb_ocean_dyn | Subroutine | State <- 0.5 * (state_0 + state) for h_layer, u_face_x_layer, v_face_y_layer. Tracer averages are done by the caller. |
| rk2_average_field_3d | rdb_ocean_dyn | Subroutine | current <- 0.5 * (saved + current) on the device. Same bare-array shim rationale as copy_field_3d. |
| roquet_pcm_dpa_face | rdb_ocean_pressure_force | Subroutine | Cross-face 5-point Boole quadrature of the layer |
| roquet_pcm_dpa_intz | rdb_ocean_pressure_force | Subroutine | Vertical integral of the Roquet et al. (2015) SpV in-situ density
anomaly over one constant-T/S (PCM) layer: the 5-point Boole rule
of |
| roquet_recon_dpa_face | rdb_ocean_pressure_force | Subroutine |
|
| roquet_recon_dpa_intz | rdb_ocean_pressure_force | Subroutine |
|
| roquet_spv_point | rdb_eos | Subroutine | Fused Roquet et al. (2015) SpV evaluation at a point, in MODEL
variables (potential temperature |
| roquet_spv_ts_coeffs | rdb_eos | Subroutine | The (T, S)-dependent coefficients of the Roquet et al. (2015) SpV
polynomial viewed as a polynomial in PRESSURE, in model variables
(potential temperature |
| roquet_spv_value | rdb_eos | Function | VALUE-ONLY Roquet et al. (2015) specific volume (m^3/kg) at a point,
model variables (PT degC, SP PSU, p Pa). The same number as
|
| run_continuity_chain | rdb_ocean_dyn | Subroutine | The slow horizontal continuity + tracer chain (ghost fills →
constrained continuity+tracer split → reservoirs → halo/wrap →
tracer hdiff → Redi → vertical advection), extracted verbatim
from |
| run_gm_step | rdb_ocean_dyn | Subroutine | Gent-McWilliams thickness diffusion as its OWN sequential operator,
run once per outer step AFTER the dynamics (the stage loop and, under
ssp_rk2, the stage average) — where MOM6 calls |
| run_meke_step | rdb_ocean_dyn | Subroutine | Thin dispatcher: call |
| run_stage | rdb_ocean_dyn | Subroutine | One FE stage of the multilayer step. Order of operations: |
| run_stage_split | rdb_ocean_dyn | Subroutine | One FE stage of the split-explicit step. See the
|
| safe_cos | rdb_safe_math | Function |
|
| safe_cos_polynomial | rdb_safe_math | Function | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
|
| safe_exp | rdb_safe_math | Function |
|
| safe_exp_polynomial | rdb_safe_math | Function | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
Cody-Waite range reduction |
| safe_log | rdb_safe_math | Function |
|
| safe_log_polynomial | rdb_safe_math | Function | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
|
| safe_pow | rdb_safe_math | Function | Non-integer exponent only. For integer exponents
( |
| safe_pow_polynomial | rdb_safe_math | Function | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
|
| safe_sin | rdb_safe_math | Function |
|
| safe_sin_polynomial | rdb_safe_math | Function | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
|
| safe_sqrt | rdb_safe_math | Function | IEEE-correctly-rounded by mandate, so the intrinsic is already bit-identical across compliant compilers. |
| save_state | rdb_ocean_dyn | Subroutine | Copy h_layer, u_face_x_layer, v_face_y_layer into the *_0 save buffers on the multilayer state. Per-tracer hTr is saved by the caller via copy_field_3d (the registry has to be walked on the host). |
| scan_vanished_one_impl | rdb_multilayer_state | Subroutine | Flat-impl of the I1′ scan for ONE tracer. Per column: find the
topmost live layer, then walk DOWN carrying the nearest live layer
above — the donor map |
| schema_add_external_group | rdb_nml_schema | Subroutine | Register a group name the schema knows exists but does NOT validate (its body is skipped silently). |
| schema_add_group | rdb_nml_schema | Subroutine | MOVE a locally-built group into the schema — |
| schema_find_group | rdb_nml_schema | Function | Index of |
| schema_is_external | rdb_nml_schema | Function | True if |
| schema_parse | rdb_nml_schema | Subroutine | Parse and validate the namelist file at |
| schema_parse_lines | rdb_nml_schema | Subroutine | In-memory sibling of |
| schema_render_json | rdb_nml_schema | Subroutine | Emit the schema as JSON: one object per group, nesting one object
per key. This is the ONLY thing |
| schema_render_markdown | rdb_nml_schema | Subroutine | Render the schema as Markdown: per group a heading, doc line, and a knob table. |
| schema_write_doc_all | rdb_nml_schema | Subroutine | Write every group and key as valid namelist with aligned docs. |
| schema_write_doc_short | rdb_nml_schema | Subroutine | Write only non-default keys (MOM6 parameter_doc.short). Groups with no non-default keys are omitted entirely. |
| scratch_3d_buffer_bytes | rdb_scratch_3d | Function | Counted allocatable footprint of the 3D scratch buffer slot (0 when unallocated). |
| scratch_3d_buffer_destroy | rdb_scratch_3d | Subroutine | |
| scratch_3d_buffer_enter_data | rdb_scratch_3d | Subroutine | Type-bound wrapper — keeps |
| scratch_3d_buffer_enter_data_impl | rdb_scratch_3d | Subroutine | Attach the scratch payload to the device holding the HOST
payload: zero from |
| scratch_3d_buffer_exit_data | rdb_scratch_3d | Subroutine | Type-bound wrapper — see scratch_3d_buffer_enter_data. |
| scratch_3d_buffer_exit_data_impl | rdb_scratch_3d | Subroutine | Release the scratch payload from the device. No |
| scratch_3d_buffer_init | rdb_scratch_3d | Subroutine | Allocate the host-side storage at (n1, n2, n3), zero-filled.
GPU attachment is a separate step via |
| seed_baroclinic_jet_ic | rdb_ocean_state | Subroutine | Two-layer reduced-gravity baroclinic-instability IC — a
geostrophically-balanced tanh jet in the upper (surface) layer of
a spherical re-entrant channel, plus a front-localised sech²
meander seed that the instability grows. Reproduces the |
| seed_cavity_draft | rdb_ocean_state | Subroutine | Fill |
| seed_eady_ic | rdb_ocean_state | Subroutine | Eady-front overlay IC. Assumes flat bottom + uniform layer
split already in place from |
| seed_geostrophic_adjustment_ic | rdb_ocean_state | Subroutine | Rossby’s classic geostrophic-adjustment problem. Overlays a Gaussian SSH bump on a flat-bottom, single-layer (barotropic) state at rest: η(x, y) = A · exp(-r² / L²) h(i, j) = b(i, j) + η(i, j) u = v = 0 where r is the radial distance from the bump centre. |
| seed_h_layer_uniform_impl | rdb_ocean_state | Subroutine | Even-split layer thickness per column. Pulled into a flat-impl
so the |
| seed_h_layer_uniform_z_impl | rdb_ocean_state | Subroutine |
|
| seed_land_face_vel_2d_impl | rdb_ocean_state | Subroutine | 2D (barotropic) variant of |
| seed_land_face_vel_impl | rdb_ocean_state | Subroutine | Zero a per-layer face field ( |
| seed_land_h_floor_impl | rdb_ocean_state | Subroutine | Floor land-cell layer thickness to |
| seed_land_tracer_hold_impl | rdb_ocean_state | Subroutine | Zero the extensive tracer content |
| seed_tracer_stratified_impl | rdb_ocean_state | Subroutine | Seed |
| seed_tracer_uniform_impl | rdb_ocean_state | Subroutine | Seed |
| seed_ts_from_zfile | rdb_ocean_z_init | Subroutine | Read T/S from the configured z-level NetCDF and overwrite the
tracer slots with the depth-interpolated profiles. Wet columns
interpolate; dry columns get the namelist land-fill constants.
Must be called AFTER bathymetry, the uniform |
| seed_ts_linear_z | rdb_ocean_z_init | Subroutine | Seed T and S from the ANALYTIC affine geopotential profiles
|
| seed_wet_mask_impl | rdb_ocean_state | Subroutine | 1.0 where |
| seed_wrap_static_2d | rdb_ocean_state | Subroutine | Fill the seam ghosts of a static, cell-centred 2-D geometry field (bathymetry, ice draft, cover fraction) from their periodic / north-fold images, on the host, at seed time. |
| seed_zinit_overlay | rdb_ocean_state | Subroutine | Dispatch the |
| segment_geometry | rdb_ocean_data_input | Subroutine | Degenerate-axis + along-edge slab geometry for an OBC-segment
registration. |
| set_bathymetry_double_drake | rdb_ocean_state | Subroutine | “Double Drake” idealised supercontinent (Ferreira, Marshall &
Campin 2010, J. Climate): a flat-bottom global ocean at
|
| set_bathymetry_island | rdb_ocean_state | Subroutine | Flat-bottom basin at |
| set_bathymetry_isomip_plus | rdb_ocean_state | Subroutine | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. |
| set_bathymetry_neverworld2 | rdb_ocean_state | Subroutine | Public only for the unit-test suite (no production module imports it); ignore when developing production code in other modules. |
| set_bathymetry_seamount | rdb_ocean_state | Subroutine | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
Fill |
| set_bathymetry_spoon | rdb_ocean_state | Subroutine | Public only for the unit-test suite (no production module imports it);
ignore when developing production code in other modules.
Fill |
| set_cor_ref_velocity | rdb_barotropic_coupling | Subroutine | Fill |
| set_diag_mask_vanished | rdb_ocean_diag_fills | Subroutine | Enable / disable masking of vanished (no-water) remap target cells
to |
| set_diag_remap_method | rdb_ocean_diag_fills | Subroutine | Seed the module-level diagnostic remap reconstruction (host only). |
| set_draft_flat | rdb_ocean_cavity | Subroutine | Uniform draft |
| set_draft_linear | rdb_ocean_cavity | Subroutine | Linear-in-x draft |
| set_fast_forcing_eta_pf | rdb_barotropic_coupling | Subroutine | The barotropic substep’s frozen forcing under the MOM6 split
( |
| set_local_BT_cont_types | rdb_barotropic_coupling | Subroutine | Populate |
| setup_failed | rdb_ocean_engine | Function |
|
| shape_matches_interior | rdb_ocean_api | Function | True iff |
| sin_reduced | rdb_safe_math | Function | Horner sin Taylor on |r| ≤ π/4. |
| skip_to_slash | rdb_nml_schema | Subroutine | Advance past the next ‘/’ (group terminator); recovery aid. |
| snapshot_column_concentration | rdb_ocean_sponge | Subroutine | Fill one water column’s reference concentration from |
| snapshot_eta_PF | rdb_barotropic_coupling | Subroutine | Snapshot |
| snapshot_u_prev_east | rdb_ocean_obc_baroclinic | Subroutine | Snapshot u at the first interior face (i_e-1) into u_prev_east. |
| snapshot_u_prev_west | rdb_ocean_obc_baroclinic | Subroutine | Snapshot u at the first interior face (i_w+1) into u_prev_west. |
| snapshot_v_prev_north | rdb_ocean_obc_baroclinic | Subroutine | Snapshot v at the first interior face (j_n-1) into u_prev_north. |
| snapshot_v_prev_south | rdb_ocean_obc_baroclinic | Subroutine | Snapshot v at the first interior face (j_s+1) into u_prev_south. |
| sort_real | rdb_ocean_bathymetry_inject | Subroutine | Plain insertion sort. |
| spherical_quad_area | rdb_ocean_metrics | Function | Area (m^2) of a spherical quadrilateral with the four corners (1,2,3,4 counter-clockwise) given in degrees, via L’Huilier’s theorem on the two triangles (1,2,3) and (1,3,4). |
| spherical_tri_area | rdb_ocean_metrics | Function | Area (m^2) of a spherical triangle (corners in degrees) via the spherical-excess form of L’Huilier’s theorem. Side lengths are angular (great-circle distance / r). |
| split_to_lines | rdb_config | Subroutine | Split a newline-separated buffer into a fixed-len character array (one record per line, trailing CR stripped) for internal-file reads + the schema line walker. |
| sponge_add_band_x | rdb_ocean_setup | Subroutine | Add a cosine-ramp |
| sponge_add_band_y | rdb_ocean_setup | Subroutine | Mirror of |
| sponge_band_alpha | rdb_ocean_sponge | Function | Shape factor of the |
| sponge_ramp_is_valid | rdb_config | Function | .true. iff |
| sponge_relax_band_x_tracer | rdb_ocean_sponge | Subroutine | Host dispatch for one tracer’s |
| sponge_relax_band_y_tracer | rdb_ocean_sponge | Subroutine | Mirror of |
| sponge_source_is_implemented | rdb_config | Function | .true. iff |
| sponge_target_is_implemented | rdb_config | Function | .true. iff |
| stress_scratch_ensure | rdb_ice_ocean_coupler | Subroutine | Lazily (re)allocate + device-map the per-step tau-blend scratch (F6). Size change tears down and rebuilds. Never called inside a per-substep loop (this whole coupler runs once per outer step). |
| string_default_string | rdb_nml_schema | Function | |
| string_is_default | rdb_nml_schema | Function | |
| string_parse | rdb_nml_schema | Subroutine | |
| string_to_c | rdb_ocean_restart_io | Function | Pack a Fortran string into a null-terminated c_char array. |
| string_value_string | rdb_nml_schema | Function | |
| strip_comment | rdb_nml_schema | Function | Remove a trailing |
| strip_nml | rdb_nml_schema | Function | Drop a trailing |
| sturm_count | rdb_ocean_wave_speed | Function | Number of Sturm-sequence sign changes (eigenvalues < lam) via the three-term determinant recursion with dynamic rescaling. |
| substep_drag_ignores_bdrag_form | rdb_config | Function | Is |
| subtract_fast_cor_ref | rdb_barotropic_coupling | Subroutine | Subtract the fast-loop Coriolis + vector-invariant advection,
evaluated at the reference barotropic velocity
|
| suggest | rdb_nml_schema | Function | Build a ” (did you mean ‘x’?)” fragment if a close candidate exists (distance <= max(2, len/3)); else empty. |
| sum_slow_tendencies_into_F_slow | rdb_barotropic_coupling | Subroutine | Sum the per-kernel slow-tendency scratch buffers into a
single ( |
| supergrid_angle_dx_from_geography | rdb_ocean_metrics | Function | Grid rotation (DEGREES, counter-clockwise from true east — MOM6’s
|
| supergrid_ghost_fill_2d | rdb_ocean_metrics | Subroutine | Fill ghost rows/columns by constant extrapolation, for a T-point
array |
| supergrid_ghost_fill_bu | rdb_ocean_metrics | Subroutine | Ghost fill for Bu arrays |
| supergrid_ghost_fill_cu | rdb_ocean_metrics | Subroutine | Ghost fill for Cu arrays |
| supergrid_ghost_fill_cv | rdb_ocean_metrics | Subroutine | Ghost fill for Cv arrays |
| supergrid_io_ok | rdb_ocean_metrics | Function | Translate a raw |
| supergrid_top_row_folds | rdb_ocean_metrics | Function |
|
| surfstress_apply_impl | rdb_ocean_surface_stress | Subroutine | |
| surfstress_compute_impl | rdb_ocean_surface_stress | Subroutine | Flat-array surface-stress kernel. Explicit-shape dummies so NVHPC stdpar can compile the device kernel against static bounds. |
| surfstress_distributed_impl | rdb_ocean_surface_stress | Subroutine | DIRECT_STRESS branch — distribute the wind stress across
the top |
| sw_pe_cost_shape | rdb_ocean_surface_flux | Function | In-layer potential-energy-cost shape function |
| sw_source_is_implemented | rdb_ocean_surface_flux | Function | Fail-loud predicate for the |
| sw_transmission | rdb_ocean_surface_flux | Function | Two-band (Paulson & Simpson 1977) normalised downward
irradiance transmission at depth |
| tags_north_fold | rdb_ocean_setup | Function |
|
| tags_periodic_x | rdb_ocean_setup | Function |
|
| tdrag_variant_is_implemented | rdb_ocean_top_drag | Function |
|
| tfreeze_ib_impl | rdb_ocean_diag_derived | Subroutine | |
| thermal_driving_impl | rdb_ocean_diag_derived | Subroutine |
|
| tidal_mixing_column_kernel | rdb_ocean_tidal_mixing | Subroutine | Per-column St-Laurent flux-bookkeeping sweep. One
|
| tidal_mixing_compute | rdb_ocean_tidal_mixing | Subroutine | Run tidal mixing over the domain: fill |
| tidal_mixing_is_inert | rdb_ocean_tidal_mixing | Function |
|
| tidal_mixing_merge_into_kt | rdb_ocean_tidal_mixing | Subroutine | Fold the tidal diffusivity into the vmix interface fields,
ADDITIVELY (interior-diffusivity semantics; St Laurent tidal
mixing is an interior source like kappa-shear). Called EVERY
stage (PP81 rewrites kv/kt each stage; |
| tide_name_index | rdb_ocean_tide_astro | Function | Catalog index (1..TIDES_CATALOG_SIZE) of a constituent name, matched case-insensitively; -1 if unknown. |
| tides_build_struct | rdb_ocean_tides | Subroutine | Build the (nx,ny,3) cos/sin spatial-structure arrays from cell- centre latitude/longitude (degrees), via the angle-sum fold cos(theta + nlambda) = cos(theta)cos(nlambda) - sin(theta)sin(n*lambda). Plain host loop over all cells incl. ghosts (before enter_data). slice 1 diurnal (n=1): G1 = sin(2 phi) slice 2 semidiurnal(n=2): G2 = cos^2 phi slice 3 long-period(n=0): G0 = 1/2 - 3/2 sin^2 phi |
| tides_configure_astronomy | rdb_ocean_tides | Subroutine | Allocate the active-constituent arrays + 2D fields and fill the
catalog copies + astronomy (phase0, nodal f/u) at the reference
and nodal reference day numbers. Host-side setup (before
enter_data). |
| tides_update_eta_eq | rdb_ocean_tides | Subroutine | Refresh |
| tides_update_eta_eq_impl | rdb_ocean_tides | Subroutine | Flat-impl device fill (explicit-shape dummies — no descriptor walk). eta_eq(i,j) = sum_c amp_cos(c)cos_struct(i,j,m) + amp_sin(c)sin_struct(i,j,m), m = species_c(c). Contiguous index (i) innermost. |
| tides_update_eta_sal | rdb_ocean_tides | Subroutine | Refresh the combined seam field |
| tides_update_eta_sal_impl | rdb_ocean_tides | Subroutine | Flat-impl device fill (explicit-shape dummies). Loop-invariant
|
| top_drag_fill_face_cover_impl | rdb_ocean_top_drag | Subroutine | Project the cell-centred |
| top_drag_stress_mag_impl | rdb_ocean_top_drag | Subroutine | Cell-centred magnitude of the top stress (N/m^2), for the
later |
| top_drag_tendencies_impl | rdb_ocean_top_drag | Subroutine | Flat device kernel: explicit-shape dummies, no derived-type
dereference inside the |
| topo_length_to_grid_units | rdb_ocean_state | Function | Convert a metres length scale ( |
| tracer_advect | rdb_continuity | Subroutine | Test-only (no production caller): unsplit 2-D tracer advection,
the reference oracle for split |
| tracer_advect_meridional | rdb_continuity | Subroutine | Meridional half of the direction-split tracer advection.
Reads the post-zonal |
| tracer_advect_meridional_one_impl | rdb_continuity | Subroutine | Meridional half of |
| tracer_advect_one_impl | rdb_continuity | Subroutine | One-tracer PPM advection. Flat-impl: takes bare 3D arrays (no derived-type deref inside do-concurrent), so NVHPC stdpar handles it cleanly even for tracers stored in an array-of-derived-types registry. |
| tracer_advect_vertical | rdb_ocean_vertical_advection | Subroutine | Apply first-order upwind-in-z vertical advection to every
registered tracer, then update |
| tracer_advect_vertical_one_impl | rdb_ocean_vertical_advection | Subroutine | Flat-impl first-order upwind-in-z vertical advection for one tracer. Two passes: |
| tracer_advect_zonal | rdb_continuity | Subroutine | Zonal half of the direction-split tracer advection.
Mirrors |
| tracer_advect_zonal_one_impl | rdb_continuity | Subroutine | Zonal half of |
| tracer_bytes | rdb_tracer | Function | Counted allocatable footprint of one tracer (hTr + RK2 save). |
| tracer_destroy | rdb_tracer | Subroutine | |
| tracer_hdiff | rdb_ocean_hdiff_tracer | Subroutine | Iterate the tracer registry and apply constant- |
| tracer_hdiff_one_impl | rdb_ocean_hdiff_tracer | Subroutine | Four-pass flat-impl horizontal-Laplacian tracer diffusion in conservative curvilinear form (design §2, mirrors continuity): |
| tracer_index_by_name | rdb_ocean_api | Function | Registry index (1-based) of the tracer named |
| tracer_init | rdb_tracer | Subroutine | Allocate hTr / hTr0 at the multilayer grid size, zero-filled.
Caller is responsible for populating the prognostic field
(e.g. |
| tracer_recon_required_nghost | rdb_recon_weno | Function | Minimum nghost required for a given TRACER_RECON_* code. |
| tracer_recon_support_status | rdb_recon_weno | Function | Decide whether a parsed tracer_recon code is honoured on this config, independent of the multilayer nghost/use_ppm_tracer quality guards (those apply only once this returns OK for a weno rung). Factored out as a pure predicate so the fail-loud decision is unit-testable without triggering error stop. |
| tripolar_node_latlon | rdb_ocean_metrics | Subroutine | Geographic (lat, lon) of supergrid node (m,n). Below the join (lon-lat corner latitude <= phi_join) it is plain lon-lat; above, the bipolar cap map (s = fraction of the cap row span). |
| tripolar_supergrid_arrays | rdb_ocean_metrics | Subroutine | The in-memory MOM6-style supergrid of the analytic tripolar grid
(node geography, great-circle edge lengths, spherical sub-cell
areas) that |
| try_get_bathymetry_var | rdb_bathymetry | Subroutine | Try to find the bathymetry variable by common names |
| two_dp | rdb_mem_report | Function | Format a real to exactly two decimal places without leading
blanks ( |
| uhbt_to_ubt | rdb_bt_cont_type | Function | Invert |
| uniform_diag_levels | rdb_ocean_engine | Function |
|
| upcase2 | rdb_ocean_tide_astro | Function | Uppercase the first two characters of a token. |
| update_lay_enth | rdb_ice_column | Subroutine | Conservative per-layer implicit enthalpy update — SIS2
|
| update_reservoir_meridional_north | rdb_ocean_obc_baroclinic | Subroutine | Update reservoir for the north open edge. Wall-face index = j_n+1; interior cell = j_n. Outward normal = +y: u_n = +mass_flux_y(i,j_n+1,k)/max(h,hmin). |
| update_reservoir_meridional_south | rdb_ocean_obc_baroclinic | Subroutine | Update reservoir for the south open edge. Wall-face index = j_s; interior cell = j_s. Outward normal = -y: u_n = -mass_flux_y(i,j_s,k)/max(h,hmin). |
| update_reservoir_zonal_east | rdb_ocean_obc_baroclinic | Subroutine | Update reservoir for the east open edge. Wall-face index for mass flux = i_e+1 (east face of the last physical cell i_e). Interior cell = i_e. Outward normal at east = +x: u_n = +mass_flux_x(i_e+1,j,k)/max(h,hmin). |
| update_reservoir_zonal_west | rdb_ocean_obc_baroclinic | Subroutine | Update reservoir for the west open edge. Wall-face/interior cell = i_w. Outward normal = -x: u_n = -mass_flux_x(i_w,j,k)/max(h,hmin). |
| use_insitu_pcm | rdb_ocean_pressure_force | Function | Does the FV_MOM6 constant-by-layer branch take the IN-SITU
density path ( |
| validate_config | rdb_config | Subroutine | Validate configuration parameters after reading |
| varmix_assemble | rdb_ocean_varmix | Function | Assembly chain in the load-bearing order: background + Visbeck
addend, THEN Res_fn scale, THEN clamp. |
| varmix_compute | rdb_ocean_varmix | Subroutine | Fill |
| varmix_compute_impl | rdb_ocean_varmix | Subroutine | Flat-impl VarMix kernel (explicit-shape; NVHPC descriptor-walk-free).
Three phases: (1) Res_fn at faces (cg1 interpolated to faces or the
centre-Res_fn averaged, per |
| varmix_dfdx_vface | rdb_ocean_varmix | Function | Cross-face df/dx at a v-face (j interior): average of the centred x-derivatives in the south (j-1) and north (j) rows. |
| varmix_dfdy_uface | rdb_ocean_varmix | Function | Cross-face df/dy at a u-face (i interior): average of the two centred y-derivatives in the west (i-1) and east (i) columns, clamped at the j edges (one-sided / zero there). |
| varmix_res_fn | rdb_ocean_varmix | Function | Divide-free resolution function for power |
| varmix_sn_u | rdb_ocean_varmix | Subroutine | Thickness-weighted Eady growth rate at u-faces (own component).
Interior u-face (i=2..nx) pairs centre columns iw=i-1 (west) and i
(east). Interior interfaces K=2..nz; |
| varmix_sn_v | rdb_ocean_varmix | Subroutine | Thickness-weighted Eady growth rate at v-faces (mirror of
|
| vcoord_cleanup | rdb_vcoord | Subroutine | Deallocate all arrays. Safe to call on uninitialised instances. |
| vcoord_enter_data | rdb_vcoord | Subroutine | Map read-only coordinate arrays to GPU. |
| vcoord_exit_data | rdb_vcoord | Subroutine | Unmap coordinate arrays from GPU. |
| vcoord_h_min_is_coherent | rdb_vcoord | Function | Is |
| vcoord_h_min_role | rdb_vcoord | Function | Which of the TWO contracts |
| vcoord_init | rdb_vcoord | Subroutine | Initialise a vertical coordinate definition. Allocates + populates
|
| vcoord_needs_remap | rdb_vcoord | Function | Returns |
| vcoord_target_dz_column | rdb_vcoord | Subroutine | Compute target layer thicknesses for a single water column.
Pure, called from |
| vcoord_target_dz_column_zstar_full | rdb_vcoord | Subroutine | Compute target layer thicknesses for VCOORD_ZSTAR_FULL. Inputs: z_ref_col(0:nz) local reference (top-down, 0=surface, nz=h_bed); H current total depth (m) = h_bed + η; h_min vanishing-layer floor (m). Output: dz(1:nz) ROMS-ordered (dz(1) bottom, dz(nz) surface), sum(dz) = H exactly, vanishing rows set to h_min. Surface layer absorbs η; if H < h_bed the deepest layers clip to h_min and the surface is trimmed to keep sum = H. |
| vcoord_type_name | rdb_ocean_state | Function | Human-readable tag for a VCOORD_* enum (mismatch messages only; the integer enum is what is validated). |
| vdiff_apply_momentum | rdb_ocean_vdiff | Subroutine | Backward-Euler vertical viscosity applied to
|
| vdiff_apply_tracers | rdb_ocean_vdiff | Subroutine | Backward-Euler vertical diffusivity on every registered
tracer. Each tracer is converted to |
| vdiff_bbl_configure | rdb_ocean_vdiff | Subroutine | Latch the MOM6 per-face bottom boundary layer ( |
| vdiff_set_viscous_bbl | rdb_ocean_vdiff | Subroutine | MOM6 |
| vhbt_to_vbt | rdb_bt_cont_type | Function | Meridional mirror of |
| visc_rem_halo_refresh | rdb_ocean_dyn | Subroutine | Exchange |
| visc_rem_precompute | rdb_ocean_dyn | Subroutine | Refresh |
| vmix_add_kv_ml_invz2 | rdb_ocean_vmix | Subroutine | Augment |
| vmix_apply_convection | rdb_ocean_vmix | Subroutine | Brunt-Vaisala-triggered convective adjustment – a CONTRIBUTOR
into kv/kt (see the module docstring for the full physics and
the D1-D4 divergences from MOM6’s |
| vmix_apply_in_stage | rdb_ocean_dyn | Subroutine | Bundle the per-stage vmix closure / KPP overlay / KV_ML_INVZ2 /
assembly gate / vdiff dispatch into one routine so the run_stage
drivers can call |
| vmix_apply_kpp_overlay | rdb_ocean_vmix | Subroutine | Thin host-side shim over |
| vmix_apply_nonlocal_tendencies | rdb_ocean_vmix | Subroutine | Apply the KPP non-local (counter-gradient) tracer tendency
computed by |
| vmix_assemble | rdb_ocean_vmix | Subroutine | The single downstream gate of the vmix diffusivity assembly —
the |
| vmix_assemble_clip_henyey_impl | rdb_ocean_vmix | Subroutine |
|
| vmix_assemble_clip_impl | rdb_ocean_vmix | Subroutine | Floor + ceiling on interior interfaces k = 2..nzp1-1. Explicit- shape args so the do concurrent stays descriptor-walk free. |
| vmix_assemble_clip_profile_impl | rdb_ocean_vmix | Subroutine | C7 floor + ceiling: same as |
| vmix_bkgnd_fill_impl | rdb_ocean_vmix | Subroutine | Fill the per-interface Bryan & Lewis (1979) JGR 84:2503 background tracer-diffusivity profile from the CURRENT column interface depths. |
| vmix_compute_pp81 | rdb_ocean_vmix | Subroutine | Pacanowski-Philander (1981) Richardson-number closure.
Inlined kernel — keeps the |
| vmix_convection_impl | rdb_ocean_vmix | Subroutine | Flat, explicit-shape kernel (the “vmix incident” module –
assumed-shape dummies here produced 1.4M per-launch descriptor-
walk memcpys; explicit-shape only, no exceptions). Interior
interfaces k = 2..nzp1-1 only; boundary interfaces k=1 (bed) and
k=nzp1 (surface) stay at the closed-BC zero and are never
touched (same contract as PP81 / |
| vmix_guard_impl | rdb_ocean_vmix | Subroutine | Count negative or NaN diffusivities across interior interfaces.
A reduction over fresh scratch — uses |
| vmix_interior_closure_is_implemented | rdb_ocean_vmix | Function |
|
| vmix_kpp_overlay_impl | rdb_ocean_vmix | Subroutine | KPP boundary-layer overlay on top of the interior closure
already in |
| vmix_resolve_kd_min | rdb_ocean_vmix | Function | Resolve the |
| vmix_seed_backgrounds | rdb_ocean_vmix | Subroutine | Seed |
| vmix_smooth_121_impl | rdb_ocean_vmix | Subroutine | One in-plane 1-2-1 horizontal smoothing pass on interior interfaces k = 2..nzp1-1. Wet-mask aware: contributions from dry neighbours (wet_mask == 0) are excluded and the 9-point stencil weight is renormalised over the wet cells only. A dry centre column (wet_mask(i,j) == 0) is left unchanged — no leakage into or out of dry cells. |
| vmix_split_ddiff_eos_impl | rdb_ocean_vmix | Subroutine |
|
| vmix_split_ddiff_impl | rdb_ocean_vmix | Subroutine | Double-diffusion split. Replaces |
| vmix_split_kd_heat_salt | rdb_ocean_vmix | Subroutine | Analogue of MOM6’s heat/salt diffusivity split. Derives the
per-tracer diffusivities from the assembled interior/boundary-
layer diffusivity:
Kd_heat = Kd_int + Kd_extra_T -> kt
Kd_salt = Kd_int + Kd_extra_S -> ks
|
| vmix_split_kd_heat_salt_impl | rdb_ocean_vmix | Subroutine | Explicit-shape args so the do concurrent stays descriptor-walk free (assumed-shape dummies in a do concurrent make NVHPC walk descriptors per launch – this runs every stage). |
| volcfl_face | rdb_continuity | Function | MOM6 swept-volume continuity-PPM face thickness (Lin & Rood
/ MOM_continuity_PPM |
| warn_unknown_bc | rdb_config | Subroutine | Warn if a BC string does not match any known type |
| water_column_impl | rdb_ocean_diag_derived | Subroutine | |
| wave_drag_roughness_proxy | rdb_ocean_setup | Subroutine |
|
| wavespeed_cg1_column | rdb_ocean_wave_speed | Subroutine | First-baroclinic wave speed for ONE column. |
| wavespeed_compute | rdb_ocean_wave_speed | Subroutine | Fill |
| wavespeed_compute_impl | rdb_ocean_wave_speed | Subroutine | Flat-impl wavespeed kernel (explicit-shape; NVHPC
descriptor-walk-free). Per-column Sturm-Liouville solve
( |
| wavespeed_rd | rdb_ocean_wave_speed | Function | Smooth equatorial Rd blend: Rd = cg1/sqrt(f^2 + 2betacg1). Reduces to cg1/|f| away from the equator and sqrt(cg1/(2*beta)) at f=0; a small inside-sqrt guard + denominator floor handle f = beta = 0. |
| weno3_recon | rdb_coriolis_adv | Function | 3rd-order WENO-Z reconstruction of a corner quantity onto the face
between |
| weno5_face_swept | rdb_recon_weno | Function | WENO5-Z swept-average face value (u > 0, upwind cell = q0). |
| weno5_recon | rdb_coriolis_adv | Function | 5th-order WENO-Z reconstruction (MOM6 |
| weno7_face_swept | rdb_recon_weno | Function | WENO7-Z swept-average face value (u > 0, upwind cell = q0). |
| weno7_recon | rdb_coriolis_adv | Function | 7th-order WENO-Z reconstruction (MOM6 |
| weno9_face_swept | rdb_recon_weno | Function | WENO9-Z swept-average face value (u > 0, upwind cell = q0). |
| weno_face_conc_x | rdb_continuity | Function | Swept-average WENO donor concentration at a zonal face. |
| weno_face_conc_y | rdb_continuity | Function | Meridional analogue of weno_face_conc_x. |
| wide_halo_guards | rdb_ocean_halo | Subroutine | Fail-loud validation for wide halo entry points. Called at the top of every *_wide public routine. |
| wrap360 | rdb_ocean_tide_astro | Function | Fold an angle in degrees to the canonical residue [0,360).
(Fortran |
| wright_pcm_dpa_face | rdb_ocean_pressure_force | Subroutine | Cross-face 5-point Boole quadrature of the layer |
| wright_pcm_dpa_intz | rdb_ocean_pressure_force | Subroutine | ANALYTIC vertical integral of the Wright (1997) in-situ density
anomaly over one constant-T/S (PCM) layer — MOM6
|
| wright_rho | rdb_ocean_pressure_force | Function | Wright (1997) in-situ density (kg/m^3) – term for term the
Wright branch of |
| write_key_json | rdb_nml_schema | Subroutine | Write one key as a JSON object. A |
| write_key_line | rdb_nml_schema | Subroutine | Write one aligned |
| z_fixed_nominal_dz | rdb_vcoord | Subroutine | Nominal layer thicknesses of a |
| zero3_impl | rdb_ocean_diag_derived | Subroutine | Device-side zero of |
| zfixed_cavity_nu_h_below_envelope | rdb_config | Function | Is the constant harmonic viscosity below the |
| zinit_dims_ok | rdb_ocean_z_init | Function | match |
| zinit_io_ok | rdb_ocean_z_init | Function | Translate a raw |
| zstar_full_build_column | rdb_vcoord | Subroutine | Build a per-column reference z-level pattern for VCOORD_ZSTAR_FULL.
Output |