| Synthetic Isotropic Turbulence Generator
Saad et al. 2017  ·  doi:10.2514/1.J055230  ·  University of Utah
Peak wavenumber
Col 1: wavenumber (1/m) · Col 2: energy (m³/s²)

≈ 0.565 m for CBC

Spectrum description

Results

Configure parameters and click Generate.

About this generator

Usage

  • Spectrum: Select the input energy spectrum. The CBC spectrum uses tabulated experimental data and requires no parameters. The analytic spectra (von Kármán–Pao, KCM, Passot–Pouquet) require physical parameters shown when selected.
  • Grid points N: Number of grid points in each direction. The domain is always a cube (N³). Computation time scales as O(N³ × modes).
  • Domain length L: Physical size of the domain in meters. For CBC, we recommend L = 9×2π/100 ≈ 0.565 m. This value also works well for von Kármán–Pao.
  • Modes: Number of Fourier waveforms. More modes improve spectral accuracy. Errors are typically within 5–10% for up to 100,000 modes on a 256³ grid.
  • Random seed: Seed = 0 reproduces the same field every run (deterministic). Any other value generates a new realization.
  • Scalar field tab: Generates a divergence-free scalar (e.g. temperature, concentration) using the same Fourier synthesis approach, without the mass-conservation constraint.
  • Upload spectrum: Provide your own tabulated E(k) data (space-delimited, k in col 1, E(k) in col 2). Values are linearly interpolated.

Output data format

The velocity field is staggered in the minus direction and satisfies the discrete divergence-free condition to second-order spatial accuracy. The ASCII layout is:

FLAT
nx ny nz
value_0
value_1
...

Index ordering is i + j×nx + k×nx×ny (x-fastest). Binary files are IEEE 754 float64. Load in Python:

import numpy as np
u = np.fromfile('u_n32_m200.bin', dtype=np.float64).reshape([32, 32, 32])

Supported spectra

  • CBC (Comte-Bellot & Corrsin): Tabulated data from grid turbulence experiments. No free parameters. The recommended domain size is L ≈ 0.565 m.
  • von Kármán–Pao: Analytic spectrum with a von Kármán energy-containing range and exponential Pao dissipation. Requires ke, u_rms, and ν.
  • Kang, Chester & Meneveau (KCM): Empirical model fit to experimental data at four downstream stations. Accurately captures both the energy-containing and inertial subranges.
  • Passot–Pouquet: Analytic spectrum commonly used in compressible turbulence studies. Requires u_avg and ke.
  • User data: Upload your own measured or computed spectrum.

Notes & limitations

This generator runs entirely in your browser. For N > 64 or modes > 5 000, computation may take several minutes. For high-resolution cases, download the Python source code from the GitHub repository and run locally, or contact tony.saad [at] utah.edu about using University of Utah supercomputer resources.
  • Turbulence is generated in a cube only (lx = ly = lz)
  • Equal grid points in all three directions
  • The spectrum chart shows an approximation; a fully computed spectrum requires running the Python code with postprocessing enabled

Citation

Saad, T., Cline, D., Stoll, R., and Sutherland, J. C.
"Scalable Tools for Generating Synthetic Isotropic
Turbulence with Arbitrary Spectra."
AIAA Journal 55(1), 2017. doi:10.2514/1.J055230

GPU acceleration: Richards, A., Saad, T., and Sutherland, J. C. "A Fast Turbulence Generator using Graphics Processing Units." AIAA 2018-3559.