OpenLB
OpenLB ist eine objektorientierte Implementierung von Lattice-Boltzmann-Methoden (LBM). Es ist die erste Umsetzung einer generischen Plattform für LBM-Programmierung, die mit der Open-Source-Gemeinschaft (GPLv2) geteilt wird. Der Code ist in C++ geschrieben und wird sowohl durch Anwendungsprogrammierer als auch Entwickler verwendet, wobei eigene Modelle implementiert werden können. OpenLB unterstützt komplexe Datenstrukturen, die Simulationen in komplexen Geometrien und das parallele Ausführung mittels MPI, OpenMP und CUDA auf Hochleistungsrechnern erlauben. Der Quellcode bedient sich der Konzepte von Interfaces und Templates, so dass effiziente, direkte und intuitive Implementierungen der LBM möglich werden. Die Effizienz und Skalierbarkeit konnte durch mehrere Code-Reviews überprüft und nachgewiesen werden. Eine Bedienungsanleitung für Anwender sowie eine Quellcode-Dokumentation durch DoxyGen sind auf der Projektseite verfügbar.
OpenLB | |
---|---|
Basisdaten
| |
Aktuelle Version | 1.6 (April 2023) |
Betriebssystem | Linux, macOS, Windows |
Programmiersprache | C++ |
Kategorie | CFD-Programm |
Lizenz | GPLv2 (freie Software) |
deutschsprachig | nein |
www.openlb.net |
Funktionsumfang
BearbeitenOpenLB befindet sich in ständiger Entwicklung. Aktuell sind folgende Anwendungsmöglichkeiten implementiert:
- Strömungssimulation in komplexen Geometrien
- Automatisierte Gittergenerierung
- Turbulente Strömungen
- Mehrphasen- und Mehrkomponenten-Strömungen
- Thermische Strömungen
- Lichtstrahlung
- Topologieoptimierung
- Parikelströmungen (Euler-Euler- und Euler-Lagrange-Verfahren)
Automatisierte Gittergenerierung
BearbeitenDie automatisierte Gittergenerierung stellt einen der großen Vorteile von OpenLB gegenüber anderen CFD-Softwarepaketen dar. Im Folgenden sind die Hauptvorteile aufgeführt:
- Nutzung von Geometrien im STL-Dateiformat oder geometrisch primitiven Formen (z. B. Kugel, Zylinder, Kegel) und deren Vereinigung, Schnittmenge und Differenz
- sehr schnelle Voxelization: 600³ ~ 1 Minute
- Umgang mit nicht abgeschlossenen Oberflächen
- Verwendung von speichereffizienten Octrees
- Lastverteilung für parallele Ausführung mit MPI, OpenMP und CUDA.
Die automatische Gittergenerierung kann sowohl von einer STL-Datei als auch von primitiven Geometrien ausgehen. Für die übergebenen Geometrie wird zunächst ein den gesamten Raum der Geometrie umschließendes quaderförmiges Rechengitter erstellt. Anschließend werden die überflüssigen Gitterzellen entfernt und verbleibende Quader so weit wie möglich auf die gegebene Geometrie geschrumpft. Abschließend wird das Gitter für die parallele Ausführung der Simulation auf verschiedene Threads beziehungsweise Prozessoren aufgeteilt. Mit Hilfe von Materialzahlen können die Randbedingungen und Startwerte gesetzt werden.
Auszeichnungen
BearbeitenLiteratur
Bearbeiten- Mathias J. Krause, Jonas Latt, Vincent Heuveline: Towards a hybrid parallelization of lattice Boltzmann methods. In: Computers & Mathematics with Applications, 2009, 58.5, S. 1071–1080.
- Vincent Heuveline, Mathias J. Krause: OpenLB: towards an efficient parallel open source library for lattice Boltzmann fluid flow simulations. In: International Workshop on State-of-the-Art in Scientific and Parallel Computing. PARA, Vol. 9, 2010.
- Mathias J. Krause, Thomas Gengenbach, Vincent Heuveline: Hybrid parallel simulations of fluid flows in complex geometries: Application to the human lungs. In: European Conference on Parallel Processing. Springer, Berlin / Heidelberg 2010.
- Mathias J. Krause: Fluid flow simulation and optimisation with lattice Boltzmann methods on high performance computers: application to the human respiratory system. Karlsruhe Institute of Technology (KIT), 2010.
- Robin Trunk et al.: Inertial dilute particulate fluid flow simulations with an Euler–Euler lattice Boltzmann method. In: Journal of Computational Science, 2016.
- Albert Mink et al.: A 3D Lattice Boltzmann method for light simulation in participating media. In: Journal of Computational Science. 2016.