Skip to content
forked from lettucecfd/lettuce

Computational Fluid Dynamics based on PyTorch and the Lattice Boltzmann Method

License

Notifications You must be signed in to change notification settings

PhiSpel/lettuce

 
 

Repository files navigation

https://raw.githubusercontent.com/lettucecfd/lettuce/master/.source/img/logo_lettuce_typo.png

CI Status Documentation Status

GPU-accelerated Lattice Boltzmann Simulations in Python

Lettuce is a Computational Fluid Dynamics framework based on the lattice Boltzmann method (LBM).

  • GPU-Accelerated Computation: Utilizes PyTorch for high performance and efficient GPU utilization.
  • Rapid Prototyping: Supports both 2D and 3D simulations for quick and reliable analysis.
  • Advanced Techniques: Integrates neural networks and automatic differentiation to enhance LBM.
  • Optimized Performance: Includes custom PyTorch extensions for native CUDA kernels.

Resources

Getting Started

To find some very simple examples of how to use lettuce, please have a look at the examples. These will guide you through lettuce's main features. Please ensure you have Jupyter installed to run the Jupyter notebooks.

The simplest example is:

https://github.com/lettucecfd/lettuce/blob/ef9830b59c6ad50e02fdf0ce24cc47ea520aa354/examples/00_simplest_TGV.py#L6-L21

Installation

  • Install the anaconda or miniconda package manager from https://www.anaconda.org

  • Clone this repository from github and change to it:

    git clone https://github.com/lettucecfd/lettuce
    cd lettuce
    
  • Update conda, create a new conda environment and activate it:

    conda update conda
    conda create -n lettuce
    conda activate lettuce
    
  • Follow the recommendations at https://pytorch.org/get-started/locally/ to install pytorch based on your GPU's CUDA version. You may need to install the nvidia toolkit. You may follow the instructions at https://developer.nvidia.com/cuda-downloads. You may need to check the compatibility of your NVIDIA driver with the desired CUDA version: https://docs.nvidia.com/deploy/cuda-compatibility/. To get your CUDA version, run:

    nvcc --version
    
  • For CUDA 12.1 (if supported by your GPU) use:

    conda install pytorch pytorch-cuda=12.1 -c pytorch -c nvidia
    
  • Install the remaining dependencies. _This will not include CUDA-support unless you installed pytorch-cuda!_:

    conda activate lettuce
    conda install --file requirements.txt -c pytorch -c nvidia -c conda-forge
    
  • NOTE: Sometimes, the installation does not properly set the CUDA_HOME variable. In this case, you may install cudatoolkit and set CUDA_HOME to the package directory (it should containa /bin/nvcc/ subdirectory!).

  • If you want to only use lettuce, run the installation (from the lettuce base directory!). Ideally, use [PEP 517](https://peps.python.org/pep-0517/):

    pip install --use-pep517 .
    
  • If you are a developer, add the changeable-installation-flag (-e):

    pip install --use-pep517 -e .
    
  • Check out the convergence order, running on CPU:

    lettuce --no-cuda convergence
    
  • Run the test cases:

    pytest tests
    
  • For running a CUDA-driven LBM simulation on one GPU omit the --no-cuda. If CUDA is not found, make sure that cuda drivers are installed and compatible with the installed cudatoolkit (see conda install command above).

  • Check out the performance, running on GPU:

    lettuce benchmark
    

Citation

If you use Lettuce in your research, please cite the following paper:

@inproceedings{bedrunka2021lettuce,
  title={Lettuce: PyTorch-Based Lattice Boltzmann Framework},
  author={Bedrunka, Mario Christopher and Wilde, Dominik and Kliemank, Martin and Reith, Dirk and Foysi, Holger and Kr{\"a}mer, Andreas},
  booktitle={High Performance Computing: ISC High Performance Digital 2021 International Workshops, Frankfurt am Main, Germany, June 24--July 2, 2021, Revised Selected Papers},
  pages={40},
  organization={Springer Nature}
}

Credits

We use the following third-party packages:

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

License

  • Free software: MIT license, as found in the LICENSE file.

About

Computational Fluid Dynamics based on PyTorch and the Lattice Boltzmann Method

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.6%
  • Other 0.4%