$\newcommand{\kk}{\boldsymbol{k}} \newcommand{\eek}{\boldsymbol{e}_\boldsymbol{k}} \newcommand{\eeh}{\boldsymbol{e}_\boldsymbol{h}} \newcommand{\eez}{\boldsymbol{e}_\boldsymbol{z}} \newcommand{\cc}{\boldsymbol{c}} \newcommand{\uu}{\boldsymbol{u}} \newcommand{\vv}{\boldsymbol{v}} \newcommand{\bnabla}{\boldsymbol{\nabla}} \newcommand{\Dt}{\mbox{D}_t} \newcommand{\p}{\partial} \newcommand{\R}{\mathcal{R}} \newcommand{\eps}{\varepsilon} \newcommand{\mean}[1]{\langle #1 \rangle} \newcommand{\epsK}{\varepsilon_{\!\scriptscriptstyle K}} \newcommand{\epsA}{\varepsilon_{\!\scriptscriptstyle A}} \newcommand{\epsP}{\varepsilon_{\!\scriptscriptstyle P}} \newcommand{\epsm}{\varepsilon_{\!\scriptscriptstyle m}} \newcommand{\CKA}{C_{K\rightarrow A}} \newcommand{\D}{\mbox{D}}$
Simple kinematic decomposition of stratified flows:
$\omega_z$
$\nabla_h u$
shear modes
"Garrett-Munk spectra"
temporal spectra: energy for $f < \omega < N$, $\omega^{-2}$
vertical spectra:
Naive representation: cascade of (weakly interacting) IG waves?
2 parameters:
horizontal Froude number $F_h$
buoyancy Reynolds number $\R = Re {F_h}^2$
We don't want $\omega_z$
$\Rightarrow$ we can use 2d stratified turbulence.
We don't want shear modes
$\Rightarrow$ we disable them
As a first approx., we don't need rotation
$\Rightarrow f = 0$
Advantage: cheap so we can run several long simulations at high resolution and $Re$
Dissipation only at small scales
Hyper viscosity $\nu_8$
for simplicity: constant total energy injection rate $P$
force eigenmodes of the linearized equations
correlation time $\sim$ wave period $T_N(\kk)$
intermediate-scale (possibility of upscale and downscale cascades)
no well-defined $T_N(\kk)$
$\Rightarrow$ well-defined non-dimensional numbers
direction of propagation $$F = \frac{\omega_l}{N}$$
stratification / forcing
$$ \gamma = \frac{\omega_l}{\omega_f} \propto N$$
with ${\omega_{f}}^3 = P {k_f}^2$
Forcing Froude number $F_{hf} = F/\gamma$
stratification / forcing $$\gamma = \omega_f / \omega_l \propto N$$
Numerical resolution, viscous coefficient $\nu_8$ and Reynolds number $Re_8$
$(n_x,\ n_z) = (960,\ 240)$, $(1920,\ 480)$, $(3840,\ 960)$, $(7680,\ 480)$ and $(15360,\ 960)$
Direction of propagation of forced waves
Here $F = \omega_l / N = 0.71 \Rightarrow \theta = 45°$
Dissipation only at small scales $\Rightarrow$ energy transfers towards small scales
$\neq$ than for 2d turbulence!
$\neq$ than with shear modes!
Small vertical length scales for strong stratification
Warning: dissipation at large horizontal scale even for large $Re$
$\gamma = 0.5 \hspace{8cm} \gamma = 2 \hspace{8cm} \gamma = 12$
Strong stratification: viscously damped $\Rightarrow$ turbulence killed
Consistent: $\mathcal{I}_E = f(F_h)$ with weak $Re$ dependence
Inconsistent with the naive representation of a simple local weak wave cascade
Clean setup
Statistically steady state for all parameters
3 regimes
Not a simple wave cascade
Transfers towards "layered", very slow waves (nearly shear modes)
Vertical spectra: $k_z^{-2}$, no $k_z^{-3}$
But something like weak wave turbulence ($Ri > 1$, $k_z^{-2}$, spatio-temporal spectra [not shown])
Mechanisms (PSI?, effect layered waves?)
Different parameters: angle of forced waves, rotation, ...
3d simulations?
A thesis:
Some packages:
fluidimage, fluidlab, fluidsim, fluidfft, transonic, ...
(Ashwin Vishnu, Cyrille Bonamy, Miguel Calpe Linares, Pierre Augier)
Open-source collaborative framework / library for writting solvers
High quality code (tests run with continuous integration, proper documentation, issue tracker)
Very user-friendly
Developer friendly: mostly in Python, highly modular (object-oriented Python)
Extensible (for example fluidsim-ocean)
Specialized in pseudo-spectral (Fourier), but not only
Very efficient
FluidFFT: Python / C++ library for (parallel) Fourier transforms (2D and 3D)
Transonic and Pythran: "Make your Python code fly at transonic speeds!" (actually at good-C++ speed)