ΦFlow is an open-source simulation toolkit built for optimization and machine learning applications. It is written mostly in Python and can be used with NumPy, PyTorch, Jax or TensorFlow. The close integration with these machine learning frameworks allows it to leverage their automatic differentiation functionality, making it easy to build end-to-end differentiable functions involving both learning models and physics simulations.
Fluid logo | Wake flow | Lid-driven cavity | Taylor-Green |
Smoke plume | Variable boundaries | Parallel simulations | Moving obstacles |
Rotating bar | Multi-grid fluid | Higher-order Kolmogorov | Heat flow |
Burgers' equation | Reaction-diffusion | Waves | Julia Set |
Backward facing step | Heat flow | Mesh construction | Wake flow |
SPH | FLIP | Streamlines | Terrain |
Gravity | Billiards | Ropes |
Gradient Descent | Optimize throw | Learning to throw | PIV |
Close packing | Learning Φ(x,y) | Differentiable pressure |
Installation with pip on Python 3.6 and above:
$ pip install phiflow
Install PyTorch, TensorFlow or Jax in addition to ΦFlow to enable machine learning capabilities and GPU execution. To enable the web UI, also install Dash. For optimal GPU performance, you may compile the custom CUDA operators, see the detailed installation instructions.
You can verify your installation by running
$ python3 -c "import phi; phi.verify()"
This will check for compatible PyTorch, Jax and TensorFlow installations as well.
Documentation Overview • ▶ YouTube Tutorials • API • Demos • Playground
Φ-Flow builds on the tensor functionality from ΦML. To understand how ΦFlow works, check named and typed dimensions first.
Please use the following citation:
@inproceedings{holl2024phiflow,
title={${Phi}_{text{Flow}}$ ({PhiFlow}): Differentiable Simulations for PyTorch, TensorFlow and Jax},
author={Holl, Philipp and Thuerey, Nils},
booktitle={International Conference on Machine Learning},
year={2024},
organization={PMLR}
}
We will upload a whitepaper, soon. In the meantime, please cite the ICLR 2020 paper.
ΦFlow has been used in the creation of various public data sets, such as PDEBench and PDEarena.
See more packages that use ΦFlow
The Version history lists all major changes since release. The releases are also listed on PyPI.
Contributions are welcome! Check out this document for guidelines.
This work is supported by the ERC Starting Grant realFlow (StG-2015-637014) and the Intel Intelligent Systems Lab.