Open source codes employing lattice Boltzmann methods
A curated list of some open source frameworks, libraries and softwares employing lattice Boltzmann methods. This list is by no means complete. So if you would like me to add something, please send me a link to [email protected] or perform a pull request.
Numerical frameworks
- ch4-project [1] - a parallelized numerical framework written in C++ which can simulate multiphase flows, turbulence, lagrangian particles (point-sized, tracers etc.) and thermal flows. Developed by the Unité de Mécanique de Lille, University of Lille.
- HemeLB [2] - a parallelized numerical framework written in C which can simulate flows in complex geometries including cerebral blood flow scenarios, ranging from normal to neuropathological conditions, aneurysms and arterio-venous malformations, as well as the entire intra-cranial vasculature. Developed at the Centre for Computational Science, University College London.
- HemeLB-GPU [3] - a GPU-extension of the HemeLB code mentioned above.
- HemoCell [4] - a parallelized numerical framework written in C++ for simulating deformable blood suspensions using a combined Immersed boundary-lattice Boltzmann method. This is built on top of the Palabos library. Developed at the Computational Science lab, University of Amsterdam.
- Lattice-Boltzmann-Method-GPU [5, 6] - GPU implementation (on NVIDIA GPUs) of lattice Boltzmann methods for simulating steady/unsteady 3D single-phase flows.
- LBfoam [7] - an MPI parallelized numerical framework (extended from the Palabos library) for simulating foaming processes including bubble nucleation, coalescence using different rheological models. Developed at the Department of Mechanical Engineering, University of Toronto.
- LBDEMcoupling-public [8] - a parallelized coupling package between the Palabos library and the discrete element code LIGGGHTS using C++. Can perform resolved simulations of fluid-particle systems. Developed by the Johannes Kepler University Linz.
- LBSim - a C++ fluid dynamics simulator which can simulate complex flows, multiphase flows, thermal flows and microfluidics. Developed by the Software Development Center at the University of Sao Paulo.
- LBsoft [9] - an MPI parallelized numerical solver written in FORTRAN90 for simulating colloidal emulsions by coupling lattice Boltzmann methods for the fluid and discrete particle dynamics for the colloids.
- LB3D [10] - an MPI parallelized numerical framework written in Fortran90 to simulate 3D simple, binary oil/water and ternary oil/water/amphiphile fluids using the Shan-Chen model for binary fluid interactions. Also offers the possibilities of studying flows involving micro-mixing, porous media, fluid surface interactions and other multicomponent flows. Developed at the University College London, University of Stuttgart and Eindhoven University of Technology.
- LIFE - a parallelized numerical framework written in C++ employing lattice Boltzmann-immersed boundary-finite element solver for simulating fluid-structure interaction problems involving slender structures.
- LUDWIG [11, 12] - a parallelized numerical framework written in C which can simulate complex fluids including mixtures, symmetric binary fluids, colloidal suspensions, polar gels, charged fluids and liquid crystals. Developed at the University of Edinburgh.
- LUMA [13] - an MPI parallelized numerical solver written in C/C++ for simulating 3D complex fluid structure interaction and turbulent flow problems. Developed at the University of Manchester.
- latnet [14] - an open source library for performing lattice Boltzmann simulations using neural networks.
- lettuce [15] - a GPU accelerated lattice Boltzmann framework using neural networks and automatic differentiation in pytorch.
- MF-LBM [16] - a parallelized (supports CPU, GPU, MIC and ARM) high performance code for direct numerical simulations of multiphase flows in porous media. Developed by the Los Alamos National laboratory.
- Microflow 3D [17, 18] - an open-source parallel numerical framework (CUDA and GPU) for simulating transient flows in comlex geometries, inlcuding microflows in channels of microsystems or bio-chips and flows in narrow blood vessels. Developed at the Wroclaw University of Science and Technology.
- MultiphasePorousMediaPalabos - an open source parallel numerical framework using the Palabos library for modeling single and multiphase flows in complex porous geometries. Developed at the University of Texas, Austin.
- Musubi [19] - a parallel numerical solver written in Fortran 2003 for simulating multicomponent flows, blood flows, porous media and liquid mixtures. Developed at the Simulation Techniques and Scientific Computing group at Universität Siegen.
- NekLBM - a high-order parallelized numerical solver written in Fortran 90 and C, based on spectral element discontinuous Galerkin methods. Developed at the Mathematics and Computer Science Division of Argonne National Laboratory.
- OpenLB [20, 21] - an MPI parallelized numerical framework written in C++ which can simulate multiphase flows, multicomponent flows, turbulence, particulate flows, complex flows, thermal flows, non-Newtonian flows and porous media to name a few. Developed by the Lattice Boltzmann research group at Kalsruhe Institute of Technology.
- Palabos [22] - an MPI parallelized numerical framework written in C++ which can simulate multiphase flows, multicomponent flows, turbulence, particulate flows, complex flows, thermal flows, non-Newtonian flows and grid refinement. Developed by the Scientific and Parallel Computing group at University of Geneva.
- SailFish [23] - a numerical framework written in Python and CUDA C/OpenCL for GPUs (CUDA, OpenCL) which can simulate complex flows, multicomponent flows and turbulence.
- STLBM [24] - a massively efficient framework for multi-threaded parallel simulations on many-core CPUs and GPUs. Developed by the Scientific and Parallel Computing group at University of Geneva.
- SunlightLB - a 3D numerical framework written in C, perl, and python which can simulate a variety of hydrodynamics problems, such as flow through pores, moving obstacles using a bounce-back method, passive scalar transport and a few more.
- Taxila LBM [25, 26] - a parallel numerical framework written in Fortran90 which can simulate flows in porous and geometrically complex media (including single and multiphase flows). Developed by the Los Alamos National laboratory.
- TCLB - a parallel numerical solver (MPI+CUDA or MPI+CPU) for simulating electrokinetic flows, thermal flows, multiphase flows, non-Newtonian flows and shallow water flows. Developed at the C-CFD group, Warsaw University of Technology.
- VirtualFluids - a parallel numerical framework supporting CPU and GPU, for simulating tubulent, thermal, multiphase/multicomponent flow and fluid-structure interaction. Developed at the Institute for Computational Modeling in Civil Engineering (IRMB), TU Braunschweig.
- waLBerla [27] - a parallelized (both MPI and hybrid MPI/OpenMP are supported) numerical framework written in C++ supporting block-structured adaptive mesh refinement, fully resolved particulate flows and free surface flows to name a few. Developed by the Chair for System Simulation, Friedrich–Alexander–Universität Erlangen–Nürnberg.
- wlb [28] - a github repository hosting C++ codes to simulate 2D electrokinetic flows, by coupling Navier-Stokes, Nernst-Planck and Poisson’s equation of electrostatics.
- 2d-lbm-dem - a 2D coupled lattice Boltzmann and discrete element method written in C for simulating granular flows. Developed by the Computational Geomechanics group, a co-operation between two research groups at the University of Cambridge and University of California, Berkeley.
Miscellaneous codes
- EduLB - an educational C++ code to show the implementation of lattice Boltzmann method by simulating flow over an obstacle in a channel.
- gLBM [29] - a 3D LBM code implemented using GPUs.
- LAMBReX - implementation of a lattice Boltzmann code on top of AMReX library for adaptive mesh refinements.
- LatBo.jl - an code developed in Julia programming language.
- Lattice-Boltzmann - CUDA implementations of some lattice Boltzmann codes.
- Lattice-Boltzmann-fluid-flow-in-Tensorflow - a github repository hosting lattice Boltzmann simulation results written in Tensorflow.
- LatticeBoltzmannMethod - a github repository hosting some excellent codes (C++) showcasing multiphase flows, microflows and immersed boundary-lattice Boltzmann methods to name a few.
- LBMCode - a FORTRAN90 code solving the shallow water equations to simulate flows in a straight channel.
- LBM-Cplusplus-A.A.Mohamad - this repository hosts the C++ version of codes implemented from the Appendix of a lattice Boltzmann book [30].
- LBM-1D - a github repository hosting some simple MATLAB codes to simulate 1D advection-diffusion and Navier-Stokes equations.
- lbmles - a github repository hosting a 2D lattice Boltzmann code using Large Eddy simulations to solve fluid flow in lid-driven cavity at very large Reynolds numbers. Both CPU and GPU (C++ and CUDA) versions are available.
- lbm_matlab - a github repository hosting some MATLAB codes showcasing grid refinement, viscosity counteraction approach (for achieving numerical stability), RANS Spalart-Allmaras turbulence model and a few more.
- lbm-principles-practice - a github repository hosting the codes (C++, MATLAB) used in the lattice Boltzmann book [31].
- listLBM - an object-oriented programming solver for simulations of multiphase flows in porous media.
- pylbm - an open source python framework for performing lattice Boltzmann simulations in 1D, 2D and 3D scenarios.
- 3D-LBM-AMR - a github repository hosting C++ codes showcasing adaptive mesh refinement in 3D problems.
References
-
Calzavarini, E., Eulerian–Lagrangian fluid dynamics platform: The ch4-project, Software Impacts, Vol. 1, 2019. Link
-
Mazzeo, M.D., Coveney, P.V., HemeLB: A high performance parallel lattice-Boltzmann code for large scale fluid flow in complex geometries, Computer Physics Communications, Vol. 178 (12), pp. 894-914, 2008. Link
-
Shealy, B. T. et al., HGPU Acceleration of the HemeLB code for Lattice Boltzmann Simulations in Sparse Complex Geometries, IEEE Access, Vol. 9, pp. 61224-61236, 2021. Link
-
Závodszky, G. et al., Cellular Level In-silico Modeling of Blood Rheology with An Improved Material Model for Red Blood Cells, Frontiers in Physiology, Vol. 8, pp. 563, 2017. Link
-
Zhou, X., Ultrasound Imaging Augmented 3D Flow Reconstruction and Computational Fluid Dynamics Simulation, Dissertation, Imperial College London, 2019. Link
-
Zhou, X. et al., _ Measurement Augmented 3D Lattice Boltzmann Flow Simulation for Convergence Acceleration and Uncertainty Suppression_, Submitted to Computers & Fluids.
-
Ataei, M. et al., LBfoam: An open-source software package for the simulation of foaming using the Lattice Boltzmann Method, arXiv, 2020. Link
-
Seil, P. and Pirker, S., LBDEMcoupling: Open-Source Power for Fluid-Particle Systems, Proceedings of the 7th International Conference on Discrete Element Methods (DEM) 2016, Springer Proceedings in Physics, Vol. 188, 2017. Link
-
Bonaccorso, F. et al., LBsoft: a parallel open-source software for simulation of colloidal systems, arXiv, 2020. Link
-
Schmieschek, S. et al., LB3D: A parallel implementation of the Lattice-Boltzmann method for simulation of interacting amphiphilic fluids, Computer Physics Communications, Vol. 217, pp. 149-161, 2017. Link
-
Desplata, J.-C., Pagonabarraga, I. and Bladon, P., LUDWIG: A parallel Lattice-Boltzmann code for complex fluids, Computer Physics Communications, Vol. 134 (3), pp. 273-290, 2001. Link
-
Gray, A. and Stratford, K., Ludwig: multiple GPUs for a complex fluid lattice Boltzmann application, Designing Scientific Applications on GPUs, Chapman and Hall/CRC, 2013.
-
Harwood, A.R.G. et al., LUMA: A many-core, Fluid–Structure Interaction solver based on the Lattice-Boltzmann Method, SoftwareX, Vol. 7, pp. 88-94, 2018. Link
-
Hennigh, O., Lat-Net: Compressing Lattice Boltzmann Flow Simulations using Deep Neural Networks, arXiv, 2017. Link
-
Krämer, A., Wilde, D., Bedrunka, M., Lettuce: PyTorch-based Lattice Boltzmann Solver (Version 0.2.0), Zenodo, 2020. Link
-
Chen, Y. et al., Inertial Effects During the Process of Supercritical CO2 Displacing Brine in a Sandstone: Lattice Boltzmann Simulations Based on the Continuum-Surface-Force and Geometrical Wetting Models, Water Resources Research, Vol. 55, pp. 11144-11165, 2019. Link
-
Tomczak, T., Szafran, R., A new GPU implementation for lattice-Boltzmann simulations on sparse geometries, Computer Physics Communications, Vol. 235, pp. 258-278, 2019. Link
-
Tomczak, T., Szafran, R., Sparse geometries handling in lattice Boltzmann method implementation for graphic processors, IEEE Transactions on Parallel and Distributed Systems, Vol. 29(8), pp. 1865 - 1878, 2018. Link
-
Hasert, M. et al., Complex fluid simulations with the parallel tree-based Lattice Boltzmann solver Musubi, Journal of Computational Science, Vol. 5(5), pp. 784-794, 2014. Link
-
Heuveline, V. and Latt, J., The OpenLB project: an open source and object oriented implementation of lattice boltzmann methods, International Journal of Modern Physics C, Vol. 18 (4), pp. 627-634,2007. Link
-
Heuveline, V. and Krause, M.J., OpenLB: Towards an Efficient Parallel Open Source Library for Lattice Boltzmann Fluid Flow Simulations, PARA'08 Workshop on State-of-the-Art in Scientific and Parallel Computing, May 13-16, 2008. Link
-
Latt, J. et al., Palabos: Parallel Lattice Boltzmann Solver, arXiv, 2019. Link
-
Januszewski, M. and Kostur, M., Sailfish: A flexible multi-GPU implementation of the lattice Boltzmann method, Computer Physics Communications, Vol. 185 (9), pp. 2350-2368, 2014. Link
-
Latt, J., Coreixas, C. and Beny, J., Cross-platform programming model for many-core lattice Boltzmann simulations, arXiv, 2020. Link
-
Coon, E.T., Porter, M.L. and Kang, Q, Taxila LBM: a parallel, modular lattice Boltzmann framework for simulating pore-scale flow in porous media. Computational Geosciences, Vol. 18, pp. 17–27, 2014. Link
-
Porter, M.L. et al., Multicomponent interparticle-potential lattice Boltzmann model for fluids with large viscosity ratios, Physical Review E, Vol. 86 (3), 036701, 2012. Link
-
Bauer, M. et al., waLBerla: A block-structured high-performance framework for multiphysics simulations, To appear in Computers & Mathematics with Applications, 2020. Link
-
BĂĽlling, A., Modelling of electrokinetic flow using the lattice-Boltzmann method, Master thesis, Chalmers University of Science and Technology, 2012. Link
-
Bray, A. et al., gLBM: A GPU enabled Lattice Boltzmann Method Library, Journal of Open Source Software, Vol. 7 (70), 2555, 2022. Link
-
Mohamad, A. A., Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes, Springer International Publishing, ISBN 978-0-85729-455-5, 2019. Link
-
KrĂĽger, T. et al., The Lattice Boltzmann Method: Principles and Practice, Springer International Publishing, ISBN 978-3-319-44647-9, 2017. Link
Credits
Thanks to the following people for their suggestions:
-
Sebastian Geller - VirtualFluids
-
Andinet Enquobahrie - gLBM