initial checkin
This commit is contained in:
1 parent
bbcc69b952
commit
4703b0ee07
15 files changed
+1647
No files matched your search
+28
@@ -0,0 +1,28 @@
|
||||
# Book settings
|
||||
# Learn more at https://jupyterbook.org/customize/config.html
|
||||
|
||||
title: Physics-based Deep Learning
|
||||
author: TUM-I15
|
||||
logo: resources/logo.png
|
||||
|
||||
# Force re-execution of notebooks on each build.
|
||||
# See https://jupyterbook.org/content/execute.html
|
||||
execute:
|
||||
execute_notebooks: force
|
||||
|
||||
# Define the name of the latex output file for PDF builds
|
||||
latex:
|
||||
latex_documents:
|
||||
targetname: book.tex
|
||||
|
||||
# Information about where the book exists on the web
|
||||
repository:
|
||||
url: https://github.com/executablebooks/jupyter-book-TODO # Online location of your book
|
||||
path_to_book: docs # Optional path to your book, relative to the repository root
|
||||
branch: master # Which branch of the repository should be used when creating links (optional)
|
||||
|
||||
# Add GitHub buttons to your book
|
||||
# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository
|
||||
html:
|
||||
use_issues_button: true
|
||||
use_repository_button: true
|
||||
@@ -0,0 +1,15 @@
|
||||
# Table of content
|
||||
# Learn more at https://jupyterbook.org/customize/toc.html
|
||||
#
|
||||
- file: intro
|
||||
- file: overview
|
||||
- file: supervised
|
||||
- file: physicalloss
|
||||
sections:
|
||||
- file: physicalloss-code
|
||||
- file: diffphys
|
||||
- file: jupyter-book-reference
|
||||
sections:
|
||||
- file: markdown
|
||||
- file: notebooks
|
||||
- file: references
|
||||
@@ -0,0 +1,6 @@
|
||||
Differentiable Simulations
|
||||
=======================
|
||||
|
||||
... are much more powerful ...
|
||||
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
Welcome ...
|
||||
============================
|
||||
|
||||
Welcome to the Physics-based Deep Learning Book 👋
|
||||
|
||||
**TL;DR**: This document targets
|
||||
a veriety of combinations of physical simulations with deep learning.
|
||||
As much as possible, the algorithms will come with hands-on code examples to quickly get started.
|
||||
Beyond standard _supervised_ learning from data, we'll look at loss constraints, and
|
||||
more tightly coupled learning algorithms with differentiable simulations.
|
||||
|
||||
As a _sneak preview_, in the next chapters we'll show:
|
||||
|
||||
- How to train networks to infer fluid flow solutions around shapes like airfoils in one go, i.e., without needing a simulator.
|
||||
|
||||
- We'll show how to use model equations as residual to train networks that represent solutions, and how to improve upon this behavior by using differentiable simulations.
|
||||
|
||||
- Even more tightly coupling a full _rough_ simulator for control problems is another topic. E.g., we'll demonstrate how to circumvent the convergence problems of standard reinforcement learning techniques by leveraging simulators in the training loop.
|
||||
|
||||
This _book_, where book stands for a collection of text, equations, images and code examples,
|
||||
is maintained by the
|
||||
[TUM Physics-based Simulation Group](https://ge.in.tum.de). Feel free to contact us via
|
||||
[old fashioned email](mailto:i15ge@cs.tum.edu) if you have any comments.
|
||||
If you find mistakes, please also let us know! We're aware that this document is far from perfect,
|
||||
and we're eager to improve it. Thanks in advance!
|
||||
|
||||
TODO, add teaser pic
|
||||
|
||||
## Thanks!
|
||||
|
||||
The contents of the following files would not have been possible without the help of many people. Here's an alphabetical list. Big kudos to everyone 🙏
|
||||
|
||||
- Mr. X
|
||||
- Ms. y
|
||||
- ...
|
||||
|
||||
|
||||
|
||||
% ----------------
|
||||
|
||||
|
||||
===
|
||||
|
||||
## Planned content, loose collection of notes and TODOs:
|
||||
|
||||
General physics & dl , intro & textual overview
|
||||
more general intro: https://github.com/thunil/Physics-Based-Deep-Learning
|
||||
|
||||
Supervised? Airfoils? Liwei, simple example? app: optimization, shape opt w surrogates
|
||||
|
||||
- AIAA supervised learning , idp_weissenov/201019-upd-arxiv-v2/ {cite}`thuerey2020deepFlowPred`
|
||||
skepticism? , started colab -> https://colab.research.google.com/drive/11KUe5Ybuprd7_qmNTe1nvQVUz3W6gRUo
|
||||
torch version 1.7 [upd from Liwei?]
|
||||
|
||||
vs. PINNs [alt.: neural ODEs , PDE net?] , all using GD (optional, PINNs could use BFGS)
|
||||
[PINNs], phiflow example -> convert to colab
|
||||
|
||||
- PINNs -> are unsupervised a la tompson; all DL NNs are "supervised" during learning, unsup just means not precomputed and goes through function
|
||||
|
||||
- add image | NN | <> | Loss | , backprop; (bring back every section, add variants for other methods?)
|
||||
|
||||
- discuss CG solver, tompson as basic ''unsupervisedd'' example?
|
||||
|
||||
Diff phys, start with overview of idea: gradients via autodiff, then run GD
|
||||
(TODO include squared func Patrick?)
|
||||
|
||||
- Differentiable Physics (w/o network) , {cite}`holl2019pdecontrol`
|
||||
-> phiflow colab notebook good start, but needs updates (see above Jan2)
|
||||
illustrate and discuss gradients -> mult. for chain rule; (later: more general PG chain w func composition)
|
||||
|
||||
- SOL_201019-finals_Solver-in-the-Loop-Main-final.pdf , {cite}`um2020sol`
|
||||
numerical errors, how to include in jupyter / colab?
|
||||
|
||||
- ICLR_190925-ICLR-final_1d8cf33bb3c8825e798f087d6cd35f2c7c062fd4.pdf alias
|
||||
PDE control, control focused
|
||||
https://github.com/holl-/PDE-Control -> update to new version?
|
||||
|
||||
beyond GD: re-cap newton & co
|
||||
|
||||
Phys grad (PGs) as fundamental improvement, PNAS case; add more complex one?
|
||||
PG update of poisson eq? see PNAS-template-main.tex.bak01-poissonUpdate , explicitly lists GD and PG updates
|
||||
|
||||
PGa 2020 Sept, content: ML & opt
|
||||
Gradients.pdf, -> overleaf-physgrad/
|
||||
|
||||
PGb 201002-beforeVac, content: v1,v2,old - more PG focused
|
||||
-> general intro versions
|
||||
|
||||
[MISSING, time series, sequence prediction?] {cite}`wiewel2019lss,bkim2019deep,wiewel2020lsssubdiv`
|
||||
[BAYES , prob?]
|
||||
[unstruct / lagrangian] {cite}`prantl2019tranquil,ummenhofer2019contconv`
|
||||
Outlook
|
||||
@@ -0,0 +1,5 @@
|
||||
Jupyter Book Reference Stuff
|
||||
=======================
|
||||
|
||||
There are many ways to write content in Jupyter Book. This short section
|
||||
covers a few tips for how to do so.
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
# Markdown Files
|
||||
|
||||
Whether you write your book's content in Jupyter Notebooks (`.ipynb`) or
|
||||
in regular markdown files (`.md`), you'll write in the same flavor of markdown
|
||||
called **MyST Markdown**.
|
||||
|
||||
## What is MyST?
|
||||
|
||||
MyST stands for "Markedly Structured Text". It
|
||||
is a slight variation on a flavor of markdown called "CommonMark" markdown,
|
||||
with small syntax extensions to allow you to write **roles** and **directives**
|
||||
in the Sphinx ecosystem.
|
||||
|
||||
## What are roles and directives?
|
||||
|
||||
Roles and directives are two of the most powerful tools in Jupyter Book. They
|
||||
are kind of like functions, but written in a markup language. They both
|
||||
serve a similar purpose, but **roles are written in one line**, whereas
|
||||
**directives span many lines**. They both accept different kinds of inputs,
|
||||
and what they do with those inputs depends on the specific role or directive
|
||||
that is being called.
|
||||
|
||||
### Using a directive
|
||||
|
||||
At its simplest, you can insert a directive into your book's content like so:
|
||||
|
||||
````
|
||||
```{mydirectivename}
|
||||
My directive content
|
||||
```
|
||||
````
|
||||
|
||||
This will only work if a directive with name `mydirectivename` already exists
|
||||
(which it doesn't). There are many pre-defined directives associated with
|
||||
Jupyter Book. For example, to insert a note box into your content, you can
|
||||
use the following directive:
|
||||
|
||||
````
|
||||
```{note}
|
||||
Here is a note
|
||||
```
|
||||
````
|
||||
|
||||
This results in:
|
||||
|
||||
```{note}
|
||||
Here is a note
|
||||
```
|
||||
|
||||
In your built book.
|
||||
|
||||
For more information on writing directives, see the
|
||||
[MyST documentation](https://myst-parser.readthedocs.io/).
|
||||
|
||||
|
||||
### Using a role
|
||||
|
||||
Roles are very similar to directives, but they are less-complex and written
|
||||
entirely on one line. You can insert a role into your book's content with
|
||||
this pattern:
|
||||
|
||||
```
|
||||
Some content {rolename}`and here is my role's content!`
|
||||
```
|
||||
|
||||
Again, roles will only work if `rolename` is a valid role's name. For example,
|
||||
the `doc` role can be used to refer to another page in your book. You can
|
||||
refer directly to another page by its relative path. For example, the
|
||||
role syntax `` {doc}`intro` `` will result in: {doc}`intro`.
|
||||
|
||||
For more information on writing roles, see the
|
||||
[MyST documentation](https://myst-parser.readthedocs.io/).
|
||||
|
||||
|
||||
% ### Adding a citation
|
||||
%
|
||||
% You can also cite references that are stored in a `bibtex` file. For example,
|
||||
% the following syntax: `` {cite}`holdgraf_evidence_2014` `` will render like
|
||||
% this: {cite}`holdgraf_evidence_2014`.
|
||||
%
|
||||
% Moreoever, you can insert a bibliography into your page with this syntax:
|
||||
% The `{bibliography}` directive must be used for all the `{cite}` roles to
|
||||
% render properly.
|
||||
% For example, if the references for your book are stored in `references.bib`,
|
||||
% then the bibliography is inserted with:
|
||||
%
|
||||
% ````
|
||||
% ```{bib liography} referenc es.bib
|
||||
% ```
|
||||
% ````
|
||||
%
|
||||
% Resulting in a rendered bibliography that looks like:
|
||||
%
|
||||
% ```{bib liography} refere nces.bib
|
||||
% ```
|
||||
|
||||
|
||||
### Executing code in your markdown files
|
||||
|
||||
If you'd like to include computational content inside these markdown files,
|
||||
you can use MyST Markdown to define cells that will be executed when your
|
||||
book is built. Jupyter Book uses *jupytext* to do this.
|
||||
|
||||
First, add Jupytext metadata to the file. For example, to add Jupytext metadata
|
||||
to this markdown page, run this command:
|
||||
|
||||
```
|
||||
jupyter-book myst init markdown.md
|
||||
```
|
||||
|
||||
Once a markdown file has Jupytext metadata in it, you can add the following
|
||||
directive to run the code at build time:
|
||||
|
||||
````
|
||||
```{code-cell}
|
||||
print("Here is some code to execute")
|
||||
```
|
||||
````
|
||||
|
||||
When your book is built, the contents of any `{code-cell}` blocks will be
|
||||
executed with your default Jupyter kernel, and their outputs will be displayed
|
||||
in-line with the rest of your content.
|
||||
|
||||
For more information about executing computational content with Jupyter Book,
|
||||
see [The MyST-NB documentation](https://myst-nb.readthedocs.io/).
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Content with notebooks\n",
|
||||
"\n",
|
||||
"You can also create content with Jupyter Notebooks. This means that you can include\n",
|
||||
"code blocks and their outputs in your book.\n",
|
||||
"\n",
|
||||
"## Markdown + notebooks\n",
|
||||
"\n",
|
||||
"As it is markdown, you can embed images, HTML, etc into your posts!\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"You an also $add_{math}$ and\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"math^{blocks}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"or\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\begin{aligned}\n",
|
||||
"\\mbox{mean} la_{tex} \\\\ \\\\\n",
|
||||
"math blocks\n",
|
||||
"\\end{aligned}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"But make sure you \\$Escape \\$your \\$dollar signs \\$you want to keep!\n",
|
||||
"\n",
|
||||
"## MyST markdown\n",
|
||||
"\n",
|
||||
"MyST markdown works in Jupyter Notebooks as well. For more information about MyST markdown, check\n",
|
||||
"out [the MyST guide in Jupyter Book](https://jupyterbook.org/content/myst.html),\n",
|
||||
"or see [the MyST markdown documentation](https://myst-parser.readthedocs.io/en/latest/).\n",
|
||||
"\n",
|
||||
"## Code blocks and outputs\n",
|
||||
"\n",
|
||||
"Jupyter Book will also embed your code blocks and output in your book.\n",
|
||||
"For example, here's some sample Matplotlib code:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from matplotlib import rcParams, cycler\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"plt.ion()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Fixing random state for reproducibility\n",
|
||||
"np.random.seed(19680801)\n",
|
||||
"\n",
|
||||
"N = 10\n",
|
||||
"data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)]\n",
|
||||
"data = np.array(data).T\n",
|
||||
"cmap = plt.cm.coolwarm\n",
|
||||
"rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"from matplotlib.lines import Line2D\n",
|
||||
"custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),\n",
|
||||
" Line2D([0], [0], color=cmap(.5), lw=4),\n",
|
||||
" Line2D([0], [0], color=cmap(1.), lw=4)]\n",
|
||||
"\n",
|
||||
"fig, ax = plt.subplots(figsize=(10, 5))\n",
|
||||
"lines = ax.plot(data)\n",
|
||||
"ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']);"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"There is a lot more that you can do with outputs (such as including interactive outputs)\n",
|
||||
"with your book. For more information about this, see [the Jupyter Book documentation](https://jupyterbook.org)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.0"
|
||||
},
|
||||
"widgets": {
|
||||
"application/vnd.jupyter.widget-state+json": {
|
||||
"state": {},
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
Overview
|
||||
============================
|
||||
|
||||
The following "book" of targets _"Physics-Based Deep Learning"_ techniques
|
||||
(PBDL), i.e., the field of methods with combinations of physical modeling and
|
||||
deep learning (DL) techniques. Here, DL will typically refer to methods based
|
||||
on artificial neural networks. The general direction of PBDL represents a very
|
||||
active, quickly growing and exciting field of research. As such, this collection
|
||||
of materials is a living document, and will grow and change over time. Feel free
|
||||
to contribute 😀
|
||||
|
||||
[TUM Physics-based Simulation Group](https://ge.in.tum.de).
|
||||
|
||||
[Link collection](https://github.com/thunil/Physics-Based-Deep-Learning)
|
||||
|
||||
## Motivation
|
||||
|
||||
....
|
||||
|
||||
## Categorization
|
||||
|
||||
Within the area of _physics-based deep learning_,
|
||||
we can distinguish a variety of different
|
||||
approaches, from targeting designs, constraints, combined methods, and
|
||||
optimizations to applications. More specifically, all approaches either target
|
||||
_forward_ simulations (predicting state or temporal evolution) or _inverse_
|
||||
problems (e.g., obtaining a parametrization for a physical system from
|
||||
observations).
|
||||
|
||||

|
||||
|
||||
No matter whether we're considering forward or inverse problem,
|
||||
the most crucial differentiation for the following topics lies in the
|
||||
nature of the integration between DL techniques
|
||||
and the domain knowledge, typically in the form of model euqations.
|
||||
Looking ahead, we will particularly aim for a very tight intgration
|
||||
of the two, that goes beyond soft-constraints in loss functions.
|
||||
Taking a global perspective, the following three categories can be
|
||||
identified to categorize _physics-based deep learning_ (PBDL)
|
||||
techniques:
|
||||
|
||||
- _Data-driven_: the data is produced by a physical system (real or simulated),
|
||||
but no further interaction exists.
|
||||
|
||||
- _Loss-terms_: the physical dynamics (or parts thereof) are encoded in the
|
||||
loss function, typically in the form of differentiable operations. The
|
||||
learning process can repeatedly evaluate the loss, and usually receives
|
||||
gradients from a PDE-based formulation.
|
||||
|
||||
- _Interleaved_: the full physical simulation is interleaved and combined with
|
||||
an output from a deep neural network; this requires a fully differentiable
|
||||
simulator and represents the tightest coupling between the physical system and
|
||||
the learning process. Interleaved approaches are especially important for
|
||||
temporal evolutions, where they can yield an estimate of future behavior of the
|
||||
dynamics.
|
||||
|
||||
Thus, methods can be roughly categorized in terms of forward versus inverse
|
||||
solve, and how tightly the physical model is integrated into the
|
||||
optimization loop that trains the deep neural network. Here, especially approaches
|
||||
that leverage _differentiable physics_ allow for very tight integration
|
||||
of deep learning and numerical simulation methods.
|
||||
|
||||
The goal of this document is to introduce the different PBDL techniques,
|
||||
ordered in terms of growing tightness of the integration, give practical
|
||||
starting points with code examples, and illustrate pros and cons of the
|
||||
different approaches. In particular, it's important to know in which scenarios
|
||||
each of the different techniques is particularly useful.
|
||||
|
||||
|
||||
@@ -0,0 +1,400 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# PINN Example\n",
|
||||
"Burgers example $u=...$\n",
|
||||
"\n",
|
||||
"at $t=0$ , sine function (boundary_t0)\n",
|
||||
"\n",
|
||||
"at sides $t \\in [0,1], u=0$ (open_boundary)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Could not load resample cuda libraries: CUDA binaries not found at /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/util.py:119: The name tf.AUTO_REUSE is deprecated. Please use tf.compat.v1.AUTO_REUSE instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:12: The name tf.RunOptions is deprecated. Please use tf.compat.v1.RunOptions instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/profiling.py:13: The name tf.RunMetadata is deprecated. Please use tf.compat.v1.RunMetadata instead.\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/flow.py:15: UserWarning: TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\n",
|
||||
"$ python setup.py tf_cuda\n",
|
||||
"before reinstalling phiflow.\n",
|
||||
" warnings.warn(\"TensorFlow-CUDA solver is not available. To compile it, download phiflow sources and run\\n$ python setup.py tf_cuda\\nbefore reinstalling phiflow.\")\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# PINN in jupyter test, from \n",
|
||||
"# https://github.com/tum-pbs/PhiFlow/blob/1.5/demos/PINN_burgers.py\n",
|
||||
"# https://colab.research.google.com/drive/1S21OY8hzh1oZK2wQyL3BNXvSlrMTtRbV#offline=true&sandboxMode=true\n",
|
||||
"\n",
|
||||
"from phi.tf.flow import *\n",
|
||||
"\n",
|
||||
"#rnd = TF_BACKEND # sample different points in the domain each iteration\n",
|
||||
"rnd = math.choose_backend(1) # use same random points for all iterations\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def network(x, t):\n",
|
||||
" \"\"\" Dense neural network with 8 hidden layers and 3021 parameters in total.\n",
|
||||
" Parameters will only be allocated once (auto reuse).\n",
|
||||
" \"\"\"\n",
|
||||
" y = math.stack([x, t], axis=-1)\n",
|
||||
" for i in range(8):\n",
|
||||
" y = tf.layers.dense(y, 20, activation=tf.math.tanh, name='layer%d' % i, reuse=tf.AUTO_REUSE)\n",
|
||||
" return tf.layers.dense(y, 1, activation=None, name='layer_out', reuse=tf.AUTO_REUSE)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def f(u, x, t):\n",
|
||||
" \"\"\" Physics-based loss function with Burgers equation \"\"\"\n",
|
||||
" u_t = gradients(u, t)\n",
|
||||
" u_x = gradients(u, x)\n",
|
||||
" u_xx = gradients(u_x, x)\n",
|
||||
" return u_t + u*u_x - (0.01 / np.pi) * u_xx\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def boundary_t0(N):\n",
|
||||
" x = rnd.random_uniform([N], -1, 1)\n",
|
||||
" t = rnd.zeros_like(x)\n",
|
||||
" u = - math.sin(np.pi * x)\n",
|
||||
" return x, t, u\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def open_boundary(N):\n",
|
||||
" t = rnd.random_uniform([N], 0, 1)\n",
|
||||
" x = math.concat([math.zeros([N//2]) + 1, math.zeros([N//2]) - 1], axis=0)\n",
|
||||
" u = math.zeros([N])\n",
|
||||
" return x, t, u\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Setup sampling points in inner domain"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"WARNING:tensorflow:From <ipython-input-1-832bb7c21ee0>:17: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
|
||||
"Instructions for updating:\n",
|
||||
"Use keras.layers.Dense instead.\n",
|
||||
"WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/layers/core.py:187: Layer.apply (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n",
|
||||
"Instructions for updating:\n",
|
||||
"Please use `layer.__call__` method instead.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# generate array with positions: \n",
|
||||
"# -1 to 1 spatial with 128 cells\n",
|
||||
"# 0 to 1 in time with 1+32 timesteps\n",
|
||||
"grids_xt = np.meshgrid(np.linspace(-1, 1, 128), np.linspace(0, 1, 33), indexing='ij')\n",
|
||||
"grid_x, grid_t = [tf.convert_to_tensor(t, tf.float32) for t in grids_xt]\n",
|
||||
"\n",
|
||||
"# # gx ,gt = \n",
|
||||
"# #[tf.convert_to_tensor(t, tf.float32) \n",
|
||||
"# # for t in np.meshgrid( np.linspace(-1, 1, 128), np.linspace(0, 1, 33), indexing='ij')]\n",
|
||||
"\n",
|
||||
"# for t in np.meshgrid( np.linspace(-1, 1, 128), np.linspace(0, 1, 33), indexing='ij'):\n",
|
||||
"# print(format(t.shape))\n",
|
||||
"# print(format(t))\n",
|
||||
"\n",
|
||||
"# #tx = np.meshgrid( np.linspace(-1, 1, 128), indexing='ij')\n",
|
||||
"# print(format(grid_x))\n",
|
||||
"# print(format(grid_x.shape))\n",
|
||||
"\n",
|
||||
"# create 4D tensor with batch and channel dimensions in addition to space and time\n",
|
||||
"# in this case gives shape=(1, 128, 33, 1)\n",
|
||||
"grid_u = math.expand_dims(network(grid_x, grid_t))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"Helper to show"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"(1, 128, 33, 1)\n",
|
||||
"(128, 528)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"needs_background": "light"
|
||||
},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# test image output\n",
|
||||
"import matplotlib.pyplot\n",
|
||||
"print(grid_u.shape)\n",
|
||||
"\n",
|
||||
"session = Session(None)\n",
|
||||
"session.initialize_variables()\n",
|
||||
"\n",
|
||||
"def show_state(a):\n",
|
||||
" global session\n",
|
||||
" a = session.run(a)\n",
|
||||
"\n",
|
||||
" # we only have 33 time steps, blow up by a factor of 2^4 to make it easier to see\n",
|
||||
" # (could also be done with more evaluations of network)\n",
|
||||
" for i in range(4):\n",
|
||||
" a = np.concatenate( [a,a] , axis=3)\n",
|
||||
" a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n",
|
||||
"\n",
|
||||
" print(a.shape)\n",
|
||||
" matplotlib.pyplot.imshow(a, origin='lower', cmap='magma')\n",
|
||||
" \n",
|
||||
"show_state(grid_u)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 49,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Step 0, loss: 0.218346\n",
|
||||
"Step 500, loss: 0.055519\n",
|
||||
"Step 1000, loss: 0.047574\n",
|
||||
"Step 1500, loss: 0.042237\n",
|
||||
"Step 2000, loss: 0.039294\n",
|
||||
"Step 2500, loss: 0.037725\n",
|
||||
"Step 3000, loss: 0.035842\n",
|
||||
"Step 3500, loss: 0.033851\n",
|
||||
"Step 4000, loss: 0.032361\n",
|
||||
"Step 4500, loss: 0.031215\n",
|
||||
"Step 5000, loss: 0.030114\n",
|
||||
"Step 5500, loss: 0.029610\n",
|
||||
"Step 6000, loss: 0.028632\n",
|
||||
"Step 6500, loss: 0.028075\n",
|
||||
"Step 7000, loss: 0.027415\n",
|
||||
"Step 7500, loss: 0.028114\n",
|
||||
"Step 8000, loss: 0.026602\n",
|
||||
"Step 8500, loss: 0.026124\n",
|
||||
"Step 9000, loss: 0.026635\n",
|
||||
"Step 9500, loss: 0.025445\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Boundary loss\n",
|
||||
"num_sample_points_bnd = 100\n",
|
||||
"x_bc, t_bc, u_bc = [math.concat([v_t0, v_x], axis=0) for v_t0, v_x in zip(boundary_t0(num_sample_points_bnd), open_boundary(num_sample_points_bnd))]\n",
|
||||
"#with app.model_scope():\n",
|
||||
"loss_u = math.l2_loss(network(x_bc, t_bc)[:, 0] - u_bc) # normalizes by first dimension, N_bc\n",
|
||||
"\n",
|
||||
"# Physics loss inside of domain\n",
|
||||
"num_sample_points_inner = 1000\n",
|
||||
"x_ph, t_ph = tf.convert_to_tensor(rnd.random_uniform([num_sample_points_inner], -1, 1)), tf.convert_to_tensor(rnd.random_uniform([num_sample_points_inner], 0, 1))\n",
|
||||
"loss_ph = math.l2_loss(f(network(x_ph, t_ph)[:, 0], x_ph, t_ph)) # normalizes by first dimension, N_ph\n",
|
||||
"\n",
|
||||
"# Combine\n",
|
||||
"ph_factor = 1.\n",
|
||||
"loss = loss_u + ph_factor * loss_ph # allows us to control the influence of loss_ph \n",
|
||||
"\n",
|
||||
"# TODO, try ADAM?\n",
|
||||
"optim = tf.train.GradientDescentOptimizer(learning_rate=0.05).minimize(loss)\n",
|
||||
"session.initialize_variables()\n",
|
||||
"\n",
|
||||
"for optim_step in range(10000):\n",
|
||||
" _, loss_value = session.run([optim, loss])\n",
|
||||
" if optim_step%500==0: \n",
|
||||
" print('Step %d, loss: %f' % (optim_step,loss_value))\n",
|
||||
" #show_state(grid_u)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 50,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"(128, 528)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"needs_background": "light"
|
||||
},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# a = session.run(grid_u)\n",
|
||||
"# a = a[0,:,:,0].transpose() # ; print(a.shape)\n",
|
||||
"# pylab.imshow(a, origin='lower', cmap='magma')\n",
|
||||
"show_state(grid_u)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Let's compare solution at $t=0$\n",
|
||||
"Actually not that great... max only at 0.5, even with 10k iters (shock gets better though), almost at 0.75 after 100k w more points"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 62,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x140fded50>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 62,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"needs_background": "light"
|
||||
},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"u = session.run(grid_u)\n",
|
||||
"u0 = u[0,:,0,0]\n",
|
||||
"\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"fig = plt.figure().gca()\n",
|
||||
"fig.scatter(x_bc[0:100], u_bc[0:100], color='gray')\n",
|
||||
"fig.plot(np.linspace(-1,1,len(u0)), u0, lw=2, color='blue')\n",
|
||||
"#fig.plot(ini[:,0], ini[:,1], lw=2, color='green')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 59,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[[-1.00000000e+00 1.22464680e-16]\n",
|
||||
" [-8.66666667e-01 4.06736643e-01]\n",
|
||||
" [-7.33333333e-01 7.43144825e-01]\n",
|
||||
" [-6.00000000e-01 9.51056516e-01]\n",
|
||||
" [-4.66666667e-01 9.94521895e-01]\n",
|
||||
" [-3.33333333e-01 8.66025404e-01]\n",
|
||||
" [-2.00000000e-01 5.87785252e-01]\n",
|
||||
" [-6.66666667e-02 2.07911691e-01]\n",
|
||||
" [ 6.66666667e-02 -2.07911691e-01]\n",
|
||||
" [ 2.00000000e-01 -5.87785252e-01]\n",
|
||||
" [ 3.33333333e-01 -8.66025404e-01]\n",
|
||||
" [ 4.66666667e-01 -9.94521895e-01]\n",
|
||||
" [ 6.00000000e-01 -9.51056516e-01]\n",
|
||||
" [ 7.33333333e-01 -7.43144825e-01]\n",
|
||||
" [ 8.66666667e-01 -4.06736643e-01]\n",
|
||||
" [ 1.00000000e+00 -1.22464680e-16]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#print(x_bc[0:100])\n",
|
||||
"#print(u_bc[0:100])\n",
|
||||
"\n",
|
||||
"# fig = plt.figure().gca()\n",
|
||||
"# #fig.plot(range(len(u0)), u0, lw=0.5, color='blue')\n",
|
||||
"# fig.scatter(x_bc[0:100], u_bc[0:100], lw=0.1, color='green')\n",
|
||||
"\n",
|
||||
"# forward test w Burgers\n",
|
||||
"#domain = Domain([64, 64], boundaries=PERIODIC, box=box[0:100, 0:100])\n",
|
||||
"#world.add(BurgersVelocity(domain, velocity=Noise(channels=domain.rank) * 2), physics=Burgers())\n",
|
||||
"\n",
|
||||
"ini = np.asarray( [[x, - math.sin(np.pi * x)] for x in np.linspace(-1,1,16)] )\n",
|
||||
"print(ini)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.7.6"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
Physical Loss Terms
|
||||
=======================
|
||||
|
||||
Using the equations now, but no numerical methods!
|
||||
|
||||
Still interesting, leverages analytic derivatives of NNs, but lots of problems
|
||||
|
||||
+764
@@ -0,0 +1,764 @@
|
||||
|
||||
% Publications by Nils Thuerey
|
||||
|
||||
@STRING{ACM_TOG = "{ACM} Trans. Graph."}
|
||||
@STRING{CVPR = "Proc. Comp. Vision and Pattern Rec."}
|
||||
@STRING{EG = "{E}urographics"}
|
||||
@STRING{EG_CGF = "Comp. Grap. Forum"}
|
||||
@STRING{EGSR = "{E}urographics Symposium on Rendering"}
|
||||
@STRING{EGWR = "{E}urographics Workshop on Rendering"}
|
||||
@STRING{SCA = "{S}ymposium on Computer Animation"}
|
||||
@STRING{ICLR = "International Conference on Learning Representations"}
|
||||
@STRING{ICML = "International Conference on Machine Learning"}
|
||||
@STRING{NeurIPS = "Advances in Neural Information Processing Systems"}
|
||||
|
||||
|
||||
|
||||
@article{um2020sol,
|
||||
title={Solver-in-the-Loop: Learning from Differentiable Physics to Interact with Iterative PDE-Solvers},
|
||||
author={Um, Kiwon and Brand, Robert and Holl, Philipp and Fei, Raymond Thuerey, Nils},
|
||||
journal=NeurIPS,
|
||||
year={2020}
|
||||
}
|
||||
|
||||
@article{kohl2020lsim,
|
||||
title={Learning Similarity Metrics for Numerical Simulations},
|
||||
author={Kohl, Georg and Um, Kiwon and Thuerey, Nils},
|
||||
journal=ICML,
|
||||
year={2020}
|
||||
}
|
||||
|
||||
@article{wiewel2020lsssubdiv,
|
||||
title={Latent Space Subdivision: Stable and Controllable Time Predictions for Fluid Flow},
|
||||
author={Wiewel, Steffen and Kim, Byungsoo and Azevedo, Vinicius C and Solenthaler, Barbara and Thuerey, Nils},
|
||||
journal=SCA,
|
||||
year={2020}
|
||||
}
|
||||
|
||||
@article{chu2020tecogan,
|
||||
title={Learning temporal coherence via self-supervision for GAN-based video generation},
|
||||
author={Chu, Mengyu and Xie, You and Mayer, Jonas and Leal-Taix{\'e}, Laura and Thuerey, Nils},
|
||||
journal=ACM_TOG,
|
||||
volume={39},
|
||||
number={4},
|
||||
pages={75--1},
|
||||
year={2020},
|
||||
publisher={ACM New York, NY, USA}
|
||||
}
|
||||
|
||||
|
||||
@inproceedings{weiss2020ssc,
|
||||
title={Correspondence-Free Material Reconstruction using Sparse Surface Constraints},
|
||||
author={Weiss, Sebastian and Maier, Robert and Cremers, Daniel and Westermann, Rudiger and Thuerey, Nils},
|
||||
booktitle=CVPR,
|
||||
pages={4686--4695},
|
||||
year={2020}
|
||||
}
|
||||
|
||||
@inproceedings{holl2019pdecontrol,
|
||||
title={Learning to Control PDEs with Differentiable Physics},
|
||||
author={Holl, Philipp and Thuerey, Nils and Koltun, Vladlen},
|
||||
booktitle=ICLR,
|
||||
year={2019}
|
||||
}
|
||||
|
||||
@article{prantl2019tranquil,
|
||||
title={Tranquil clouds: Neural networks for learning temporally coherent features in point clouds},
|
||||
author={Prantl, Lukas and Chentanez, Nuttapong and Jeschke, Stefan and Thuerey, Nils},
|
||||
journal=ICLR,
|
||||
year={2019}
|
||||
}
|
||||
|
||||
@inproceedings{ummenhofer2019contconv,
|
||||
title={Lagrangian fluid simulation with continuous convolutions},
|
||||
author={Ummenhofer, Benjamin and Prantl, Lukas and Thuerey, Nils and Koltun, Vladlen},
|
||||
booktitle=ICLR,
|
||||
year={2019}
|
||||
}
|
||||
|
||||
@article{eckert2019scalarflow,
|
||||
title={ScalarFlow: a large-scale volumetric data set of real-world scalar transport flows for computer animation and machine learning},
|
||||
author={Eckert, Marie-Lena and Um, Kiwon and Thuerey, Nils},
|
||||
journal=ACM_TOG,
|
||||
volume={38},
|
||||
number={6},
|
||||
pages={1--16},
|
||||
year={2019},
|
||||
publisher={ACM New York, NY, USA}
|
||||
}
|
||||
|
||||
|
||||
@article{thuerey2020deepFlowPred,
|
||||
title={Deep learning methods for Reynolds-averaged Navier--Stokes simulations of airfoil flows},
|
||||
author={Thuerey, Nils and Weissenow, Konstantin and Prantl, Lukas and Hu, Xiangyu},
|
||||
journal={AIAA Journal}, year={2020},
|
||||
volume={58}, number={1}, pages={25--36},
|
||||
publisher={American Institute of Aeronautics and Astronautics}
|
||||
}
|
||||
|
||||
@article{prantl2019rtliq,
|
||||
title ={{Generating Liquid Simulations with Deformation-Aware Neural Networks}},
|
||||
author={Lukas Prantl and Boris Bonev and Nils Thuerey},
|
||||
journal=ICLR,
|
||||
year={2019},
|
||||
pages={20}
|
||||
}
|
||||
|
||||
|
||||
@article{wiewel2019lss,
|
||||
title ={{Latent-space Physics: Towards Learning the Temporal Evolution of Fluid Flow}},
|
||||
author={Steffen Wiewel and Moritz Becher and Nils Thuerey},
|
||||
journal=EG_CGF,
|
||||
year={2019},
|
||||
volume={38},
|
||||
number={2},
|
||||
pages={12},
|
||||
}
|
||||
|
||||
@article{bkim2019deep,
|
||||
title ={{Deep Fluids: A Generative Network for Parameterized Fluid Simulations}},
|
||||
author={Kim, Byungsoo and Azevedo, Vinicius C and Thuerey, Nils and Kim, Theodore and Gross, Markus and Solenthaler, Barbara},
|
||||
journal=EG_CGF,
|
||||
year={2019},
|
||||
volume={38},
|
||||
number={2},
|
||||
pages={12},
|
||||
}
|
||||
|
||||
@article{xie2018tempoGan,
|
||||
author = {Xie, You and Franz, Erik and Chu, Mengyu and Thuerey, Nils},
|
||||
title ={{tempoGAN: A Temporally Coherent, Volumetric GAN for Super-resolution Fluid Flow}},
|
||||
journal = ACM_TOG,
|
||||
volume = {37(4)},
|
||||
year = {2018},
|
||||
publisher = {ACM}
|
||||
}
|
||||
|
||||
@article{hikaru2018simulating,
|
||||
title ={{Simulating Liquids on Dynamically Warping Grids}},
|
||||
author={Hikaru, Ibayashi and Wojtan, Chris and Thuerey, Nils and Igarashi, Takeo and Ando, Ryoichi},
|
||||
journal={IEEE Transactions on Visualization and Computer Graphics},
|
||||
year={2018},
|
||||
publisher={IEEE}
|
||||
}
|
||||
|
||||
@article{ren2018visual,
|
||||
title ={{Visual Simulation of Multiple Fluids in Computer Graphics: A State-of-the-Art Report}},
|
||||
author={Ren, Bo and Yang, Xu-Yun and Lin, Ming C and Thuerey, Nils and Teschner, Matthias and Li, Chenfeng},
|
||||
journal={Journal of Computer Science and Technology},
|
||||
volume={33},
|
||||
number={3},
|
||||
pages={431--451},
|
||||
year={2018},
|
||||
publisher={Springer}
|
||||
}
|
||||
|
||||
|
||||
@article{um2018mlflip,
|
||||
title ={{Splash Modeling with Neural Networks}},
|
||||
author={Kiwon Um and Xiangyu Hu and Nils Thuerey},
|
||||
journal=EG_CGF,
|
||||
volume={37(8)},
|
||||
year={2018}
|
||||
}
|
||||
|
||||
@article{eckert2018oiof,
|
||||
title ={{Coupled Fluid Density and Motion from Single Views}},
|
||||
author={Marie-Lena Eckert and Wolfgang Heidrich and Nils Thuerey},
|
||||
journal=EG_CGF,
|
||||
volume={37(8)},
|
||||
year={2018}
|
||||
}
|
||||
|
||||
|
||||
@article{sato2018,
|
||||
journal = EG_CGF,
|
||||
title ={{Extended Narrow Band FLIP for Liquid Simulations}},
|
||||
author = {Sato, Takahiro and Wojtan, Chris and Thuerey, Nils and Igarashi, Takeo and Ando, Ryoichi},
|
||||
year = {2018},
|
||||
publisher = {Eurographics Association},
|
||||
ISSN = {1467-8659},
|
||||
DOI = {10.1111/cgf.13351}
|
||||
}
|
||||
|
||||
@inproceedings{inglis2017primal,
|
||||
title ={{Primal-Dual Optimization for Fluids}},
|
||||
author={Inglis, Tiffany and Eckert, M-L and Gregson, James and Thuerey, Nils},
|
||||
booktitle =EG_CGF,
|
||||
volume={36(8)},
|
||||
pages={354--368},
|
||||
year={2017},
|
||||
organization={Wiley Online Library}
|
||||
}
|
||||
|
||||
@inproceedings{eberhardt2017hierarchical,
|
||||
title ={{Hierarchical vorticity skeletons}},
|
||||
author={Eberhardt, Sebastian and Weissmann, Steffen and Pinkall, Ulrich and Thuerey, Nils},
|
||||
booktitle =SCA,
|
||||
pages={6},
|
||||
year={2017},
|
||||
organization={ACM}
|
||||
}
|
||||
|
||||
@article{um2017perceptual,
|
||||
title ={{Perceptual evaluation of liquid simulation methods}},
|
||||
author={Um, Kiwon and Hu, Xiangyu and Thuerey, Nils},
|
||||
journal=ACM_TOG,
|
||||
volume={36},
|
||||
number={4},
|
||||
pages={143},
|
||||
year={2017},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@article{koschier2017xfem,
|
||||
title ={{Robust eXtended finite elements for complex cutting of deformables}},
|
||||
author={Koschier, Dan and Bender, Jan and Thuerey, Nils},
|
||||
journal=ACM_TOG,
|
||||
volume={36},
|
||||
number={4},
|
||||
pages={55},
|
||||
year={2017},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@article{chu2017data,
|
||||
title ={{Data-driven synthesis of smoke flows with CNN-based feature descriptors}},
|
||||
author={Chu, Mengyu and Thuerey, Nils},
|
||||
journal=ACM_TOG,
|
||||
volume={36},
|
||||
number={4},
|
||||
pages={69},
|
||||
year={2017},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@article{thuerey2017interpolations,
|
||||
title ={{Interpolations of Smoke and Liquid Simulations}},
|
||||
author={Thuerey, Nils},
|
||||
journal=ACM_TOG,
|
||||
volume={36},
|
||||
number={1},
|
||||
pages={3},
|
||||
year={2017},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@article{canabal2016dispersion,
|
||||
title ={{Dispersion kernels for water wave simulation}},
|
||||
author={Canabal, Jos{\'e} A and Miraut, David and Thuerey, Nils and Kim, Theodore and Portilla, Javier and Otaduy, Miguel A},
|
||||
journal=ACM_TOG,
|
||||
volume={35},
|
||||
number={6},
|
||||
pages={202},
|
||||
year={2016},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@article{jones2016example,
|
||||
title ={{Example-based plastic deformation of rigid bodies}},
|
||||
author={Jones, Ben and Thuerey, Nils and Shinar, Tamar and Bargteil, Adam W},
|
||||
journal=ACM_TOG,
|
||||
volume={35},
|
||||
number={4},
|
||||
pages={34},
|
||||
year={2016},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@inproceedings{ferstl2016narrow,
|
||||
title ={{Narrow band FLIP for liquid simulations}},
|
||||
author={Ferstl, Florian and Ando, Ryoichi and Wojtan, Chris and Westermann, R{\"u}diger and Thuerey, Nils},
|
||||
booktitle =EG_CGF,
|
||||
volume={35(2)},
|
||||
pages={225--232},
|
||||
year={2016},
|
||||
organization={Wiley Online Library}
|
||||
}
|
||||
|
||||
@article{monszpart2016smash,
|
||||
title ={{SMASH: physics-guided reconstruction of collisions from videos}},
|
||||
author={Monszpart, Aron and Thuerey, Nils and Mitra, Niloy J},
|
||||
journal=ACM_TOG,
|
||||
volume={35},
|
||||
number={6},
|
||||
pages={199},
|
||||
year={2016},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@article{mercier2015surface,
|
||||
title ={{Surface turbulence for particle-based liquid simulations}},
|
||||
author={Mercier, Olivier and Beauchemin, Cynthia and Thuerey, Nils and Kim, Theodore and Nowrouzezahrai, Derek},
|
||||
journal=ACM_TOG,
|
||||
volume={34},
|
||||
number={6},
|
||||
pages={202},
|
||||
year={2015},
|
||||
publisher={ACM}
|
||||
}
|
||||
|
||||
@ARTICLE{ Ando:2015:streamfunc,
|
||||
AUTHOR = {R. Ando and N. Thuerey and C. Wojtan},
|
||||
TITLE = {{A Stream Function Solver for Liquid Simulations}},
|
||||
YEAR = {2015},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {34 (4)},
|
||||
PAGES = {8}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Ando:2015:coarsegrid,
|
||||
AUTHOR = {R. Ando and N. Thuerey and C. Wojtan},
|
||||
TITLE = {{A Dimension-reduced Pressure Solver for Liquid Simulations}},
|
||||
YEAR = {2015},
|
||||
JOURNAL = EG_CGF,
|
||||
PUBLISHER = {Eurographics Association},
|
||||
VOLUME = {34 (2)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Raveendran:2014:blendingLiquids,
|
||||
AUTHOR = {K. Raveendran and N. Thuerey and C. Wojtan and G. Turk},
|
||||
TITLE = {{Blending Liquids}},
|
||||
YEAR = {2014},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {33 (4)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Gregson:2014:divFreeof,
|
||||
AUTHOR = {J. Gregson and N. Thuerey and I. Ihrke and W. Heidrich},
|
||||
TITLE = {{From Capture to Simulation - Connecting Forward and Inverse Problems in Fluids}},
|
||||
YEAR = {2014},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {33 (4)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Ando:2013:tetFlip,
|
||||
AUTHOR = {R. Ando and N. Thuerey and C. Wojtan},
|
||||
TITLE = {{Highly Adaptive Liquid Simulations on Tetrahedral Meshes}},
|
||||
YEAR = {2013},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {32 (4)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ TedKim:2012:closestPointTurb,
|
||||
AUTHOR = {T. Kim and J. Tessendorf and N. Thuerey},
|
||||
TITLE = {{Closest-Point Turbulence for Liquid Surfaces}},
|
||||
YEAR = {2013},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {32 (2)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Pfaff:2012:vortexSheets,
|
||||
AUTHOR = {T. Pfaff and N. Thuerey and M. Gross},
|
||||
TITLE = {{Lagrangian Vortex Sheets for Animating Fluids}},
|
||||
YEAR = {2012},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {31 (4)},
|
||||
PAGES = {8}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Raveendran:2012:meshControl,
|
||||
AUTHOR = {K. Raveendran and N. Thuerey and C. Wojtan and G. Turk},
|
||||
TITLE = {{Controlling Fluids using Meshes}},
|
||||
YEAR = {2012},
|
||||
JOURNAL = SCA,
|
||||
PUBLISHER = {Eurographics Association},
|
||||
PAGES = {1-8}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Ando:2011:adaptiveThinSheets,
|
||||
AUTHOR = {R. Ando and N. Thuerey and R. Tsuruno},
|
||||
TITLE = {{Preserving Fluid Sheets with Adaptively Sampled Anisotropic Particles}},
|
||||
YEAR = {2011},
|
||||
JOURNAL = {IEEE Transactions on Visualization and Computer Graphics},
|
||||
PUBLISHER = {IEEE},
|
||||
VOLUME = {18 (8)},
|
||||
PAGES = {1202-1214}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Pfaff:2010:anisopart,
|
||||
AUTHOR = {T. Pfaff and N. Thuerey and J. Cohen and S. Tariq and M. Gross},
|
||||
TITLE = {{Scalable Fluid Simulation using Anisotropic Turbulence Particles}},
|
||||
YEAR = {2010},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {29 (5)},
|
||||
PAGES = {8}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2010:surfacetens,
|
||||
AUTHOR = {N. Thuerey and C. Wojtan and M. Gross and G. Turk},
|
||||
TITLE = {{A Multiscale Approach to Mesh-based Surface Tension Flows}},
|
||||
YEAR = {2010},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {29 (4)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Wojtan:2010:thinsheets,
|
||||
AUTHOR = {C. Wojtan and N. Thuerey and M. Gross and G. Turk},
|
||||
TITLE = {{Physics-Inspired Topology Changes for Thin Fluid Features}},
|
||||
YEAR = {2010},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {29 (4)},
|
||||
PAGES = {8}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Pfaff:2009:wallturb,
|
||||
AUTHOR = {T. Pfaff and N. Thuerey and A. Selle and M. Gross},
|
||||
TITLE = {{Synthetic Turbulence using Artificial Boundary Layers}},
|
||||
YEAR = {2009},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {28 (5)},
|
||||
PAGES = {10}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Wojtan:2009:topogoop,
|
||||
AUTHOR = {C. Wojtan and N. Thuerey and M. Gross and G. Turk},
|
||||
TITLE = {{Deforming Meshes that Split and Merge}},
|
||||
YEAR = {2009},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {28 (3)},
|
||||
PAGES = {9}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Oskam:2009:camcontrol,
|
||||
AUTHOR = {T. Oskam and R. W. Sumner and N. Thuerey and M. Gross},
|
||||
TITLE = {{Visibility Transition Planning for Real-Time Camera Control}},
|
||||
YEAR = {2009},
|
||||
JOURNAL = SCA,
|
||||
PUBLISHER = {Eurographics Association},
|
||||
PAGES = {55-65}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2009:dpfcGraphMod,
|
||||
AUTHOR = {N. Thuerey and R. Keiser and U. Ruede and M. Pauly},
|
||||
TITLE = {{Detail-Preserving Fluid Control}},
|
||||
YEAR = {2009},
|
||||
JOURNAL = {Graphical Models},
|
||||
PUBLISHER = {Elsevier},
|
||||
VOLUME = {71,6},
|
||||
PAGES = {221-228}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ TedKim:2008:waveletTurbulence,
|
||||
AUTHOR = {T. Kim and N. Thuerey and D. James and M. Gross},
|
||||
TITLE = {{Wavelet Turbulence for Fluid Simulation}},
|
||||
YEAR = {2008},
|
||||
JOURNAL = ACM_TOG,
|
||||
PUBLISHER = {ACM Press},
|
||||
VOLUME = {27 (3)},
|
||||
PAGES = {6}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Angst:2008:fluidchar,
|
||||
AUTHOR = {R. Angst and N. Thuerey and M. Botsch and M. Gross},
|
||||
TITLE = {{Robust and Efficient Wave Simulations on Deforming Meshes}},
|
||||
YEAR = {2008},
|
||||
JOURNAL = EG_CGF,
|
||||
PUBLISHER = {Blackwell Publishing},
|
||||
VOLUME = {27 (7)},
|
||||
PAGES = {1895-1900}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2008:adapLbm,
|
||||
AUTHOR = {N. Thuerey and U. Ruede},
|
||||
TITLE = {{Stable free surface flows with the lattice Boltzmann method on adaptively coarsened grids}},
|
||||
YEAR = {2009},
|
||||
JOURNAL = {Computing and Visualization in Science},
|
||||
PUBLISHER = {Springer},
|
||||
VOLUME = {12 (5)}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Sumner:2008:ethgpl,
|
||||
AUTHOR = {R. Sumner and N. Thuerey and M. Gross},
|
||||
TITLE = {{The ETH Game Programming Laboratory: A Capstone for Computer Science and Visual Computing}},
|
||||
YEAR = {2008},
|
||||
JOURNAL = {Game Development in Computer Science Education},
|
||||
PUBLISHER = {ACM}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2007:paraLbm,
|
||||
AUTHOR = {N. Thuerey and T. Pohl and U. Ruede},
|
||||
TITLE = {{Hybrid Parallelization Techniques for Lattice Boltzmann Free Surface Flows}},
|
||||
YEAR = {2007},
|
||||
JOURNAL = {Proceedings of Parallel CFD 2007},
|
||||
PUBLISHER = {-},
|
||||
PAGES = {1-8}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Iglberger:2008:movPartLbm,
|
||||
AUTHOR = {K. Iglberger and N. Thuerey and U. Ruede},
|
||||
TITLE = {{Simulation of moving particles in 3D with the Lattice Boltzmann method}},
|
||||
YEAR = {2008},
|
||||
JOURNAL = {Computers and Mathematics with Applications, Mesoscopic Methods in Engineering and Science},
|
||||
PUBLISHER = {Elsevier},
|
||||
VOLUME = {55 (7)},
|
||||
PAGES = {1461-1468},
|
||||
EDITORS = {L.-S. Luo, M. Krafczyk and Y. Liu}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2007:rtWaves,
|
||||
AUTHOR = {N. Thuerey and M. Mueller-Fischer and S. Schirm and M. Gross},
|
||||
TITLE = {{Real-time Breaking Waves for Shallow Water Simulations}},
|
||||
YEAR = {2007},
|
||||
JOURNAL = {Proc. Pacific Conference on Computer Graphics and Applications},
|
||||
PUBLISHER = {IEEE Computer Society},
|
||||
PAGES = {39-46}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2007:swsBubbles,
|
||||
AUTHOR = {N. Thuerey and F. Sadlo and S. Schirm and M. Mueller-Fischer and M. Gross},
|
||||
TITLE = {{Real-time simulations of bubbles and foam within a shallow water framework}},
|
||||
YEAR = {2007},
|
||||
JOURNAL = SCA,
|
||||
PUBLISHER = {Eurographics Association},
|
||||
PAGES = {191-198}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2006:SCA06dpfc,
|
||||
AUTHOR = {N. Thuerey and R. Keiser and U. Ruede and M. Pauly},
|
||||
TITLE = {{Detail-Preserving Fluid Control}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = SCA,
|
||||
PUBLISHER = {Eurographics Association},
|
||||
PAGES = {7-12}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2006:SCA06sws,
|
||||
AUTHOR = {N. Thuerey and U. Ruede and M. Stamminger},
|
||||
TITLE = {{Animation of Open water Phenomena with coupled Shallow Water and Free Surface Simulation}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = SCA,
|
||||
PUBLISHER = {Eurographics Association},
|
||||
PAGES = {157-166}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2006:VMV06,
|
||||
AUTHOR = {N. Thuerey and K. Iglberger and U. Ruede},
|
||||
TITLE = {{Free Surface Flows with Moving and Deforming Objects for LBM}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = {Proceedings of Vision, Modeling and Visualization 2006},
|
||||
PUBLISHER = {IOS Press},
|
||||
PAGES = {193-200}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Zheng:2006:VMV06,
|
||||
AUTHOR = {Y. Zheng and H. Koestler and N. Thuerey and U. Ruede},
|
||||
TITLE = {{Enhanced Motion Blur Calculation with Optical Flow}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = {Proceedings of Vision, Modeling and Visualization 2006},
|
||||
PUBLISHER = {IOS Press},
|
||||
PAGES = {253-260}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Binder:2006:jcollif,
|
||||
AUTHOR = {C. Binder and C. Feichtinger and H.-J. Schmid and N. Thuerey and W. Peukert and U. Ruede},
|
||||
TITLE = {{Simulation of the Hydrodynamic Drag of Aggregated Particles}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = {Journal of Colloid and Interface Science},
|
||||
PUBLISHER = {Elsevier},
|
||||
VOLUME = {301},
|
||||
PAGES = {155-167}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Koerner:2006:PLBM,
|
||||
AUTHOR = {C. Koerner and T. Pohl and U. Ruede and N. Thuerey and T. Zeiser},
|
||||
TITLE = {{Parallel Lattice Boltzmann Methods for CFD Applications}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = {Numerical Solution of Partial Differential Equations on Parallel Computers},
|
||||
PUBLISHER = {Springer},
|
||||
VOLUME = {ISBN 3-540-29076-1},
|
||||
PAGES = {439-465}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2006:adapParam,
|
||||
AUTHOR = {N. Thuerey and T. Pohl and U. Ruede and M. Oechsner and C. Koerner},
|
||||
TITLE = {{Optimization and Stabilization of LBM Free Surface Flow Simulations using Adaptive Parameterization}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = {Computers and Fluids},
|
||||
PUBLISHER = {Elsevier},
|
||||
VOLUME = {35 [8-9]},
|
||||
PAGES = {934-939}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Koerner:2005:lbmFoaming,
|
||||
AUTHOR = {C. Koerner and M. Thies and T. Hofmann and N. Thuerey and U. Ruede},
|
||||
TITLE = {{Lattice Boltzmann Model for Free Surface Flow for Modeling Foaming}},
|
||||
YEAR = {2005},
|
||||
JOURNAL = {Journal of Statistical Physics},
|
||||
PUBLISHER = {Springer},
|
||||
VOLUME = {121 [1-2]},
|
||||
PAGES = {179--196}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2004:fsLevelsetLbm,
|
||||
AUTHOR = {N. Thuerey and U. Ruede},
|
||||
TITLE = {{Free Surface Lattice-Boltzmann fluid simulations with and without level sets}},
|
||||
YEAR = {2004},
|
||||
JOURNAL = {Proc. of Vision, Modelling, and Visualization VMV},
|
||||
PUBLISHER = {IOS Press},
|
||||
PAGES = {199-207}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Pohl:2004:paraLbmSc,
|
||||
AUTHOR = {T. Pohl and Frank Deserno and N. Thuerey and U. Ruede and P. Lammers and G. Wellein and T. Zeiser},
|
||||
TITLE = {{Performance Evaluation of Parallel Large-Scale Lattice Boltzmann Applications on Three Supercomputing Architectures}},
|
||||
YEAR = {2004},
|
||||
JOURNAL = {SC '04: Proceedings of the 2004 ACM/IEEE conference on Supercomputing},
|
||||
PUBLISHER = {IEEE Computer Society},
|
||||
PAGES = {21}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2002:perfOpt3dMg,
|
||||
AUTHOR = {M. Kowarschik and U. Ruede and N. Thuerey and C. Weiss},
|
||||
TITLE = {{Performance Optimization of 3D Multigrid on Hierarchical Memory Architectures}},
|
||||
YEAR = {2002},
|
||||
JOURNAL = {Proceedings of PARA'02},
|
||||
PUBLISHER = {Springer, Lecture Notes in Computer Science},
|
||||
PAGES = {307-318}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Gross:2011:gameDesignChapter,
|
||||
AUTHOR = {M. Gross and R. Sumner and N. Thuerey},
|
||||
TITLE = {{The Design and Development of Computer Games}},
|
||||
YEAR = {2011},
|
||||
JOURNAL = {The Design of Material, Organism, and Minds (Editors: S. Lang, M. Hampe)},
|
||||
PUBLISHER = {Springer},
|
||||
VOLUME = {ISBN 978-3-549-68995-9},
|
||||
PAGES = {14}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2007b:phd,
|
||||
AUTHOR = {N. Thuerey},
|
||||
TITLE = {{Physically based Animation of Free Surface Flows with the Lattice Boltzmann Method}},
|
||||
YEAR = {2007},
|
||||
JOURNAL = {PhD thesis},
|
||||
PUBLISHER = {Dept. of Computer Science 10, University of Erlangen-Nuremberg},
|
||||
VOLUME = {ISBN 978-3-89963-519-5}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2006:drdobbs,
|
||||
AUTHOR = {N. Thuerey},
|
||||
TITLE = {{Fluid Simulation with Blender}},
|
||||
YEAR = {2006},
|
||||
JOURNAL = {Dr. Dobbs Journal},
|
||||
PUBLISHER = {CMP Media}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Iglberger:2005:movNanoPart,
|
||||
AUTHOR = {Iglberger and N. Thuerey and U. Ruede and H. Schmid and W. Peukert},
|
||||
TITLE = {{Simulation of moving Nano-Particles with the Lattice Boltzmann Method in 3D}},
|
||||
YEAR = {2005},
|
||||
JOURNAL = {Proceedings of ASIM '05},
|
||||
PUBLISHER = {SCS Publishing House}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Feichtinger:2005:dragForcesLbm,
|
||||
AUTHOR = {C. Feichtinger and N. Thuerey and U. Ruede and C. Binder and H. Schmid and W. Peukert},
|
||||
TITLE = {{Drag Force Simulations of Particle Agglomerates with the Lattice-Boltzmann Method}},
|
||||
YEAR = {2005},
|
||||
JOURNAL = {Proceedings of ASIM '05},
|
||||
PUBLISHER = {SCS Publishing House}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2005:adapGridsLbm,
|
||||
AUTHOR = {N. Thuerey and U. Ruede},
|
||||
TITLE = {{Optimized Free Surface Fluids on Adaptive Grids with the Lattice Boltzmann Method}},
|
||||
YEAR = {2005},
|
||||
JOURNAL = {Poster},
|
||||
PUBLISHER = {SIGGRAPH '05}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2005:interactiveLbmFluids,
|
||||
AUTHOR = {N. Thuerey and C. Koerner and U. Ruede},
|
||||
TITLE = {{Interactive Free Surface Fluids with the Lattice Boltzmann Method}},
|
||||
YEAR = {2005},
|
||||
JOURNAL = {Technical Report 05-4},
|
||||
PUBLISHER = {Department of Computer Science 10 System Simulation}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2003:lbmMetallschaum,
|
||||
AUTHOR = {N. Thuerey and U. Ruede and C. Koerner},
|
||||
TITLE = {{Simulation von Metallschaum mittels der Lattice-Boltzmann Methode}},
|
||||
YEAR = {2003},
|
||||
JOURNAL = {Konwihr Quartl},
|
||||
PUBLISHER = {KONWIHR},
|
||||
VOLUME = {35}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2003:singlePhaseFsLbm,
|
||||
AUTHOR = {N. Thuerey},
|
||||
TITLE = {{A Lattice Boltzmann method for single-phase free surface flows in 3D}},
|
||||
YEAR = {2003},
|
||||
JOURNAL = {Master thesis},
|
||||
PUBLISHER = {Dept. of Computer Science 10, University of Erlangen-Nuremberg}
|
||||
}
|
||||
|
||||
|
||||
@ARTICLE{ Thuerey:2002:cacheOptMg,
|
||||
AUTHOR = {N. Thuerey},
|
||||
TITLE = {{Cache Optimizations for Multigrid in 3D}},
|
||||
YEAR = {2002},
|
||||
JOURNAL = {Semester thesis},
|
||||
PUBLISHER = {Dept. of Computer Science 10, University of Erlangen-Nuremberg}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
References
|
||||
============================
|
||||
|
||||
% in new section?
|
||||
|
||||
```{bibliography} references.bib
|
||||
```
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,5 @@
|
||||
Supervised Learning
|
||||
=======================
|
||||
|
||||
Doing things the old fashioned way...
|
||||
|
||||
Reference in new issue
Block a user