Journées des GDRs MFGA & NS 2.0
Clovis Lambert, Jason Reneuve, Pierre Augier, Nicolas Mordant
LEGI, Grenoble
2026-06-16
Stratified fluids: Ocean & Atmosphere
Turbulence in stratified fluids:
Experiments in Coriolis facility
Direct numerical simulations (DNS) pseudo-spectral
Turbulent anisotropic cascade in strongly stratified regime
Compute vectorial third-order structure function \(\mathbf{J}\)
\(\mathbf{J}\) characterizes the nonlinear turbulent energy flux: never done yet
Simulation cost \(\color{red}{\propto N_x^4} = N_x^3\) (3D) \(\times N_x\) (time step, CFL)
| Size | \(4096^3\) | \(12288^3\) | \(32768^3\) |
|---|---|---|---|
| Paris to New-York flights (CO\(_2\)) | \(0.5\) | \(60\) | \(3200\) |
How to avoid that:
Very expensive computation time for dealiasing
Aliasing: errors generated by Fourier transforms of nonlinearities
Truncation
\(\color{red}{C_t} = \color{red}{2/3}\), \(\kmax = \color{red}{C_t} k_N\), \(k_N = \frac{2\pi}{L} \frac{N_x}{2}\)
Remove \(100\%\) of aliasing errors
Same time schemes
Retain: \(30\%\) & \(15\%\) of \(\kvec\)
\(80\%\) simulation cost for unused \(\kvec\)
Phase-shifting
Still aliasing errors
Modified time schemes
\(\implies\) Simulation cost
Known but not well cited and non-reproducible
Historical studies:
(Patterson Jr & Orszag, 1971): Size \(= 32^3\), Exact scheme
(Rogallo, 1981): About HIT flows, Random scheme
(Canuto et al., 1988): Theoretical book
Hard to study & reproduce
No benchmark available
No open-source implementation: only propriatory codes
Open-source implementation: Fluidsim (Mohanan et al., 2019)
Easy to use, few command lines to launch a simulation:
Comprehensive study and benchmark:
Lambert, Reneuve & Augier (2026) — Aliasing and phase shifting in pseudo-spectral simulations of the incompressible Navier-Stokes equations — arXiv:2603.08892
Description of Phase-shifting methods
Speedup gain & Error:
Turbulent decaying Flows
Homogeneous Isotropic Turbulent (HIT) flows
| Type | \(N_x^3\) | \(Re\) | scheme | \(C_t\) | \(k_{\max}\) | Expected speedup |
|---|---|---|---|---|---|---|
| Fully dealiased | \(192^3\) | \(1600\) | RK4 | \(2/3\) | \(64\) | \(1.0\) |
| Aliased | \(128^3\) | \(1600\) | RK4 | \(1\) | \(64\) | \(\color{red}{5.0} = (192/128)^4 = (3/2)^4\) |
\[ V_x \text{, } t=9 \]
Fully dealiased: 2/3-truncation
\(N_x^3 = 192^3\)
Aliased
\(N_x^3 = 128^3\)
Definition of an error index
For these simulations:
Error \(= \color{red}{25 \%}\)
Speedup \(= \color{red}{5}\)
\(\color{red}{80\%}\) of time for unused \(\kvec\)
Objective with phase-shifting:
Faster simulations
Better simulations
Errors \(\leq 0.2 \%\)
The best compromise:
\(\color{red}{2\sqrt{2}/3} \approx 0.94 < C_t \leq 1\) + Random scheme
Errors \(\sim \color{red}{2.5\%}\)
Optimal choice: \(C_t = \color{red}{1}\)
Speedup \(= \color{red}{2.9}\)
\(1.5 \times\) faster than \(C_t = 2\sqrt{2}/3\)
Theoretical \(C_t = \color{red}{2\sqrt{2}/3}\) has no practical interest
\[ \langle \delta \mathbf{u}(\mathbf{r})^3\rangle = -\frac{4}{5} \epsilon_K r \text{ or } \langle \delta \mathbf{u}(\mathbf{r})^2 \delta u_L(\mathbf{r})\rangle = -\frac{4}{3} \epsilon_K r \tag{1}\]
\[ \mathbf{\nabla} \cdot \mathbf{J} = -4 \epsilon \tag{2}\]
With \(\mathbf{J}(\mathbf{r}) = \mathbf{J_K}(\mathbf{r}) + \mathbf{J_P}(\mathbf{r}) = \langle |\delta \mathbf{u}(\mathbf{r})^2| \delta \mathbf{u}(\mathbf{r}) \rangle + \langle (\delta b/N^2) \delta \mathbf{u}(\mathbf{r}) \rangle\) and \(\epsilon = \epsilon_K + \epsilon_P\)
\[ \mathbf{J}(r_h, r_v) = - \frac{4\epsilon}{\alpha + 2}(r_h\mathbf{e_h} + \alpha r_v\mathbf{e_v}) \tag{3}\]
\[ \langle \delta \mathbf{u}(\mathbf{r})^2 \delta u_L(\mathbf{r})\rangle = -\frac{4}{3} \epsilon r \]
Isotropic: \(R_\lambda = 315\)
Stratified: \(F_h = 0.03\), \(Re_b = 15.5\)
\[ -\frac{\mathbf{\nabla} \cdot \mathbf{J}}{4 \epsilon} = 1 \]
Isotropic: \(R_\lambda = 315\)
Stratified: \(F_h = 0.03\), \(Re_b = 15.5\)
\[ -\frac{\mathbf{J}(r_h, r_v)}{4\epsilon} = \frac{1}{\alpha + 2}(r_h\mathbf{e_h} + \alpha r_v\mathbf{e_v}) \]
Isotropic: \(R_\lambda = 315\)
Stratified: \(F_h = 0.03\), \(Re_b = 15.5\)
Lambert, Reneuve & Augier (2026) — Aliasing and phase shifting in pseudo-spectral simulations of the incompressible Navier-Stokes equations — arXiv:2603.08892
3 times faster for HIT simulations at \(\kmax \eta = 2\) and \(R_\lambda = 200\)
Easy to use and well documented open-source implementation on Fluidsim
Perspectives:
Verify: \(\mathbf{J}(r_h, r_v) = - \frac{4\epsilon}{\alpha + 2}(r_h\mathbf{e_h} + \alpha r_v\mathbf{e_v})\), \(\alpha\) meaning ?
Characterize \(\mathbf{J}\) for various parameters and forcing
In 3D, nonlinear wavenumbers \(k_{\mathrm{nl},i}\) become components of wavevector \(\kvec_{\mathrm{nl}}\) with three types of aliases:
Single alias arises when exactly one component satisfies \(|k_{\mathrm{nl},i}| > k_N\)
Double alias when two components do
Triple alias when all three do
Phase-shiftied “exact” schemes: removes \(100\%\) of Single aliases and Triple aliases but \(0\%\) of Double aliases
Double aliases remaining:
| \(N\) | scheme | \(C_t\) | nb of proc. | CPU.h speedup | \(\mathrm{Err}_{\mathrm{early}}\) | \(\mathrm{Err}_{\mathrm{late}}\) | \(\mathrm{Err}(\overline{E})\) |
|---|---|---|---|---|---|---|---|
| 960 | RK4 | 2/3 | 60 | 1.0 | 0.0 | 0.0 | 0.0 |
| 896 | RK2 PS rand split | 0.714 | 64 | 0.7 | 0.6 | 5.42 | 3.37 |
| 768 | RK2 PS rand split | 0.833 | 64 | 1.4 | 0.73 | 4.41 | 2.67 |
| 696 | RK2 PS rand split | 0.920 | 58 | 1.7 | 0.73 | 4.22 | 1.6 |
| 672 | RK2 PS rand split | 0.952 | 56 | 2.4 | 0.81 | 3.78 | 1.83 |
| 640 | RK2 PS rand split | 1 | 64 | 2.9 | 0.77 | 4.83 | 2.5 |