Table of Contents
Fetching ...

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.

OpenLB User Guide: Associated with Release 1.6 of the Code

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.
Paper Structure (249 sections, 1 theorem, 94 equations, 39 figures, 4 tables)

This paper contains 249 sections, 1 theorem, 94 equations, 39 figures, 4 tables.

Key Result

Theorem 1

Let $\bm{u}\in C^{n+1}\left[\bm{a}, \bm{b}\right]$, $\bm{a}, \bm{b} \in \Omega$. Then for every $\bm{x} \in \left[\bm{a}, \bm{b}\right]$ there exists one $\widehat{\bm{x}}\in \overline{\left(\bm{x}_0, \ldots \bm{x}_n, \bm{x}\right)}$, such that holds.

Figures (39)

  • Figure 1: Exemplary discrete velocity sets used for the descriptors implemented in OpenLB.
  • Figure 2: Resolved simulation with 250 million grid cells of turbulent mixing and chemical reactions done by OpenLB on 24 GPUs on the HoreKa supercomputer funded by the Ministry of Science, Research and the Arts Baden-Württemberg and by the Federal Ministry of Education and Research.
  • Figure 3: Six steps to create a Geometry. It starts by reading an STL file with the help of an and ends with the creation of a .
  • Figure 4: Lattice nodes of the geometry are associated with material numbers. Material number zero, one, two, three, four and five correspond to external region, fluid, bounce back boundary, inflow, outflow and obstacle cells, (1=fluid, 2=no-slip boundary, 3=velocity boundary, 4=constant pressure boundary, 5=curved boundary, 0=do nothing).
  • Figure 5: The geometry of the example cylinder3d from Section \ref{['sec:cylinder2dAndCylinder3d']} opened in FreeCAD.
  • ...and 34 more figures

Theorems & Definitions (2)

  • Theorem 1: Interpolation error
  • proof