subroutine register_nonhydrostatic(cfg, schema)
!! `&nonhydrostatic_nml`: NH/multilayer switches, CG-Poisson
!! controls, PP81 vmix, KPP knobs, k-eps, Smagorinsky, BPG, mode
!! split. `keps_stability` and `bpg_method` are enums.
type(config_t), target, intent(in) :: cfg
type(nml_schema_t), intent(inout) :: schema
type(nml_group_t) :: g
real(wp), pointer :: pr
integer, pointer :: pi
logical, pointer :: pl
character(len=:), pointer :: ps
g%name = "nonhydrostatic"
g%doc = "Non-hydrostatic / multilayer: CG-Poisson, PP81/KPP/k-eps vmix, Smagorinsky, BPG, mode split."
pi => cfg%nz_layers
call g%add(nml_int("nz_layers", pi, "Number of sigma layers", min=1))
pl => cfg%use_multilayer
call g%add(nml_logical("use_multilayer", pl, "Enable coupled hydrostatic vertical layers"))
pr => cfg%rho_0
call g%add(nml_real("rho_0", pr, "Reference density for EOS", units="kg/m^3"))
pr => cfg%kpp_ri_crit
call g%add(nml_real("kpp_ri_crit", pr, "Critical bulk Richardson number for KPP BL-depth"))
pr => cfg%kpp_cs_nonlocal
call g%add(nml_real("kpp_cs_nonlocal", pr, "KPP non-local (counter-gradient) transport coefficient"))
pr => cfg%kpp_c_vt2
call g%add(nml_real("kpp_c_vt2", pr, "KPP V_t^2 unresolved-turbulence coefficient (0 = off)"))
pr => cfg%hdiff_kappa
call g%add(nml_real("hdiff_kappa", pr, &
"Horizontal tracer diffusion coefficient (COASTAL path only; "// &
"ocean's along-coordinate equivalent is &ocean_hdiff_nml kappa_h)", &
units="m^2/s", &
dead_on_ocean_path="coastal-legacy, per this key's own doc string: "// &
"stored onto tracer_t%hdiff_kappa via register_default_tracers but "// &
"hdiff_kappa is read nowhere on the ocean path. Use "// &
"&ocean_hdiff_nml kappa_h."))
call schema%add_group(g)
end subroutine register_nonhydrostatic