1. Omega V1: Governing Equations

1.1. Overview

This design document describes the governing equations for Omega, the Ocean Model for E3SM Global Applications. Overall, Omega is an unstructured-mesh ocean model based on TRiSK numerical methods (Thuburn et al. 2009) that is specifically designed for modern exascale computing architectures. The algorithms in Omega will be mostly identical to those in MPAS-Ocean, but it will be written in c++ rather than Fortran in order to take advantage of libraries to run on GPUs, such as Kokkos (Trott et al. 2022). Significant differences between MPAS-Ocean and Omega are:

  1. Omega is non-Boussinesq. This means that the full 3D density is used everywhere, and results in a mass-conserving model. MPAS-Ocean and POP were Boussinesq, so that a reference density \(\rho_0\) is used in the pressure gradient term, and were therefore volume-conserving models. The independant vertical coordinate in Omega is pressure, and pressure-thickness (\(h=\Delta p\)) is the prognostic mass variable. In MPAS-Ocean the independant vertical variable is distance, \(z\), and simple thickness (\(h=\Delta z\)) is the prognostic volume variable (normalized by horizontal cell area).

  2. Omega will use the updated equation of state TEOS10, while MPAS-Ocean used the Jackett-McDougall equation of state.

The planned versions of Omega are:

  • Omega-0: Shallow water equations with identical vertical layers and inactive tracers. In his first version, there is no vertical transport or advection. The tracer equation is horizontal advection-diffusion, but tracers do not feed back to dynamics. Pressure gradient is simply gradient of sea surface height. Capability is similar to Ringler et al. 2010

  • Omega-1.0: Layered ocean, idealized, no surface fluxes. This adds active temperature, salinity, and density as a function of pressure in the vertical. Vertical advection and diffusion terms are added to the momentum and tracer equations. An equation of state and simple vertical mixing, such as constant coefficient, are needed. Capability and testing are similar to Petersen et al. 2015. Tests include overflow, internal gravity wave, baroclinic channel, seamount, and vertical merry-go-round.

  • Omega-1.1: Layered ocean, idealized, with surface fluxes. Addition of simple vertical mixing scheme such as Pacanowski & Philander; nonlinear equation of state (TEOS10); tracer surface restoring to a constant field; constant wind forcing; and flux-corrected transport for horizontal advection. Testing will be with the baroclinic gyre and single column tests of surface fluxes and vertical mixing.

  • Omega-2.0: Coupled within E3SM, ocean only. Ability to run C cases (active ocean only) within E3SM. Requires addition of E3SM coupling infrastructure; simple analysis (time-averaged output of mean, min, max); split baroclinic-barotropic time; global bounds checking on state. Testing and analysis similar to Ringler et al. 2013, except Omega uses a non-Boussinesq formulation.

  • Omega-2.1: E3SM fully coupled Ability to run G cases (active ocean and sea ice) and B cases (all components active) within E3SM. This will include: a full vertical mixing scheme, such as KPP; frazil ice formation in the ocean; and a submosescale parameterization. Parameterizations mean for lower resolutions, such as Gent-McWilliams and Redi mixing, will not be in this version. Simulations can be run at high resolution and compared to previous E3SM simulations, including Petersen et al. 2019 and Caldwell et al. 2019.

This document describes the governing equations for the layered ocean model, which are applicable for Omega-1.0 onwards. Specific terms, such as the pressure gradient, vertical mixing, and parameterizations, are left in their general form here but are described in more detail in other design documents.

1.2. Requirements

The requirements in the Omega-0 design document still apply. Additional design requirements for Omega-1 are:

1.2.1. Omega will be an incompressible, hydrostatic, non-Boussinesq ocean model.

See discussion in introduction. Non-Boussinesq changes the independant vertical variable to pressure, and mass conservation equation to be pressure-thickness, \(h=\Delta p\).

1.2.2. Omega will use TEOS10 for the equation of state.

See additional EOS design document.

1.2.3. Omega-1.0 will add new terms for the pressure gradient, vertical mixing, and vertical advection.

See individual design documents for each term.

1.3. Governing Equations

1.3.1. MPAS-Ocean Equations of Motion

The MPAS-Ocean layered formulation solves the following equations for momentum, thickness, and tracers at layer \(k\). These are continuous in the horizontal and discrete in the vertical.

(1)\[ \frac{\partial {\mathbf u}_k}{\partial t} + \frac{1}{2}\nabla \left| {\mathbf u}_k \right|^2 + ( {\mathbf k} \cdot \nabla \times {\mathbf u}_k) {\mathbf u}^\perp_k + f{\mathbf u}^{\perp}_k + w_k^{bot}{\mathbf u}_k^{bot} - w_k^{top}{\mathbf u}_k^{top} = - \frac{1}{\rho_0}\nabla p_k - \frac{\rho g}{\rho_0}\nabla z^{mid}_k + \nu_h\nabla^2{\mathbf u}_k + \frac{\partial }{\partial z} \left( \nu_v \frac{\partial {\mathbf u}_k}{\partial z} \right), \]
(2)\[ \frac{\partial h_k}{\partial t} + \nabla \cdot \left( h_k^e {\mathbf u}_k \right) + w_k^{bot} - w_k^{top} = 0, \]
(3)\[ \frac{\partial h_k\varphi_k}{\partial t} + \nabla \cdot \left( h_k^e\varphi_k^e {\mathbf u}_k \right) + \varphi_k^{bot} w_k^{bot} - \varphi_k^{top} w_k^{top} = \nabla\cdot\left(h_k^e \kappa_h \nabla\varphi_k \right) + h_k \frac{\partial }{\partial z} \left( \kappa_v \frac{\partial \varphi_k}{\partial z} \right). \]

The layer thickness \(h\), vertical velocity \(w\), pressure \(p\), and tracer \(\varphi\), are cell-centered quantities, while the horizontal velocity \({\mathbf u}\) and \(e\) superscript are variables interpolated to the cell edges.

1.3.2. Continuous Equations

The continuous form of the conservation equations are as follows Kundu et al. 2024, chapter 4, eqns 4.7 and 4.22. This is before any assumptions are made, so this is a compressible, non-hydrostatic, non-Boussinesq fluid. Here all variables are a function of \((x,y,z)\), \(\bf u\) denotes the horizontal velocity vector, \(w\) is the vertical velocity, \({\bf u} \otimes {\bf u} = {\bf u}{\bf u}^T\) is the tensor product, \(\nabla\) is the horizontal gradient, and other variables defined in the section below.

momentum:

(4)\[ \frac{D \rho {\bf u} }{D t} \equiv \frac{\partial \rho {\bf u}}{\partial t} + \nabla \cdot \left( \rho {\bf u} \otimes {\bf u} \right) + w\frac{\partial \rho {\bf u}}{\partial z} = - \nabla p - \rho f {\bf k} \times {\bf u} + \rho {\bf D}^u + \rho {\bf F}^u \]

mass:

(5)\[ \frac{D \rho}{D t} \equiv \frac{\partial \rho }{\partial t} + \nabla \cdot \left( \rho {\bf u} \right) + \frac{\partial}{\partial z} \left( \rho w \right) = 0 \]

tracer:

(6)\[ \frac{D \rho \varphi }{D t} \equiv \frac{\partial \rho \varphi}{\partial t} + \nabla \cdot \left( \rho \varphi {\bf u} \right) + \frac{\partial}{\partial z} \left( \rho \varphi w \right) = D^\varphi + S^\varphi \]

Here we have express the following terms as a general operators, with examples of specific forms provided below: the dissipation \({\bf D}^u\), momemtum forcing \({\bf F}^u\), tracer diffusion \(D^\varphi\), and tracer sources and sinks \(S^\varphi\). The momentum equation can be rewritten using the product rule on \(\rho {\bf u}\), mass conservation, and dividing by \(\rho\), as:

(7)\[ \frac{D {\bf u} }{D t} \equiv \frac{\partial {\bf u}}{\partial t} + \nabla \cdot \left( {\bf u} \otimes {\bf u} \right) + w\frac{\partial {\bf u}}{\partial z} = - \frac{1}{\rho} \nabla p - f {\bf k} \times {\bf u} + {\bf D}^u + {\bf F}^u \]

Note that the advective term may be replaced with the vector identity

(8)\[\begin{split} \nabla \cdot \left( {\bf u} \otimes {\bf u} \right) = \boldsymbol{u} \cdot \nabla \boldsymbol{u} &= (\nabla \times \boldsymbol{u}) \times \boldsymbol{u} + \nabla \frac{|\boldsymbol{u}|^2}{2} \\ &= \{\boldsymbol{k} \cdot (\nabla \times \boldsymbol{u})\} \boldsymbol{k} \times \boldsymbol{u} + \nabla \frac{|\boldsymbol{u}|^2}{2} \\ &= \zeta \boldsymbol{u}^{\perp} + \nabla K. \end{split}\]

where \(\zeta\) is relative vorticity and \(K\) is kinetic energy. This is used to produce the final formulation below.

For a primitive equation ocean model, we assume the fluid is incompressible and hydrostatic. For Omega we are not making the Boussinesq assumption, so all density terms are the full density. In particular, the density coefficient of the pressure gradient in (4) is not a constant, as it is in primitive equation models like POP and MPAS-Ocean.

Incompressible: Assume that the three-dimensional velocity field is nondivergent,

(9)\[ \nabla \cdot {\bf u} + \frac{\partial w}{\partial z} = 0. \]

Hydrostatic: Beginning with the vertical momentum equation,

(10)\[ \frac{D w }{D t} = - \frac{1}{\rho} \frac{\partial p}{\partial z} - g + {\bf D}^u + {\bf F}^u \]

assume that advection of vertical momentum \(Dw/Dt\), dissipation, and forcing are small, and that the first order balance is between pressure gradient and gravity,

(11)\[ \frac{\partial p}{\partial z} = - \rho g. \]

We then integrate from \(z\) to the surface \(z^s\) to obtain the hydrostatic pressure equation,

(12)\[ p(x,y,z) = p^{s}(x,y) + \int_{z}^{z^s} \rho g dz'. \]

The constitutive equation is the equation of state,

(13)\[ \rho = f_{eos}(p,T,S). \]

where are temperature and salinity (\(T\) and \(S\)) are examples of tracers \(\varphi\).

Momentum diffusion terms include

(14)\[ {\bf D}^u = {\bf D}^u_h + {\bf D}^u_v \]
(15)\[ {\bf D}^u_v=\frac{\partial }{\partial z} \left( \nu_v \frac{\partial {\bf u}}{\partial z} \right) \]
(16)\[ {\bf D}^u_h=\nu_h \nabla^2 \bf u = \nu_h(\nabla \delta + {\bf k}\times \nabla \eta) \]

and may also include a del-4 term, Rayleigh drag, and bottom drag. Momentum forcing is due to wind stress.

Tracer diffusion terms include

(17)\[ D^\varphi = D^\varphi_h + D^\varphi_v \]
(18)\[ D^\varphi_v = \rho \frac{\partial }{\partial z} \left( \kappa_v \frac{\partial \varphi}{\partial z} \right), \]
(19)\[ D^\varphi_h = \nabla\cdot\left(\rho \kappa_h \nabla\varphi \right). \]

and may also include a del-4 term. Sources and sinks include surface fluxes from the atmosphere and land, and bio-geo-chemical reactions.

1.3.3. Layered Equations

Omega-1 will be non-Boussinesq, which means that density is not assumed to be constant in any terms. This results in a mass conservation equation, rather than a volume conservation equation. The fully continuous equations were presented in the previous section. Here we derive the layered equations by discretizing in the vertical, while the horizontal remains continuous. We discretize by integrating in the vertical from the surface \(z=s_k^{bot}\) to \(z=s_k^{top}\) for the layer with index \(k\), as described in Ringler et al. 2013 Appendix A.2. Equivalently, we can vertically integrate from a lower pressure surface \(p=\sigma_k^{bot}\) to \(p=\sigma_k^{top}\) where \(p\) and \(z\) are related by the hydrostatic pressure equation (12).

For non-Boussinesq layered equations we begin by defining the pressure-thickness of layer \(k\) as

(20)\[\]

where \(\eta\) is the sea surface height and \(p^{surf}\) is the surface pressure. Note that the negative sign means that pressure increases with depth, so positive \(p\) points downward, so that the \(top\) and \(bot\) extents of the integration limits are flipped in depth-pressure-integral-conversion.

For any three-dimensional quantity \(\varphi(x,y,z,t)\), the pressure-thickness-averaged quantity in layer \(k\) is

(21)\[ \varphi_k(x,y,t) = \frac{\int_{s_k^{bot}}^{s_k^{top}} \rho g \varphi dz}{\int_{s_k^{bot}}^{s_k^{top}} \rho g dz} = \frac{\int_{\sigma_k^{top}}^{\sigma_k^{bot}} \varphi dp}{\int_{\sigma_k^{top}}^{\sigma_k^{bot}} dp} = \frac{\int_{\sigma_k^{top}}^{\sigma_k^{bot}} \varphi dp}{h_k} \]

Our derivation has not made any assumptions about density, and may be used for both Boussinesq and non-Boussinesq fluids. However, for a Boussinesq fluid it is convenient to define a simple thickness as

\[ h_k^{Bouss}(x,y,t) \equiv \int_{s_k^{bot}}^{s_k^{top}} dz. \]

The definition of the thickness-weighted average remains the same as in (21), but in a Boussinesq fluid the variations in density are assumed to be small, so that \(\rho(x,y,z,t)\sim\rho_0\) where \(\rho_0\) is a constant.

We can now derive the layered quations by multiplying the equations by \(\rho g\) and integrating in \(z\) from \(s_k^{bot}\) to \(s_k^{top}\),

momentum:

(22)\[ \frac{\partial }{\partial t} \int_{s_k^{bot}}^{s_k^{top}} \rho g{\bf u} dz + \int_{s_k^{bot}}^{s_k^{top}} \rho g \eta {\bf k} \times {\bf u} dz + \int_{s_k^{bot}}^{s_k^{top}} \rho g w\frac{\partial {\bf u}}{\partial z} dz = \int_{s_k^{bot}}^{s_k^{top}} \left[- \frac{1}{\rho}\nabla p - \nabla K + {\bf D}^u + {\bf F}^u \right] dz \]

mass:

(23)\[ \frac{\partial }{\partial t} \int_{s_k^{bot}}^{s_k^{top}} \rho g dz +\nabla \cdot \left( \int_{s_k^{bot}}^{s_k^{top}} \rho g {\bf u} dz \right) + \int_{s_k^{bot}}^{s_k^{top}}\frac{\partial}{\partial z} \left( \rho g w \right) dz = \int_{s_k^{bot}}^{s_k^{top}} S^m dz \]

tracer:

(24)\[ \frac{\partial }{\partial t} \int_{s_k^{bot}}^{s_k^{top}} \rho g \varphi dz + \nabla \cdot \left( \int_{s_k^{bot}}^{s_k^{top}} \rho g \varphi {\bf u} dz \right) + \int_{s_k^{bot}}^{s_k^{top}} \frac{\partial}{\partial z} \left( \rho g \varphi w \right) dz = \int_{s_k^{bot}}^{s_k^{top}} \left( D^\varphi + S^\varphi \right) dz \]

Equivalently, these equations may be written as integrating in pressure in the vertical from \(\sigma_k^{bot}\) to \(\sigma_k^{top}\):

momentum:

(25)\[ \frac{\partial }{\partial t} \int_{\sigma_k^{bot}}^{\sigma_k^{top}} {\bf u} dp + \int_{\sigma_k^{bot}}^{\sigma_k^{top}} \eta {\bf k} \times {\bf u} dp + \int_{\sigma_k^{bot}}^{\sigma_k^{top}} w\frac{\partial {\bf u}}{\partial z} dp = \int_{\sigma_k^{bot}}^{\sigma_k^{top}} \left[ - \frac{1}{\rho}\nabla p - \nabla K + {\bf D}^u + {\bf F}^u \right] dp \]

mass:

(26)\[ \frac{\partial }{\partial t} \int_{s_k^{bot}}^{s_k^{top}} dp +\nabla \cdot \left( \int_{s_k^{bot}}^{s_k^{top}} {\bf u} dp \right) + \int_{s_k^{bot}}^{s_k^{top}}\frac{\partial}{\partial z} \left( w \right) dp = \int_{s_k^{bot}}^{s_k^{top}} S^m dp \]

tracer:

(27)\[ \frac{\partial }{\partial t} \int_{s_k^{bot}}^{s_k^{top}} \varphi dp + \nabla \cdot \left( \int_{s_k^{bot}}^{s_k^{top}} \varphi {\bf u} dp \right) + \int_{s_k^{bot}}^{s_k^{top}} \frac{\partial}{\partial z} \left( \varphi w \right) dp = \int_{s_k^{bot}}^{s_k^{top}} \left( D^\varphi + S^\varphi \right) dp \]

Rewriting the conservation equations in with these layer-averaged variables results in the final layered equations,

(28)\[ \frac{\partial \mathbf{u}_k}{\partial t} + q_k\left(h\mathbf{u}_k^{\perp}\right) + \nabla K_k = - \frac{1}{\rho} \nabla_r p - \nabla_r \phi + {\bf D}_k^u + {\bf F}_k^u \]
(29)\[ \frac{\partial h_k}{\partial t} + \nabla_r \cdot \left(h_k \mathbf{u}_k\right) + \omega_{bot} - \omega_{top}= 0, \]
(30)\[ \frac{\partial h_k \varphi_k}{\partial t} + \nabla_r \cdot \left(h_k \mathbf{u}_k \varphi_k\right) + \varphi\omega_{bot} - \varphi\omega_{top} = D^\varphi_k + S^\varphi_k \]

1.3.4. Discrete Equations

The discretized versions of the governing equations are

(31)\[ \frac{\partial u_e}{\partial t} + \left[ \frac{{\mathbf k} \cdot \nabla \times u_e +f_v}{[h_i]_v}\right]_e\left([h_i]_e u_e^{\perp}\right) = -g\nabla(h_i-b_i) - \nabla K_i + \nu_2 \nabla^2 u_e - \nu_4 \nabla^4 u_e + \mathcal{D}_e + \mathcal{F}_e \]
(32)\[ \frac{\partial h_i}{\partial t} + \nabla \cdot \left([h_i]_e u_e\right) = 0, \]
(33)\[ \frac{\partial h_i \phi_i}{\partial t} + \nabla \cdot \left(u_e [h_i \phi_i]_e \right) = \kappa_2 h_i \nabla^2 \phi_i - \kappa_4 h_i \nabla^4 \phi_i, \]

where subscripts \(i\), \(e\), and \(v\) indicate cell, edge, and vertex locations (\(i\) was chosen for cell because \(c\) and \(e\) look similar). Here square brackets \([\cdot]_e\) and \([\cdot]_v\) are quantities that are interpolated to edge and vertex locations. The interpolation is typically centered, but may vary by method, particularly for advection schemes. For vector quantities, \(u_e\) denotes the normal component at the center of the edge, while \(u_e^\perp\) denotes the tangential component. In the discrete system, the normal component \(u_e\) points positively from the lower cell index to the higher cell index, while the tangential component \(u_e^\perp\) points positively \(90^o\) to the left of \(u_e\) (for unit vectors, \({\mathbf n}_e^\perp = {\mathbf k}\times {\mathbf n}_e\)).

The discretized momentum drag and forcing terms are

\[ \mathcal{D}_e = - Ra \, u_e - C_D \frac{u_e\left|u_e\right|}{[h_i]_e} \]

\[ \mathcal{F}_e = C_W \frac{(u_W - u_e)\left|u_W - u_e\right|}{[h_i]_e} \]

1.3.5. Variable Definitions

Table 1. Definition of variables

symbol

name

units

location

name in code

notes

\(C_D\)

bottom drag

1/m

constant

\(C_W\)

wind stress coefficient

1/m

constant

\(D\)

divergence

1/s

cell

Divergence

\(D=\nabla\cdot\mathbf u\)

\(\mathcal{D} \)

drag

m/s\(^2\)

edge

\(f\)

Coriolis parameter

1/s

vertex

FVertex

\({\bf F}^u \)

momentum forcing

m/s\(^2\)

edge

\({\bf D}^u_h\), \({\bf D}^u_v\)

momentum diffusion terms

edge

\(h\) horizonal, \(v\) vertical

\( D^\varphi_h\), \( D^\varphi_v\)

tracer diff. terms

cell

\(f\)

Coriolis parameter

vertex

\(f_{eos}\)

equation of state

-

\(F\)

thickness flux

edge

\(F=hu\)

\(g\)

grav. acceleration

constant

\(G\)

barotropic mom. forcing

edge

\(h\)

layer thickness

cell

\(H\)

total unperturbed depth

cell

\({\bf k}\)

vertical unit vector

\(K\)

kinetic energy

m\(^2\)/s\(^2\)

cell

KineticEnergyCell

\(K = \left| {\mathbf u} \right|^2 / 2\)

\(p\)

pressure

cell

\(p^s\)

surface pressure

cell

\(q\)

potential vorticity

1/m/s

vertex

\(q = \eta/h = \left(\omega+f\right)/h\)

\(Ra\)

Rayleigh drag coefficient

1/s

constant

\(S\)

salinity

cell

a tracer \(\varphi\)

\(\mathcal{S}\)

model state

-

\(t\)

time

s

none

\(T^u,T^h,T^\varphi\)

tendencies

-

\({\mathbf u}\)

velocity, vector form

m/s

edge

\(u_e\)

velocity, normal to edge

m/s

edge

NormalVelocity

\(u^\perp_e\)

velocity, tangential to edge

m/s

edge

TangentialVelocity

\({\mathbf u}_W\)

wind velocity

m/s

edge

\(\eta\)

absolute vorticity

1/s

vertex

\(\eta=\omega + f\)

\(\kappa_2\)

tracer diffusion

m\(^2\)/s

cell

\(\kappa_4\)

biharmonic tracer diffusion

m\(^4\)/s

cell

\(\nu_2\)

viscosity

m\(^2\)/s

edge

\(\nu_4\)

biharmonic viscosity

m\(^4\)/s

edge

\(\phi\)

tracer

varies

cell

units may be kg/m\(^3\) or similar

\(\omega\)

relative vorticity

1/s

vertex

RelativeVorticity

\(\omega={\mathbf k} \cdot \left( \nabla \times {\mathbf u}\right)\)

\(w\)

vertical transport

cell

determined by coord. type

\(z\)

vertical coordinate

-

positive upward

\(z^{mid}\)

layer mid-depth location

cell

\(\delta\)

horizontal divergence

cell

\(\delta=\nabla\cdot{\bf u}\)

\(\zeta\)

sea surface height

cell

\(\eta\)

absolute vorticity

vertex

\(\eta={\bf k} \cdot \nabla \times {\bf u}+f\)

\(\Theta\)

potential temperature

cell

a tracer \(\varphi\)

\(\nu_h\), \(\nu_v\)

viscosity

edge

\(\rho\)

density

cell

\(\rho_0\)

reference density

constant

\(\varphi\)

tracer

cell

e.g. \(\Theta\), \(S\)

1.4. Verification and Testing

Capability and testing are similar to Petersen et al. 2015. The following tests are in idealized domains and do not require surface fluxes or surface restoring. For the following tests to show results comparable to those published with other models, the full dynamic sequence of density, pressure, momentum, and advection must work correctly. The successful completion of the following tests is a validation of the primitive equation functions in Omega 1.0. All of the following tests may exercise a linear equation of state or the nonlinear TEOS10. The first four tests quantify the anomalous mixing caused by the numerical schemes. The first five are on cartesian planes with regular hexagon meshes.

1.4.1. Lock Exchange (Optional)

The Lock Exchange is the simplest possible test of a primitive equation model. There is an analytic formulation for the wave propogation speed. It is listed as optional because the Overflow tests the same dynamics. See Petersen et al. 2015 and the compass lock_exchange case.

1.4.2. Overflow

The Overflow test case adds bathymetry to the Lock Exchange. It is a particularly effective test of vertical mass and tracer advetion, and vertical mixing. It is useful to compare different vertical coordinates, like level (z- or p-level) versus terrain-following (sigma). See Petersen et al. 2015 and the compass overflow case.

1.4.3. Internal Gravity Wave

The internal gravity wave tests horizontal and vertical advection. See Petersen et al. 2015 and the internal_wave case in both compass and polaris.

1.4.4. Baroclinic Channel

This is the first test to add the Coriolis force and uses a three-dimensional domain. It is designed to result in an eddying simulation at sufficiently high resolution. This tests the combination of Coriolis and pressure gradient forces that produce geostrophic balance, as well as horizontal advection and dissipation for numerical stability. See Petersen et al. 2015 and the baroclinic_channel case in both compass and polaris.

1.4.5. Seamount with zero velocity.

This is a 3D domain with a seamount in the center, where temperature and salinity are stratified in the vertical and constant in the horizontal. The test is simply that an initial velocity field of zero remains zero. For z-level layers the velocity trivially remains zero because the horizontal pressure gradient is zero. For tilted layers, this is a test of the pressure gradient error and the velocity is never exactly zero. This is a common test for sigma-coordinate models like ROMS because the bottom layers are extremely tilted along the seamount, but it is a good test for any model with tilted layers. Omega will use slightly tilted layers in p-star mode (pressure layers oscillating with SSH) and severely tilted layers below ice shelves, just like MPAS-Ocean. See Ezer et al. 2002, Haidvogel et al. 1993, Shchepetkin and McWilliams 2003, and previous MPAS-Ocean confluence page.

1.4.6. Cosine Bell on the Sphere

This test uses a fixed horizontal velocity field to test horizontal tracer advection. It is repeated from Omega-0 and is important to conduct again as we convert Omega to a layered primitive-equation model. See cosine_bell case in both compass and polaris.

1.4.7. Merry-Go-Round

This is an exact test for horizontal and vertical tracer advection. A fixed velocity field is provided, and a tracer distribution is advected around a vertical plane. See the merry_go_round test in compass, and the results on the merry-go-round pull request and compass port pull request.

1.5. References

This section is for references without webpage links. These are mostly textbooks.

  • Cushman‐Roisin, B., & Beckers, J.M. (2011). Introduction to Geophysical Fluid Dynamics: Physical and Numerical Aspects. Academic Press.

  • Gill, A. E. (2016). Atmosphere—Ocean dynamics. Elsevier.

  • Kundu, P.K., Cohen, I.M., Dowling D.R. (2016) Fluid Mechanics 6th Edition, Academic Press.

  • Pedlosky, J. (1987). Geophysical Fluid Dynamics (Vol. 710). Springer.

  • Vallis, G. K. (2017). Atmospheric and oceanic fluid dynamics. Cambridge University Press.