Brunt-Vaisala-triggered convective adjustment (&ocean_conv_nml,
CVMix_conv-style). Where the interior N^2 < n2_thresh
(dense-over-light), raises kt -> max(kt, kd_conv) and
kv -> max(kv, prandtl_conv*kd_conv), strictly below the active
surface boundary layer (KPP/EPBL own that). An INTERIOR
closure CONTRIBUTOR – it does not clip/floor on its own; it
feeds vmix_assemble. enable = .false. keeps the existing
path bit-identical. Knob table: docs/generated_nml_knobs.md.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | enable | = | .false. |
Master switch. Requires |
|
| real(kind=wp), | public | :: | kd_conv | = | 1.0_wp |
Convective tracer diffusivity (MOM6 |
|
| real(kind=wp), | public | :: | n2_thresh | = | 0.0_wp |
Trigger threshold on N^2 (MOM6 |
|
| real(kind=wp), | public | :: | prandtl_conv | = | 1.0_wp |
Kv_conv = prandtl_conv * kd_conv (MOM6 |
type :: ocean_conv_config_t !! Brunt-Vaisala-triggered convective adjustment (`&ocean_conv_nml`, !! CVMix_conv-style). Where the interior N^2 < n2_thresh !! (dense-over-light), raises kt -> max(kt, kd_conv) and !! kv -> max(kv, prandtl_conv*kd_conv), strictly below the active !! surface boundary layer (KPP/EPBL own that). An INTERIOR !! closure CONTRIBUTOR -- it does not clip/floor on its own; it !! feeds `vmix_assemble`. `enable = .false.` keeps the existing !! path bit-identical. Knob table: `docs/generated_nml_knobs.md`. logical :: enable = .false. !! Master switch. Requires `vmix%use_closure` + !! `thermo%enable_thermodynamics` (validated at configure). real(wp) :: kd_conv = 1.0_wp !! Convective tracer diffusivity (MOM6 `KD_CONV`), m^2/s. real(wp) :: prandtl_conv = 1.0_wp !! Kv_conv = prandtl_conv * kd_conv (MOM6 `PRANDTL_CONV`), !! nondim. real(wp) :: n2_thresh = 0.0_wp !! Trigger threshold on N^2 (MOM6 `BV_SQR_CONV`), s^-2. end type ocean_conv_config_t