ocean_kappa_shear_config_t Derived Type

type, public :: ocean_kappa_shear_config_t

&ocean_kappa_shear_nml: shear-driven interior turbulence (Jackson, Hallberg & Legg 2008). Coexists with KPP/EPBL/PP81 — kappa is ADDED to the interior diffusivities. Default off ⇒ bit-identical.


Inherited by

type~~ocean_kappa_shear_config_t~~InheritedByGraph type~ocean_kappa_shear_config_t ocean_kappa_shear_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_kappa_shear_config_t kshear 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 :: at_vertex = .false.

Solve the JHL08 columns at C-grid CORNERS (vorticity points) from the native face velocities, then average the corner Kd back to tracer points (MOM6 VERTEX_SHEAR — the OM5-class production setting). Default off ⇒ bit-identical. v1 scope is Kd only: Kv stays prandtl_turb * kd_int at cell centres (the corner->face viscosity seam is a follow-up PR).

real(kind=wp), public :: c_n = 0.24_wp

TKE decay-rate coefficient vs stratification N (JHL08).

real(kind=wp), public :: c_s = 0.14_wp

TKE decay-rate coefficient vs shear S (JHL08).

logical, public :: enable = .false.

Master switch. Requires vmix%use_closure + thermodynamics (validated at configure).

real(kind=wp), public :: fri_curvature = -0.97_wp

Ri-function curvature in the shear source (JHL08).

real(kind=wp), public :: kappa_0 = 1.0e-7_wp

Background diffusivity, m^2/s; also the pre-step kappa (JHL08).

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

Iteration seed diffusivity, m^2/s (JHL08).

real(kind=wp), public :: kappa_trunc = 1.0e-9_wp

Diffusivity below this is truncated to 0, m^2/s (JHL08).

real(kind=wp), public :: lambda = 0.82_wp

Buoyancy mixing-length-scale coefficient (JHL08).

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

Boundary-distance length-scale rescale factor (JHL08).

logical, public :: massless_merge = .false.

sub-grid before the column solve (vs the blunt gather floor). Default off (bit-identical); identity columns bypass the merge.

integer, public :: max_inner_it = 50

Inner Picard iteration cap (JHL08).

integer, public :: max_substep_it = 13

Outer adaptive-substep iteration cap (JHL08).

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

Kv = prandtl_turb * Kd into the momentum solve (JHL08).

real(kind=wp), public :: ri_crit = 0.25_wp

Critical Richardson number (JHL08 Ri_c).

real(kind=wp), public :: shearmix_rate = 0.089_wp

Shear-source-rate coefficient (JHL08).

real(kind=wp), public :: src_max_chg = 10.0_wp

Adaptive-dt source-change tolerance band (JHL08).

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

Background TKE, m^2/s^2; Q is a denominator, floored (JHL08).

real(kind=wp), public :: tol_err = 0.1_wp

Picard convergence tolerance (JHL08).

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

Velocity snap-to-zero magnitude, m/s, in the projection (JHL08).

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

Floor, m^2/s, applied to each corner Kd BEFORE the geometric mean (MOM6 VERTEX_SHEAR_GEOMETRIC_MEAN_KDMIN; inert unless vertex_geometric_mean). OM5 configs use 1e-9.

logical, public :: vertex_geometric_mean = .false.

Geometric (vs arithmetic) mean in the corner->centre Kd average (MOM6 VERTEX_SHEAR_GEOMETRIC_MEAN). Pair with vertex_geomean_kdmin — with a 0 floor the geometric mean hard-zeros Kd along every shear-zone edge.


Source Code

   type :: ocean_kappa_shear_config_t
      !! `&ocean_kappa_shear_nml`: shear-driven interior turbulence (Jackson,
      !! Hallberg & Legg 2008).  Coexists with KPP/EPBL/PP81 — kappa is ADDED
      !! to the interior diffusivities.  Default off ⇒ bit-identical.
      logical :: enable = .false.
         !! Master switch.  Requires `vmix%use_closure` + thermodynamics
         !! (validated at configure).
      real(wp) :: ri_crit = 0.25_wp
         !! Critical Richardson number (JHL08 Ri_c).
      real(wp) :: shearmix_rate = 0.089_wp
         !! Shear-source-rate coefficient (JHL08).
      real(wp) :: fri_curvature = -0.97_wp
         !! Ri-function curvature in the shear source (JHL08).
      real(wp) :: c_n = 0.24_wp
         !! TKE decay-rate coefficient vs stratification N (JHL08).
      real(wp) :: c_s = 0.14_wp
         !! TKE decay-rate coefficient vs shear S (JHL08).
      real(wp) :: lambda = 0.82_wp
         !! Buoyancy mixing-length-scale coefficient (JHL08).
      real(wp) :: lz_rescale = 1.0_wp
         !! Boundary-distance length-scale rescale factor (JHL08).
      real(wp) :: kappa_0 = 1.0e-7_wp
         !! Background diffusivity, m^2/s; also the pre-step kappa (JHL08).
      real(wp) :: kappa_seed = 1.0_wp
         !! Iteration seed diffusivity, m^2/s (JHL08).
      real(wp) :: kappa_trunc = 1.0e-9_wp
         !! Diffusivity below this is truncated to 0, m^2/s (JHL08).
      real(wp) :: tke_bg = 0.0_wp
         !! Background TKE, m^2/s^2; Q is a denominator, floored (JHL08).
      real(wp) :: tol_err = 0.1_wp
         !! Picard convergence tolerance (JHL08).
      integer :: max_inner_it = 50
         !! Inner Picard iteration cap (JHL08).
      integer :: max_substep_it = 13
         !! Outer adaptive-substep iteration cap (JHL08).
      real(wp) :: src_max_chg = 10.0_wp
         !! Adaptive-dt source-change tolerance band (JHL08).
      real(wp) :: prandtl_turb = 1.0_wp
         !! Kv = prandtl_turb * Kd into the momentum solve (JHL08).
      real(wp) :: vel_underflow = 0.0_wp
         !! Velocity snap-to-zero magnitude, m/s, in the projection (JHL08).
      logical :: massless_merge = .false.
         !! D4: merge vanished (< H_VANISHED) layers onto the massive
         !! sub-grid before the column solve (vs the blunt gather floor).
         !! Default off (bit-identical); identity columns bypass the merge.
      logical :: at_vertex = .false.
         !! Solve the JHL08 columns at C-grid CORNERS (vorticity points)
         !! from the native face velocities, then average the corner Kd
         !! back to tracer points (MOM6 VERTEX_SHEAR — the OM5-class
         !! production setting).  Default off ⇒ bit-identical.  v1 scope
         !! is Kd only: Kv stays `prandtl_turb * kd_int` at cell centres
         !! (the corner->face viscosity seam is a follow-up PR).
      logical :: vertex_geometric_mean = .false.
         !! Geometric (vs arithmetic) mean in the corner->centre Kd
         !! average (MOM6 VERTEX_SHEAR_GEOMETRIC_MEAN).  Pair with
         !! `vertex_geomean_kdmin` — with a 0 floor the geometric mean
         !! hard-zeros Kd along every shear-zone edge.
      real(wp) :: vertex_geomean_kdmin = 0.0_wp
         !! Floor, m^2/s, applied to each corner Kd BEFORE the geometric
         !! mean (MOM6 VERTEX_SHEAR_GEOMETRIC_MEAN_KDMIN; inert unless
         !! `vertex_geometric_mean`).  OM5 configs use 1e-9.
   end type ocean_kappa_shear_config_t