| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | public | :: | h_min | = | 1.0e-6_wp |
Floor used by the PPM positivity limiter (MOM6
|
|
| logical, | public | :: | positive_definite | = | .false. |
Positive-definite continuity (MOM6-prevention + Roundabout-conservation).
When |
|
| logical, | public | :: | ppm_limit_pos | = | .false. |
MOM6 |
|
| logical, | public | :: | renorm_consistent_flux | = | .true. |
Continuous flux model in the |
|
| logical, | public | :: | vol_cfl | = | .false. |
MOM6 |
type :: ocean_continuity_config_t real(wp) :: h_min = 1.0e-6_wp !! Floor used by the PPM positivity limiter (MOM6 !! `GV%Angstrom_H`). When `ppm_limit_pos = .true.` and a !! cell's centred thickness is at or below this floor, the !! PPM face reconstruction is forced to a constant (= upwind !! for that cell); above the floor the parabola's interior !! minimum is forced to `h_min` if it would dip below. !! Default 1e-6 m preserves "pure positivity" semantics. !! MOM6 typically uses 1–4 m (≈ `2·Angstrom_H`). No-op when !! `ppm_limit_pos = .false.`. logical :: ppm_limit_pos = .false. !! MOM6 `PPM_limit_pos` analogue. When `.true.`, the PPM !! face-thickness reconstruction in continuity adds a !! positivity-preserving limiter that prevents the parabola !! from dipping below `h_min` inside a cell. At thin / !! vanishing layers (shelf-break, seamount, wet/dry boundary) !! the reconstruction collapses to a constant — equivalent !! to upwind for that cell. Bounds mass flux through !! near-vanishing layers by the actual layer thickness. logical :: vol_cfl = .false. !! MOM6 `vol_CFL` analogue. When `.false.` (default) the !! continuity-PPM face thickness is the downwind PPM EDGE !! value (the CFL→0 limit), bit-identical to the pre-knob !! behaviour. When `.true.` the donor-side face thickness is !! the swept-volume integral of the reconstructed parabola !! (adds the missing O(CFL) term). Fixes the dt-sensitive !! near-bed mass residual at steep shelf breaks. logical :: positive_definite = .false. !! Positive-definite continuity (MOM6-prevention + Roundabout-conservation). !! When `.true.` the split layer continuity guarantees every layer !! stays `>= h_lim` after each direction pass — the PPM reconstruction !! edges are floored at `2·h_lim` (P1, MOM6's positive-definite !! PPM) and (P2, later) the per-donor outfluxes are scaled down !! (never thickness-inflated ⇒ zero mass created). `h_lim` is derived !! at setup: `angstrom_h` on VCOORD_LAGRANGIAN, else 0 (⇒ the floor is !! inert on non-Lagrangian coords). Default `.false.` ⇒ untaken !! branches only ⇒ bit-identical. Fail-loud composed with !! `&ocean_wetdry_nml enable` (that module owns its own barotropic !! limiter; composition deferred). logical :: renorm_consistent_flux = .true. !! Continuous flux model in the `uhbt`/`vhbt` Newton !! renormalisation (see `continuity_t%renorm_consistent_flux`): !! a layer whose upwind donor flips under the barotropic !! correction carries `(u0 + du)·h_face(new donor)` instead of the !! historical `flux0 + du·h_face(new donor)`, which jumps by !! `u0·(h_new − h_old)` at the flip and leaves the solve with no !! root when `uhbt` falls in the gap — a wrong-sign layer !! transport, an O(η) mismatch between the layer and barotropic !! free surfaces at every thickness jump (a sigma layer over a !! bathymetric step), and an exponentially pumped barotropic !! grid-scale mode under `pred_corr` (finding B of the !! vertical-coordinate stability matrix). Newton is bracketed by !! bisection (MOM6 `zonal_flux_adjust`). Default `.true.` !! (MOM6 behaviour, maintainer decision 2026-09-22); it is !! bit-identical to the historical model on every face where no !! donor flips. `.false.` restores the historical discontinuous !! model. Ignored by the wet/dry single-step form. end type ocean_continuity_config_t