ocean_ddiff_config_t Derived Type

type, private :: ocean_ddiff_config_t

Double diffusion (&ocean_ddiff_nml, CVMix_ddiff-style): salt fingering (Large et al. 1994) + diffusive convection (Marmorino-Caldwell 1976 / Kelley 1990). Folded INTO the heat/salt split (not a kv/kt contributor) to give an asymmetric ks-vs-kt divergence. Defaults are the CVMix defaults; enable = .false. keeps the path bit-identical. Knob table: docs/generated_nml_knobs.md.


Inherited by

type~~ocean_ddiff_config_t~~InheritedByGraph type~ocean_ddiff_config_t ocean_ddiff_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_ddiff_config_t ddiff 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
real(kind=wp), public :: ddiff_exp1 = 1.0_wp

Inner (bracket) fingering exponent (CVMix DDIFF_EXP1).

real(kind=wp), public :: ddiff_exp2 = 3.0_wp

Outer fingering exponent (CVMix DDIFF_EXP2); exp1=1,exp2=3 is the Large et al. cubic.

logical, public :: enable = .false.

Master switch (MOM6 USE_CVMIX_DDIFF). Requires thermo%enable_thermodynamics (validated at configure).

real(kind=wp), public :: kappa_ddiff_s = 1.0e-4_wp

Leading salt-fingering salinity diffusivity K_f (CVMix KAPPA_DDIFF_S), m^2/s. K_T = 0.7*K_S.

real(kind=wp), public :: mol_diff = 1.5e-6_wp

Molecular diffusivity scaling the convection branch (CVMix MOL_DIFF), m^2/s – the molecular value, not a background eddy.

real(kind=wp), public :: param1 = 0.909_wp

MC76 convection exterior coeff (CVMix KAPPA_DDIFF_PARAM1).

real(kind=wp), public :: param2 = 4.6_wp

MC76 convection middle coeff (CVMix KAPPA_DDIFF_PARAM2).

real(kind=wp), public :: param3 = -0.54_wp

MC76 convection interior coeff (CVMix KAPPA_DDIFF_PARAM3).

real(kind=wp), public :: strat_param_max = 2.55_wp

R_rho salt-fingering cutoff (CVMix STRAT_PARAM_MAX), nondim.

logical, public :: use_k90 = .false.

Convection form: .false. = Marmorino-Caldwell 1976 (default), .true. = Kelley 1990.


Source Code

   type :: ocean_ddiff_config_t
      !! Double diffusion (`&ocean_ddiff_nml`, CVMix_ddiff-style): salt
      !! fingering (Large et al. 1994) + diffusive convection
      !! (Marmorino-Caldwell 1976 / Kelley 1990).  Folded INTO the
      !! heat/salt split (not a kv/kt contributor) to give an asymmetric
      !! ks-vs-kt divergence.  Defaults are the CVMix defaults; `enable =
      !! .false.` keeps the path bit-identical.  Knob table:
      !! `docs/generated_nml_knobs.md`.
      logical :: enable = .false.
         !! Master switch (MOM6 `USE_CVMIX_DDIFF`).  Requires
         !! `thermo%enable_thermodynamics` (validated at configure).
      real(wp) :: strat_param_max = 2.55_wp
         !! R_rho salt-fingering cutoff (CVMix `STRAT_PARAM_MAX`), nondim.
      real(wp) :: kappa_ddiff_s = 1.0e-4_wp
         !! Leading salt-fingering salinity diffusivity K_f (CVMix
         !! `KAPPA_DDIFF_S`), m^2/s.  K_T = 0.7*K_S.
      real(wp) :: ddiff_exp1 = 1.0_wp
         !! Inner (bracket) fingering exponent (CVMix `DDIFF_EXP1`).
      real(wp) :: ddiff_exp2 = 3.0_wp
         !! Outer fingering exponent (CVMix `DDIFF_EXP2`); exp1=1,exp2=3
         !! is the Large et al. cubic.
      real(wp) :: param1 = 0.909_wp
         !! MC76 convection exterior coeff (CVMix `KAPPA_DDIFF_PARAM1`).
      real(wp) :: param2 = 4.6_wp
         !! MC76 convection middle coeff (CVMix `KAPPA_DDIFF_PARAM2`).
      real(wp) :: param3 = -0.54_wp
         !! MC76 convection interior coeff (CVMix `KAPPA_DDIFF_PARAM3`).
      real(wp) :: mol_diff = 1.5e-6_wp
         !! Molecular diffusivity scaling the convection branch (CVMix
         !! `MOL_DIFF`), m^2/s -- the molecular value, not a background eddy.
      logical :: use_k90 = .false.
         !! Convection form: `.false.` = Marmorino-Caldwell 1976 (default),
         !! `.true.` = Kelley 1990.
   end type ocean_ddiff_config_t