ocean_varmix_config_t Derived Type

type, public :: ocean_varmix_config_t

&ocean_varmix_nml: spatially-varying GM/Redi lateral-diffusivity coefficients = (background + Visbeck) × resolution_fn, clamped. Reads the slopes + wavespeed slots. Default off ⇒ GM keeps constant khth.


Inherited by

type~~ocean_varmix_config_t~~InheritedByGraph type~ocean_varmix_config_t ocean_varmix_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_varmix_config_t varmix type~config_t config_t type~config_t->type~ocean_config_t ocean type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~config_t cfg

Components

Type Visibility Attributes Name Initial
logical, public :: enable = .false.

Master switch. Default off. Requires &ocean_slopes_nml enable + &ocean_wavespeed_nml enable (configure-time errors).

logical, public :: gill_equatorial_ld = .true.

Gill (1982) equatorial-Ld convention (factor 2 in beta_dx2).

logical, public :: interpolate_res_fn = .false.

Interpolate the centre Res_fn to faces (.true.) vs interpolate cg1 to faces then recompute Res_fn (.false., MOM6 default).

integer, public :: kh_res_fn_power = 2

Resolution-function power p (even).

real(kind=wp), public :: kh_res_scale_coef = 1.0_wp

Resolution-function alpha (the (alpha·cg1)^p denom coefficient).

real(kind=wp), public :: khth = 0.0_wp

Background thickness diffusivity KhTh (m²/s) the Visbeck term + Res_fn scale.

real(kind=wp), public :: khth_max = 0.0_wp

Upper clamp on KhTh (m²/s); ≤ 0 ⇒ no cap.

real(kind=wp), public :: khth_min = 0.0_wp

Lower clamp on the assembled KhTh (m²/s).

real(kind=wp), public :: khth_slope_cff = 0.0_wp

Visbeck coefficient α_s for the KhTh chain.

real(kind=wp), public :: khtr = 0.0_wp

Background tracer diffusivity KhTr (m²/s) for the future Redi.

real(kind=wp), public :: khtr_max = 0.0_wp

Upper clamp on KhTr (m²/s); ≤ 0 ⇒ no cap.

real(kind=wp), public :: khtr_min = 0.0_wp

Lower clamp on KhTr (m²/s).

real(kind=wp), public :: khtr_slope_cff = 0.0_wp

Visbeck coefficient for the KhTr chain.

logical, public :: resoln_scaled_khth = .false.

Scale the assembled KhTh by the resolution function.

logical, public :: resoln_scaled_khtr = .false.

Scale the assembled KhTr by the resolution function.

logical, public :: use_visbeck = .false.

Add the Visbeck/Eady khth_slope_cff·L²·SN baroclinicity term.

real(kind=wp), public :: visbeck_l_scale = 0.0_wp

Visbeck length scale L (m); if < 0, |L|²·areaCu is used.

real(kind=wp), public :: visbeck_max_slope = 0.0_wp

S² limiter scale; ≤ 0 ⇒ no S² limit.


Source Code

   type :: ocean_varmix_config_t
      !! `&ocean_varmix_nml`: spatially-varying GM/Redi lateral-diffusivity
      !! coefficients = (background + Visbeck) × resolution_fn, clamped.
      !! Reads the slopes + wavespeed slots.  Default off ⇒ GM keeps constant khth.
      logical :: enable = .false.
         !! Master switch.  Default off.  Requires `&ocean_slopes_nml enable`
         !! + `&ocean_wavespeed_nml enable` (configure-time errors).
      logical :: use_visbeck = .false.
         !! Add the Visbeck/Eady `khth_slope_cff·L²·SN` baroclinicity term.
      logical :: resoln_scaled_khth = .false.
         !! Scale the assembled KhTh by the resolution function.
      logical :: resoln_scaled_khtr = .false.
         !! Scale the assembled KhTr by the resolution function.
      logical :: gill_equatorial_ld = .true.
         !! Gill (1982) equatorial-Ld convention (factor 2 in beta_dx2).
      logical :: interpolate_res_fn = .false.
         !! Interpolate the centre Res_fn to faces (`.true.`) vs interpolate
         !! cg1 to faces then recompute Res_fn (`.false.`, MOM6 default).
      integer :: kh_res_fn_power = 2
         !! Resolution-function power p (even).
      real(wp) :: kh_res_scale_coef = 1.0_wp
         !! Resolution-function alpha (the `(alpha·cg1)^p` denom coefficient).
      real(wp) :: khth = 0.0_wp
         !! Background thickness diffusivity KhTh (m²/s) the Visbeck term +
         !! Res_fn scale.
      real(wp) :: khtr = 0.0_wp
         !! Background tracer diffusivity KhTr (m²/s) for the future Redi.
      real(wp) :: khth_slope_cff = 0.0_wp
         !! Visbeck coefficient α_s for the KhTh chain.
      real(wp) :: khtr_slope_cff = 0.0_wp
         !! Visbeck coefficient for the KhTr chain.
      real(wp) :: khth_min = 0.0_wp
         !! Lower clamp on the assembled KhTh (m²/s).
      real(wp) :: khth_max = 0.0_wp
         !! Upper clamp on KhTh (m²/s); ≤ 0 ⇒ no cap.
      real(wp) :: khtr_min = 0.0_wp
         !! Lower clamp on KhTr (m²/s).
      real(wp) :: khtr_max = 0.0_wp
         !! Upper clamp on KhTr (m²/s); ≤ 0 ⇒ no cap.
      real(wp) :: visbeck_l_scale = 0.0_wp
         !! Visbeck length scale L (m); if < 0, |L|²·areaCu is used.
      real(wp) :: visbeck_max_slope = 0.0_wp
         !! S² limiter scale; ≤ 0 ⇒ no S² limit.
   end type ocean_varmix_config_t