Lattice Boltzmann Method - the kernel of Palabos
Overview
The lattice Boltzmann method is a numerical technique for the simulation of fluid flows. It can be used for example to solve the incompressible, time-dependent Navier-Stokes equation numerically. Its strength lies 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 method finds its 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, it is 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 Wiki wiki.palabos.org
Origin of the method
The method is often regarded as a particular discrete representation 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 Palabos example page, where a complicated problem of computational fluid dynamics is solved with the help of a simple one-page Matlab script.
Lattice Boltzmann and high performance computing
Compared to other CFD approaches, lattice Boltzmann might at first sight seem quite resource consuming: 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 (nine real valued quantities per node against three for 2D incompressible solvers).
This is however never a real issue, especially on modern computers, and it is greatly compensated by an outstanding computational efficiency. Thanks to its explicit formulation and exact advection operator, the lattice Boltzmann scheme involves only a very limited amount of floating points operations per computaional node. Furthermore, thanks to the locality of its algoritm, the lattice Boltzmann method is particularly well suited for computations on various parallel architectures, even on those with slow interconnection networks. Some benchmark results of Palabos on parallel computers with up to 16'000 processor cores can be found here.
The conformal nature of its computational mesh allows for straightforward and quasi-instantaneous grid generation. Furthermore, the relative simplicty of the algorithm allows for an easy deployment on exotic hardware.