Fluid dynamics is one of the hardest areas of computational physics to simulate correctly — and one of the most visually rewarding when you do. These simulations span the range from incompressible viscous flow at low Reynolds number through turbulent wake formation, heat convection instabilities, and wave propagation on shallow-water surfaces.
💧 Browse the Fluid Dynamics Collection →The Simulations
Why Lattice Boltzmann?
Traditional CFD solves the Navier-Stokes equations directly — a system of coupled non-linear PDEs that require implicit pressure solvers, iterative convergence, and careful treatment of boundary conditions. Lattice Boltzmann is a different paradigm: instead of tracking fluid velocity at grid points, it tracks the statistical distribution function of notional fluid particles moving on a regular lattice. The macroscopic Navier-Stokes equations emerge from this mesoscale model through a Chapman-Enskog expansion.
The advantage for browser simulation is that LBM is embarrassingly parallel — every lattice site updates independently — and maps directly to GPU compute shaders. The D2Q9 model (2D, 9 velocity directions) gives accurate incompressible flow at low Mach number with just 9 distribution functions per cell.
Reynolds number is everything in fluid dynamics. Re = ρUL/μ (density × velocity × length scale / dynamic viscosity). Below Re ≈ 5: fully laminar, attached flow. Re 40–200: steady vortex pair behind cylinder. Re 200–400: periodic vortex shedding (Kármán street). Re > 400: turbulent wake. You can explore this entire range in the Lattice Boltzmann simulation by adjusting the viscosity slider.