ocean_epbl_config_t Derived Type

type, public :: 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.


Inherited by

type~~ocean_epbl_config_t~~InheritedByGraph type~ocean_epbl_config_t ocean_epbl_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_epbl_config_t epbl type~config_t config_t type~config_t->type~ocean_config_t ocean type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~config_t cfg

Components

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 vmix%use_closure; replaces the KPP overlay (configure logs the override).

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


Source Code

   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