Code Generation for waLBerlaGenerate sweeps using pystencils
waLBerla runs on some of the Top10 HPC Clusters in the world. It contains efficient, hardware specific compute kernels to get optimal performance on today's supercomputing architectures. In Germany, waLBerla runs on the three tier-1 HPC systems: SuperMUC-NG (Munich), Hazel Hen (Stuttgart) and JUWELS (Jülich).
waLBerla employs a block-structured partitioning of the simulation domain including support for grid refinement.
These grid data structures make it easy to integrate various data parallel algorithms like Multigrid, CG, or phasefield models.
Various IO modules enable loading and storing the simulation setup from and to voxel based file formats or triangle meshes.
waLBerla is written in C++, which allows for modular and portable software design without having to make any performance tradeoffs. An automatic test suite ensure that waLBerla compiles with various C++ compilers (GCC, Visual Studio, Clang, Intel C++ Compiler) on different operating systems (Linux, Windows). For small scale simulations and application development, waLBerla contains a GUI that allows an online visualization of waLBerla data structures.
waLBerla supports block-structured adaptive mesh refinement, including different dynamic load balancing strategies, for massively parallel simulations. The applicability of the implementation has been demonstrated for one trillion grid cells on peta-scale systems.
waLBerla uses the lattice Boltzmann method (LBM), which is an alternative to classical Navier-Stokes solvers for computational fluid dynamics simulations. All of the common LBM collision models are implemented (SRT, TRT, MRT). Additionally, a coupling to the rigid body physics engine pe is available.
MESA-PD is a flexible and user friendly module to provide particle dynamics to waLBerla. Clearly defined interfaces and code generation techniques facilitate the use in different scenarios and provide high performance.
You can try out the Python interface of waLBerla right away in your browser in an interactive Jupyter notebook.
The main application of the waLBerla framework are massively parallel CFD simulations based on the lattice Boltzmann method. It can simulate flows in complex geometries and supports many different lattice models and collision operators.
Scalable rigid body module of waLBerla was employed for extreme-scale mechanical modeling of nanofibrillar systems. Coarse-grained representation of carbon nanotubes as chains of interacting rigid cylinders with properly calibrated mesoscale interactions and energy dissipation enabled accurate modeling of such systems at unprecedented simulation scales.
The free surface extension of waLBerla uses a volume-of-fluid approach to simulate free boundaries. Above image shows a simulation of two impinging fluid jets forming a lamella, once for low surface tensions (left) and high surface tensions (right).
waLBerla can be coupled to the pe physics engine to study particle-laden flows. This allows the simulation of systems like fluidized beds with several thousand fully resolved particles.
waLBerla is not only a framework for lattice Boltzmann based CFD simulations, but for arbitrary algorithms on block-structured grid. This flexibility enables the implementation of a phase-field method in waLBerla that can simulate the solidification of ternary eutectic alloys.
waLBerla can be used to simulate additive manufacturing processes: Above image shows a simulation of laser beam melting. This simulations combines the rigid body module to simulate the powder bed with the lattice Boltzmann method to simulate heat conduction as well as the hydrodynamics of the melting pool.