Overview
PyLaBolt is a single phase, 2D, parallel lattice Boltzmann solver for fluid flow. It uses Numba accelerated Python code to run lattice Boltzmann simulations on 2D lattices. Simulations can be run on CPU in parallel via Numba’s own OpenMP parallelization and the mpi4py library. For running on NVIDIA GPUs, PyLaBolt uses Numba’s CUDA bindings.
Features
PyLaBolt currently supports the following collision schemes
Bhatnagar-Gross-Krook (BGK) scheme - Physical Review, vol. 94, Issue 3, pp. 511-525
The MRT and TRT collision schemes will be added in future releases.
The boundary conditions available are
No slip boundary via the halfway bounce back method - Journal of Fluid Mechanics , Volume 271 , 25 July 1994 , pp. 285 - 309
Moving wall boundary condition via the halfway bounce back method - Journal of Fluid Mechanics , Volume 271 , 25 July 1994 , pp. 285 - 309 , Journal of Statistical Physics volume 104, pages 1191–1251 (2001)
The fixed pressure boundary condition via the anti-bounce back method - Commun. Comput. Phys. 3, 427 (2008)
Zero gradient boundary condition
Periodic boundary condition - The Lattice Boltzmann Method
For more information on the schemes and boundary conditions, we urge the reader the go through the following books
PyLaBolt leverages the performance advantages on multi-core CPUs, High Perfomance computing clusters, and GPUs to run large simulations. Currently the parallel computing features supported by PyLaBolt are:
Numba accelerated Python code can run in parallel on multi-core CPUs through OpenMP.
To run on multiple machines/clusters, PyLaBolt uses OpenMPI via the mpi4py library.
PyLaBolt can also run simulations on NVIDIA GPUs through Numba’s CUDA bindings.
PyLaBolt provides support to convert output to VTK format, which can post-processed in Paraview/Mayavi.