Skip to content

The Model

Dominykas edited this page Sep 16, 2026 · 2 revisions

Solver Architecture: Entropic D2Q49 Lattice Boltzmann Method

This solver is built on the Lattice Boltzmann Method (LBM) for solving the Navier–Stokes equations — a mesoscopic approach to fluid simulation, sitting between the two more familiar paradigms:

Scale Approach Example
Microscopic Directly simulate individual particles Molecular dynamics
Mesoscopic Evolve particle distribution functions on a lattice Lattice Boltzmann Method
Macroscopic Solve continuum PDEs directly Traditional Navier–Stokes solvers (FVM/FEM)

From D2Q9-BGK to D2Q49

The best-known LBM formulation is the D2Q9 model with a BGK collision operator — a 2D lattice with 9 discrete velocities. It's weakly compressible and reliable up to roughly Mach 0.3. In that model, the conserved moments (mass, momentum) are recovered by approximating the equilibrium populations via a truncated Hermite polynomial expansion of the Maxwell–Boltzmann distribution.

This solver instead uses an extended formulation:

  • D2Q49 lattice — a much larger velocity stencil than D2Q9, giving the model the extra degrees of freedom needed to represent higher-order moments accurately.
  • Directly enforced equilibrium moments — rather than approximating equilibria through Hermite expansion, the equilibrium populations are obtained by solving a constrained entropy-minimization problem, guaranteeing exact recovery of the target moments rather than a truncated approximation.
  • Entropic collision/stabilization — collision is guided by an H-theorem-consistent relaxation, which enforces a discrete analogue of the second law of thermodynamics and gives the scheme unconditional numerical stability even far from equilibrium. Together, the larger stencil and exact (entropy-derived) equilibria push the model's valid operating range well beyond D2Q9-BGK, into transonic and sonic flows.

GPU Implementation

The extended stencil and entropic collision step come at a real computational cost — but the LBM's core update (stream + collide) is embarrassingly parallel, since both steps are purely local to each lattice node. That locality maps extremely well onto GPU architectures, and this implementation leverages that to reach roughly 1 billion lattice updates per second (1000 MLUPS).


Related Work

Further Reading

Foundations of LBM / D2Q9-BGK

shockFLOW Wiki

Home


Getting Started

Simulation Setup

Exporting Results

Logging & Troubleshooting


Links

Clone this wiki locally