\[ \begin{align}\begin{aligned}\newcommand{\b}[1]{\boldsymbol{#1}} \newcommand{\r}[1]{\mathrm{#1}} \newcommand{\bz}{\b{z}} \newcommand{\bu}{\b{u}} \newcommand{\bcdot}{\b{\cdot}} \newcommand{\d}{\partial} \newcommand{\ee}{\r{e}}\\\newcommand{\p}{\, .} \newcommand{\c}{\, ,}\end{aligned}\end{align} \]

Examples of Boussinesq channel flow

Here we detail a few example problems we have implemented using dedaLES’s BoussinesqChannelFlow class. This class implenents the Boussinesq equations with optional rotation or background buoyancy gradient in a horizontally-periodic domain with rigid top and bottom boundaries.

Rayleigh-Benard Convection

This example resembles the standard 3D Rayleigh-Benard convection example included with dedalus. This example is implemented in rayleigh_benard_example.py.

In this problem, which reaches a statistically-steady state if run for long enough, a constant and unstable buoyancy differential maintained between the top and bottom boundary drives convection and turbulence. Two key parameters are the Prandtl number \(Pr\), and the Rayleigh number, \(Ra\). Together these determine the unstable top-to-bottom buoyancy gradient \(B_z = -Ra Pr\), which is applied to the system via the boundary conditions

\[b(z=-L_z) = 0 \qquad \text{and} \qquad b(z=0) = B_z L_z \c\]

where \(L_z\) is the domain height. The simulation is initialized with random noise of the form

\[b(x, y, z, t=0) = a \epsilon z (z + L_z) \c\]

where \(a \epsilon(x, y, z)\) is normally distributed random noise with amplitude \(a\).

We use the following parameters, all of which are non-dimensional:

Parameter Values
\(L_x, L_y\) \(25\)
\(L_z\) \(1\)
\(n_x, n_y\) \(64\)
\(n_z\) \(16\)
\(\kappa\) \(1.0\)
\(Pr = \nu/\kappa\) \(1.0\)
\(Ra_{\text{crit}}\) \(1707.762\)
\(Ra\) \(1.8 Ra_{\text{crit}}\)
\(a\) \(10^{-3}\)

Convection into a stratified fluid

This example is implemented in ocean_convection_example.py.

In this initial value problem, a constant flux of buoyancy out of the surface drives cooling and convection into a stratified fluid. The initial buoyancy profile is given by

\[b(t=0) = N^2_{\infty} (z+h_0) H_d(-z-h_0)\]

where \(h_0\) is the initial mixed layer depth, the buoyancy gradient below the mixed layer is \(\d_z b(z=-L_z) = N^2_{\infty}\), and \(H_d(\zeta)\) is a smoothed Heaviside function that goes from \(0\) to \(1\) across \(\zeta=0\) with transition width \(d\):

\[H_d(\zeta) = \tfrac{1}{2} \left ( 1 + \tanh \left [ \zeta / d \right ] \right ) \p\]

The lower boundary condition specifies a constant flux such that

\[\d_z b(z=-L_z) = N^2_{\infty} \p\]

The upper boundary condition specifies an asymptotically constant cooling rate. In terms of the buoyancy flux \(F = \kappa \d_z b\), the cooling rate in \(\r{W \, m^{-2}}\) is

\[Q = \frac{c_P \rho_0 F}{\alpha g}\]

The buoyancy gradient at the surface associated with a given \(Q\) is thus

\[\d_z b(z=0, t \to \infty) = b_{0z} = Q \frac{\alpha g}{c_P \rho_0 \kappa} \p\]

As in Taylor and Ferrari 2010, we decrease the surface buoyancy flux from \(0\) to its asymptotic value \(b_{0z}\) gradually, such that the boundary condition is

\[\d_z b(z=0, t) = b_{0z} \tanh(t/t_0) \c\]

where \(t_0\) is the time-scale over which the buoyancy flux decreases.

We use the following parameters for our examples:

Parameter Values Units
\(L_x, L_y\) \(200\) \(\r{m}\)
\(L_z\) \(100\) \(\r{m}\)
\(n_x, n_y\) \(64\) None
\(n_z\) \(32\) None
\(Q\) \(-0.1, -10, -1000\) \(\r{W \, m^{-2}}\)
\(t_0\) \(1\) \(\r{day}\)
\(N^2_{\infty}\) \(9.5 \times 10^{-3}\) \(\r{s^{-2}}\)
\(h_0\) \(50\) \(\r{m}\)
\(d\) \(10\) \(\r{m}\)
\(\alpha\) \(2.5 \times 10^{-4}\) \(\r{K^{-1}}\)
\(g\) \(9.81\) \(\r{m \, s^{-2}}\)
\(\rho_0\) \(1028\) \(\r{kg \, m^{-3}}\)
\(c_P\) \(3993\) \(\r{J \, kg^{-1} \, K^{-1}}\)
\(\kappa\) \(1.43 \times 10^{-7}\) \(\r{m^2 \, s^{-1}}\)