- thesis.pdf
- Automatically deployed from
docs
folder
- Automatically deployed from
- For an informal overview of some basic concepts, see this blog post.
This repository contains the accompanying code for our Scientific Students' Assocation project on Controlling Laplacian Eigenfluids.
In our work, we investigate the use of Laplacian Eigenfunctions to model and control fluid flow. We make use of an explicit description of our simulation domain to derive gradients of the physical simulation, enabling neural network agents to learn to control the physical process to achieve desired outcomes.
- ΦFlow
- dash
- Pytorch
- Tensorflow -- as an alternative backend
- Jupyter notebook -- for running the notebooks
All of these can be installed via pip on Python 3.6 and above:
pip install phiflow==2.2.2 dash torch torchvision tensorflow
pip install notebook
jupyter notebook
docs/
: LaTeX source of the thesissrc/
: Python/ΦFlow source code, imported in the notebooks*.ipynb
: interactive notebook filesoriginal-code/
: (see below)taichi/
: (see below)
The taichi
folder contains a minimal taichi
implementation of visualizing the first 100 basis fields.
pip install taichi==1.2.1
python taichi/main.py
- Viscosity
Y
: turn ONT
: turn OFF
- Step basis fields
J
: Next basis field (increment)K
: Previous basis field (decrement)
V
: Visualize (plot) current velocity field with matplotlib- the title displays the current base coefficient vector (doesn't display properly if many basis fields are used)
R
: Random basis coefficients
Hop into taichi/main.py
, to change the number of basis fields.
(Look for N=...
.)
The original-code
folder contains the original implementation of Fluid
Dynamics using Laplacian Eigenfunctions by Tyler de Witt, Christian Lessig, and
Eugene Fiume, downloaded from the project's website:
http://www.dgp.toronto.edu/~tyler/fluids/.
In the early phases of the project, it was used to print values for checking the
correctness of our implementation.
cd original-code
javac LE.java #compile
java LE #run
java LE > output #print to an output file
python visu.py #plot the velocity field with matplotlib for comparison
(For a (more involved) C++ implementation, check out the source code for the paper Scalable Laplacian Eigenfluids.)