**What are Lattice Boltzmann Methods (LBM)?**

Lattice Boltzmann methods are numerical techniques for the simulation of fluid flows. They can be used for example to solve the incompressible, time-dependent **Navier-Stokes** equation numerically. Their strength lie however in the ability to easily represent **complex physical phenomena**, ranging from multiphase flows to chemical interactions between the fluid and the borders. Indeed, the methods find their origin in a molecular description of a fluid and can directly incorporate physical terms stemming from a knowledge of the interaction between molecules. For this reason, they are an invaluable tool in fundamental research, as it keeps the cycle between the elaboration of a theory and the formulation of a corresponding numerical model short. A collection of resources on the lattice Boltzmann method can be found on the website of LBmethod.

**Where does LBM come from?**

The methods are often regarded as particular discrete representations of the Boltzmann equation. The **Boltzmann equation** is the analogue of the Navier-Stokes equation at a molecular level, where it describes the evolution of the **probability distribution function** for a molecule to be present at a given point in the space of positions and velocities, the 6-dimensional phase space. The amount of physical phenomena contained in the model at this molecular level of description is larger than at the hydrodynamic level of the Navier-Stokes equation. This is because the Boltzmann equation is not subject to a separation of time scales and has the ability to describe fluids in non-hydrodynamic regimes with large molecular mean free paths. Furthermore, the molecular model is able to capture transport phenomena such as friction, diffusion and temperature transport and derive the corresponding transport coefficients.

Historically, lattice Boltzmann models evolved however from so-called cellular automata models, independently from the theory displayed above. A **cellular automaton** is a computer model for the evolution of discrete states described by integer values (as opposed to the floating-point representation of lattice Boltzmann variables). In our case, such a state represents the position and velocity of interacting pseudo-molecular, “mesoscopic” particles of a fluid. In order to better understand the continuum physics of such a model, a Boltzmann equation for the cellular automaton can be written down. This equation acts on real-valued quantities, but it describes some dynamics in a discrete phase space, which in the following we call **lattice**. Lattice Boltzmann models were born when it was first tried to short-circuit the cellular automata procedure and directly simulate the dynamics of the corresponding discrete Boltzmann equation. Although it was later understood that the lattice Boltzmann equation can be derived directly from the continuous Boltzmann equation, it is interesting to keep in mind its real origin. Indeed, this sheds some light on the reasons for its particularly elegant formulation that enables a straightforward implementation of corresponding computer programs. This point is illustrated on the LBMethod example page, where a complicated problem of computational fluid dynamics is solved with the help of a simple one-page Matlab script.

**What about LBM and High Performance Computing (HPC)?**

When it comes to the imlementation of fluid flow simulations, lattice Boltzmann models appear to be often fairly resource consuming compared to other numerical techniques. Indeed, the discrete probability distribution functions described by the model require more memory for their storage than the hydrodynamic variables used by a classical solver of the Navier-Stokes equation. A two-dimensional incompressible fluid for example is described by three real-valued scalar fields (one for the pressure, two for the velocity). The most commonly used 2D lattice Boltzmann model on the other hand uses nine scalar field and requires therefore three times as much memory.

This severe drawback from a computational point of view is only poorly compensated by the richer physical content of the model. An important advantage of lattice Boltzmann models on the other hand is given by the straightforward formulation of their algorithms that adapt naturally to various software and hardware architectures. The regular computational grid used in this method is for example rapidly generated and the fastidious preprocessing step needed for the generation of irregular triangular meshed is kept short. It is also noted that lattice Boltzmann models allow for an efficient parallelization of the simulations, even on parallel machines with relatively slow interconnection networks. This is due both to the regular lattice and to the purely local dynamics that involve only an interaction of each lattice node with its nearest neighbor nodes at each iteration step.