OpenLB User Guide: Associated with Release 1.6 of the Code
Adrian Kummerländer, Samuel J. Avis, Halim Kusumaatmaja, Fedor Bukreev, Michael Crocoll, Davide Dapelo, Simon Großmann, Nicolas Hafen, Shota Ito, Julius Jeßberger, Eliane Kummer, Jan E. Marquardt, Johanna Mödl, Tim Pertzel, František Prinz, Florian Raichle, Martin Sadric, Maximilian Schecher, Dennis Teutscher, Stephan Simonis, Mathias J. Krause
TL;DR
OpenLB presents a comprehensive, open-source framework for lattice Boltzmann simulations, addressing the need for a scalable, reusable CFD platform. It unifies descriptors, multi-block lattices, and platform-agnostic dynamics to enable efficient execution on CPU and GPU architectures, while supporting a broad spectrum of physics including porous media, non-Newtonian flows, multiphase, and advection–diffusion problems. The repository emphasizes modularity through descriptors, dynamics, post processors, and functors, enabling flexible composition of collision operators, boundary conditions, and couplings; it also provides extensive geometry tools (STL, primitives) and input/output facilities for reproducible research. A key contribution is the integration of two complementary lattice systems (NS and AD) and particle frameworks (surface-resolved and sub-grid), enabling rich multiphysics simulations with consistent conversion between lattice and physical units. The framework's design supports parallel HPC deployment (MPI, SIMD, CUDA) and a broad user base from education to advanced research, underpinning reproducible results and collaborative development through well-defined release documentation and citation practices.
Abstract
OpenLB is an object-oriented implementation of LBM. It is the first implementation of a generic platform for LBM programming, which is shared with the open source community (GPLv2). Since the first release in 2007, the code has been continuously improved and extended which is documented by thirteen releases as well as the corresponding release notes which are available on the OpenLB website (https://www.openlb.net). The OpenLB code is written in C++ and is used by application programmers as well as developers, with the ability to implement custom models OpenLB supports complex data structures that allow simulations in complex geometries and parallel execution using MPI, OpenMP and CUDA on high-performance computers. The source code uses the concepts of interfaces and templates, so that efficient, direct and intuitive implementations of the LBM become possible. The efficiency and scalability has been checked and proved by code reviews. This user manual and a source code documentation by DoxyGen are available on the OpenLB project website.
