Convergence Tests
Convergence tests are implemented in /validation/convergence_tests
and range from zero-dimensional time-stepper tests to two-dimensional integration tests that involve non-trivial pressure fields, advection, and diffusion.
For all tests except point exponential decay, we use the $L_1$ norm,
\[L_1 \equiv \frac{\mathrm{mean} | \phi_\mathrm{sim} - \phi_\mathrm{exact} |}{\mathrm{mean} | \phi_\mathrm{exact} |}\]
and $L_\infty$ norm,
\[L_\infty \equiv \frac{\max | \phi_\mathrm{sim} - \phi_\mathrm{exact} |}{\max | \phi_\mathrm{exact} |}\]
to compare simulated fields, $\phi_\mathrm{sim}$, with exact, analytically-derived solutions $\phi_\mathrm{exact}$. The field $\phi$ may be a tracer field or a velocity field.
Point Exponential Decay
This test analyzes time-stepper convergence by simulating the zero-dimensional, or spatially-uniform equation
\[ \partial_t c = - c\]
with the initial condition $c = 1$, which has the analytical solution $c = \mathrm{e}^{-t}$.
We find the expected first-order convergence with decreasing time-step $\Delta t$ using our first-order accurate, "modified second-order" Adams-Bashforth time-stepping method:
This result validates the correctness of the Oceananigans
implementation of Adams-Bashforth time-stepping.
One-dimensional advection and diffusion of a Gaussian
This and the following tests focus on convergence with grid spacing, $\Delta x$.
In one dimension with constant diffusivity $\kappa$ and in the presence of a constant velocity $U$, a Gaussian evolves according to
\[ c = \frac{\mathrm{e}^{- (x - U t)^2 / 4 \kappa t}}{\sqrt{4 \pi \kappa t}} \, .\]
For this test we take the initial time as $t=t_0$. We simulate this problem with advection and diffusion, as well as with $U=0$ and thus diffusion only, as well as with $\kappa \approx 0$ and thus "advection only". The solutions are
which exhibit the expected second-order convergence with $\Delta x^2 \propto 1 / N_x^2$:
These results validate the correctness of time-stepping, constant diffusivity operators, and advection operators.
One-dimensional advection and diffusion of a cosine
In one dimension with constant diffusivity $\kappa$ and in the presence of a constant velocity $U$, a cosine evolves according to
\[ c = \mathrm{e}^{-\kappa t} \cos (x - U t) \, .\]
The solutions are
which exhibit the expected second-order convergence with $\Delta x^2 \propto 1 / N_x^2$:
These results validate the correctness of time-stepping, constant diffusivity operators, and advection operators.
Two-dimensional diffusion
With zero velocity field and constant diffusivity $\kappa$, the tracer field
\[c(x, y, t=0) = \cos(x) \cos(y) \, ,\]
decays according to
\[c(x, y, t) = \mathrm{e}^{-2 \kappa t} \cos(x) \cos(y) \, ,\]
with either periodic boundary conditions, or insulating boundary conditions in either $x$ or $y$.
The expected convergence with $\Delta x^2 \propto 1 / N_x^2$ is observed:
This validates the correctness of multi-dimensional diffusion operators.
Decaying, advected Taylor-Green vortex
The velocity field
\[\begin{aligned} u(x, y, t) &= U + \mathrm{e}^{-t} \cos(x - U t) \sin(y) \, , \\ v(x, y, t) &= - \mathrm{e}^{-t} \sin(x - U t) \cos(y) \, , \end{aligned}\]
is a solution to the Navier-Stokes equations with $\nu=1$.
The expected convergence with spatial resolution is observed:
This validates the correctness of the advection and diffusion of a velocity field.
Forced two-dimensional flows
We introduce two convergence tests associated with forced flows in domains that are bounded in $y$, and periodic in $x$ with no tracers.
Note: in this section, subscripts are used to denote derivatives to make reading and typing equations easier.
In a two-dimensional flow in $(x, y)$, the velocity field $(u, v)$ can be expressed in terms of a streamfunction $\psi(x, y, t)$ such that
\[u \equiv - \psi_y \, , \quad \text{and} \quad v \equiv \psi_x \, ,\]
where subscript denote derivatives such that $\psi_y \equiv \partial_y \psi$, for example. With an isotropic Laplacian viscosity $\nu = 1$, the momentum and continuity equations are
\[\begin{aligned} \bm{u}_t + \left ( \bm{u} \cdot \nabla \right ) \bm{u} + \nabla p &= \nabla^2 \bm{u} + \bm{F}_u \, , \\ \nabla \cdot \bm{u} &= 0 \, , \end{aligned}\]
while the equation for vorticity, $\omega = v_x - u_y = \nabla^2 \psi$, is
\[\omega_t + \mathrm{J} \left ( \psi, \omega \right ) = \nabla^2 \omega + F_\omega \, .\]
Finally, taking the divergence of the momentum equation, we find a Poisson equation for pressure,
\[\nabla^2 p = - u_x^2 - v_y^2 - 2 u_y v_x + \partial_x F_u + \partial_y F_v \, .\]
To pose the problem, we first pick a streamfunction $\psi$. This choice then yields the vorticity forcing $F_\omega$ that satisfies the vorticity equation. We then determine $F_u$ by solving $\partial_y F_u = - F_\omega$, and pick $F_v$ so that we can solve the Poisson equation for pressure.
We restrict ourselves to a class of problems in which
\[\psi(x, y, t) = - f(x, t) g(y) \, , \quad \text{with} \quad f \equiv \cos \left [ x - \xi(t) \right ] \, , \qquad \xi(t) \equiv 1 + \sin(t^2) \, .\]
Grinding through the algebra, this particular form implies that $F_\omega$ is given by
\[F_\omega = -\xi' f_x \left ( g - g'' \right ) + f f_x \left ( g g''' - g' g'' \right ) + f \left ( g - 2 g'' + g'''' \right ) \, ,\]
where primes denote derivatives of functions of a single argument. Setting $\partial_y F_u = F_\omega$, we find that if $F_v$ satisfies
\[\partial_y F_v = \left ( g' \right )^2 + g g'' \, ,\]
then the pressure Poisson equation becomes
\[\nabla^2 p = \cos \left [ 2 \left ( x - \xi \right ) \right ] \left [ \left ( g' \right )^2 - g g'' \right ] + \partial_x F_u \, .\]
This completes the specification of the problem.
We set up the problem by imposing the time-dependent forcing functions $F_u$ and $F_v$ on $u$ and $v$, initializing the flow at $t=0$, and integrating the problem forwards in time using Oceananigans. We find the expected convergence of the numerical solution to the analytical solution: the error between the numerical and analytical solutions decreasess with $1/N_x^2 \sim \Delta x^2$, where $N_x$ is the number of grid points and $\Delta x$ is the spatial resolution:
The convergence tests are performed using both $y$ and $z$ as the bounded direction.
Forced, free-slip flow
A forced flow satsifying free-slip conditions at $y=0$ and $y=\pi$ has the streamfunction
\[\psi(x, y, t) = - \cos \left [ x - \xi(t) \right ] \sin(y)\]
and thus $g(y) = \sin y$. The velocity field $(u, v)$ is
\[u = \cos(x-\xi) \cos y \, , \quad \text{and} \quad v = \sin(x-\xi) \sin y \, ,\]
which satisfies the boundary conditions $u_y |_{y=0} = u_y |_{y=\pi} = 0$ and $v |_{y=0} = v |_{y=\pi} = 0$. The vorticity forcing is
\[F_\omega = - 2 \xi' f_x \sin y + 4 f \sin y \, ,\]
which implies that
\[F_u = - 2 \xi' f_x \cos y + 4 f \cos y \, ,\]
and $F_v = \frac{1}{2} \sin 2 y$.
Forced, fixed-slip flow
A forced flow satisfying "fixed-slip" boundary conditions at $y=0$ and $y=1$ has the streamfunction
\[\psi(x, y, t) = - \cos \left [ x - \xi(t) \right ] \left ( y^3 - y^2 \right ) \, ,\]
and thus $g(y) = y^3 - y^2$. The velocity field $(u, v)$ is
\[u = f \left ( 3 y^2 - 2 y \right ) \, , \quad \text{and} \quad v = - f_x \left ( y^3 - y^2 \right ) \, ,\]
which satisfies the boundary conditions
\[u |_{y=0} = 0 \, , \quad u |_{y=1} = f \, , \quad \text{and} \quad v |_{y=0} = v |_{y=1} = 0 \, .\]
The vorticity forcing is
\[F_\omega = - \xi' f_x \left ( y^3 - y^2 - 6y + 2 \right ) - f f_x \left ( 12 y^3 - 12 y^2 + 4 y \right ) + f \left ( y^3 - y^2 - 12 y + 4 \right ) \, ,\]
which implies that
\[F_u = \xi' f_x \left ( \tfrac{1}{4} y^4 - \tfrac{1}{3} y^3 - 3 y^2 + 2y \right ) + f f_x \left ( 3 y^4 - 4 y^3 + 2y^2 \right ) - f \left ( \tfrac{1}{4} y^4 - \tfrac{1}{3} y^3 - 6 y^2 + 4 y \right ) \, ,\]
while
\[F_v = 3 y^5 - 5 y^4 + 2y^3 \, .\]
We set up the problem in the same manner as the forced, free-slip problem above. Note that we also must the no-slip boundary condition $u |_{y=0} = 0$ and the time-dependent fixed-slip condition $u |_{y=1} = f$. As for the free-slip problem, we find that the error between the numerical and analytical solutions decreasess with $1/N_x^2 \sim \Delta x^2$, where $N_x$ is the number of grid points and $\Delta x$ is the spatial resolution:
The convergence tests are performed using both $y$ and $z$ as the bounded direction.