# Lattice Boltzmann method parallelization

I'm learning about the lattice Boltzmann method (LBM) and how it can be parallelized. On Wikipedia, they say, "The LBM was designed from scratch to run efficiently on massively parallel architectures...", with no citations.

I understand the basics of LBM (collision, streaming, etc), but I'm struggling to see how it can be parallelized. Conceptually, how would it work for a D2Q9 or D3Q19 lattice for example? I tried searching for reviews eg. Succi and Kruger but I didn't find these useful.

• The LBM surely predates "massively parallel computations"... Commented Jul 6, 2023 at 1:48
• @WolfgangBangerth I seem to recall "lattice gas" being mentioned in the 1980s, at which point the Goodyear MPP & the CM ClassicTM were old hat. But yeah, calling it "designed for" is a little too strong. Commented Jul 6, 2023 at 13:44

DISCLAIMER: For an in-depth discussion, see Chapter 13.4 in Krüger, which addresses this in 40+ pages. Here, I merely outline two basic ideas.

The core LBM consists of the steps

2. Collision

(neglecting boundary conditions for the moment) one needs to inspect these steps whether they can be easily parallelized.

1. The free stream can be relatively easily parallelized by splitting the domain into parts which are assigned to individual processes. Then, you need only to communicate at the interfaces of the domains between the different processes. This can be done relatively efficiently by means of one layer of ghost/halo cells, see for instance Figures 13.9 and 13.10 in Krüger's book. Other numerical methods with larger stencils might require more halo cells. Furthermore, the LBM avoids a Poisson solver that is typically required for incompressible Navier-Stokes equations that needs information of the entire domain that you need to collect sooner or later (this is what I remember from my CFD course at university which is probably not start of the art any longer).

2. The collision is inherently local and contains (again, neglecting boundary conditions for the moment) the only nonlinearity in the method. Consequently, the most expensive operation can be done without communication to other nodes once all populations are received at the node. This is in contrast to e.g. methods for hyperbolic PDEs (FV/DG for instance) where you have to compute approximations to the numerical flux at the interface of cells, where one usually has to communicate with neighboring cells to get the correct numerical flux (e.g. for the classic HLL 2-wave solver).