Overview
The Palabos project provides a C++ package for the implementation of lattice Boltzmann simulations that is general enough to address a vast range of problems in computational fluid dynamics. The package is mainly intended as a programming support for researchers and engineers who simulate fluid flows by means of a lattice Boltzmann method. The source code is publicly available and constructed in a well readable, modular way. This enables for a fast implementation of both simple applications and advanced CFD problems. It is also easily extensible to include new physical content.
The architecture of the code has been designed in the hope that it can be adapted easily to different problems of computational fluid dynamics. If you have written some extensions and think that they are of general interest, you are encouraged to submit them for a future inclusion into the project.
Code developing team
Project supervision and core development are taken care of by Jonas Latt (Ecole Polytechnique Federale de Lausanne, Switzerland). Orestis Malaspinas (Ecole Polytechnique Federale de Lausanne, Switzerland) writes alternative LB collision terms (MRT, entropic), some of the boundary conditions, and coupled physical models (thermal, multi-phase). The interface with the CVMLCPP code for domain instantiations from STL files is developed by Daniel Lagrava (Universite de Geneve, Switzerland). Many other people have contributed by writing code, thinking about programming concepts, or understanding some of the LB models for which the literature is sparse. We particularly mention, in alphabetical order, the contributions of Fokko Beekhof (Universite de Geneve, Switzerland), Bastien Chopard (Universite de Geneve, Switzerland), Mathias Krause (Rechenzentrum Karlsruhe, Germany), Andrea Parmigiani (Universite de Geneve, Switzerland), Bernd Stahl(Universite de Geneve, Switzerland).Implemented functionality
- Physics: Incompressible Navier-Stokes equations, weakly compressible, non-thermal Navier-Stokes equations, flows with body-force term, thermal flows with Boussinesq approximation, single-component multi-phase fluids (Shan/Chen model), multi-component multi-phase fluids (Shan/Chen model), static Smagorinsky model for fluid turbulence.
- Basic fluid models: BGK, a given MRT model, regularized BGK, a given entropic model.
- Boundary conditions: Zou/He, Inamuro, Skordos, regularized BC, simple equilibrium, bounce-back, periodic. All boundary conditions work for straight walls with interior/exterior corners, and can be used to implement a Dirichlet or Neumann condition for the velocity or the pressure. The bounce-back condition is also used for curved boundaries, represented by a stair-case shape.
- Grid: The implemented grids are D2Q9, D3Q13, D3Q15, D3Q19, and D3Q27. In all cases, the domain is either a regular matrix or a sparse domain, approximated by a multi-grid pattern.
- Parallelism: All mentioned models and ingredients are parallelized with MPI for shared-memory and distributed-memory platforms.
- Pre-processing: The domain of a simulation can be constructed manually, or automatically from a corresponding STL-file.
- Post-processing: The code has the ability to save the data in ASCII or binary files or to directly produce GIF images. Furthermore, the data can be saved in VTK format and further post-processed with an appropriate tool.
- Check-pointing: At every moment, the state of the simulation can be saved, and loaded at a later point.