Simplicity of coding is usually an appealing feature of the lattice-Boltzmann method (LBM). Conventional implementations of LBM are often based on the two-lattice or the two-step algorithm, which however suffer from high memory consumption and poor computational performance, respectively. The aim of this work was to identify implementations of LBM that would achieve high computational performance with low memory consumption. Effects of memory addressing schemes were investigated in particular. Data layouts for velocity distribution values were also considered, and they were found to be related to computational performance. A novel bundle data layout was therefore introduced. Addressing schemes and data layouts were implemented for the Lagrangian, compressed-grid (shift), swap, two-lattice, and two-step algorithms. Implementations were compared for a wide range of fluid volume fractions. Simulation results indicated that indirect addressing implementations yield high computational performance. However, they achieved low memory consumption only for very low fluid volume fractions. Semi-direct addressing implementations could also provide high computational performance. The bundle data layout was found to be competitive, sometimes by a wide margin, in all the cases considered. © 2007 Elsevier Ltd. All rights reserved.
Mattila, K., Hyväluoma, J., Timonen, J., & Rossi, T. (2008). Comparison of implementations of the lattice-Boltzmann method. Computers and Mathematics with Applications, 55(7), 1514–1524. https://doi.org/10.1016/j.camwa.2007.08.001