3-D Taylor-Green Vortex

The Taylor-Green vortex (TGV) is a canonical benchmark used to assess a solver’s ability to reproduce unsteady, spatially periodic flows with known reference data. The initial conditions take the form of smooth trigonometric functions, making the TGV an ideal test for equation-based initialization: the solver must evaluate \(\sin\) and \(\cos\) expressions at every lattice node at startup and reproduce them to floating-point precision before the time-marching begins.

Two complementary sub-cases are used here. Case 00a is a 2-D TGV, which admits a closed-form analytical solution valid for all time and therefore provides a stringent quantitative accuracy and convergence test. Case 00b is a 3-D TGV, for which no analytical solution exists once the flow has transitioned to turbulence; the dissipation rate is compared against the pseudo-spectral DNS of van Rees et al.[1].

The 3-D TGV starts from a smooth, low-amplitude initial condition that is linearly unstable. At moderate Reynolds numbers the flow develops a cascade of smaller vortical structures and eventually reaches a regime of decaying turbulence. Because an exact solution does not exist for \(t > 0\), validation is performed by comparing the kinetic energy dissipation rate \(\varepsilon(t) = -\mathrm{d}E/\mathrm{d}t\) against the spectral DNS results of van Rees et al.[1].

Initial conditions

The velocity and pressure fields at \(t = 0\) are the standard TGV initial condition on the periodic cube \([0,\, 2\pi]^3\):

(1)\[\begin{split}\begin{aligned} u_x(x, y, z, 0) &= V_0 \sin(k x) \cos(k y) \cos(k z) \\ u_y(x, y, z, 0) &= -V_0 \cos(k x) \sin(k y) \cos(k z) \\ u_z(x, y, z, 0) &= 0 \\ \rho(x, y, z, 0) &= \rho_0 + \frac{\rho_0 V_0^2}{16 c_s^2} \left[\cos(2kz) + 2\right] \left[\cos(2kx) + \cos(2ky)\right] \end{aligned}\end{split}\]

where \(k = 2\pi / L\) and \(V_0\) is the peak velocity. The density expression in (1) is the weakly-compressible approximation of the incompressible pressure distribution. In the current simulation \(\rho_0 = 1\) is used uniformly (i.e. the density correction is omitted) because at \(\mathrm{Ma} \approx 0.07\) the maximum perturbation is of order \(10^{-3}\) and does not affect the velocity dynamics.

As with Case 00a, these fields are set via models.initialization.equations, evaluating the trigonometric expressions on the GPU at startup.

Validation approach

The volume-averaged kinetic energy is:

(2)\[E(t) = \frac{1}{N^3} \sum_{i,j,k} \frac{1}{2} \rho(i,j,k,t) \left(u_x^2 + u_y^2 + u_z^2\right)\]

The dissipation rate is estimated by finite difference:

(3)\[\varepsilon(t) = -\frac{\mathrm{d}E}{\mathrm{d}t} \approx -\frac{E(t + \Delta T) - E(t - \Delta T)}{2\,\Delta T}\]

where \(\Delta T\) is the interval between saved snapshots.

The DNS reference of van Rees et al.[1] was computed with a pseudospectral code at \(Re_\Gamma = 1/\nu = 1600\) on grids up to \(768^3\). The reference dissipation curve is digitised from Figure 8a and 8b of the paper (768^3^ PS results, the most converged resolution). The Reynolds number is defined with characteristic length \(L^* = 1/k_0 = 1\) (the inverse wavenumber), so in lattice units \(Re = V_0 N / (2\pi\nu)\). The peak dissipation time and magnitude are well established and serve as the primary quantitative targets.

Simulation parameters

Parameter

Value

Velocity set

D3Q27

Collision operator

RRBGK

Relaxation time \(\tau\)

0.503056

Peak velocity \(V_0\)

0.04 (lattice units)

Reference density \(\rho_0\)

1.0

Domain

\([0,\, 2\pi]^3\), periodic in all three directions

Grid size \(N\)

256 nodes per side

Boundary conditions

Fully periodic (periodic_dims: [true, true, true])

Initialization

Equation-based (use_equation_init: true)

Reference DNS

van Rees et al.[1], \(Re_\Gamma = 1600\)

Note

The Reynolds number follows the van Rees convention \(Re_\Gamma = 1/\nu\) with characteristic length \(L^* = 1\) (inverse wavenumber) and \(V_0 = 1\). In lattice units this becomes \(Re = V_0 N / (2\pi\nu)\), giving \(\nu \approx 0.001019\) and \(\tau = 3\nu + 0.5 \approx 0.503056\).