Energetics-based planetary boundary layer (&ocean_epbl_nml).
All defaults preserve bit-identity: enable = .false. keeps
the existing PP81 + KPP path untouched. Knob table + MOM6
name mapping: docs/generated_nml_knobs.md.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | public | :: | c_ek | = | 0.085_wp |
OM4 Ekman coefficient (MOM6 MSTAR2_COEF2). |
|
| character(len=8), | public | :: | combine | = | "add" |
“add” / “max” vs the interior closure’s kv/kt (MOM6 EPBL_IS_ADDITIVE). |
|
| real(kind=wp), | public | :: | ekman_scale_coef | = | 1.0_wp |
Rotational mixing-length rolloff (MOM6 EKMAN_SCALE_COEF). |
|
| logical, | public | :: | enable | = | .false. |
Master switch. Requires |
|
| real(kind=wp), | public | :: | la_frac_hbl | = | 0.04_wp |
Stokes SL-average depth fraction (MOM6 LA_DEPTH_RATIO). |
|
| real(kind=wp), | public | :: | lt_enhance_coef | = | 0.447_wp |
Enhancement coefficient (MOM6 LT_ENHANCE_COEF). |
|
| real(kind=wp), | public | :: | lt_enhance_exp | = | -1.33_wp |
Langmuir-number exponent (MOM6 LT_ENHANCE_EXP). |
|
| real(kind=wp), | public | :: | lt_lac1 | = | -0.87_wp | ||
| real(kind=wp), | public | :: | lt_lac2 | = | 0.0_wp | ||
| real(kind=wp), | public | :: | lt_lac3 | = | 0.0_wp | ||
| real(kind=wp), | public | :: | lt_lac4 | = | 0.95_wp | ||
| real(kind=wp), | public | :: | lt_lac5 | = | 0.95_wp |
Stability-modified La coefficients (MOM6 LT_MOD_LAC1..5); set all to 0 for the unmodified La. |
|
| real(kind=wp), | public | :: | lt_max_enhance | = | 5.0_wp |
Cap on the multiplicative enhancement. |
|
| character(len=16), | public | :: | lt_scheme | = | "rescale" |
“rescale” (multiplicative) / “additive” (MOM6 EPBL_LANGMUIR_SCHEME). |
|
| real(kind=wp), | public | :: | min_mix_len | = | 0.0_wp |
Mixing-length floor, m (MOM6 EPBL_MIN_MIX_LEN). |
|
| real(kind=wp), | public | :: | mixlen_exponent | = | 2.0_wp |
Shape-function exponent (MOM6 MIX_LEN_EXPONENT). |
|
| logical, | public | :: | mld_bisection | = | .false. |
Bisection instead of false position (MOM6 EPBL_MLD_BISECTION). |
|
| logical, | public | :: | mld_iteration | = | .true. |
Self-consistent MLD root-find (MOM6 USE_MLD_ITERATION). |
|
| integer, | public | :: | mld_max_its | = | 20 |
Max MLD iterations (MOM6 EPBL_MLD_MAX_ITS). |
|
| real(kind=wp), | public | :: | mld_tol | = | 1.0_wp |
MLD convergence tolerance, m (MOM6 EPBL_MLD_TOLERANCE). |
|
| logical, | public | :: | mld_use_prev_guess | = | .false. |
Seed from the previous step’s MLD (MOM6 MLD_ITERATION_GUESS). |
|
| real(kind=wp), | public | :: | mstar | = | 1.2_wp |
Constant-scheme mstar (MOM6 MSTAR). |
|
| real(kind=wp), | public | :: | mstar_cap | = | -1.0_wp |
Cap for OM4/RH18; off when < 0 (MOM6 MSTAR_CAP). |
|
| real(kind=wp), | public | :: | mstar_coef1 | = | 0.3_wp |
OM4 stabilizing coefficient (MOM6 MSTAR2_COEF1). |
|
| real(kind=wp), | public | :: | mstar_conv_adj | = | 0.0_wp |
Convective mstar reduction in [0,1] (MOM6 MSTAR_CONV_ADJ). |
|
| character(len=16), | public | :: | mstar_scheme | = | "om4" |
“constant” / “om4” / “rh18” (MOM6 EPBL_MSTAR_SCHEME). |
|
| real(kind=wp), | public | :: | nstar | = | 0.2_wp |
Convective PE -> TKE efficiency (MOM6 NSTAR). |
|
| real(kind=wp), | public | :: | omega | = | 7.2921e-5_wp |
Earth rotation rate, 1/s (MOM6 OMEGA). |
|
| real(kind=wp), | public | :: | omega_frac | = | 0.0_wp |
Blend |f| with 2*Omega (MOM6 ML_OMEGA_FRAC). |
|
| real(kind=wp), | public | :: | prandtl | = | 1.0_wp |
Kv = prandtl*Kd into the momentum solve (MOM6 EPBL_PRANDTL). |
|
| real(kind=wp), | public | :: | rh18_cn1 | = | 0.275_wp | ||
| real(kind=wp), | public | :: | rh18_cn2 | = | 8.0_wp | ||
| real(kind=wp), | public | :: | rh18_cn3 | = | -5.0_wp | ||
| real(kind=wp), | public | :: | rh18_cs1 | = | 0.2_wp | ||
| real(kind=wp), | public | :: | rh18_cs2 | = | 0.4_wp |
RH18 mstar fits (MOM6 RH18_MSTAR_CN1..CS2). |
|
| real(kind=wp), | public | :: | tke_decay | = | 2.5_wp |
Ekman-depth / TKE-decay-scale ratio (MOM6 TKE_DECAY). |
|
| logical, | public | :: | tke_diags | = | .false. |
Compute the per-column TKE budget diagnostic terms. |
|
| real(kind=wp), | public | :: | translay_scale | = | 0.1_wp |
Transition-layer shape floor, must be in [0,1) when iterating (MOM6 EPBL_TRANSITION_SCALE). |
|
| logical, | public | :: | use_lt | = | .false. |
Langmuir-turbulence enhancement (LF17 wind-only path, no wave model needed). MOM6 EPBL_LT / USE_LA_LI2016. |
|
| character(len=16), | public | :: | vel_scale_scheme | = | "cube_root" |
“cube_root” / “rh18” (MOM6 EPBL_VEL_SCALE_SCHEME). |
|
| real(kind=wp), | public | :: | von_karman | = | 0.41_wp |
kappa in Kd = vstarkappamixlen (MOM6 VON_KARMAN_CONST). |
|
| real(kind=wp), | public | :: | vstar_scale_fac | = | 1.0_wp |
Overall vstar multiplier (MOM6 EPBL_VEL_SCALE_FACTOR). |
|
| real(kind=wp), | public | :: | vstar_surf_fac | = | 1.2_wp |
RH18 mechanical surface vstar factor (MOM6 VSTAR_SURF_FAC). |
|
| real(kind=wp), | public | :: | wstar_ustar_coef | = | 1.0_wp |
Convective weight in the velocity scale (MOM6 WSTAR_USTAR_COEF). |
type :: ocean_epbl_config_t !! Energetics-based planetary boundary layer (`&ocean_epbl_nml`). !! All defaults preserve bit-identity: `enable = .false.` keeps !! the existing PP81 + KPP path untouched. Knob table + MOM6 !! name mapping: `docs/generated_nml_knobs.md`. logical :: enable = .false. !! Master switch. Requires `vmix%use_closure`; replaces the !! KPP overlay (configure logs the override). character(len=16) :: mstar_scheme = "om4" !! "constant" / "om4" / "rh18" (MOM6 EPBL_MSTAR_SCHEME). real(wp) :: mstar = 1.2_wp !! Constant-scheme mstar (MOM6 MSTAR). real(wp) :: mstar_cap = -1.0_wp !! Cap for OM4/RH18; off when < 0 (MOM6 MSTAR_CAP). real(wp) :: mstar_coef1 = 0.3_wp !! OM4 stabilizing coefficient (MOM6 MSTAR2_COEF1). real(wp) :: c_ek = 0.085_wp !! OM4 Ekman coefficient (MOM6 MSTAR2_COEF2). real(wp) :: mstar_conv_adj = 0.0_wp !! Convective mstar reduction in [0,1] (MOM6 MSTAR_CONV_ADJ). real(wp) :: rh18_cn1 = 0.275_wp real(wp) :: rh18_cn2 = 8.0_wp real(wp) :: rh18_cn3 = -5.0_wp real(wp) :: rh18_cs1 = 0.2_wp real(wp) :: rh18_cs2 = 0.4_wp !! RH18 mstar fits (MOM6 RH18_MSTAR_CN1..CS2). real(wp) :: nstar = 0.2_wp !! Convective PE -> TKE efficiency (MOM6 NSTAR). real(wp) :: tke_decay = 2.5_wp !! Ekman-depth / TKE-decay-scale ratio (MOM6 TKE_DECAY). real(wp) :: wstar_ustar_coef = 1.0_wp !! Convective weight in the velocity scale (MOM6 WSTAR_USTAR_COEF). character(len=16) :: vel_scale_scheme = "cube_root" !! "cube_root" / "rh18" (MOM6 EPBL_VEL_SCALE_SCHEME). real(wp) :: vstar_scale_fac = 1.0_wp !! Overall vstar multiplier (MOM6 EPBL_VEL_SCALE_FACTOR). real(wp) :: vstar_surf_fac = 1.2_wp !! RH18 mechanical surface vstar factor (MOM6 VSTAR_SURF_FAC). real(wp) :: von_karman = 0.41_wp !! kappa in Kd = vstar*kappa*mixlen (MOM6 VON_KARMAN_CONST). real(wp) :: ekman_scale_coef = 1.0_wp !! Rotational mixing-length rolloff (MOM6 EKMAN_SCALE_COEF). real(wp) :: min_mix_len = 0.0_wp !! Mixing-length floor, m (MOM6 EPBL_MIN_MIX_LEN). real(wp) :: mixlen_exponent = 2.0_wp !! Shape-function exponent (MOM6 MIX_LEN_EXPONENT). real(wp) :: translay_scale = 0.1_wp !! Transition-layer shape floor, must be in [0,1) when !! iterating (MOM6 EPBL_TRANSITION_SCALE). logical :: mld_iteration = .true. !! Self-consistent MLD root-find (MOM6 USE_MLD_ITERATION). real(wp) :: mld_tol = 1.0_wp !! MLD convergence tolerance, m (MOM6 EPBL_MLD_TOLERANCE). integer :: mld_max_its = 20 !! Max MLD iterations (MOM6 EPBL_MLD_MAX_ITS). logical :: mld_bisection = .false. !! Bisection instead of false position (MOM6 EPBL_MLD_BISECTION). logical :: mld_use_prev_guess = .false. !! Seed from the previous step's MLD (MOM6 MLD_ITERATION_GUESS). real(wp) :: omega = 7.2921e-5_wp !! Earth rotation rate, 1/s (MOM6 OMEGA). real(wp) :: omega_frac = 0.0_wp !! Blend |f| with 2*Omega (MOM6 ML_OMEGA_FRAC). real(wp) :: prandtl = 1.0_wp !! Kv = prandtl*Kd into the momentum solve (MOM6 EPBL_PRANDTL). character(len=8) :: combine = "add" !! "add" / "max" vs the interior closure's kv/kt !! (MOM6 EPBL_IS_ADDITIVE). logical :: tke_diags = .false. !! Compute the per-column TKE budget diagnostic terms. logical :: use_lt = .false. !! Langmuir-turbulence enhancement (LF17 wind-only path, !! no wave model needed). MOM6 EPBL_LT / USE_LA_LI2016. character(len=16) :: lt_scheme = "rescale" !! "rescale" (multiplicative) / "additive" !! (MOM6 EPBL_LANGMUIR_SCHEME). real(wp) :: lt_enhance_coef = 0.447_wp !! Enhancement coefficient (MOM6 LT_ENHANCE_COEF). real(wp) :: lt_enhance_exp = -1.33_wp !! Langmuir-number exponent (MOM6 LT_ENHANCE_EXP). real(wp) :: lt_max_enhance = 5.0_wp !! Cap on the multiplicative enhancement. real(wp) :: la_frac_hbl = 0.04_wp !! Stokes SL-average depth fraction (MOM6 LA_DEPTH_RATIO). real(wp) :: lt_lac1 = -0.87_wp real(wp) :: lt_lac2 = 0.0_wp real(wp) :: lt_lac3 = 0.0_wp real(wp) :: lt_lac4 = 0.95_wp real(wp) :: lt_lac5 = 0.95_wp !! Stability-modified La coefficients (MOM6 LT_MOD_LAC1..5); !! set all to 0 for the unmodified La. end type ocean_epbl_config_t