========== 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.