English

lbmpy: Automatic code generation for efficient parallel lattice Boltzmann methods

Mathematical Software 2020-04-14 v2 Computational Engineering, Finance, and Science Distributed, Parallel, and Cluster Computing

Abstract

Lattice Boltzmann methods are a popular mesoscopic alternative to macroscopic computational fluid dynamics solvers. Many variants have been developed that vary in complexity, accuracy, and computational cost. Extensions are available to simulate multi-phase, multi-component, turbulent, or non-Newtonian flows. In this work we present lbmpy, a code generation package that supports a wide variety of different methods and provides a generic development environment for new schemes as well. A high-level domain-specific language allows the user to formulate, extend and test various lattice Boltzmann schemes. The method specification is represented in a symbolic intermediate representation. Transformations that operate on this intermediate representation optimize and parallelize the method, yielding highly efficient lattice Boltzmann compute kernels not only for single- and two-relaxation-time schemes but also for multi-relaxation-time, cumulant, and entropically stabilized methods. An integration into the HPC framework waLBerla makes massively parallel, distributed simulations possible, which is demonstrated through scaling experiments on the SuperMUC-NG supercomputing system

Keywords

Cite

@article{arxiv.2001.11806,
  title  = {lbmpy: Automatic code generation for efficient parallel lattice Boltzmann methods},
  author = {Martin Bauer and Harald Köstler and Ulrich Rüde},
  journal= {arXiv preprint arXiv:2001.11806},
  year   = {2020}
}