subroutine register_ocean_ice_ic(cfg, schema)
!! `&ocean_ice_ic_nml`: sea-ice ANALYTIC initial-condition path (PR
!! 24). Default `conc_config="zero"` ⇒ byte-identical. `"file"` is
!! deliberately NOT in the `allowed=` list — file-backed ICs are
!! PR-14 (v1.1), out of scope here.
type(config_t), target, intent(in) :: cfg
type(nml_schema_t), intent(inout) :: schema
type(nml_group_t) :: g
character(len=:), pointer :: ps
real(wp), pointer :: pr
g%name = "ocean_ice_ic"
g%doc = "Sea-ice analytic initial-condition path (PR 24)."
ps => cfg%ocean%ice_ic%conc_config
call g%add(nml_enum("conc_config", ps, &
"Sea-ice initial concentration configuration", &
allowed=[character(len=12) :: "zero", "uniform", "latitudes"]))
pr => cfg%ocean%ice_ic%conc
call g%add(nml_real("conc", pr, &
"Uniform-mode concentration ('uniform' only)", &
min=0.0_wp, max=1.0_wp))
pr => cfg%ocean%ice_ic%h_ice
call g%add(nml_real("h_ice", pr, &
"Ice thickness where seeded (SIS2 ICE_INIT_MASS as a thickness)", &
units="m", min=0.0_wp))
pr => cfg%ocean%ice_ic%h_snow
call g%add(nml_real("h_snow", pr, &
"Snow thickness where seeded (SIS2 SNOW_INIT_MASS as a thickness)", &
units="m", min=0.0_wp))
pr => cfg%ocean%ice_ic%t_ice
call g%add(nml_real("t_ice", pr, &
"Ice/snow temperature fed through the exact enthalpy inversion "// &
"(SIS2 ICE_TEMPERATURE_IC)", units="degC"))
pr => cfg%ocean%ice_ic%s_ice
call g%add(nml_real("s_ice", pr, &
"Ice bulk salinity (SIS2 ICE_SALINITY_IC)", &
units="PSU", min=0.0_wp))
pr => cfg%ocean%ice_ic%arctic_edge
call g%add(nml_real("arctic_edge", pr, &
"'latitudes' Arctic ice edge (SIS2 ARCTIC_ICE_EDGE_IC)", &
units="degrees_north", min=-91.0_wp, max=91.0_wp))
pr => cfg%ocean%ice_ic%antarctic_edge
call g%add(nml_real("antarctic_edge", pr, &
"'latitudes' Antarctic ice edge (SIS2 ANTARCTIC_ICE_EDGE_IC)", &
units="degrees_north", min=-91.0_wp, max=91.0_wp))
call schema%add_group(g)
end subroutine register_ocean_ice_ic