(omega-dev-vertmix) =
Vertical Mixing Coefficients
Omega includes a VertMix class that provides functions that compute VertDiff and VertVisc, the
vertical diffusivity and viscosity, where both are defined at the center of the cell and top of the layer.
Currently the values of VertDiff and VertVisc are calculated using the linear combination of three options: (1) a
constant background mixing value, (2) a convective instability mixing value, and (3) a Richardson
number dependent shear mixing value from the Pacanowski and Philander (1981) parameterization. These options are linearly additive. In the future, additional additive options will be implemented, such as the K Profile Parameterization (KPP; Large et al., 1994). For both the convective and shear mixing values BruntVaisalaFreqSq is needed, which
is calculated by the EOS class.
Initialization and Usage
The primary class VertMix is implemented using the Singleton pattern to ensure a single instance manages all vertical mixing calculations.
// Initialize VertMix
VertMix* VMix = VertMix::getInstance();
// Compute mixing coefficients
VMix->computeVertMix(NormalVelocity, TangentialVelocity, BruntVaisalaFreqSq);
Configuration
The initialization process reads parameters from the yaml configuration file with the following structure and default values:
VertMix:
Background:
Viscosity: 1e-4
Diffusivity: 1e-5
Convective:
Enable: true
Diffusivity: 1.0
TriggerBVF: 0.0
Shear:
Enable: true
NuZero: 0.005
Alpha: 5.0
Exponent: 2.0
Class Structure
Core Data Members
VertDiff: 2D array storing vertical diffusivity coefficients (m²/s)VertVisc: 2D array storing vertical viscosity coefficients (m²/s)
Mixing Parameters
Background Mixing:
BackDiff: Background vertical diffusivity (m²/s; Default: 1e-5)BackVisc: Background vertical viscosity (m²/s: Default: 1e-4)
Convective Mixing:
EnableConvMix: Flag to enable/disable convective mixing (Default: True)ConvDiff: Convective mixing coefficient (m²/s; Default: 1.0)ConvTriggerBVF: Trigger threshold for convective mixing (Default: 0.0)
Shear Mixing:
EnableShearMix: Flag to enable/disable shear mixing (Default: True)ShearNuZero: Base coefficient for Pacanowski-Philander scheme (Default: 0.005)ShearAlpha: Alpha parameter for P-P scheme (Default: 5.0)ShearExponent: Exponent parameter for P-P scheme (Default: 2.0)
Core Functionality (Vertical Mixing Coefficient Calculation)
The main computation is handled by:
void computeVertMix(const Array2DReal &NormalVelocity,
const Array2DReal &TangentialVelocity,
const Array2DReal &BruntVaisalaFreqSq);
This method combines the effects of:
Background mixing (constant coefficients)
Convective mixing (triggered by static instability)
Shear instability driven mixing (Pacanowski-Philander scheme; to be changed to Large et al., 1994 shear mixing scheme in a later development)