register_tidal_mixing Subroutine

private subroutine register_tidal_mixing(cfg, schema)

&ocean_tidal_mixing (St-Laurent/Simmons internal-tide mixing).

Arguments

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

Calls

proc~~register_tidal_mixing~~CallsGraph proc~register_tidal_mixing register_tidal_mixing proc~group_add nml_group_t%group_add proc~register_tidal_mixing->proc~group_add proc~nml_logical nml_logical proc~register_tidal_mixing->proc~nml_logical proc~nml_real nml_real proc~register_tidal_mixing->proc~nml_real proc~schema_add_group nml_schema_t%schema_add_group proc~register_tidal_mixing->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_tidal_mixing~~CalledByGraph proc~register_tidal_mixing register_tidal_mixing proc~build_rdb_schema build_rdb_schema proc~build_rdb_schema->proc~register_tidal_mixing 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_tidal_mixing(cfg, schema)
      !! `&ocean_tidal_mixing` (St-Laurent/Simmons internal-tide mixing).
      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_tidal_mixing"
      g%doc = "St-Laurent/Simmons internal-tide interior diapycnal mixing."

      pl => cfg%ocean%tidal_mixing%enable
      call g%add(nml_logical("enable", pl, &
                             "Master switch (requires use_closure + thermodynamics)"))
      pr => cfg%ocean%tidal_mixing%gamma
      call g%add(nml_real("gamma", pr, "Local-dissipation fraction q (GAMMA_ITIDES)", &
                          units="nondim"))
      pr => cfg%ocean%tidal_mixing%mu
      call g%add(nml_real("mu", pr, "Mixing efficiency Gamma_mix (MU_ITIDES)", &
                          units="nondim"))
      pr => cfg%ocean%tidal_mixing%zeta
      call g%add(nml_real("zeta", pr, "Bottom decay scale (INT_TIDE_DECAY_SCALE)", &
                          units="m"))
      pr => cfg%ocean%tidal_mixing%kd_max
      call g%add(nml_real("kd_max", pr, "Per-layer physical Kd cap (<0 => no cap)", &
                          units="m^2/s"))
      pr => cfg%ocean%tidal_mixing%prandtl_tidal
      call g%add(nml_real("prandtl_tidal", pr, "Kv = prandtl_tidal * Kd"))
      pr => cfg%ocean%tidal_mixing%min_zbot
      call g%add(nml_real("min_zbot", pr, "Mask off where column depth H < min_zbot", &
                          units="m"))
      pr => cfg%ocean%tidal_mixing%e_uniform
      call g%add(nml_real("e_uniform", pr, "Uniform bottom internal-tide energy input E", &
                          units="W m-2"))
      pl => cfg%ocean%tidal_mixing%e_compute
      call g%add(nml_logical("e_compute", pl, &
                             "State-dependent E = min(TKE_coef*N_bot, e_max) (v1.1)"))
      pr => cfg%ocean%tidal_mixing%kappa_itides
      call g%add(nml_real("kappa_itides", pr, "Topographic wavenumber (v1.1 E recompute)", &
                          units="m^-1"))
      pr => cfg%ocean%tidal_mixing%kappa_h2
      call g%add(nml_real("kappa_h2", pr, "KAPPA_H2_FACTOR (v1.1 E recompute)"))
      pr => cfg%ocean%tidal_mixing%utide
      call g%add(nml_real("utide", pr, "RMS barotropic tidal velocity (v1.1 E recompute)", &
                          units="m/s"))
      pr => cfg%ocean%tidal_mixing%h2_rough
      call g%add(nml_real("h2_rough", pr, "Sub-grid topographic roughness variance <h^2>", &
                          units="m^2"))
      pr => cfg%ocean%tidal_mixing%frac_rough
      call g%add(nml_real("frac_rough", pr, "Roughness clamp <h^2> <= (frac_rough*H)^2"))
      pr => cfg%ocean%tidal_mixing%e_max
      call g%add(nml_real("e_max", pr, "TKE_itide_max cap on E", units="W m-2"))

      call schema%add_group(g)
   end subroutine register_tidal_mixing