Submesoscale Eddy Parameterization
Omega includes a SubmesoEddies class (src/ocn/SubmesoEddies.{h,cpp}) that implements the
submesoscale mixed-layer instability closure used to produce an eddy-induced
normal transport velocity. It provides methods to compute buoyancy gradients, and eddy velocity.
The current implementation follows the Fox-Kemper et al. (2011) (FK11) closure,
as described in the
Submesoscale Eddy Parameterization design document.
Initialization
The SubmesoEddies class is implemented as a singleton. Before creating it,
HorzMesh and VertCoord
must be initialized. Create the instance with the static method
SubmesoEddies::init();
Retrieve the pointer at any time with:
SubmesoEddies* DefSubEddies = SubmesoEddies::getInstance();
Data and algorithms
Core public fields include:
GradBuoyEdgeInterfaceEddyVelocity
Key implementation details:
computeBuoyGradcomputes horizontal buoyancy gradients at edges and adds the tilted-coordinate correction usingBruntVaisalaFreqSq.computeEddyVelocityforms mixed layer averaged buoyancy and stratification terms, evaluates frontal-width limits (LfMin,DsMax), computes a streamfunction withshapeFunction(), and takes its vertical divergence to produce edge-normal eddy velocity.
Computation of buoyancy gradient
To compute buoyancy gradient GradBuoyEdgeInterface from specific volume
SpecVol, mean pseudo-thickness on edges MeanPseudoThickEdge, mid-layer
z coordinate GeomZMid, and squared Brunt-Vaisala frequency
BruntVaisalaFreqSq, use
SubEddies.computeBuoyGrad(SpecVol, MeanPseudoThickEdge, GeomZMid, BruntVaisalaFreqSq);
Computation of eddy velocity
To compute eddy velocity array EddyVelocity from mixed layer depth DenMixLayerDepth,
mixed layer index DenMixLayerIndex, squared Brunt-Vaisala
frequency field BruntVaisalaFreqSq and mean pseudo-thickness on edges
MeanPseudoThickEdge, use
SubEddies.computeEddyVelocity(DenMixLayerDepth, DenMixLayerIndex, BruntVaisalaFreqSq, MeanPseudoThickEdge);
Finalization
To clear the singleton instance, use the static method
SubmesoEddies::destroyInstance();