&ocean_eos_nml: equation-of-state variant selector, the
freezing-point (liquidus) coefficient set, and the
potential-density reference pressure.
eos enum mirrors parse_eos_variant in rdb_eos;
tfreeze_set mirrors parse_tfreeze_set in the same module.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(config_t), | intent(in), | target | :: | cfg | ||
| type(nml_schema_t), | intent(inout) | :: | schema |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(nml_group_t), | private | :: | g | ||||
| real(kind=wp), | private, | pointer | :: | pr | |||
| character(len=:), | private, | pointer | :: | ps |
subroutine register_ocean_eos(cfg, schema) !! `&ocean_eos_nml`: equation-of-state variant selector, the !! freezing-point (liquidus) coefficient set, and the !! potential-density reference pressure. !! `eos` enum mirrors `parse_eos_variant` in rdb_eos; !! `tfreeze_set` mirrors `parse_tfreeze_set` in the same module. 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_eos" g%doc = "Equation-of-state variant selector, liquidus set + reference pressure." ps => cfg%ocean%eos%eos call g%add(nml_enum("eos", ps, "Equation-of-state variant", & allowed=[character(len=10) :: "linear", "wright", & "roquet_spv", "teos10"])) ps => cfg%ocean%eos%tfreeze_set call g%add(nml_enum("tfreeze_set", ps, & "Named liquidus coefficient set for eos_freezing_point "// & "(T_f = l1*S + l2 + l3*p): 'seaice' = SIS2/MOM6 "// & "(-0.054, 0, -7.53e-8), 'isomip' = ISOMIP+ "// & "(-0.0573, 0.0832, -7.53e-8)", & allowed=[character(len=6) :: "seaice", "isomip"])) pr => cfg%ocean%eos%p_ref call g%add(nml_real("p_ref", pr, & "Reference pressure for the potential density "// & "ms%rho_layer (horizontally uniform by design; "// & "0 => surface density)", & units="Pa", min=0.0_wp)) call schema%add_group(g) end subroutine register_ocean_eos