register_ocean_coriolis Subroutine

private subroutine register_ocean_coriolis(cfg, schema)

&ocean_coriolis_nml: Coriolis-advection scheme selector. form enum mirrors parse_pv_variant in rdb_coriolis_adv (canonical names; short aliases hk/energy are not advertised).

Arguments

Type IntentOptional Attributes Name
type(config_t), intent(in), target :: cfg
type(nml_schema_t), intent(inout) :: schema

Calls

proc~~register_ocean_coriolis~~CallsGraph proc~register_ocean_coriolis register_ocean_coriolis proc~group_add nml_group_t%group_add proc~register_ocean_coriolis->proc~group_add proc~nml_enum nml_enum proc~register_ocean_coriolis->proc~nml_enum proc~nml_logical nml_logical proc~register_ocean_coriolis->proc~nml_logical proc~schema_add_group nml_schema_t%schema_add_group proc~register_ocean_coriolis->proc~schema_add_group error error proc~group_add->error proc~lower lower proc~group_add->proc~lower proc~schema_add_group->error proc~schema_add_group->proc~lower proc~move_group move_group proc~schema_add_group->proc~move_group

Called by

proc~~register_ocean_coriolis~~CalledByGraph proc~register_ocean_coriolis register_ocean_coriolis proc~build_rdb_schema build_rdb_schema proc~build_rdb_schema->proc~register_ocean_coriolis proc~read_config_from_string_impl read_config_from_string_impl proc~read_config_from_string_impl->proc~build_rdb_schema proc~read_config_impl read_config_impl proc~read_config_impl->proc~build_rdb_schema proc~read_config read_config proc~read_config->proc~read_config_impl proc~read_config_from_string read_config_from_string proc~read_config_from_string->proc~read_config_from_string_impl proc~build_pending_handle build_pending_handle proc~build_pending_handle->proc~read_config_from_string proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~build_pending_handle proc~rdb_ocean_create_pending rdb_ocean_create_pending proc~rdb_ocean_create_pending->proc~build_pending_handle

Variables

Type Visibility Attributes Name Initial
type(nml_group_t), private :: g
logical, private, pointer :: pl
character(len=:), private, pointer :: ps

Source Code

   subroutine register_ocean_coriolis(cfg, schema)
      !! `&ocean_coriolis_nml`: Coriolis-advection scheme selector.
      !! `form` enum mirrors `parse_pv_variant` in rdb_coriolis_adv
      !! (canonical names; short aliases hk/energy are not advertised).
      type(config_t), target, intent(in) :: cfg
      type(nml_schema_t), intent(inout) :: schema
      type(nml_group_t) :: g
      character(len=:), pointer :: ps
      logical, pointer :: pl

      g%name = "ocean_coriolis"
      g%doc = "Coriolis-advection scheme selector."
      ps => cfg%ocean%coriolis%form
      call g%add(nml_enum("form", ps, "Coriolis-advection variant", &
                          allowed=[character(len=15) :: "sadourny", "sadourny_hk", &
                                   "sadourny_energy"]))
      ps => cfg%ocean%coriolis%pv_adv_scheme
      call g%add(nml_enum("pv_adv_scheme", ps, &
                          "PV face interpolation (Sadourny path): centered (default) "// &
                          "or weno3/weno5/weno7 (WENO-Z); weno5/weno7 need nghost>=4/5", &
                          allowed=[character(len=8) :: "centered", "weno3", &
                                   "weno5", "weno7"]))
      pl => cfg%ocean%coriolis%use_state_fluxes
      call g%add(nml_logical("use_state_fluxes", pl, &
                             "mom6-corrector CorAdv consumes continuity's renormalised "// &
                             "mass fluxes (MOM6 mass-consistent uh/vh)"))
      pl => cfg%ocean%coriolis%bound_coriolis
      call g%add(nml_logical("bound_coriolis", pl, &
                             "clamp the energy-scheme Coriolis accel to the (f+zeta)*v "// &
                             "velocity-form range (MOM6 BOUND_CORIOLIS; sadourny_energy only)"))
      ps => cfg%ocean%coriolis%corner_h
      call g%add(nml_enum("corner_h", ps, "PV corner-thickness construction (energy scheme)", &
                          allowed=[character(len=9) :: "cell_mean", "mom6_area"]))
      call schema%add_group(g)
   end subroutine register_ocean_coriolis