
XLB is a fully differentiable 2D/3D Lattice Boltzmann Method (LBM) library that leverages hardware acceleration. It supports JAX and NVIDIA Warp backends, and is specifically designed to solve fluid dynamics problems in a computationally efficient and differentiable manner. Its unique combination of features positions it as an exceptionally suitable tool for applications in physics-based machine learning. With the new Warp backend, XLB now offers state-of-the-art performance for even faster simulations.
To get started with XLB, you can install it using pip. There are different installation options depending on your hardware and needs:
pip install xlb
This installation is for the JAX backend with CUDA support:
pip install "xlb[cuda]"
This installation is for the JAX backend with TPU support:
pip install "xlb[tpu]"
To install the latest development version from source:
pip install git+https://github.com/Autodesk/XLB.git
The changelog for the releases can be found here.
For examples to get you started please refer to the examples folder.
Please refer to the accompanying paper for benchmarks, validation, and more details about the library.
If you use XLB in your research, please cite the following paper:
@article{ataei2024xlb,
title={{XLB}: A differentiable massively parallel lattice {Boltzmann} library in {Python}},
author={Ataei, Mohammadmehdi and Salehipour, Hesam},
journal={Computer Physics Communications},
volume={300},
pages={109187},
year={2024},
publisher={Elsevier}
}

Simulation of a wind turbine based on the immersed boundary method.

On GPU in-situ rendering using PhantomGaze library (no I/O). Flow over a NACA airfoil using KBC Lattice Boltzmann Simulation with ~10 million cells.

DrivAer model in a wind-tunnel using KBC Lattice Boltzmann Simulation with approx. 317 million cells

Airflow in to, out of, and within a building (~400 million cells)

The stages of a fluid density field from an initial state to the emergence of the "XLB" pattern through deep learning optimization at timestep 200 (see paper for details)

Lid-driven Cavity flow at Re=100,000 (~25 million cells)
Equilibrium BC: In this boundary condition, the fluid populations are assumed to be in at equilibrium. Can be used to set prescribed velocity or pressure.
Full-Way Bounceback BC: In this boundary condition, the velocity of the fluid populations is reflected back to the fluid side of the boundary, resulting in zero fluid velocity at the boundary.
Half-Way Bounceback BC: Similar to the Full-Way Bounceback BC, in this boundary condition, the velocity of the fluid populations is partially reflected back to the fluid side of the boundary, resulting in a non-zero fluid velocity at the boundary.
Do Nothing BC: In this boundary condition, the fluid populations are allowed to pass through the boundary without any reflection or modification.
Zouhe BC: This boundary condition is used to impose a prescribed velocity or pressure profile at the boundary.
Extrapolation Outflow BC: A type of outflow boundary condition that uses extrapolation to avoid strong wave reflections.
Interpolated Bounceback BC: Interpolated bounce-back boundary condition for representing curved boundaries.
Note: Some of the work-in-progress features can be found in the branches of the XLB repository. For contributions to these features, please reach out.
🌐 Grid Refinement: Implementing adaptive mesh refinement techniques for enhanced simulation accuracy.
💾 Out-of-Core Computations: Enabling simulations that exceed available GPU memory, suitable for CPU+GPU coherent memory models such as NVIDIA's Grace Superchips (coming soon).
⚡ Multi-GPU Acceleration using Neon + Warp: Using Neon's data structure for improved scaling.
🗜️ GPU Accelerated Lossless Compression and Decompression: Implementing high-performance lossless compression and decompression techniques for larger-scale simulations and improved performance.
🌡️ Fluid-Thermal Simulation Capabilities: Incorporating heat transfer and thermal effects into fluid simulations.
🎯 Adjoint-based Shape and Topology Optimization: Implementing gradient-based optimization techniques for design optimization.
🧠 Machine Learning Accelerated Simulations: Leveraging machine learning to speed up simulations and improve accuracy.
📉 Reduced Order Modeling using Machine Learning: Developing data-driven reduced-order models for efficient and accurate simulations.
Contributions to these features are welcome. Please submit PRs for the Wishlist items.
🌊 Free Surface Flows: Simulating flows with free surfaces, such as water waves and droplets.
📡 Electromagnetic Wave Propagation: Simulating the propagation of electromagnetic waves.
🛩️ Supersonic Flows: Simulating supersonic flows.
🌊🧱 Fluid-Solid Interaction: Modeling the interaction between fluids and solid objects.
🧩 Multiphase Flow Simulation: Simulating flows with multiple immiscible fluids.
🔥 Combustion: Simulating combustion processes and reactive flows.
🪨 Particle Flows and Discrete Element Method: Incorporating particle-based methods for granular and particulate flows.
🔧 Better Geometry Processing Pipelines: Improving the handling and preprocessing of complex geometries for simulations.