# Lattice Boltzmann Method - the kernel of Palabos

## Overview

The lattice Boltzmann method is a modern approach in Computational Fluid Dynamics. It is often used to solve the incompressible, time-dependent Navier-Stokes equations 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 sourroundings. 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. At the same time, it has proven to be an efficient and convenient alternative to traditional solvers for a large variety of industrial problems. **(Learn More From The Video Tutorial)**

## Origin of the method

Lattice Boltzmann is frequently simply considered as a numerical solver of the Boltzmann equation. The Boltzmann equation is the analogue of the Navier-Stokes equation at a molecular level, where it describes the space-time dynamics of a statistical quantity called *probability distribution function,* which is defined in 6-dimensional phase space. The number of physical phenomena covered by 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. **(Learn More About the Kinetic Theory of Gases)**

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). **(Learn More About Cellular Automata) **

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 with the following **example of a von Karman Vortex Street**. Here, a complex CFD problem is solved with just a simple 1-page Python script, which you can download and execute, to experiment with lattice Boltzmann yourself.

## Why lattice Boltzmann?

Everyone agrees that lattice Boltzmann is different from classical CFD, at the level of theory, code implementation, and the look and feel of applications. But why would you actually choose lattice Boltzmann over another approach? Opinions are a bit more divergent about this point. From our experience with the development of Palabos, though, we believe that the fundamental advantage of lattice Boltzmann is efficiency. The method was designed since the beginning to run on high performance hardware, and it accommodates for complex physics or sophisticated algorithms. Efficiency leads to a qualitatively new user experience when it allows to solve problems that could not be approached before, or only with insufficient accuracy. Typical achievements of a lattice Boltzmann code like Palabos are

- Data pre-processing and mesh generation in a time that accounts for a small fraction of the total simulation only.
- Parallel data analysis, post-processing and evaluation.
- Fully resolved multi-phase flow with small droplets and bubbles.
- Fully resolved flow through complex geometries and porous media.
- Complex, coupled flow with heat transfer and chemical reactions.

Lattice Boltzmann also offers advantages at the level of the modeling approach. The method is in some sense hybrid, because the solver is mesh based (as usual in CFD), but also inherits some aspects of a particle based method, due to its origins from Cellular Automata. It is therefore easy to couple it with embedded particle methods, for sediment transport or other phenomena. The picture on the right shows a system of many particles which interact with each other and with the flow.

## Lattice Boltzmann and high performance computing

Compared to classical CFD, lattice Boltzmann might at first sight seem quite resource consuming: the discrete probability distribution functions used in this model require more memory for their storage than the hydrodynamic variables of the Navier-Stokes equations (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, the lattice Boltzmann method is particularly well suited for computations on a parallel architecture, even with a slow interconnection network. Some benchmark results of Palabos on parallel computers with up to 16'000 processor cores can be found here. This advantage extends also to other types of high performance hardware like General Purpose Graphics Processing Units (GPGPUs), which are frequently targeted by lattice Boltzmann implementations.