register_foxkemper Subroutine

private subroutine register_foxkemper(cfg, schema)

&ocean_foxkemper (Fox-Kemper et al. 2008/2011 mixed-layer-eddy restratification, capability B5).

Arguments

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

Calls

proc~~register_foxkemper~~CallsGraph proc~register_foxkemper register_foxkemper proc~group_add nml_group_t%group_add proc~register_foxkemper->proc~group_add proc~nml_logical nml_logical proc~register_foxkemper->proc~nml_logical proc~nml_real nml_real proc~register_foxkemper->proc~nml_real proc~schema_add_group nml_schema_t%schema_add_group proc~register_foxkemper->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_foxkemper~~CalledByGraph proc~register_foxkemper register_foxkemper proc~build_rdb_schema build_rdb_schema proc~build_rdb_schema->proc~register_foxkemper 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
real(kind=wp), private, pointer :: pr

Source Code

   subroutine register_foxkemper(cfg, schema)
      !! `&ocean_foxkemper` (Fox-Kemper et al. 2008/2011 mixed-layer-eddy
      !! restratification, capability B5).
      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_foxkemper"
      g%doc = "Fox-Kemper mixed-layer-eddy restratification (B5)."

      pl => cfg%ocean%foxkemper%enable
      call g%add(nml_logical("enable", pl, &
                             "Master switch (off => bit-identity)"))
      pr => cfg%ocean%foxkemper%ce
      call g%add(nml_real("ce", pr, "FK08 coefficient Ce (0.06-0.08)"))
      pr => cfg%ocean%foxkemper%f_floor
      call g%add(nml_real("f_floor", pr, "|f| regularisation floor", units="1/s"))
      pr => cfg%ocean%foxkemper%mld_decay_time
      call g%add(nml_real("mld_decay_time", pr, &
                          "Running-mean MLD filter time-scale (0 = off, instantaneous MLD)", &
                          units="s"))
      pr => cfg%ocean%foxkemper%tail_dh
      call g%add(nml_real("tail_dh", pr, "mu cubic-tail extension (0 = exact mu)"))
      pl => cfg%ocean%foxkemper%use_mom_mixrate
      call g%add(nml_logical("use_mom_mixrate", pl, &
                             "FK11 momentum-mixrate timescale (PRODUCTION-RECOMMENDED) vs bare Ce/|f|"))
      pl => cfg%ocean%foxkemper%resolution_taper
      call g%add(nml_logical("resolution_taper", pl, &
                             "B2 res_fn hook (hard error if on without B2)"))
      pl => cfg%ocean%foxkemper%use_bodner
      call g%add(nml_logical("use_bodner", pl, &
                             "Bodner 2023 frontogenesis-arrest MLE (overrides ce/mixrate)"))
      pr => cfg%ocean%foxkemper%cr
      call g%add(nml_real("cr", pr, "Bodner 2023 efficiency coefficient Cr (0 = off)"))
      pr => cfg%ocean%foxkemper%bodner_mstar
      call g%add(nml_real("bodner_mstar", pr, "Bodner mechanical (u*) weight in w'u'"))
      pr => cfg%ocean%foxkemper%bodner_nstar
      call g%add(nml_real("bodner_nstar", pr, "Bodner convective (w*) weight in w'u'"))
      pr => cfg%ocean%foxkemper%min_wstar2
      call g%add(nml_real("min_wstar2", pr, "Floor on w'u' (1/0 armour)", units="m^2/s^2"))

      call schema%add_group(g)
   end subroutine register_foxkemper