  Several possibilities exist to implement the propagation step of the lattice
Boltzmann method. This paper describes common implementations which are
compared according to the number of memory transfer operations they require per
lattice node update. A memory bandwidth based performance model is then used to
obtain an estimation of the maximal reachable performance on different
machines. A subset of the discussed implementations of the propagation step
were benchmarked on different Intel and AMD-based compute nodes using the
framework of an existing flow solver which is specially adapted to simulate
flow in porous media. Finally the estimated performance is compared to the
measured one. As expected, the number of memory transfers has a significant
impact on performance. Advanced approaches for the propagation step like "AA
pattern" or "Esoteric Twist" require more implementation effort but sustain
significantly better performance than non-naive straight forward
implementations.
