==========
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
- `The Lattice Boltzmann Method - Timm Krüger, Halim Kusumaatmaja, Alexandr Kuzmin, Orest Shardt, Goncalo Silva, Erlend Magnus Viggen
`_
- `The Lattice Boltzmann Equation: For Complex States of Flowing Matter - Sauro Succi
`_
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.