subroutine register_tidal_mixing(cfg, schema)
!! `&ocean_tidal_mixing` (St-Laurent/Simmons internal-tide mixing).
type(config_t), target, intent(in) :: cfg
type(nml_schema_t), intent(inout) :: schema
type(nml_group_t) :: g
logical, pointer :: pl
real(wp), pointer :: pr
g%name = "ocean_tidal_mixing"
g%doc = "St-Laurent/Simmons internal-tide interior diapycnal mixing."
pl => cfg%ocean%tidal_mixing%enable
call g%add(nml_logical("enable", pl, &
"Master switch (requires use_closure + thermodynamics)"))
pr => cfg%ocean%tidal_mixing%gamma
call g%add(nml_real("gamma", pr, "Local-dissipation fraction q (GAMMA_ITIDES)", &
units="nondim"))
pr => cfg%ocean%tidal_mixing%mu
call g%add(nml_real("mu", pr, "Mixing efficiency Gamma_mix (MU_ITIDES)", &
units="nondim"))
pr => cfg%ocean%tidal_mixing%zeta
call g%add(nml_real("zeta", pr, "Bottom decay scale (INT_TIDE_DECAY_SCALE)", &
units="m"))
pr => cfg%ocean%tidal_mixing%kd_max
call g%add(nml_real("kd_max", pr, "Per-layer physical Kd cap (<0 => no cap)", &
units="m^2/s"))
pr => cfg%ocean%tidal_mixing%prandtl_tidal
call g%add(nml_real("prandtl_tidal", pr, "Kv = prandtl_tidal * Kd"))
pr => cfg%ocean%tidal_mixing%min_zbot
call g%add(nml_real("min_zbot", pr, "Mask off where column depth H < min_zbot", &
units="m"))
pr => cfg%ocean%tidal_mixing%e_uniform
call g%add(nml_real("e_uniform", pr, "Uniform bottom internal-tide energy input E", &
units="W m-2"))
pl => cfg%ocean%tidal_mixing%e_compute
call g%add(nml_logical("e_compute", pl, &
"State-dependent E = min(TKE_coef*N_bot, e_max) (v1.1)"))
pr => cfg%ocean%tidal_mixing%kappa_itides
call g%add(nml_real("kappa_itides", pr, "Topographic wavenumber (v1.1 E recompute)", &
units="m^-1"))
pr => cfg%ocean%tidal_mixing%kappa_h2
call g%add(nml_real("kappa_h2", pr, "KAPPA_H2_FACTOR (v1.1 E recompute)"))
pr => cfg%ocean%tidal_mixing%utide
call g%add(nml_real("utide", pr, "RMS barotropic tidal velocity (v1.1 E recompute)", &
units="m/s"))
pr => cfg%ocean%tidal_mixing%h2_rough
call g%add(nml_real("h2_rough", pr, "Sub-grid topographic roughness variance <h^2>", &
units="m^2"))
pr => cfg%ocean%tidal_mixing%frac_rough
call g%add(nml_real("frac_rough", pr, "Roughness clamp <h^2> <= (frac_rough*H)^2"))
pr => cfg%ocean%tidal_mixing%e_max
call g%add(nml_real("e_max", pr, "TKE_itide_max cap on E", units="W m-2"))
call schema%add_group(g)
end subroutine register_tidal_mixing