Wikipedia 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 only 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.
LBM is a relatively new simulation technique for complex fluid systems and has attracted interest from researchers in computational physics. Unlike the traditional CFD methods, which solve the conservation equations of macroscopic properties (i.e., mass, momentum, and energy) numerically, LBM models the fluid consisting of fictive particles, and such particles perform consecutive propagation and collision processes over a discrete lattice mesh. Due to its particulate nature and local dynamics, 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.
In the computer algorithm, the collision and streaming step are defined as follows:
Collision step: $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(\vec x + \vec\delta_t,t+\delta_t) = f_i^t(\vec x,t + \delta_t)$
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 ﬂow in both hydrodynamic and strongly non-hydrodynamic regimes. Of course, this is only the ﬁrst step towards a systematic inclusion of high-Knudsen eﬀects 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 eﬀects. Another interesting point to be explored for the future is the potential beneﬁt of using multi-relaxation and entropic LB schemes for a better description of ﬂuid-wall interactions.
Open Source
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.
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.
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 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.
El’Beem: free CFD code (GPL) which uses LBM
J-Lattice-Boltzmann: interactive Java applet for experimenting with LBM
C examples: Some simple example LBM code in C.
Lattice Boltzmann methods, Wikipedia
Jaap A. Kaandorp, Peter M. A. Sloot, Roeland M. H. Merks, Rolf P. M. Bak, Mark J. A. Vermeij and Cornelia Maier,Royal Society 2005 Morphogenesis of the branching reef coral Madracis mirabilis
Federico Toschi and Sauro Succi Arxiv 2004, Lattice Boltzmann method at ﬁnite-Knudsen numbers
Abstract: A modiﬁed lattice Boltzmann model with a stochastic relaxation mechanism mimicking “virtual”collisions between free-streaming particles and solid walls is introduced. This modiﬁed scheme permits to compute plane channel ﬂows in satisfactory agreement with analytical results over a broad spectrum of Knudsen numbers, ranging from the hydrodynamic regime, all the way to quasi-free ﬂow regimes up to Kn ∼ 30.
Abstract: The viability of multiscale lattice Boltzmann schemes for the numerical simulation of turbulent ﬂows is discussed and numerically demonstrated for turboaxial machine applications. The extension of boundary ﬁtting formulas based on wall functions is proposed, which enables the efﬁcient computation of turbulent ﬂows in complex curvilinear geometry using a simple Cartesian grid. Examples of two-dimensional turbulent ﬂows? 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 themoving upper layer is sufficiently small, themotionless 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.