The Azimuth Project
Lattice Boltzmann method (Rev #19)



The Wikipedia entry on Lattice Boltzmann method (LBM) says:

Lattice Boltzmann methods (LBM) (Thermal Lattice Boltzmann methods (TLBM)) is a class of computational fluid dynamics (CFD) methods for fluid simulation. Instead of solving the Navier-Stokes equations the discrete Boltzmann equation is solved to simulate the flow of a Newtonian fluid with collision models such as Bhatnagar-Gross-Krook (BGK). By simulating streaming and collision processes across a limited number of particles, the intrinsic particle interactions evince a microcosm of viscous flow behavior applicable across the greater mass.

This Azimuth page will mainly treat the former LBM and focus on computational methods, available software for now. If you want to see more of where it originates and also mathematical derivation, see the Wikipedia article in the References section.


The LBM categorization is done by denoting a particular LBM with DmQn, where m is the dimension and n the quantity of particle velocities. So D2Q9 is a two-dimensional LBM using the velocities of 9 neighboring particles. It originates from Lattice gas automata, which has been successfully applied up to 2-dimensional models, but cannot easily be extended to 3-dimensions.

LBM models the fluid consisting of fictive particles, and they move and collide over the discrete lattice mesh, eg D2Q9. In the computer algorithm, the discretization of the collision and streaming are defined as follows:

Collision step:

f i t(x,t+δ t)=f i t(x,t)+1Τ f(f i eqf i))f_i^t(\vec x,t+\delta_t) = f_i^t(\vec x,t) + \frac{1}{\Tau_f}(f_i^eq - f_i))

Streaming step:

f i(x+δ t,t+δ t)=f i t(x,t+δ t)f_i(\vec x + \vec\delta_t,t+\delta_t) = f_i^t(\vec x,t + \delta_t)

Where 1Τ f\frac{1}{\Tau_f} is relaxation time due to viscosity, and f if_i is the velocity approximation that BKG enables.

Environmental applications

It is being used to model ocean, streaming up to 30 Kn Knutsen number which is a dimensionless alternative to Reynolds number, denoted K nK_n.


Essentially the are very simple to express and implement and also:

LBM has several advantages over other conventional CFD methods, especially in dealing with complex boundaries, incorporating of microscopic interactions, and parallelization of the algorithm. A different interpretation of the lattice Boltzmann equation is that of a discrete-velocity Boltzmann equation. The numerical methods of solution of the system of partial differential equations then gives rise to a discrete map, which can be interpreted as the propagation and collision of fictitious particles.


From Wikipedia:

Despite the increasing popularity of LBM in simulating complex fluid systems, this novel approach has some limitations. At present, high-Mach number flows in aerodynamics are still difficult for LBM, and a consistent thermo-hydrodynamic scheme is absent. However, as with Navier–Stokes based CFD, LBM methods have been successfully coupled to thermal-specific solutions to enable heat transfer (solids-based conduction, convection and radiation) simulation capability. For multiphase/multicomponent models, the interface thickness is usually large and the density ratio across the interface is small when compared with real fluids. Recently this problem has been resolved by Yuan and Schaefer who improved on models by Shan and Chen, Swift, and He, Chen, and Zhang. They were able to reach density ratios of 1000:1 by simply changing the equation of state.

Nevertheless, the wide applications and fast advancements of this method during the past twenty years have proven its potential in computational physics, including microfluidics: LBM demonstrates promising results in the area of high Knudsen number flows.


Toschi and Succi reports:

Our results indicate that a standard nine-speed LB scheme equipped with Ansumali-Karlin boundary conditions and a virtual wall collision mechanism, can capture salient features of channel flow in both hydrodynamic and strongly non-hydrodynamic regimes. Of course, this is only the first step towards a systematic inclusion of high-Knudsen effects in the lattice kinetic framework, and much further work is needed to address more general situations, such as non ideal geometries, high shear rates and thermal effects. Another interesting point to be explored for the future is the potential benefit of using multi-relaxation and entropic LB schemes for a better description of fluid-wall interactions.


Open Source

  • LIMBES: Open source (GPL) code in 2D based on Gauss-Hermite quadrature, parallel (openmp), fortran 90

LIMBES is the recursive acronym for LIMBES Is May be a Boltzmann Equation Solver. Version 1.0 solves numerically by a Lattice Boltzmann like method the BGK-Boltzmann equation for gas in two dimensions. The attribute May be refers to the fact that this is not the full collision term derived by Boltzmann but the BGK model conventionally used in kinetic theory is considered here. The number of discrete velocities can be chosen between 9 and 400. LIMBES can be considered as a parallel code (openmp) or as a library written in Fortran 90 can be implemented in other codes for solving kinetic equations. LIMBES should not be considered as a microfluidics flow solver but must rather be seen as an academic numerical tool `easy to use' based on kinetic models for typical situations encountered in microfluidics.

  • OpenLB: Open source (GPLv2) library based on LBM, parallel, C++

The OpenLB project provides a C++ package for the implementation of lattice Boltzmann simulations that is general enough to address a vast range of problems in computational fluid dynamics. The package is mainly intended as a programming support for researchers and engineers who simulate fluid flows by means of a lattice Boltzmann method. The source code is publicly available and constructed in a well readable, modular way. This enables for a fast implementation of both simple applications and advanced CFD problems. It is also easily extensible to include new physical content.

  • Palabos: Open source (GPL) lattice Boltzmann code.

Can be used to simulate physical phenomena, with emphasis on fluids. The kernel is based on a variety of lattice Boltzmann models. The source code is modular and can easily be extended by application programmers. A framework for high performance computing. The library is optimized for single processor performance. Efficient parallelization is achieved through the MPI extension

  • Sailfish: Open Source LBM code (LGPL) for Graphics Processing Units (CUDA/OpenCL/Python)

Sailfish is a general purpose fluid dynamics solver optimized for modern multi-core processors, especially Graphics Processing Units (GPUs). The solver is based on the Lattice Boltzmann Method, which is conceptually quite simple to understand and which scales very well with increasing computational resources. The Sailfish project is also an experiment in scientific computing and software engineering. Unlike the majority of CFD packages, which are written in compiled languages such as C++ or Fortran, Sailfish is implemented in Python and CUDA C/OpenCL. We have found this combination to be a very powerful one, making it possible to significantly shorten development time without sacrificing any computational performance.

: The lattice Boltzmann method is increasingly attracting researchers in many areas from turbulence to multi-phase flow in porous media. Several textbooks have been written to address the need of students to learn about this relatively new method. The aim of this introduction is to provide a succinct description of the field and to provide students with sample codes so that they can immediatly apply their knowledge to practical applications.


Abstract: A modified lattice Boltzmann model with a stochastic relaxation mechanism mimicking “virtual”collisions between free-streaming particles and solid walls is introduced. This modified scheme permits to compute plane channel flows in satisfactory agreement with analytical results over a broad spectrum of Knudsen numbers, ranging from the hydrodynamic regime, all the way to quasi-free flow regimes up to Kn ∼ 30.

Abstract: The viability of multiscale lattice Boltzmann schemes for the numerical simulation of turbulent flows is discussed and numerically demonstrated for turboaxial machine applications. The extension of boundary fitting formulas based on wall functions is proposed, which enables the efficient computation of turbulent flows in complex curvilinear geometry using a simple Cartesian grid. Examples of two-dimensional turbulent flows? in an axial compressor cascade are presented.

Abstract: We construct a lattice Boltzmann model of a single-layer, ‘‘reduced gravity’ ’ ocean in a square basin, with shallow water or planetary geostrophic dynamics, and boundary conditions of no slip or no stress.When the volume of the moving upper layer is sufficiently small, the motionless lower layer outcrops over a broad area of the northern wind gyre, and the pattern of separated and isolated western boundary currents agrees with the theory of Veronis (1973). Because planetary geostrophic dynamics omit inertia, lattice Boltzmann solutions of the planetary geostrophic equations do not require a lattice with the high degree of symmetry needed to correctly represent the Reynolds stress. This property gives planetary geostrophic dynamics a signiŽ cant computational advantage over the primitive equations, especially in three dimensions.

ABSTRACT: We present an overview of the lattice Boltzmann method (LBM), a parallel and efficient algorithm for simulating single-phase and multiphase fluid flows and for incorporating additional physical complexities. The LBM is especially useful for modeling complicated boundary conditions and multiphase interfaces. Recent extensions of this method are described, including simulations of fluid turbulence, suspension flows, and reaction diffusion systems.