{"id":15036143,"url":"https://github.com/tum-pbs/phiflow","last_synced_at":"2025-05-14T00:06:25.335Z","repository":{"id":38246527,"uuid":"225903949","full_name":"tum-pbs/PhiFlow","owner":"tum-pbs","description":"A differentiable PDE solving framework for machine learning","archived":false,"fork":false,"pushed_at":"2025-03-27T11:04:29.000Z","size":931578,"stargazers_count":1585,"open_issues_count":21,"forks_count":200,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-04-10T00:15:15.692Z","etag":null,"topics":["deep-learning","differentiable-simulations","fluid-simulations","neural-networks","pde-solver"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tum-pbs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-04T15:55:57.000Z","updated_at":"2025-04-08T23:28:58.000Z","dependencies_parsed_at":"2024-02-29T13:50:33.836Z","dependency_job_id":"a2be787c-c34f-40b7-a7af-d1a25be39393","html_url":"https://github.com/tum-pbs/PhiFlow","commit_stats":{"total_commits":2575,"total_committers":21,"mean_commits":"122.61904761904762","dds":"0.28699029126213593","last_synced_commit":"7896cc98d8245a0d62a006faa9b3d29ce073f1e0"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-pbs%2FPhiFlow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-pbs%2FPhiFlow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-pbs%2FPhiFlow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tum-pbs%2FPhiFlow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tum-pbs","download_url":"https://codeload.github.com/tum-pbs/PhiFlow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248131316,"owners_count":21052819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","differentiable-simulations","fluid-simulations","neural-networks","pde-solver"],"created_at":"2024-09-24T20:30:17.783Z","updated_at":"2025-04-10T00:15:32.605Z","avatar_url":"https://github.com/tum-pbs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![PhiFlow](docs/figures/Logo_DallE2_3_layout.png)\n\n![Build Status](https://github.com/tum-pbs/PhiFlow/actions/workflows/unit-tests.yml/badge.svg)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/phiflow.svg)](https://pypi.org/project/phiflow/)\n[![PyPI license](https://img.shields.io/pypi/l/phiflow.svg)](https://pypi.org/project/phiflow/)\n[![Code Coverage](https://codecov.io/gh/tum-pbs/PhiFlow/branch/develop/graph/badge.svg)](https://codecov.io/gh/tum-pbs/PhiFlow/branch/develop/)\n[![Google Collab Book](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tum-pbs/PhiFlow/blob/develop/docs/Fluids_Tutorial.ipynb)\n\n\nΦ\u003csub\u003eFlow\u003c/sub\u003e is an open-source simulation toolkit built for optimization and machine learning applications.\nIt is written mostly in Python and can be used with\n[NumPy](https://numpy.org/),\n[PyTorch](https://pytorch.org/),\n[Jax](https://github.com/google/jax)\nor [TensorFlow](https://www.tensorflow.org/).\nThe close integration with these machine learning frameworks allows it to leverage their automatic differentiation functionality,\nmaking it easy to build end-to-end differentiable functions involving both learning models and physics simulations.\n\n\n## Examples\n\n### Grids\n\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Fluid_Logo.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Fluid_Logo.gif\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Wake_Flow.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Wake_Flow.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Lid_Driven_Cavity.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Lid_Driven_Cavity.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Taylor_Green.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Taylor_Green.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eFluid logo\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eWake flow\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eLid-driven cavity\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eTaylor-Green\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Smoke_Plume.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Smoke_Plume.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Variable_Boundaries.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Variable_Boundaries.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Batched_Smoke.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Batched_Smoke.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Moving_Obstacles.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Moving_Obstacles.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eSmoke plume\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eVariable boundaries\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eParallel simulations\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eMoving obstacles\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Rotating_Bar.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Rotating_Bar.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Multi_Grid_Fluid.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Multi_Grid_Fluid.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Higher_order_Kolmogorov.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Higher_Order_Kolmogorov.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Heat_Flow.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Heat_Flow.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eRotating bar\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eMulti-grid fluid\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eHigher-order Kolmogorov\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eHeat flow\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Burgers.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Burgers.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Reaction_Diffusion.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Reaction_Diffusion.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Waves.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Waves.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/grids/Julia_Set.html\"\u003e\u003cimg src=\"docs/figures/examples/grids/Julia_Set.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eBurgers' equation\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eReaction-diffusion\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eWaves\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eJulia Set\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Mesh\n\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/mesh/FVM_BackStep.html\"\u003e\u003cimg src=\"docs/figures/examples/mesh/FVM_BackStep.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/mesh/FVM_Heat.html\"\u003e\u003cimg src=\"docs/figures/examples/mesh/FVM_Heat.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/mesh/Build_Mesh.html\"\u003e\u003cimg src=\"docs/figures/examples/mesh/Build_Mesh.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/mesh/FVM_Cylinder_GMsh.html\"\u003e\u003cimg src=\"docs/figures/examples/mesh/FVM_Cylinder_GMsh.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eBackward facing step\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eHeat flow\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eMesh construction\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eWake flow\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n\n### Particles\n\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/SPH.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/SPH.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/FLIP.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/FLIP.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/Streamlines.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/Streamlines.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/Terrain.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/Terrain.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eSPH\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eFLIP\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eStreamlines\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eTerrain\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/Gravity.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/Gravity.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/Billiards.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/Billiards.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/particles/Ropes.html\"\u003e\u003cimg src=\"docs/figures/examples/particles/Ropes.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eGravity\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eBilliards\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eRopes\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n### Optimization \u0026 Networks\n\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/Gradient_Descent.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/Gradient_Descent.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/Optimize_Throw.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/Optimize_Throw.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/Learn_Throw.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/Learn_Throw.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/PIV.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/PIV.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eGradient Descent\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOptimize throw\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eLearning to throw\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ePIV\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/Close_Packing.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/Close_Packing.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/Learn_Potential.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/Learn_Potential.png\"\u003e\u003c/a\u003e\u003c/td\u003e\n            \u003ctd style=\"width: 25%;\"\u003e\u003ca href=\"https://tum-pbs.github.io/PhiFlow/examples/optim/Differentiable_Pressure.html\"\u003e\u003cimg src=\"docs/figures/examples/optim/Differentiable_Pressure.jpg\"\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eClose packing\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eLearning Φ(x,y)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDifferentiable pressure\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n## Installation\n\nInstallation with [pip](https://pypi.org/project/pip/) on [Python 3.6](https://www.python.org/downloads/) and above:\n``` bash\n$ pip install phiflow\n```\nInstall [PyTorch](https://pytorch.org/), [TensorFlow](https://www.tensorflow.org/install) or [Jax](https://github.com/google/jax#installation) in addition to Φ\u003csub\u003eFlow\u003c/sub\u003e to enable machine learning capabilities and GPU execution.\nTo enable the web UI, also install [Dash](https://pypi.org/project/dash/).\nFor optimal GPU performance, you may compile the custom CUDA operators, see the [detailed installation instructions](https://tum-pbs.github.io/PhiFlow/Installation_Instructions.html).\n\nYou can verify your installation by running\n```bash\n$ python3 -c \"import phi; phi.verify()\"\n```\nThis will check for compatible PyTorch, Jax and TensorFlow installations as well.\n\n\n## Features\n\n* Tight integration with PyTorch, Jax and TensorFlow for straightforward neural network training with fully differentiable simulations that can [run on the GPU](https://tum-pbs.github.io/PhiFlow/GPU_Execution.html#enabling-gpu-execution).\n* Built-in PDE operations with focus on fluid phenomena, allowing for concise formulation of simulations.\n* Flexible, easy-to-use [web interface](https://tum-pbs.github.io/PhiFlow/Web_Interface.html) featuring live visualizations and interactive controls that can affect simulations or network training on the fly.\n* Object-oriented, vectorized design for expressive code, ease of use, flexibility and extensibility.\n* Reusable simulation code, independent of backend and dimensionality, i.e. the exact same code can run a 2D fluid sim using NumPy and a 3D fluid sim on the GPU using TensorFlow or PyTorch.\n* High-level linear equation solver with automated sparse matrix generation.\n\n\n## 📖 Documentation and Tutorials\n[**Documentation Overview**](https://tum-pbs.github.io/PhiFlow/)\n\u0026nbsp; • \u0026nbsp; [**▶ YouTube Tutorials**](https://www.youtube.com/playlist?list=PLYLhRkuWBmZ5R6hYzusA2JBIUPFEE755O)\n\u0026nbsp; • \u0026nbsp; [**API**](https://tum-pbs.github.io/PhiFlow/phi/)\n\u0026nbsp; • \u0026nbsp; [**Demos**](https://github.com/tum-pbs/PhiFlow/tree/master/demos)\n\u0026nbsp; • \u0026nbsp; [\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" height=16\u003e **Playground**](https://colab.research.google.com/drive/1zBlQbmNguRt-Vt332YvdTqlV4DBcus2S#offline=true\u0026sandboxMode=true)\n\nΦ-Flow builds on the tensor functionality from [Φ\u003csub\u003eML\u003c/sub\u003e](https://github.com/tum-pbs/PhiML).\nTo understand how Φ\u003csub\u003eFlow\u003c/sub\u003e works, check [named and typed dimensions](https://tum-pbs.github.io/PhiML/Introduction.html) first.\n\n### Getting started\n\n* [Installation instructions](https://tum-pbs.github.io/PhiFlow/Installation_Instructions.html)\n* [\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" height=16\u003e](https://colab.research.google.com/github/tum-pbs/PhiFlow/blob/develop/docs/Math_Introduction.ipynb) [Tensors](https://tum-pbs.github.io/PhiFlow/Math_Introduction.html)\n* [\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" height=16\u003e](https://colab.research.google.com/github/tum-pbs/PhiFlow/blob/develop/docs/Fluids_Tutorial.ipynb) [Fluids](https://tum-pbs.github.io/PhiFlow/Fluids_Tutorial.html)\n* [\u003cimg src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" height=16\u003e](https://colab.research.google.com/github/tum-pbs/PhiFlow/blob/develop/docs/Cookbook.ipynb) [Cookbook](https://tum-pbs.github.io/PhiFlow/Cookbook.html)\n\n### Physics\n\n* [Grid-based fluids](https://tum-pbs.github.io/PhiFlow/Fluid_Simulation.html)\n* [Higher-order schemes](https://tum-pbs.github.io/PhiFlow/Taylor_Green_Comparison.html)\n\n### Fields\n\n* [Overview](https://tum-pbs.github.io/PhiFlow/Fields.html)\n* [Staggered grids](https://tum-pbs.github.io/PhiFlow/Staggered_Grids.html)\n* [I/O](https://tum-pbs.github.io/PhiFlow/Reading_and_Writing_Data.html) \u0026 [scene format](https://tum-pbs.github.io/PhiFlow/Scene_Format_Specification.html)\n\n### Geometry\n\n* [Overview](https://tum-pbs.github.io/PhiFlow/Geometry.html)\n* [Signed distance fields](https://tum-pbs.github.io/PhiFlow/SDF.html)\n* [Heightmaps](https://tum-pbs.github.io/PhiFlow/Heightmaps.html)\n\n### Tensors\n\n* [▶️ Introduction Video](https://youtu.be/4nYwL8ZZDK8)\n* [Introduction Notebook](Math_Introduction.html)\n* [GPU execution](https://tum-pbs.github.io/PhiFlow/GPU_Execution.html#enabling-gpu-execution)\n\n### Other\n\n* [Φ\u003csub\u003eFlow\u003c/sub\u003e to Blender](https://github.com/intergalactic-mammoth/phiflow2blender) \n* [What to Avoid](https://tum-pbs.github.io/PhiFlow/Known_Issues.html): How to keep your code compatible with PyTorch, TensorFlow and Jax\n* [Legacy visualization](https://tum-pbs.github.io/PhiFlow/Visualization.html) \u0026 [Dash](https://tum-pbs.github.io/PhiFlow/Web_Interface.html) \u0026 [Console](https://tum-pbs.github.io/PhiFlow/ConsoleUI.html)\n* [Legacy physics overview](https://tum-pbs.github.io/PhiFlow/Physics.html)\n\n\n## 📄 Citation\n\nPlease use the following citation:\n\n```\n@inproceedings{holl2024phiflow,\n  title={${\\Phi}_{\\text{Flow}}$ ({PhiFlow}): Differentiable Simulations for PyTorch, TensorFlow and Jax},\n  author={Holl, Philipp and Thuerey, Nils},\n  booktitle={International Conference on Machine Learning},\n  year={2024},\n  organization={PMLR}\n}\n```\n\n## Publications\n\nWe will upload a whitepaper, soon.\nIn the meantime, please cite the ICLR 2020 paper.\n\n* [Learning to Control PDEs with Differentiable Physics](https://ge.in.tum.de/publications/2020-iclr-holl/), *Philipp Holl, Vladlen Koltun, Nils Thuerey*, ICLR 2020.\n* [Solver-in-the-Loop: Learning from Differentiable Physics to Interact with Iterative PDE-Solvers](https://arxiv.org/abs/2007.00016), *Kiwon Um, Raymond Fei, Philipp Holl, Robert Brand, Nils Thuerey*, NeurIPS 2020.\n* [Φ\u003csub\u003eFlow\u003c/sub\u003e: A Differentiable PDE Solving Framework for Deep Learning via Physical Simulations](https://montrealrobotics.ca/diffcvgp/), *Nils Thuerey, Kiwon Um, Philipp Holl*, DiffCVGP workshop at NeurIPS 2020.\n* [Physics-based Deep Learning](https://physicsbaseddeeplearning.org/intro.html) (book), *Nils Thuerey, Philipp Holl, Maximilian Mueller, Patrick Schnell, Felix Trost, Kiwon Um*, DiffCVGP workshop at NeurIPS 2020.\n* [Half-Inverse Gradients for Physical Deep Learning](https://arxiv.org/abs/2203.10131), *Patrick Schnell, Philipp Holl, Nils Thuerey*, ICLR 2022.\n* [Scale-invariant Learning by Physics Inversion](https://arxiv.org/abs/2109.15048), *Philipp Holl, Vladlen Koltun, Nils Thuerey*, NeurIPS 2022.\n\n\n## Benchmarks \u0026 Data Sets\n\nΦ\u003csub\u003eFlow\u003c/sub\u003e has been used in the creation of various public data sets, such as\n[PDEBench](https://github.com/pdebench/PDEBench) and [PDEarena](https://microsoft.github.io/pdearena/).\n\n[See more packages that use Φ\u003csub\u003eFlow\u003c/sub\u003e](https://github.com/tum-pbs/PhiFlow/network/dependents)\n\n## 🕒 Version History\n\nThe [Version history](https://github.com/tum-pbs/PhiFlow/releases) lists all major changes since release.\nThe releases are also listed on [PyPI](https://pypi.org/project/phiflow/).\n\n## 👥 Contributions\n\nContributions are welcome! Check out [this document](CONTRIBUTING.md) for guidelines.\n\n## Acknowledgements\n\nThis work is supported by the ERC Starting Grant realFlow (StG-2015-637014) and the Intel Intelligent Systems Lab.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftum-pbs%2Fphiflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftum-pbs%2Fphiflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftum-pbs%2Fphiflow/lists"}