update burgers notebooks
This commit is contained in:
1 parent
d1bdc36622
commit
fd8438dd10
5 files changed
+1561
-1030
No files matched your search
+787
-349
File diff suppressed because it is too large.
Load diff
+169
-58
@@ -12,35 +12,39 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/thuerey/phiflow/phi/tf/__init__.py:7: UserWarning: TensorFlow 2 is not fully supported by PhiFlow.\n",
|
||||
" warnings.warn('TensorFlow 2 is not fully supported by PhiFlow.')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:287: to_complex64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
|
||||
"Could not load resample cuda libraries: CUDA binaries not found at /home/thuerey/phiflow/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\n",
|
||||
"WARNING:tensorflow:From /home/thuerey/phiflow/phi/tf/tf_backend.py:287: to_complex64 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
|
||||
"Instructions for updating:\n",
|
||||
"Use `tf.cast` instead.\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:375: The name tf.fft is deprecated. Please use tf.signal.fft instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:387: The name tf.ifft is deprecated. Please use tf.signal.ifft instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/tf_backend.py:399: The name tf.real is deprecated. Please use tf.math.real instead.\n",
|
||||
"\n"
|
||||
"Use `tf.cast` instead.\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",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" for key in self._mapping:\n",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" yield (key, self._mapping[key])\n",
|
||||
"/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n",
|
||||
" warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n",
|
||||
"/home/thuerey/phiflow/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"
|
||||
@@ -59,7 +63,8 @@
|
||||
"\n",
|
||||
"# run with phiflow\n",
|
||||
"n = 128\n",
|
||||
"dt = 1./32.\n",
|
||||
"steps = 32\n",
|
||||
"dt = 1./steps\n",
|
||||
"initial = np.zeros([n,1]) # start from 0\n",
|
||||
"\n",
|
||||
"domain = Domain([n], boundaries=PERIODIC, box=box[-1:1])\n",
|
||||
@@ -69,7 +74,7 @@
|
||||
"state_in = state0.copied_with(velocity= variable(state0.velocity) ) # <-- main change!\n",
|
||||
"states = [state_in]\n",
|
||||
"\n",
|
||||
"for i in range(32):\n",
|
||||
"for i in range(steps):\n",
|
||||
" states.append( Burgers().step(states[-1],dt=dt) )\n",
|
||||
"\n",
|
||||
"print(\"Each velocity is a phiflow grid like this one: \" + format(states[-1].velocity) )\n",
|
||||
@@ -80,25 +85,16 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Note, this didnt run anything! let's set up the loss"
|
||||
"Now we don't need to keep track and pass along `state_in`, TF knows about the initial state as a variable we'd like to optimize. This is in contrast to the previous version of this optimization, where we explicitly stored and updated a field with the intial state.\n",
|
||||
"\n",
|
||||
"Nonetheless, this didnt run anything! We only have a graph of operations in tensorflow so far. Let's set up the loss, such that we can start the optimizer. It's actually pretty simple, we only need to compute the L2 error for the constrained state of the simulation (at $t=1/2$):"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:17: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:18: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"sess = Session(None) \n",
|
||||
"\n",
|
||||
@@ -112,9 +108,13 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"As the graph encodes the full temporal sequence, and we can compute and propagate derivatives for all intermediates, we can can now back-propagate a gradient for this loss to any earlier variable, and hence also the initial velocity state that we're interested in (and that we already declared as a `variable()` to TF above).\n",
|
||||
"\n",
|
||||
"Note: because we're only constraining timestep 16, we could actually omit steps 17 to 31 here, but for fairness and comparison with the PINN case, let's include them.\n",
|
||||
"\n",
|
||||
"Now we don't need to keep track and pass along `state_in`, TF knows about the initial state as a variable we'd like to optimize."
|
||||
"Also, we don't need additional terms for enforcing the boundary conditions, these are already present in the simulation, and hence encoded in the execution graph for the `states` sequence above.\n",
|
||||
"\n",
|
||||
"Now we're ready to run the optimization with one of the optimizers provided in tensorflow, e.g., the simplest starting point is always _gradient descent_ (GD):"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -126,13 +126,6 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/math_grad.py:1375: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
|
||||
"Instructions for updating:\n",
|
||||
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:28: The name tf.global_variables_initializer is deprecated. Please use tf.compat.v1.global_variables_initializer instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:29: The name tf.train.Saver is deprecated. Please use tf.compat.v1.train.Saver instead.\n",
|
||||
"\n",
|
||||
"Initial loss: 0.382915\n",
|
||||
"Step 0, loss: 0.382915\n",
|
||||
"Step 5, loss: 0.194040\n",
|
||||
@@ -144,7 +137,7 @@
|
||||
"Step 35, loss: 0.009447\n",
|
||||
"Step 40, loss: 0.006238\n",
|
||||
"Step 45, loss: 0.004161\n",
|
||||
"Runtime 1.89s\n"
|
||||
"Runtime 1.17s\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -179,22 +172,22 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x136ef4bd0>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f68682ae0d0>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABAAklEQVR4nO3dd3xTVf/A8c9J0kVbaEvLKFAoiuDzOAArKAooogwHbnGBCiI8IBtkK1MEpKKgbLeC4u/xAdniwIUMEREQmYUWCnRQSkfSJOf3x01rgJbVtGna7/v16qvJvecm394m+eacc885SmuNEEKIisvk7QCEEEJ4lyQCIYSo4CQRCCFEBSeJQAghKjhJBEIIUcFZvB3A5YiMjNT16tXzdhhCCOFTtmzZkqK1jjp7u08mgnr16rF582ZvhyGEED5FKZVQ2HZpGhJCiApOEoEQQlRwkgiEEKKC80giUEotVEodV0r9WcR+pZR6Uym1Vyn1h1Kqqdu+rkqpPa6frp6IRwghxMXzVI3gPaD9efZ3ABq4fnoA7wAopSKAl4HmQDPgZaVUuIdiEkIIcRE8kgi01uuBtPMU6QR8oA0bgDClVE2gHbBWa52mtU4H1nL+hCKEEMLDSquPoBZw2O1+omtbUdvPoZTqoZTarJTafOLEiRILVAghKhqfGUegtZ4LzAWIi4uTubNFqbI5bGxJ2sL25O38deIvrHYr9/3rPu644g4sJp95GwlRqNJ6BScBddzu13ZtSwJuO2v7d6UUkxDnlWXLYt2+daz6exU/HvyRrLysM/av2rOKGiE1mNpxKi1iWngpSiGKr7QSwVKgj1JqEUbHcIbW+qhSajUwya2D+C5geCnFJMQ5tNZsStzEoj8WsWbPGnLsOQX7roq8iua1m9OoWiOybdl8vO1jDqYfZPEfiyURCJ/mkUSglPoU45t9pFIqEeNKID8ArfVsYAXQEdgLZAPPuvalKaXGA5tcDzVOa32+TmchSoTVbuW/O//Le1veY0/qnoLtTaKbcE+je7jzijupVeXM7qsrq17Js188S3pOemmHK4RHeSQRaK0fv8B+DfQuYt9CYKEn4hDiUqVlp/Hxto/5cOuHpGanAhAVHMUj1z7Co9c8Sp2wOkUeGxYUBiCJQPg86eUSFVJyZjKzN87m8+2fk2vPBeDf1f9N97judLiqA35mvws+RkRQBCCJQPg+SQSiQjmRdYLZv87mk22fYHPYAGgd25rnb3yem+rchFLqoh8rPMjo2pJEIHydJAJRIaRmpzJ341w++v2jghpAx6s60ufmPjSManhZj1nJrxL+Zn9y7bnk5OUQ5BfkyZCFKDWSCES5ZrVbeXfLu7zz6zuctp0GoO2Vbenfoj9XV7v6oh5Da83hw3ls355DZqYDraFWLT9atgwhPCicY6ePkZ6TLolA+CxJBKJc0lrz1e6vmLp+KkmnkgBoWa8lA28dyHU1rrvg8YcP21i+PIPVq0/x/fenSU93nFOmW7eqVL4pkmMYiSC6crTH/w4hSoMkAlHubEnawqTvJvH70d8BaBjZkOG3DadlvZbnPS4z08Gnn6bz8cdprF9/+ox9Vauauf76SkRFWXA6NcuWZbBgQSqRP/Qg+PHR0k8gfJokAlFuHDp5iKnrp7Li7xUARFaKZOCtA3n4mocxm8xFHrd7dy6zZp3gvfdSycx0AhAYqOjYsQrt21fmrrtCiYnxP6Mj+bffsrn//n0c/jsa27qHSHtMhr8I3yWJQPi83LxcZm+czZyNc7A5bARYAuge150ezXoQ4h9S6DFaa1auPMWMGcdZsyazYHurViF061aVBx4IIzS06OTRtGkl3nyzDg88sB97anVO5pz09J8lRKmRRCB82rf7v2XcunEcyjgEQKerOzG45eAi2+udTs2XX55kwoRktm41po8IClI8+WQEffpEcf31lS76uSMjjbePIyuU9JxjxfxLhPAeSQTCJyVlJDH+2/Gs3bsWgAZVGzCu7Tia1WlWaHmHQ7NkSToTJiTz55/G5aM1algYMKAa3btHEhFx6W+FqlWNGoMzO4T0nL8u8y8RwvskEQifYnPYWLh5IW/98ha59lyC/YLp26IvXZt2LXQ0sNaa//0vg5Ejj7Bzp5EAatf246WXqtOtWyRBQZe/JEdBjSA7lPRc6SwWvksSgfAZGw9vZNTaUexL2wdAx4YdGXnbSGqE1ii0/PffZzJs2BE2bDCmj65b158RI2rQtWsEAQHFX5MpPNx4+zhzgknNOlnsxxPCWyQRiDIv05rJa+tf49NtnwJQL7weY+8Yy631bi20/LZt2QwbdoRVq04BUK2ahdGja9CjRyT+/p5blM9iUYRWgcwMEydScj32uEKUNkkEokxbvWc1r3z9CsezjuNn8qNn8570at6LAEvAOWWTk/MYNeoICxemojWEhpoYMqQ6AwZUIySk6CuAiiMiwkxmhoMTKXkl8vhClAZJBKJMOnb6GGPXjWX1ntUANKnZhEntJnFV5FXnlM3JcRIff5xXX03m9GknFgv85z9RjB5ds6Adv6RERfqRcMBBepqzRJ9HiJIkiUCUKU7t5LPtnzH5+8lkWjMJ9gtmcMvBPNn4yXMGhWmtWbw4nWHDjpCQYMwkeu+9VZg6tRYNGwaWSrzVovyBXHIy/WXiOeGzPLVCWXtgBmAG5mutJ5+1Px643XW3ElBNax3m2ucAtrv2HdJa3+eJmITvScxI5KVVL7Hh8AYA2tRvw9i2YwsdE7BxYxYDBiTy889GR/C11wYyfXpt2ratXKoxV63q6jDOCpWJ54TPKnYiUEqZgVnAnUAisEkptVRrvTO/jNZ6gFv5F4Embg+Ro7VuXNw4hO/SWvPptk+Z/P1ksvKyiAiKYMwdY7in4T3nrA+QkmJn+PAk5s83VhOrVs3ChAnRPPdcVczmi19LwFPyE4HDlQhk4jnhizxRI2gG7NVa7wdwLVDfCdhZRPnHMdY0FoKkjCSGrxnOTwk/AcYaAa+0fYWqlaqeUc7h0Mydm8LIkUdIT3fg56cYMKAaI0fWoHLlkukIvhj/DCoLlYnnhM/yRCKoBRx2u58INC+soFKqLhALfOO2OVAptRmwA5O11l8WcWwPoAdATExM8aMWXqW1ZtEfi5j8/WRO204THhTO2DvGcneju88pu2FDFr17H+K334wpIdq2DeWtt+rQqFHp9AOcT0GNIDuUtByZeE74ptLuLO4MLNFau0/uXldrnaSUqg98o5TarrXed/aBWuu5wFyAuLg4XTrhipJw5NQRhq8ezo8JPwLQvkF7xrYdS2Rw5BnlTpzIY9gw43JQMEYEx8fX5qGHwi5pScmS9M98QyEy8ZzwWZ5IBElAHbf7tV3bCtMZ6O2+QWud5Pq9Xyn1HUb/wTmJQPg+rTWf//k5E7+dyGnbacICw3il7Svn9AU4HJrZs1MYNeoIJ08azUCDBlVj1KgaBAd7rxmoMAWdxdmVSc9J9XI0QlweTySCTUADpVQsRgLoDDxxdiGlVCMgHPjFbVs4kK21tiqlIoFbgCkeiEmUMcdOH2PYqmGsP7gegLsa3MX4tuPPqQX8+msWvXodKpgZ9K67QnnzzTqldjnopcrvI3BkhZCes9fL0QhxeYqdCLTWdqVUH2A1xuWjC7XWO5RS44DNWuulrqKdgUVaa/dmnauBOUopJ2DC6CMoqpNZ+KgVu1cweu1oTuaepEpgFV654xXubXTvGbWAjAwHI0Yk8c47KWgNMTH+xMfX4oEHyk4zUGH+qRHIxHPCd3mkj0BrvQJYcda2MWfdf6WQ434GrvVEDKLsOZV7irHfjOXLnV8C0KpeK15r/xrVQqoVlNFas2TJSfr2PUxysh2LBQYNqs7o0WWvGagwZ3QWZ0siEL5JRhaLEvHLoV8YsnIIRzOPEmgJZMRtI3ji+ifO+HZ/4ICV3r0Ps3KlMTnczTcHM2dODNde6zuDsoKCTAQGQW6OhRPp2d4OR4jLIolAeJTVbmXaD9NYuGUhANfVuI7pHacTGxFbUCYvTxMff4xXXjlKTo6mShUzr70WzfPPR2Iyld1moKJEVDVxJNFJSorN26EIcVkkEQiP2Xl8JwOXD2RP6h7Mykyfm/vQq3mvMxaM+eWX07zwwiG2bzembe7cOZz4+NrUqHHuojK+IrKqH0cSraSlysRzwjdJIhDF5nA6mL9pPvE/xZPnzCM2PJbpHadzXc3rCsqcOuVg2LAkZs82OoNjY/15550Y2rUr3bmBSkJUpB9gJSfTH6vdWugU2UKUZZIIRLEcOXWEQSsGsTFxIwBPN36al1q/dMbka8uXZ9Cz5yESE/OwWGDIkOqMGlWTSpU8t0iMN0VGGrUZZ3YodqedACQRCN8iiUBcthW7VzByzUhOWU8RFRzFa+1fo3Vs64L9J07k0b9/Ip98YlxNc+ONlViwoK5PdQZfjH/GEhiJQAhfI4lAXLIsWxbjvxnP539+DsAdV9zBq+1eLZgoTmvNokXp9O2bSEqKnaAgxYQJ0fTrV80rM4SWNPcZSCURCF8kiUBckj+S/2DA8gEcTD9IgCWAEa1H8GTjJwsuC01MtNGr1yG++sq4JLRNm1Dmzo3hiivKb3OJ+6AySQTCF0kiEBfFqZ3M2zSP6T9Ox+600zCyIW/c80bB0pFOpzFN9NChSWRmOqlSxczrr9fiueeqlumRwZ5QMPFcdgh2hyQC4XskEYgLSs5MZsjKIfx86GcAujbtykutXiq4OmbPnly6dz/E+vWnAbj//irMmlWH6Gh/r8VcmgrWJMgKxa4lEQjfI4lAnNfavWsZvno46TnpRARFMKXDFG6vb6w6ardrpk8/xssvHyU3V1OtmoVZs+qUqWmiS4P7NBNSIxC+SBKBKFROXg6TvpvEJ9s+AYx5gqZ0mEJUcBQAO3bk0LVrAlu2GNMqdO0aweuv1y74UKxI3Nctlj4C4Ysq3rtWXNBfJ/6i37J+7E3bi7/Zn6GthtK1aVdMyoTLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -232,22 +225,22 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x136f4b290>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f68b7dd9e50>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -274,24 +267,24 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"And as image over time..."
|
||||
"And as MAE, and image over time..."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 39,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"(1, 128, 33, 1)\n"
|
||||
"Vels array shape: (1, 128, 33, 1)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAB0CAYAAAB+I3LkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAid0lEQVR4nO2da6guV3nH/8+aefe7z82k8RKCUaM0UGypthUv1A9eUFRK80WCttC0BPJFwUKhRgot7SfbD7WWFjFQUaH1UlpRRKo2Kv3Ser/FSzRKxIToQTEn57L3ft+Z9fTDzAnbmLPntzxr9sx+9/rD5ux39nPWzFrvzP951v951hpzdxUUFBQUbBbC1BdQUFBQUJAfhdwLCgoKNhCF3AsKCgo2EIXcCwoKCjYQhdwLCgoKNhCF3AsKCgo2EKOQu5m9yszuNbP7zOzOMc5RUFBQUHBlWO46dzOrJH1H0iskPSDp85Je7+7fzHqigoKCgoIrYozI/fmS7nP377v7StL7Jd0ywnkKCgoKCq6AMcj9qZJ+uO/zA/2xgoKCgoJDQj3Vic3sDkl3SNKJsPidZ5y8Lmv72TdV2JBdGjakG0cINvUFHHmUe/bK+O7FH/3E3Z/8eH8bg9wflPS0fZ9v7I/9HNz9Lkl3SdKvP+F6/+Dzbx1s2F2K8GFxZ3YR2uVMTdBzSpJnJoeY+UlJ6QtF7j5T5B6bMUDv6ykRp76AmWKMZ+Vl//t3P7jS38Yg989LutnMnqmO1F8n6Q8O+g/Bok4uV4MNuxu6uelD6m4J5D6Ns8jtzCiSHNDMHcYYzmIqRzAGQVDQcaxGvo6DMGcHXdnhXlx2cnf3xszeKOnj6r7nd7n7Nw76P6FynTw5TO6xZeTukZE2JUR3/lDFyNIYKQ6ItZffCUwxq5GOhkOjmLvjo+iIfRrmTCHsaoLhmdLhHoRRNHd3/5ikj1H7EFzbp5tBu7iGRNeaPBJyZ1+MR0MPqTs7rwTP6+y8tL3Lbea0y+2kujanc1QUUzk0ik1yfLkJO3dfUiLyw5QcJ0uo7ocFaXF6WKmLa9ZeXCU4AfK9xARn0eaNtGl7mLThrCapzQ1xQGltbg4Zk+8vhWBzOyoKOoZVwgwkv1Nj584RPMyD3CupvmZYzvCVy0G2xluXD08EpOiKLbEzdt6YQMbUCdD24OwCEyxsT0pzLASb4nxSbHNrxdPOaiZyVDCCTiFO6tSmcmgHYRbkrsoUrlkMmvlui54CXzuza6SQ01lI8gac1yVv8pI7clJS0iyEIMUJ5HYsuZ2KNH/HQpEy+0mJZIcwxiyJJmindFJ0DA9Tn58FuVsVFK5ZDtr5dsNIexWlZpi1vXGpBe1FlwhpR+EZg4PzSlJcJUQjhLQjnP04m608eu4hQKeC21N+CcyjISLJPaO5fG6CcWYX2HQQaXJQPqJLcVJjVNTM0VHNgtxVmezM9rBdPVxRI0m223SEPGS3blGkbdE7hzFkJ8nXhBFNDknbKkjurUT0PDwDiY6lIyZZOZco4CwkwDlzksSU2wFlnl2EiaQyifUliH/PufVnOtZ0WX6a8yEzdt6eZfC4MyH3IJ05OWhmdcUi90UjawFDNFGGIvwo2wYMBp2AossrFhb7lqNVIcRJdXZiY+jQLgqvWolwthKgZEUcuMRnIfh5SpiFBNjo3J2KNK1jIcg/q8mv4ed2QAdhHuQegnQKRO6BDYztrZAso6aVAztrW2kFnEV0qWZhpxEnIMlXLSR32F7rSL5RzJtnkCSDEbnT2UqkkhA8b2SzEMHoNEnWouQ+c6ci5Xcs9Ny5I/IxcjUBO4xNkWVCkE4NR+4K8OurK6khkXsrWwMGiy5fMDvanirIdLUxkbAJyM4aZxFvdNnWsJlHl2EnAO2SpChgF+HsJ4mM6bmZHZWi+GyFtZfbqbgnENhksxXWnoIfCcdyJcyG3B2QuwVIdJTc12upAUPQRFkNvr7o0op9zV6zon2D7WnVsqegiTKokZPZj0XJF8xZqIYRfm5nEZUgRdE2SZ85kRgcG1pllTUZrpGcCp6hbdJsBTZINbADMBty14lhWcYpue/tyQi5b9XSCjBE03a2xK5i+XCDsxCvGnSXWc0idzWR2bVRIlspwEoiRZfRvADMR3Bn4SK7M9L8gccuyU7AZxfQLnctd3bJCkanFavakoSJzihpJwTFdBxJwCQJ92VjFjEpBPmJE4NmFoIUwSgGY5HGei0jckvTdlH+EKLjih6cP4Ck7cRJSdKalZMajNy7PsM7G+YZBKPTJGeBtHkm35iU4ATAeZWQEIdPLJ3V0LpAnN+QsktWU85C0J04wixkg8jdpJPD5E77i51AXclJhN82shWIyKNj0sZ2uyzCx5E77TNNDkdHFUeS5DCjajUcG5g/MJi3sEjlFmfhH3QWkrBoi51F5gjfEiL3FIeB7HBJLuxMtTmzkIMwD3K3IC1A9u6kWBQbgtQOhy5W19IaRNpNJa/AULVNlxcYQnSWHI6xGxty51BnsWpkW8BRNVGKw332psWROxqby+cG8NCyyIq21ziWW4gUZeJVTMSh0cSwpPzOIkWKohVMNB9BpYyECB9H5KR+PQqtTsIOQBsUubuZHJB7Nx2m5QeAmKqmS74OnbdpmROIC7nBSBtH+FDmqdYsYqJ5i4pt9WB14ORpsM81PDcdwyrCCN/Z2ERHT45HZ7OQBDmIOgtcvgGTzSYoKVDSrjI7C6U5KnaNLCK3il1jx1+ZZyEHYBbkLhOKZL1ml8u1+cCdALg+i5FF0NG5xATtMGnTSqKtyOwiTEqLk7HDXT1VRyi/BUYkMNns0VmSO0JnoYS1ApS0YXtYYrpsO2iTQNpUeqD5A7r1boLjI1fo0E6Ry2U5VjHNg9wpiDSifiIFHnoLQWrAnRMCcz4xpjkBKjFBR2XErmqhlh5ZLf4IeQYcka8akfmwNzAbWDNyx8lm8UjbyA52UsJY0xkuXQPgMrLdwxjOAssy8P6i+YNK7H6AkfvlcxOkSDhXwtEidwoL3ZYGA/AAybhpcEROnUD2iDyEzrkMoW67/gyhaZFkpabNOjaCDlISdxY0Im+YHCSHFULRE/IMcFYDSRtH+DCJzGchxp0F6XIl7iwSZis0IkcxeUL+IPvs4gDMg9zdUQKURu6YHKKgEwiyhhITfEiR1QiyTNPISS0+dQJVLdVwVS6SeaIU4Dyc9tlaFArhiqPoCRVHpD1+3xh0AqoC020dJpETkrl5nUWCZIW3jGGl0rTkdVJncQBmQe7mQkSCUwzGZJQUJ4D1fuoEtuCNjawSnQDpC3UCHmVUIw/wVVo4coft0evDkXtMiMiHnYDHwGWUAFdFNXB2CEmW5hkUHUoPCRE+Xa05hsSEbsXMzkI8b3EQZkHu8oiqUQxO2b2uuxWWgw0mOAEatVAnwJrDoHkGrs1XWJunFUI4H0GBI3dYTkqTzdElsooW5iNMyl9xRJ0AJHccaUe4d5GEnlET/I6VEOGPITFldRabpLlHl3b3hu224MNCnUAIkoPRxgImtx3FCRBibBqmzYfAZBmqkUPS9v7cBGZrvgYAEROvdkL9iY61dETG0WXwkaV70KAgSOr6C8kdyzxUwoTXaIE6oIRyRBSR0/sLrpxXgsR0AOZB7u6yvWFyp9Uo2AlUNXcC5LwpTiCl8gcArwGg1TdUlmmhNp/ZCUgJY1O1rN22lSJciUwifOdauoicJ2EpKqdsJPXSEU02U8dHnQV1Ak1krzpyOluRqEaOSTvjIrkhzIPcY5R2dgbNcEROiaRmFSFmAenUozgBusFYXTNJI2kNAHQCNBm4IvvzpMgy7BppOak1sM+UtKPz75rKKBR083w4qzE6WxGcNVTqnCkBLidNWAGN0kkwzyBI2tH5rGHqXSHN7H5J5yW1khp3f56ZXSfpA5JuknS/pFvd/WcHNhSjtLM7fEJaR96wRUe+tWBb/tY1q7bI7QSkBHLo2x1CjNwJkAqmEHDUiSPtlJJJ5IAyO4HL20IMNpgSuUNnAXbpkJR2XphEpruE0u+PBgU42QxnIUkOjSA6W5xUKXNS+mDkiNxf6u4/2ff5Tkl3u/tbzezO/vObD2whRtnFS8NnahpGYMslk2XaBskjXtfSYjF83sASd9QJPHpugjGcACZZSEwQ2Ams1plnIdAJeMJitYzJZsWYoOHT9RFUL06QW0geJMJVwynaPBWq6YwhRTpKcASDqHie4SCMIcvcIukl/e/vkfQZAXKnkTvbKKqVkwU46zUibatrvJIVJSslaXuJzEyQjHO8dPHn2oPv0wmBfSf0te8Sn/5viUVgTZPXCUDSpk5AkoxsIVRVfMZHJSZMxjDPIDG7JFkGyn6sNf5eiMClKO4gocxDZzUH4GrJ3SV9wsxc0jvd/S5J17v7Q/3ffyTp+sFWYpTOg8h9BVeKNi2LOrdqFrlvLWDkbiy5SImzB/qaya6aSpSEEvR+gtzln1xugdNw6gQoaSdE7ni2ghOvdFFbK+R5k1YiZ1yxLKXlD0hzdPO1GLtE8qCd4618syabB3C15P5id3/QzJ4i6ZNm9u39f3R374n/F2Bmd0i6Q5Ke/sQz8vPDkbut4A22Ypq7tmppMTwEtld1Us8QgrGVi7TWXAnJYVpTnbtCSMrqBCxG/DYrjDGcANbc806pcF5AYrOl7PJNTIjIMyeRKXBfDEpHbNdRSazGMWXGcACuitzd/cH+37Nm9iFJz5f0YzO7wd0fMrMbJJ29wv+9S9JdkvS8pz/Z/dxwtYyWa0buywV75+lWzYikrqRtMG+2IDsJKkIsyEmy0oLMoQTQQsLZ2mIVQhM5AacyTyoyyjLYCcQo9ELYlBUrK6F7Fkl56rczoKSN5ZvcxQJ5I/fudZjADmvzCfmDnBVHA/ilyd3MTkkK7n6+//2Vkv5G0kck3Sbprf2/Hx5qy1tXfBisUN1umRa1hPLNVsXejVoF2R6TZdDr+EKQwRvHoZ21bFbjLXzPK3UCIySHMTHLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -309,16 +302,23 @@
|
||||
" a = np.concatenate( [a,a] , axis=3)\n",
|
||||
"\n",
|
||||
" a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n",
|
||||
" plt.imshow(a, origin='lower', cmap='magma')\n",
|
||||
" plt.imshow(a, origin='upper', cmap='magma')\n",
|
||||
" \n",
|
||||
"# run all states through TF to get numpy arrays \n",
|
||||
"vels = sess.run(states) # convert all states in 1 sess.run() call\n",
|
||||
"vels = [ x.velocity.data for x in vels] \n",
|
||||
"#vels = np.asarray( [ sess.run(x, feed_dict={state_in: stateN}).velocity.data for x in states] ) # also works, but slower\n",
|
||||
"sn = np.concatenate(vels, axis=-1)\n",
|
||||
"sn = np.reshape(sn, list(sn.shape)+[1] ) ; print(sn.shape)\n",
|
||||
"vels = np.concatenate(vels, axis=-1)\n",
|
||||
"vels = np.reshape(vels, list(vels.shape)+[1] ) ; print(\"Vels array shape: \"+format(vels.shape))\n",
|
||||
"\n",
|
||||
"show_state(sn)"
|
||||
"# TODO later?\n",
|
||||
"#error = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n",
|
||||
"#print(\"Mean absolute error across {} steps: {:7.5f}\".format(steps,error))\n",
|
||||
"\n",
|
||||
"# save for comparison with other methods\n",
|
||||
"np.savez_compressed(\"./temp/burgers-diffphys-solution.npz\", np.reshape(vels,[n,steps+1])) # remove batch & channel dimension\n",
|
||||
"\n",
|
||||
"show_state(vels)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -328,6 +328,117 @@
|
||||
"So far only 1D Burgers, but this works with more complex model equations and higher dimensions in just the same way."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Physics-Informed vs. Differentiable Physics Reconstruction\n",
|
||||
"\n",
|
||||
"now we have both versions, let's compare both reconstructions in more detail...\n",
|
||||
"\n",
|
||||
"let's first look at the solutions side by side, from top to bottom: the \"ground truth\" solution as given by the regular forward simulation, in the middle the PINN reconstruction, and at the bottom the differentiable physics version:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 54,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"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": [
|
||||
"# note, this requires running the forward sim & PINN notebooks beforehand\n",
|
||||
"sol_gt=npfile=np.load(\"./temp/burgers-groundtruth-solution.npz\")[\"arr_0\"] ; #print(format(sol_gt.shape)) \n",
|
||||
"sol_pi=npfile=np.load(\"./temp/burgers-pinn-solution.npz\")[\"arr_0\"] ; #print(format(sol_pi.shape)) \n",
|
||||
"sol_dp=npfile=np.load(\"./temp/burgers-diffphys-solution.npz\")[\"arr_0\"] ; #print(format(sol_dp.shape)) \n",
|
||||
"\n",
|
||||
"divider = np.ones([10,33])*-1. # we'll sneak in a block of -1s to show a black divider in the image\n",
|
||||
"sbs = np.concatenate( [sol_gt, divider, sol_pi, divider, sol_dp], axis=0)\n",
|
||||
"\n",
|
||||
"show_state(np.reshape(sbs,[1,n*3+20,33,1]))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"It's clealry visible here "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 53,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MAE PINN: \t967.83557, \n",
|
||||
"MAE DiffPhys: \t193.25261\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": [
|
||||
"err_pi = np.sum( np.abs(sol_pi-sol_gt))\n",
|
||||
"err_dp = np.sum( np.abs(sol_dp-sol_gt))\n",
|
||||
"#error = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n",
|
||||
"print(\"MAE PINN: \\t{:7.5f} \\nMAE DiffPhys: \\t{:7.5f}\".format(err_pi,err_dp))\n",
|
||||
"\n",
|
||||
"show_state(np.reshape( np.concatenate([sol_pi-sol_gt, divider, sol_dp-sol_gt],axis=0) ,[1,n*2+10,33,1]))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"That's pretty clear, the PINN error is ca. 5 times higher than the Differentiable Physics (DP) reconstruction.\n",
|
||||
"\n",
|
||||
"That also shows clearly in the jointly visualized image: the magnitudes of the errors of the DP reconstruction are much closer to zero, as indicated by the purple color above."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now we have a first example to show similarities and differences of the two approaches. In the section, we'll present a more in depth discussion of these findings, before moving to more complex cases."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercises:\n",
|
||||
"As with the PINN version, there's variety of things that can be improved and experimented with here:\n",
|
||||
"\n",
|
||||
"* Try to adjust the training parameters to improve the reconstruction.\n",
|
||||
"* As for the PINN case, you can activate a different optimizer, and observe the changing (not necessarily improved) behavior.\n",
|
||||
"* Vary the number of steps, or the resolution of the simulation and reconstruction."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
@@ -352,7 +463,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.7.6"
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
+50
-12
@@ -6,8 +6,14 @@
|
||||
"source": [
|
||||
"# Simple forward simulation in phiflow\n",
|
||||
"\n",
|
||||
"how to run\n",
|
||||
"simple model equation $f(x) = ...$ "
|
||||
"how to run ...\n",
|
||||
"simple model equation \n",
|
||||
"$\n",
|
||||
" \\frac{\\partial u}{\\partial{t}} + u \\nabla u =\n",
|
||||
" \\nu \\nabla\\cdot \\nabla u\n",
|
||||
"$ \n",
|
||||
"\n",
|
||||
"Note, the first command with a \"!\" prefix installs the [Φ<sub>Flow</sub> Python package from GitHub](https://github.com/tum-pbs/PhiFlow) via `pip` in your python environment. (Skip or modify this command if necessary.)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -38,14 +44,28 @@
|
||||
" [0.09414805]\n",
|
||||
" [0.10529345]] ...\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" for key in self._mapping:\n",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" yield (key, self._mapping[key])\n",
|
||||
"/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n",
|
||||
" warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"!pip install --upgrade --quiet phiflow\n",
|
||||
"from phi.flow import *\n",
|
||||
"\n",
|
||||
"# run with phiflow\n",
|
||||
"n = 128\n",
|
||||
"dt = 1./32.\n",
|
||||
"steps = 32\n",
|
||||
"dt = 1./steps\n",
|
||||
"viscosity = 0.01/np.pi\n",
|
||||
"initial = np.asarray( [ [-math.sin(np.pi * x) * 1.] for x in np.linspace(-1,1,n)] )\n",
|
||||
"\n",
|
||||
@@ -84,7 +104,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x122bc1550>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f17fdeb2610>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 2,
|
||||
@@ -93,7 +113,7 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABlyklEQVR4nO2dZ3hURReA30knhBJ66BGQ3kNJgqJ0FAUEKUqxIKAo0vuHSFEEBVEUREAQkCKIFJEuIknovbfQQqhJICF9d74fsyEhpO9uCpn3efbJ3nvnzpy92b3nzplThJQSjUaj0eRebLJaAI1Go9FkLVoRaDQaTS5HKwKNRqPJ5WhFoNFoNLkcrQg0Go0ml2OX1QJkhCJFisjy5ctntRgajUaTozh06NA9KWXRxPtzpCIoX748Bw8ezGoxNBqNJkchhLia1H5tGtJoNJpcjlYEGo1Gk8vRikCj0WhyOVoRaDQaTS5HKwKNRqPJ5VhEEQghFgoh7gghTiZzXAghvhNCXBRCHBdC1EtwrLcQ4oLp1dsS8mg0Go0m7VhqRrAIaJPC8bZAJdOrLzAHQAhRCPgMaAQ0BD4TQrhaSCaNRqPRpAGLxBFIKXcLIcqn0KQ98KtUOa/3CiEKCiHcgJeAbVLKIAAhxDaUQlluCbk0aefWLfDzgzNn4MoVCAyEyEiIjoZ8+aBwYShVCmrUgFq1oFo1sNGGRY3mmSCzAspKAdcTbN8w7Utu/1MIIfqiZhOULVvWOlLmIoxG8PWF1athwwa4fDl95xcpAi1bQvv26uXkZB0508Kj6EecvHOS47ePExAawL3we4THhJPXPi/5HfNTrWg1GpZqSMVCFRFCZJ2gGk02JcdEFksp5wHzADw8PHQ1nQwSFAQLFsCPP6on/zhcXKBxY6hdG9zdoXRpyJMH7OwgLAzu3wd/fzhxAg4dguvXYfly9SpYELp3h8GDoVIl638GKSX7A/bz14W/2HppKwduHsAojameVzp/aT6o9wF96vWhZL6S1hdUo8khZJYiCADKJNgubdoXgDIPJdy/K5NkylUEB8O0afDddxAervaVKwddukCnTuDhAba2aetLSjh/Hv7+G5YuVYphzhyYOxfefBPGj4fq1S3/GS4HX2bB4QUsP7kc/xD/x/vtbOyoXrQ6tUvUxr2gO0Wci5DXPi9h0WEERQRx9PZR9gfs58bDG3y26zMm7Z7ECK8RjG86Hkc7R8sLqtHkNKSUFnkB5YGTyRx7FfgbEEBjYL9pfyHAH3A1vfyBQqmNVb9+falJGzExUs6YIWWBAlKqW7iUrVpJuXGjlLGxlhnj+HEp+/SR0t5e9W9jI+VHH0l59675fRuNRrn5wmbZeklryQQev9y+dpMf//Wx3HhuowyNCk1TPzsu75CdVnaSYoKQTEDW+LGGPHzzsPlCajQ5BOCgTOoendTO9L5Qi7uBQAzKzv8+0B/obzougB+AS8AJwCPBue8BF02vd9MynlYEaWP/finr1IlXAM2aSbl3r/XGu35dKQBbWzVeoUJSLl0qpdGY/r6MRqPccG6DbDCvweObv+MkR9lrbS/5j/8/MtaQcS225+oeWem7SpIJSJcvXKTPNZ8M96XR5CSSUwRC5sDi9R4eHlJnH02e2FiYMgUmTQKDQZmAZs+Gdu0yZ/xTp+DTT2HHDrXdoQP89BMUK5b6uUZp5M+zfzJ592SO3DoCQFHnogz1HMoH9T+gUJ5CFpExPCac99e/z4qTK8jnkI8tPbbgWcbTIn1rNNkVIcQhKaXHU/u1Ini2uHEDunUDHx8QAoYMgc8/h7x5M1cOKWHhQjX+w4dQsiSsXAlNmiR/zr4b+/h086fsC9gHgJuLGyO8R9C3fl+c7Z0tLmOsMZaea3s+Vgb7P9hPlSJVLD6ORpNdSE4RaE/wZ4g9e6B+faUESpaE7dvh668zXwmAUkLvv6+8jJo0gZs34aWXYOZMpSQSEvAwgJ5re9J4QWP2BeyjhEsJZredzeVPLzOo8SCrKAFQi8xLOi7hjapvEBodSs+1PYkxxKTpXAnsB74GrllFOo0m89CK4BlhwQJo1gzu3IHmzeHYMbWd1ZQtCzt3wrBhykw1ZAj07w8xMRAZG8mkfyfx/OznWXp8KY62joxpMoYLn1xgQMMBONlZPzjBzsaOha8vpEz+Mhy8eZAv93yZYvswYAZQBRUOPxz43OpSajTWRZuGcjhSwsSJMGGC2h48WLmJ2mXDCJFVq6BXL4iKAo839vDwpQ84H3QWgE5VOzG95XTcXd2zRLad/jtp/mtz7Gzs2Pv+XuqXrP/E8WBgNvAtEGTa5wyEA03RPs+anIE2DT2DGAzw0UdKCdjYqAXZGTOypxIAFbPw1/aHOHX6iIO1XuB80FkquVbhn97/sLrL6ixTAgDN3JvxaaNPiTXG8unmT+M82rgLjAbKAeNRSqAxsA5lGgLlJqfR5GS0IsihGAzw7rsqiMvJCdasgb59s1qqlNlwbgO991cjsuYcMNrBv//DfsERqji9lNWiATDp5Um4Ornic92H9dd9GAO4A1OBUKA5sBPwBV5HKQdQiiDnzas1mniy6bOjJiUMBujdG5YtUwvBf/0FTZtmtVTJExoVyqDNg1h4dCEAjUo1YnKjn/lkVU1On1VrGbt2pc291Jrkc8xHvyajmBobSacSdTGY9r8C/A81E0iIC1AQCAHuAUUzS1CNxsJoRZDDMBrhvfeUEnBxUWkeUnLJzGr2XNtDr7W98A/xx8nOiS+afcHARgOxtbFl926lBE6eVAns/vkHClkmTCDdPABmAT96DQchMACNIkKYlacgjVI4rzRKEdxAKwJNzkWbhnIQUiqvm19/VTOBzZuzrxKINkQzevtoXvzlRfxD/Klboi6H+h5isOdgbG1UUqOiRZWLa+XKcPw4tGoFoaGZK2cE8BXKBPQZ8FAIygddhIXeFPrjrRSVAChFAHqdQJOz0YogBzF5MsyaBQ4O8Oef4O2d1RIlzYX7F/Bc4MlUn6kIIRj7wlj29tlLtaLVnmpbvLiKQH7uOZW8rnNnVQPB2hiAhahKSaNQXkEvorx/9jsWIE/gEf6++DeXg1POzx2XSVErAk1ORiuCHMKiRSqrp42NSv3cokVWS5Q0v534jXrz6nE48DDuBd3Z/c5uJjebjIOtQ7LnlCoFW7eqNYKtW6FPn6eDziyFBDYAtVAJsQKAusBWlBJoChTNW5QOVToAsPLkyhT70zMCzbOAVgQ5gJ074YMP1PvZs+GNN7JWnqQIjwmnz/o+vP3H24RFh9GleheO9DuCd9m0TVsqVFCL3nnzwpIl8NlnlpdxL+pG/zpwGpUudxlwEGiJyowYR/ca3QFYfjLlYnlaEWieBbQiyOacPavqBcTGwtCh8OGHWS3R05y+e5oGPzdgwZEFONk5MffVuazotIICTgXS1Y+HB/z+u5r1TJoEK1ZYRr5zQCfAE/gPKAzMBM4Cb5H0j6B1xda4Orly4s4JTt05lWzfcYrgerItNJrsj1YE2ZgHD1QZyJAQlcHzq6+yWqKnWXVqFQ1/bsjpu6epUqQK+/vsp59HvwyXhGzbVgXFgYqT2L8/5fYpcQf4EKgO/AHkAcagcqEPAlIqSeNg60Cnqp2AlGcFekageRbQiiCbYjTC22+rSmA1aypzSVoriGUGscZYhm0dRtfVXXkU84i3ar7FwQ8OUrN4TbP7HjhQmcIiI6FjR7h9O33nRwHTgYrAXNS6QB/gAjAFSOs8pXtNZR5acXIFyaViSagIdFCZJqeiFUE2ZcIEZTMvVEh5CLm4ZLVE8dx5dIeWS1ryjd832NnY8V2b71jacSl5HSyT5lQItRYSl7W0WzdlGksNCawFqgEjUNHAr6AqIf0MlEqnHE3LNaWESwkuBV/i4M2kc1vlN70iUJ5HGk1OxCKKQAjRRghxTghxUQgxKonjM4UQR02v80KIkATHDAmOrbeEPDmd7duVq6iNjcrh/9xzWS1RPHtv7KXeT/XYdWUXJVxK8E/vf/ik0ScZNgUlh4ODSlJXooSKOh4zJuX2x1ApIN4ALgNVUbVR/0Iphoxga2NL56qdAdhwfkOy7bR5SJPTMVsRCCFsUWUo26J+c92FEE/89qSUg6WUdaSUdYDvUSbbOCLijkkpXzdXnpzO7dvQo4dyn/zss+zjJiqlZO7Bubz4y4sEhAbgXcabw30P06Ss9SLa3NyUMrC1henTYX0Sjwl3gL4oF9B/UEWwZ6MUQxsLyNCyQksA/r36b7JttCLQ5HQsMSNoCFyUUl6WUkYDK4D2KbTvjqpxrEmE0ajSNN++rYq4jB2b1RIpomKj6LO+Dx/+9SExxhg+afgJO3vvxC2fm9XHfuGF+EXy995TpiJ4ch3gZ8AW+BRV+HoAYG+p8cu+gECw98ZeImIikmyjFYEmp2MJRVCKJ73nbpCMOVYIUQ4Vzb8zwW4nIcRBIcReIUSH5AYRQvQ1tTt49+5dC4id/fj6axVQVaSIyiWUHRaH7zy6Q4slLVh4dCF57PKwpOMSvmv7XYoBYpZm8GCVfuL+fejVG9YYn1wHeBW1DvAt4GrhsV3zuFK7RG2iDdGPS2gmRruQanI6mb1Y3A1YLaU0JNhXzlQo4S3gWyFEhaROlFLOk1J6SCk9ihZ99tJ77d0bPwNYtEiVmsxqTtw+QcOfG7Ln2h5K5SvFnvf20KNWj0yXw8ZGXZOCL8CO0dDZJn4dYDOwEVUxzFo0LadSu+66sivJ4zrNhCanYwlFEED8bwHUA1JAMm27kcgsJKUMMP29jIryr2sBmXIUISHQvbvyjBkyBF59NaslgvXn1uO10IurD67SsFRDDnxwgHpu9bJElhDgKzd4uAtoBtyHkdfhONA6E8aPUwTJrRNo05Amp2MJRXAAqCSEcBdCOKBu9k8t6wkhqqBm7n4J9rkKIRxN74sA3qjo/1zFgAFw5YqKrP0y5ZK5VkdKyVd7vqLDig6ERYfxds232dV7V6aLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -107,8 +127,6 @@
|
||||
"source": [
|
||||
"# we only need \"velocity.data\" from each phiflow state\n",
|
||||
"vels = [x.velocity.data for x in state]\n",
|
||||
"sn = np.concatenate(vels, axis=-1)\n",
|
||||
"sn = np.reshape(sn, list(sn.shape)+[1] ) # print(sn.shape)\n",
|
||||
"\n",
|
||||
"# print(vels[0][0,:,0].shape)\n",
|
||||
"# print(vels[0].shape[1])\n",
|
||||
@@ -131,12 +149,19 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Vels array shape: (1, 128, 33, 1)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -156,10 +181,23 @@
|
||||
"\n",
|
||||
" a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n",
|
||||
" #print(\"resulting image size\" +format(a.shape))\n",
|
||||
" plt.imshow(a, origin='lower', cmap='magma')\n",
|
||||
" plt.imshow(a, origin='upper', cmap='magma')\n",
|
||||
" \n",
|
||||
"show_state(sn)"
|
||||
"vels_img = np.asarray( np.concatenate(vels, axis=-1), dtype=np.float32 )\n",
|
||||
"vels_img = np.reshape(vels_img, list(vels_img.shape)+[1] ) ; print(\"Vels array shape: \"+format(vels_img.shape))\n",
|
||||
"\n",
|
||||
"# save for comparison with reconstructions later on\n",
|
||||
"np.savez_compressed(\"./temp/burgers-groundtruth-solution.npz\", np.reshape(vels_img,[n,steps+1])) # remove batch & channel dimension\n",
|
||||
"\n",
|
||||
"show_state(vels_img)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
@@ -178,7 +216,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.7.6"
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
+375
-341
@@ -1,347 +1,381 @@
|
||||
{
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"name": "Forw Simulations with Φ-Flow.ipynb",
|
||||
"provenance": [],
|
||||
"collapsed_sections": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"name": "python3",
|
||||
"display_name": "Python 3"
|
||||
}
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "o4JZ84moBKMr"
|
||||
},
|
||||
"source": [
|
||||
"# Navier-Stokes Forward Simulation with Φ<sub>Flow</sub>\n",
|
||||
"\n",
|
||||
"... now a more complex example with fluid simulations (Navier-Stokes) ... still very simple with phiflow (complexity of the differentiable operators hidden).\n",
|
||||
"\n",
|
||||
"As before, the first command with a \"!\" prefix installs the [Φ<sub>Flow</sub> Python package from GitHub](https://github.com/tum-pbs/PhiFlow) via `pip` in your python environment. (Skip or modify this command if necessary.)"
|
||||
]
|
||||
},
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "o4JZ84moBKMr"
|
||||
},
|
||||
"source": [
|
||||
"# Navier-Stokes Forward Simulation with Φ<sub>Flow</sub>\n",
|
||||
"\n",
|
||||
"... now a more complex example with fluid simulations (Navier-Stokes) ... still very simple with phiflow (complexity of the differentiable operators hidden).\n",
|
||||
"\n",
|
||||
"Only for colab: \n",
|
||||
"Execute the cell below to install the [Φ<sub>Flow</sub> Python package from GitHub](https://github.com/tum-pbs/PhiFlow)."
|
||||
]
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "da1uZcDXdVcF",
|
||||
"outputId": "1082dc87-796c-4b57-e72e-5790fc1444c9"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "Z6YoAVKebfNV"
|
||||
},
|
||||
"source": [
|
||||
"!pip install --upgrade --quiet phiflow"
|
||||
],
|
||||
"execution_count": 1,
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "da1uZcDXdVcF",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"outputId": "1082dc87-796c-4b57-e72e-5790fc1444c9"
|
||||
},
|
||||
"source": [
|
||||
"from phi.flow import * # The Dash GUI is not supported on Google Colab, ignore the warning\n",
|
||||
"import pylab"
|
||||
],
|
||||
"execution_count": 2,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/usr/local/lib/python3.6/dist-packages/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'dash_core_components'. To install all dependencies, run $ pip install phiflow[gui]\n",
|
||||
" warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n"
|
||||
],
|
||||
"name": "stderr"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "BVV1IKVqDfLl"
|
||||
},
|
||||
"source": [
|
||||
"## Setting up the simulation\n",
|
||||
"\n",
|
||||
"Φ<sub>Flow</sub> is object-oriented, i.e. you assemble your simulation by constructing a number of objects and adding them to the world.\n",
|
||||
"\n",
|
||||
"The following code sets up four fluid simulations that run in parallel (`batch_size=4`). Each fluid simulation has a circular Inflow at a different location."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "WrA3IXDxv31P"
|
||||
},
|
||||
"source": [
|
||||
"world = World()\n",
|
||||
"fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05), physics=IncompressibleFlow())\n",
|
||||
"world.add(Inflow(Sphere(center=[5,14], radius=3), rate=0.2));"
|
||||
],
|
||||
"execution_count": 3,
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "ExA0Pi2sFVka"
|
||||
},
|
||||
"source": [
|
||||
"The inflow affects the fluid's marker density. Because a Boussinesq model with a positive `buoyancy_factor` is active, the marker field `density` creates an upward force. Note that this density is not the density of the fluid, but the amount of marker quantity present in each cell.\n",
|
||||
"\n",
|
||||
"Let's plot the marker density after one simulation frame."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "WmGZdOwswOva",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 282
|
||||
},
|
||||
"outputId": "3ae4d68d-b586-4bbe-eca9-a223d7720949"
|
||||
},
|
||||
"source": [
|
||||
"world.step()\n",
|
||||
"pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')"
|
||||
],
|
||||
"execution_count": 4,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.image.AxesImage at 0x7fc128aa7ef0>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"execution_count": 4
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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\n",
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"tags": [],
|
||||
"needs_background": "light"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "PA-2tGuWGHv2"
|
||||
},
|
||||
"source": [
|
||||
"We can run more steps by repeatedly calling `world.step()`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "0hZk5HX3w4Or",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"outputId": "f7811af7-4b58-4ff6-a8b6-6e7bedefaa6e"
|
||||
},
|
||||
"source": [
|
||||
"for frame in range(10):\n",
|
||||
" print('Computing frame %d' % frame)\n",
|
||||
" world.step(dt=1.5)"
|
||||
],
|
||||
"execution_count": 5,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Computing frame 0\n",
|
||||
"Computing frame 1\n",
|
||||
"Computing frame 2\n",
|
||||
"Computing frame 3\n",
|
||||
"Computing frame 4\n",
|
||||
"Computing frame 5\n",
|
||||
"Computing frame 6\n",
|
||||
"Computing frame 7\n",
|
||||
"Computing frame 8\n",
|
||||
"Computing frame 9\n"
|
||||
],
|
||||
"name": "stdout"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "GMKKWQBLHIwP"
|
||||
},
|
||||
"source": [
|
||||
"Now the hot plume is starting to rise:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "Mfl80CjZxZcL",
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 282
|
||||
},
|
||||
"outputId": "92f3a9ba-d403-4799-a543-132ee8ed234c"
|
||||
},
|
||||
"source": [
|
||||
"pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')"
|
||||
],
|
||||
"execution_count": 6,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.image.AxesImage at 0x7fc1265294a8>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"execution_count": 6
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"tags": [],
|
||||
"needs_background": "light"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "wnbQJvA-HPSL"
|
||||
},
|
||||
"source": [
|
||||
"Let's compute and show a few more steps of the simulation."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 489
|
||||
},
|
||||
"id": "tkhCOzc0ITsj",
|
||||
"outputId": "f6366c12-1eb5-4ff6-e0d7-94b806bfd8e4"
|
||||
},
|
||||
"source": [
|
||||
"frames = [fluid.density.data[0,...,0]]\n",
|
||||
"for frame in range(20):\n",
|
||||
" print('Computing frame %d' % frame)\n",
|
||||
" world.step(dt=1.5)\n",
|
||||
" if frame%5==0:\n",
|
||||
" frames.append(fluid.density.data[0,...,0])\n",
|
||||
"\n",
|
||||
"pylab.imshow(np.concatenate(frames,axis=1), origin='lower', cmap='magma')"
|
||||
],
|
||||
"execution_count": 7,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Computing frame 0\n",
|
||||
"Computing frame 1\n",
|
||||
"Computing frame 2\n",
|
||||
"Computing frame 3\n",
|
||||
"Computing frame 4\n",
|
||||
"Computing frame 5\n",
|
||||
"Computing frame 6\n",
|
||||
"Computing frame 7\n",
|
||||
"Computing frame 8\n",
|
||||
"Computing frame 9\n",
|
||||
"Computing frame 10\n",
|
||||
"Computing frame 11\n",
|
||||
"Computing frame 12\n",
|
||||
"Computing frame 13\n",
|
||||
"Computing frame 14\n",
|
||||
"Computing frame 15\n",
|
||||
"Computing frame 16\n",
|
||||
"Computing frame 17\n",
|
||||
"Computing frame 18\n",
|
||||
"Computing frame 19\n"
|
||||
],
|
||||
"name": "stdout"
|
||||
},
|
||||
{
|
||||
"output_type": "execute_result",
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.image.AxesImage at 0x7fc1265346a0>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"execution_count": 7
|
||||
},
|
||||
{
|
||||
"output_type": "display_data",
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"tags": [],
|
||||
"needs_background": "light"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "ooqVxCPM8PXl"
|
||||
},
|
||||
"source": [
|
||||
"It looks simple here, but this is a powerful tool. The simulation could easily be extended to more complex cases or 3D, and they're fully compatible with back-propagation pipelines of deep learning frameworks. \n",
|
||||
"\n",
|
||||
"In the next chapters we'll show how to use these simulations for training NNs, and how to steer and modify them via trained NNs. This will illustrate how much we can improve the training process by having a solver in the loop, and especially by having differentiable solvers."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"id": "BL-AOqwMJmkq"
|
||||
},
|
||||
"source": [
|
||||
""
|
||||
],
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" for key in self._mapping:\n",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" yield (key, self._mapping[key])\n",
|
||||
"/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n",
|
||||
" warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"source": [
|
||||
"!pip install --upgrade --quiet phiflow\n",
|
||||
"from phi.flow import * # The Dash GUI is not supported on Google Colab, ignore the warning\n",
|
||||
"import pylab"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "BVV1IKVqDfLl"
|
||||
},
|
||||
"source": [
|
||||
"## Setting up the simulation\n",
|
||||
"\n",
|
||||
"Φ<sub>Flow</sub> is object-oriented, i.e. you assemble your simulation by constructing a number of objects and adding them to the world.\n",
|
||||
"\n",
|
||||
"The following code sets up four fluid simulations that run in parallel (`batch_size=4`). Each fluid simulation has a circular Inflow at a different location."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"id": "WrA3IXDxv31P"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"world = World()\n",
|
||||
"fluid = world.add(Fluid(Domain([40, 32], boundaries=CLOSED), buoyancy_factor=0.05), physics=IncompressibleFlow())\n",
|
||||
"world.add(Inflow(Sphere(center=[5,14], radius=3), rate=0.2));"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "ExA0Pi2sFVka"
|
||||
},
|
||||
"source": [
|
||||
"The inflow affects the fluid's marker density. Because a Boussinesq model with a positive `buoyancy_factor` is active, the marker field `density` creates an upward force. Note that this density is not the density of the fluid, but the amount of marker quantity present in each cell.\n",
|
||||
"\n",
|
||||
"Let's plot the marker density after one simulation frame."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 282
|
||||
},
|
||||
"id": "WmGZdOwswOva",
|
||||
"outputId": "3ae4d68d-b586-4bbe-eca9-a223d7720949"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.image.AxesImage at 0x7f9cf945eee0>"
|
||||
]
|
||||
},
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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\n",
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {
|
||||
"needs_background": "light"
|
||||
},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"world.step()\n",
|
||||
"pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"A lot has happened internally in the `world.step()` call, e.g., for fluids we have a more complex `struct` object that stores the different fields of the simulation. For fluids we have the aforementioned marker density in addition to a velocity."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Fluid state: Fluid[density: Grid[40x32(1), size=[40. 32.], float32], velocity: StaggeredGrid[40x32, size=[40. 32.], float32]]\n",
|
||||
"\n",
|
||||
" Velocity content:\n",
|
||||
"(1, 41, 32, 1)\n",
|
||||
"(1, 40, 33, 1)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(\"Fluid state: \" + format(fluid.state))\n",
|
||||
"print(\"\\nVelocity content:\")\n",
|
||||
"[print(grid.data.shape) for grid in fluid.velocity.unstack()];"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Note that we actually created two variables, one for each velocity component. If you're interested in how this works, have a look at the [Struct documentation](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Structs.ipynb).\n",
|
||||
"\n",
|
||||
"If you look closely at the output from the last `print` command, you'll notice that the shapes of the variables differ. This is because the velocity is sampled in [staggered form](https://github.com/tum-pbs/PhiFlow/blob/master/documentation/Staggered_Grids.md).\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "PA-2tGuWGHv2"
|
||||
},
|
||||
"source": [
|
||||
"We can run more steps by repeatedly calling `world.step()`."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "0hZk5HX3w4Or",
|
||||
"outputId": "f7811af7-4b58-4ff6-a8b6-6e7bedefaa6e"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Computing frame 0\n",
|
||||
"Computing frame 1\n",
|
||||
"Computing frame 2\n",
|
||||
"Computing frame 3\n",
|
||||
"Computing frame 4\n",
|
||||
"Computing frame 5\n",
|
||||
"Computing frame 6\n",
|
||||
"Computing frame 7\n",
|
||||
"Computing frame 8\n",
|
||||
"Computing frame 9\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for frame in range(10):\n",
|
||||
" print('Computing frame %d' % frame)\n",
|
||||
" world.step(dt=1.5)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "GMKKWQBLHIwP"
|
||||
},
|
||||
"source": [
|
||||
"Now the hot plume is starting to rise:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 282
|
||||
},
|
||||
"id": "Mfl80CjZxZcL",
|
||||
"outputId": "92f3a9ba-d403-4799-a543-132ee8ed234c"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.image.AxesImage at 0x7fa84d3553d0>"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"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": [
|
||||
"pylab.imshow(fluid.density.data[0,...,0], origin='lower', cmap='magma')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "wnbQJvA-HPSL"
|
||||
},
|
||||
"source": [
|
||||
"Let's compute and show a few more steps of the simulation."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 489
|
||||
},
|
||||
"id": "tkhCOzc0ITsj",
|
||||
"outputId": "f6366c12-1eb5-4ff6-e0d7-94b806bfd8e4"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Computing frame 0\n",
|
||||
"Computing frame 1\n",
|
||||
"Computing frame 2\n",
|
||||
"Computing frame 3\n",
|
||||
"Computing frame 4\n",
|
||||
"Computing frame 5\n",
|
||||
"Computing frame 6\n",
|
||||
"Computing frame 7\n",
|
||||
"Computing frame 8\n",
|
||||
"Computing frame 9\n",
|
||||
"Computing frame 10\n",
|
||||
"Computing frame 11\n",
|
||||
"Computing frame 12\n",
|
||||
"Computing frame 13\n",
|
||||
"Computing frame 14\n",
|
||||
"Computing frame 15\n",
|
||||
"Computing frame 16\n",
|
||||
"Computing frame 17\n",
|
||||
"Computing frame 18\n",
|
||||
"Computing frame 19\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.image.AxesImage at 0x7fa84d2d8790>"
|
||||
]
|
||||
},
|
||||
"execution_count": 7,
|
||||
"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": [
|
||||
"frames = [fluid.density.data[0,...,0]]\n",
|
||||
"for frame in range(20):\n",
|
||||
" print('Computing frame %d' % frame)\n",
|
||||
" world.step(dt=1.5)\n",
|
||||
" if frame%5==0:\n",
|
||||
" frames.append(fluid.density.data[0,...,0])\n",
|
||||
"\n",
|
||||
"pylab.imshow(np.concatenate(frames,axis=1), origin='lower', cmap='magma')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "ooqVxCPM8PXl"
|
||||
},
|
||||
"source": [
|
||||
"It looks simple here, but this is a powerful tool. The simulation could easily be extended to more complex cases or 3D, and they're fully compatible with back-propagation pipelines of deep learning frameworks. \n",
|
||||
"\n",
|
||||
"In the next chapters we'll show how to use these simulations for training NNs, and how to steer and modify them via trained NNs. This will illustrate how much we can improve the training process by having a solver in the loop, and especially by having differentiable solvers."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "BL-AOqwMJmkq"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"collapsed_sections": [],
|
||||
"name": "Forw Simulations with Φ-Flow.ipynb",
|
||||
"provenance": []
|
||||
},
|
||||
"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.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 1
|
||||
}
|
||||
+180
-270
@@ -7,11 +7,12 @@
|
||||
"# PINN Example \n",
|
||||
"\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)\n",
|
||||
"\n",
|
||||
"Note that we're still sampling with 128 points ($n=128), but now we have a discretization via the NN, so we can \n",
|
||||
"also sample points inbetween; similar to linear interpolatoin or basis functions for FEM, just now the NN internally determines how to use its degrees of freedom to construct the basis functions. So we have no direct control over the reconstruction.\n",
|
||||
"\n",
|
||||
"## Preliminaries"
|
||||
]
|
||||
},
|
||||
@@ -20,24 +21,32 @@
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/thuerey/phiflow/phi/tf/__init__.py:7: UserWarning: TensorFlow 2 is not fully supported by PhiFlow.\n",
|
||||
" warnings.warn('TensorFlow 2 is not fully supported by PhiFlow.')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"
|
||||
"Could not load resample cuda libraries: CUDA binaries not found at /home/thuerey/phiflow/phi/tf/cuda/build/resample.so. Run \"python setup.py cuda\" to compile them\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",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:743: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" for key in self._mapping:\n",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/_collections_abc.py:744: MatplotlibDeprecationWarning: The global colormaps dictionary is no longer considered public API.\n",
|
||||
" yield (key, self._mapping[key])\n",
|
||||
"/home/thuerey/phiflow/phi/viz/display.py:80: UserWarning: GUI is disabled because of missing dependencies: No module named 'imageio'. To install all dependencies, run $ pip install phiflow[gui]\n",
|
||||
" warnings.warn('GUI is disabled because of missing dependencies: %s. To install all dependencies, run $ pip install phiflow[gui]' % import_error)\n",
|
||||
"/home/thuerey/phiflow/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"
|
||||
@@ -51,6 +60,13 @@
|
||||
"rnd = math.choose_backend(1) # use same random points for all iterations"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We're important phiflow here, but we won't use it to compute a solution to the PDE. Now we'll instead use the derivatives of an NN (as explained in the previous section) to set up a loss formulation to train an NN."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
@@ -116,15 +132,13 @@
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"WARNING:tensorflow:From <ipython-input-2-a9e33b53329c>:7: 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"
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/legacy_tf_layers/core.py:171: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.\n",
|
||||
" warnings.warn('`tf.layers.dense` is deprecated and '\n",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1719: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.\n",
|
||||
" warnings.warn('`layer.apply` is deprecated and '\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -132,7 +146,8 @@
|
||||
"# 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",
|
||||
"n=128\n",
|
||||
"grids_xt = np.meshgrid(np.linspace(-1, 1, n), 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",
|
||||
@@ -148,7 +163,7 @@
|
||||
"# 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",
|
||||
"# in this case gives shape=(1, n, 33, 1)\n",
|
||||
"grid_u = math.expand_dims(network(grid_x, grid_t))"
|
||||
]
|
||||
},
|
||||
@@ -156,7 +171,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Helper to show"
|
||||
"Helper to show (see below)"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -171,20 +186,12 @@
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Size of grid_u: (1, 128, 33, 1)\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:17: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:18: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:28: The name tf.global_variables_initializer is deprecated. Please use tf.compat.v1.global_variables_initializer instead.\n",
|
||||
"\n",
|
||||
"WARNING:tensorflow:From /Users/thuerey/Dropbox/mbaDevelSelected/phiflow-v1.5/phi/tf/session.py:29: The name tf.train.Saver is deprecated. Please use tf.compat.v1.train.Saver instead.\n",
|
||||
"\n",
|
||||
"Randomly initialized network state:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -213,7 +220,7 @@
|
||||
" a = np.concatenate( [a,a] , axis=3)\n",
|
||||
" a = np.reshape( a, [a.shape[1],a.shape[2]*a.shape[3]] )\n",
|
||||
" #print(a.shape)\n",
|
||||
" plt.imshow(a, origin='lower', cmap='magma')\n",
|
||||
" plt.imshow(a, origin='upper', cmap='magma')\n",
|
||||
" \n",
|
||||
"print(\"Randomly initialized network state:\")\n",
|
||||
"show_state(grid_u)"
|
||||
@@ -236,12 +243,13 @@
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"WARNING:tensorflow:From /usr/local/lib/python3.7/site-packages/tensorflow_core/python/ops/math_grad.py:1375: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
|
||||
"Instructions for updating:\n",
|
||||
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n"
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/legacy_tf_layers/core.py:171: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.\n",
|
||||
" warnings.warn('`tf.layers.dense` is deprecated and '\n",
|
||||
"/home/thuerey/anaconda3/envs/tf/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1719: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.\n",
|
||||
" warnings.warn('`layer.apply` is deprecated and '\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -275,208 +283,28 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Step 0, loss: 0.111230\n",
|
||||
"Step 50, loss: 0.059567\n",
|
||||
"Step 100, loss: 0.050345\n",
|
||||
"Step 150, loss: 0.040759\n",
|
||||
"Step 200, loss: 0.033108\n",
|
||||
"Step 250, loss: 0.027403\n",
|
||||
"Step 300, loss: 0.021609\n",
|
||||
"Step 350, loss: 0.017801\n",
|
||||
"Step 400, loss: 0.013434\n",
|
||||
"Step 450, loss: 0.031098\n",
|
||||
"Step 500, loss: 0.019279\n",
|
||||
"Step 550, loss: 0.015963\n",
|
||||
"Step 600, loss: 0.014481\n",
|
||||
"Step 650, loss: 0.013526\n",
|
||||
"Step 700, loss: 0.012771\n",
|
||||
"Step 750, loss: 0.012119\n",
|
||||
"Step 800, loss: 0.011504\n",
|
||||
"Step 850, loss: 0.010888\n",
|
||||
"Step 900, loss: 0.010266\n",
|
||||
"Step 950, loss: 0.009654\n",
|
||||
"Step 1000, loss: 0.009068\n",
|
||||
"Step 1050, loss: 0.008521\n",
|
||||
"Step 1100, loss: 0.008014\n",
|
||||
"Step 1150, loss: 0.007544\n",
|
||||
"Step 1200, loss: 0.007104\n",
|
||||
"Step 1250, loss: 0.006684\n",
|
||||
"Step 1300, loss: 0.006282\n",
|
||||
"Step 1350, loss: 0.005901\n",
|
||||
"Step 1400, loss: 0.005545\n",
|
||||
"Step 1450, loss: 0.005212\n",
|
||||
"Step 1500, loss: 0.004900\n",
|
||||
"Step 1550, loss: 0.004604\n",
|
||||
"Step 1600, loss: 0.004324\n",
|
||||
"Step 1650, loss: 0.004058\n",
|
||||
"Step 1700, loss: 0.003808\n",
|
||||
"Step 1750, loss: 0.003562\n",
|
||||
"Step 1800, loss: 0.003326\n",
|
||||
"Step 1850, loss: 0.003089\n",
|
||||
"Step 1900, loss: 0.002863\n",
|
||||
"Step 1950, loss: 0.002722\n",
|
||||
"Step 2000, loss: 0.002980\n",
|
||||
"Step 2050, loss: 0.002280\n",
|
||||
"Step 2100, loss: 0.071292\n",
|
||||
"Step 2150, loss: 0.022765\n",
|
||||
"Step 2200, loss: 0.017804\n",
|
||||
"Step 2250, loss: 0.013744\n",
|
||||
"Step 2300, loss: 0.011416\n",
|
||||
"Step 2350, loss: 0.010243\n",
|
||||
"Step 2400, loss: 0.009419\n",
|
||||
"Step 2450, loss: 0.008764\n",
|
||||
"Step 2500, loss: 0.008265\n",
|
||||
"Step 2550, loss: 0.007883\n",
|
||||
"Step 2600, loss: 0.007578\n",
|
||||
"Step 2650, loss: 0.007323\n",
|
||||
"Step 2700, loss: 0.007102\n",
|
||||
"Step 2750, loss: 0.006902\n",
|
||||
"Step 2800, loss: 0.006712\n",
|
||||
"Step 2850, loss: 0.006524\n",
|
||||
"Step 2900, loss: 0.006349\n",
|
||||
"Step 2950, loss: 0.006186\n",
|
||||
"Step 3000, loss: 0.006033\n",
|
||||
"Step 3050, loss: 0.005888\n",
|
||||
"Step 3100, loss: 0.005747\n",
|
||||
"Step 3150, loss: 0.005610\n",
|
||||
"Step 3200, loss: 0.005475\n",
|
||||
"Step 3250, loss: 0.005339\n",
|
||||
"Step 3300, loss: 0.005198\n",
|
||||
"Step 3350, loss: 0.005044\n",
|
||||
"Step 3400, loss: 0.004859\n",
|
||||
"Step 3450, loss: 0.004585\n",
|
||||
"Step 3500, loss: 0.017968\n",
|
||||
"Step 3550, loss: 0.004040\n",
|
||||
"Step 3600, loss: 0.002951\n",
|
||||
"Step 3650, loss: 0.002693\n",
|
||||
"Step 3700, loss: 0.002550\n",
|
||||
"Step 3750, loss: 0.002443\n",
|
||||
"Step 3800, loss: 0.002351\n",
|
||||
"Step 3850, loss: 0.002269\n",
|
||||
"Step 3900, loss: 0.002193\n",
|
||||
"Step 3950, loss: 0.002122\n",
|
||||
"Step 4000, loss: 0.002056\n",
|
||||
"Step 4050, loss: 0.001994\n",
|
||||
"Step 4100, loss: 0.001934\n",
|
||||
"Step 4150, loss: 0.001877\n",
|
||||
"Step 4200, loss: 0.001822\n",
|
||||
"Step 4250, loss: 0.001768\n",
|
||||
"Step 4300, loss: 0.001716\n",
|
||||
"Step 4350, loss: 0.001665\n",
|
||||
"Step 4400, loss: 0.001615\n",
|
||||
"Step 4450, loss: 0.001566\n",
|
||||
"Step 4500, loss: 0.001517\n",
|
||||
"Step 4550, loss: 0.001470\n",
|
||||
"Step 4600, loss: 0.001476\n",
|
||||
"Step 4650, loss: 0.001383\n",
|
||||
"Step 4700, loss: 0.001337\n",
|
||||
"Step 4750, loss: 0.001381\n",
|
||||
"Step 4800, loss: 0.001255\n",
|
||||
"Step 4850, loss: 0.001212\n",
|
||||
"Step 4900, loss: 0.001305\n",
|
||||
"Step 4950, loss: 0.001134\n",
|
||||
"Step 5000, loss: 0.001114\n",
|
||||
"Step 5050, loss: 0.001072\n",
|
||||
"Step 5100, loss: 0.001658\n",
|
||||
"Step 5150, loss: 0.063174\n",
|
||||
"Step 5200, loss: 0.047222\n",
|
||||
"Step 5250, loss: 0.043665\n",
|
||||
"Step 5300, loss: 0.042181\n",
|
||||
"Step 5350, loss: 0.041065\n",
|
||||
"Step 5400, loss: 0.040186\n",
|
||||
"Step 5450, loss: 0.039448\n",
|
||||
"Step 5500, loss: 0.038687\n",
|
||||
"Step 5550, loss: 0.037640\n",
|
||||
"Step 5600, loss: 0.036418\n",
|
||||
"Step 5650, loss: 0.035370\n",
|
||||
"Step 5700, loss: 0.034606\n",
|
||||
"Step 5750, loss: 0.034045\n",
|
||||
"Step 5800, loss: 0.167828\n",
|
||||
"Step 5850, loss: 0.099039\n",
|
||||
"Step 5900, loss: 0.095293\n",
|
||||
"Step 5950, loss: 0.090091\n",
|
||||
"Step 6000, loss: 0.083824\n",
|
||||
"Step 6050, loss: 0.072519\n",
|
||||
"Step 6100, loss: 0.056544\n",
|
||||
"Step 6150, loss: 0.051577\n",
|
||||
"Step 6200, loss: 0.048992\n",
|
||||
"Step 6250, loss: 0.046800\n",
|
||||
"Step 6300, loss: 0.044814\n",
|
||||
"Step 6350, loss: 0.042973\n",
|
||||
"Step 6400, loss: 0.041381\n",
|
||||
"Step 6450, loss: 0.040075\n",
|
||||
"Step 6500, loss: 0.038997\n",
|
||||
"Step 6550, loss: 0.038067\n",
|
||||
"Step 6600, loss: 0.037238\n",
|
||||
"Step 6650, loss: 0.036487\n",
|
||||
"Step 6700, loss: 0.035804\n",
|
||||
"Step 6750, loss: 0.035185\n",
|
||||
"Step 6800, loss: 0.034636\n",
|
||||
"Step 6850, loss: 0.034157\n",
|
||||
"Step 6900, loss: 0.033735\n",
|
||||
"Step 6950, loss: 0.033001\n",
|
||||
"Step 7000, loss: 0.031376\n",
|
||||
"Step 7050, loss: 0.029146\n",
|
||||
"Step 7100, loss: 0.026367\n",
|
||||
"Step 7150, loss: 0.023316\n",
|
||||
"Step 7200, loss: 0.020324\n",
|
||||
"Step 7250, loss: 0.017877\n",
|
||||
"Step 7300, loss: 0.015863\n",
|
||||
"Step 7350, loss: 0.014097\n",
|
||||
"Step 7400, loss: 0.012570\n",
|
||||
"Step 7450, loss: 0.012832\n",
|
||||
"Step 7500, loss: 0.010255\n",
|
||||
"Step 7550, loss: 0.009250\n",
|
||||
"Step 7600, loss: 0.027104\n",
|
||||
"Step 7650, loss: 0.008814\n",
|
||||
"Step 7700, loss: 0.007840\n",
|
||||
"Step 7750, loss: 0.007265\n",
|
||||
"Step 7800, loss: 0.006804\n",
|
||||
"Step 7850, loss: 0.006415\n",
|
||||
"Step 7900, loss: 0.006079\n",
|
||||
"Step 7950, loss: 0.005783\n",
|
||||
"Step 8000, loss: 0.005516\n",
|
||||
"Step 8050, loss: 0.005274\n",
|
||||
"Step 8100, loss: 0.005057\n",
|
||||
"Step 8150, loss: 0.004895\n",
|
||||
"Step 8200, loss: 0.004679\n",
|
||||
"Step 8250, loss: 0.004554\n",
|
||||
"Step 8300, loss: 0.007953\n",
|
||||
"Step 8350, loss: 0.026119\n",
|
||||
"Step 8400, loss: 0.018625\n",
|
||||
"Step 8450, loss: 0.012710\n",
|
||||
"Step 8500, loss: 0.007646\n",
|
||||
"Step 8550, loss: 0.003899\n",
|
||||
"Step 8600, loss: 0.005047\n",
|
||||
"Step 8650, loss: 0.002152\n",
|
||||
"Step 8700, loss: 0.002009\n",
|
||||
"Step 8750, loss: 0.001450\n",
|
||||
"Step 8800, loss: 0.001367\n",
|
||||
"Step 8850, loss: 0.001321\n",
|
||||
"Step 8900, loss: 0.001109\n",
|
||||
"Step 8950, loss: 0.001148\n",
|
||||
"Step 9000, loss: 0.000987\n",
|
||||
"Step 9050, loss: 0.000899\n",
|
||||
"Step 9100, loss: 0.000856\n",
|
||||
"Step 9150, loss: 0.000848\n",
|
||||
"Step 9200, loss: 0.000861\n",
|
||||
"Step 9250, loss: 0.000908\n",
|
||||
"Step 9300, loss: 0.000710\n",
|
||||
"Step 9350, loss: 0.000693\n",
|
||||
"Step 9400, loss: 0.000713\n",
|
||||
"Step 9450, loss: 0.000753\n",
|
||||
"Step 9500, loss: 0.000672\n",
|
||||
"Step 9550, loss: 0.000668\n",
|
||||
"Step 9600, loss: 0.000709\n",
|
||||
"Step 9650, loss: 0.000541\n",
|
||||
"Step 9700, loss: 0.000864\n",
|
||||
"Step 9750, loss: 0.000872\n",
|
||||
"Step 9800, loss: 0.000668\n",
|
||||
"Step 9850, loss: 0.001222\n",
|
||||
"Step 9900, loss: 0.000966\n",
|
||||
"Step 9950, loss: 0.000658\n",
|
||||
"Step 10000, loss: 0.000867\n",
|
||||
"Runtime 106.27s\n"
|
||||
"Step 0, loss: 0.238804\n",
|
||||
"Step 500, loss: 0.051395\n",
|
||||
"Step 1000, loss: 0.045798\n",
|
||||
"Step 1500, loss: 0.043285\n",
|
||||
"Step 2000, loss: 0.041360\n",
|
||||
"Step 2500, loss: 0.039480\n",
|
||||
"Step 3000, loss: 0.037504\n",
|
||||
"Step 3500, loss: 0.035440\n",
|
||||
"Step 4000, loss: 0.033171\n",
|
||||
"Step 4500, loss: 0.031074\n",
|
||||
"Step 5000, loss: 0.029556\n",
|
||||
"Step 5500, loss: 0.028347\n",
|
||||
"Step 6000, loss: 0.026291\n",
|
||||
"Step 6500, loss: 0.024694\n",
|
||||
"Step 7000, loss: 0.022832\n",
|
||||
"Step 7500, loss: 0.020840\n",
|
||||
"Step 8000, loss: 0.035597\n",
|
||||
"Step 8500, loss: 0.021575\n",
|
||||
"Step 9000, loss: 0.080320\n",
|
||||
"Step 9500, loss: 0.036767\n",
|
||||
"Step 10000, loss: 0.034146\n",
|
||||
"Runtime 77.39s\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -501,7 +329,11 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Looks pretty good on first sight!"
|
||||
"This training can take a significant amount of time, around 1 minute on a typical notebook, but at least the error goes down significantly, and the network seems to successfully converge to a solution.\n",
|
||||
"\n",
|
||||
"Let's show the reconstruction of the network, by evaluating the network at the centers of a regular grid, so that we can show the solution as an image. Note that this is actually fairly expensive, we have to run through the whole network with a few thousand weights for all of the $128 \\times 32$ points in the grid.\n",
|
||||
"\n",
|
||||
"It looks pretty good on first sight, though:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -511,7 +343,7 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -523,10 +355,7 @@
|
||||
}
|
||||
],
|
||||
"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)"
|
||||
"show_state(grid_u) # note, this helper internally does a `sess.run()`"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -537,8 +366,7 @@
|
||||
"\n",
|
||||
"## Evaluation\n",
|
||||
"\n",
|
||||
"Let's compare solution at $t=0$\n",
|
||||
"Actually not that great, blue curve from PINN quite far away from constraits (in gray)... Solution get's better with larger number of iterations, but requires a surprisingly large number of them for a fairly simple case. The shock in the middle is not well recovered (the maximum is still much too low).\n"
|
||||
"Let's compare solution in a bit more detail. Here are the actual sample points used for constraining the solution (at time step 16, $t=1/2$) shown in gray, versus the reconstructed solution in blue:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -549,7 +377,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.collections.PathCollection at 0x13ab749d0>"
|
||||
"<matplotlib.collections.PathCollection at 0x7f31f079da90>"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
@@ -558,7 +386,7 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -585,7 +413,13 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Let's check how well the initial state was reconstructed, compared ot the (known) ground truth solution."
|
||||
"Not too bad at the sides of the domain (the Dirichlet boundary conditions $u=0$ are fulfilled), but the shock at $x=0$ is not well represented.\n",
|
||||
"\n",
|
||||
"Let's check how well the initial state at $t=0$ was reconstructed. That's the most interesting, and toughest part of the problem (the rest basically follows from the model equation and boundary conditions, given the first state).\n",
|
||||
"\n",
|
||||
"And turns out, it's actually not that great, blue curve from PINN quite far away from constraits (in gray)... Solution get's better with larger number of iterations, but requires a surprisingly large number of them for a fairly simple case. The shock in the middle is not well recovered (the maximum is still much too low).\n",
|
||||
"\n",
|
||||
"... shown in blue, compared ot the (known) ground truth solution in gray ..."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -596,7 +430,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x13ac00110>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f31f0719a00>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 9,
|
||||
@@ -605,7 +439,7 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -617,8 +451,6 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"n = 128\n",
|
||||
"\n",
|
||||
"# ground truth solution at t0\n",
|
||||
"t0gt = np.asarray( [ [-math.sin(np.pi * x) * 1.] for x in np.linspace(-1,1,n)] )\n",
|
||||
"\n",
|
||||
@@ -634,9 +466,10 @@
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"That's not very close...\n",
|
||||
"especially the maximum / minimum at $x=\\pm 1/2$ are far off, and the boudaries at $x=\\pm 1$ are not fulfilled.\n",
|
||||
"\n",
|
||||
"But we have the forward simulator, so we can use the $t=0$ solution of the network to \n",
|
||||
"evaluate how well the temporal evoluation was reconstructed by the PINN."
|
||||
"We have the forward simulator for this simulation, so we can use the $t=0$ solution of the network to \n",
|
||||
"evaluate how well the temporal evoluation was reconstructed by the PINN. This measures how well the temporal evolution of the model equation was captured via the soft constraints of the PINN loss."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -654,7 +487,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x13ac91710>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f31f069f1f0>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 10,
|
||||
@@ -663,7 +496,7 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -722,7 +555,7 @@
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x13ad0b910>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f31f0671e80>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
@@ -731,7 +564,7 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -757,31 +590,35 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"And the error in the PINN reconstruction. Not surprisingly grows over time. \n",
|
||||
"\n",
|
||||
"The shock is not \"undone\" well towards $t=0$.\n",
|
||||
"\n",
|
||||
"(Old: BC at 0, the last state at $t=1$ in purple doesnt capture the sharp shock very well.)"
|
||||
"Not surprisingly, the errors grow over time. Especially the steepening of the solution near the shock at $x=0$ is not \"captured\" well. It's a bit difficult to see in these two graphs, though, let's quantify the error and show the actual difference:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[(2048,), (2048,)]\n",
|
||||
"Mean absolute error across 16 steps: 0.01397\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[<matplotlib.lines.Line2D at 0x13ad82d10>]"
|
||||
"[<matplotlib.lines.Line2D at 0x7f31f07df610>]"
|
||||
]
|
||||
},
|
||||
"execution_count": 12,
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -793,6 +630,9 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"error = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n",
|
||||
"print(\"Mean absolute error for re-simulation across {} steps: {:7.5f}\".format(steps,error))\n",
|
||||
"\n",
|
||||
"fig = plt.figure().gca()\n",
|
||||
"fig.plot(pltx, (vels[0 ].flatten()-velP[bc_tx ].flatten()), lw=2, color='blue')\n",
|
||||
"#fig.plot(pltx, (vels[steps//4].flatten()-velP[bc_tx+steps//4].flatten()), lw=2, color='green')\n",
|
||||
@@ -804,17 +644,21 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"All steps over time, with a color map... (note x axis does not show actual simulation time)"
|
||||
"This should show a mean absolute error of ca. $1.4 \\cdot 10^{-2}$, which is significant for the value range of the simulation.\n",
|
||||
"\n",
|
||||
"And for comparison with the forward simulation and following cases, here are also all steps over time with a color map... (note x axis does not show actual simulation time)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -832,6 +676,72 @@
|
||||
"\n",
|
||||
"show_state(sn, run_session=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"More important, though, the mean absolute error (MAE) for the whole solution, i.e., from start to end:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"error_full = np.sum( np.abs( np.asarray(vels[0:16]).flatten() - np.asarray(velP[bc_tx:bc_tx+steps]).flatten() )) / (steps*n)\n",
|
||||
"print(\"Overall MAE: {:7.5f}\".format(error_full))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"... store solution , just for comparison ..."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 29,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Vels array shape: (128, 33)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"vels = session.run(grid_u) # special for showing NN results, run through TF \n",
|
||||
"vels = np.reshape( vels, [vels.shape[1],vels.shape[2]] )\n",
|
||||
"\n",
|
||||
"# save for comparison with other methods\n",
|
||||
"np.savez_compressed(\"./temp/burgers-pinn-solution.npz\",vels) ; print(\"Vels array shape: \"+format(vels.shape))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Exercises\n",
|
||||
"\n",
|
||||
"This is just a starting point, the parameters were chosen to compare to run relatively quickly by default. The solution can be improved however. E.g., try to:\n",
|
||||
"\n",
|
||||
"* Adjust parameters of the training to further decrease the error without making the solution diverge\n",
|
||||
"* Adapt the NN architecture for further improvements (keep track of the weight count, though!)\n",
|
||||
"* Activate a different optimizer, and observe the changing behavior (this typically requires adjusting the learning rate). Note that the more complex optimizers don't necessarily do better in this relatively simple example.\n",
|
||||
"* Or modify the setup to make the test case more interesting: e.g., move the boundary conditions further back in time, to let the reconstruction go \"further backward\" in time."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
@@ -850,7 +760,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.7.6"
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
||||
Reference in new issue
Block a user