notebook updates for colab
This commit is contained in:
1 parent
7156d68483
commit
73ec4d1155
3 files changed
+186
-110
No files matched your search
@@ -443,6 +443,7 @@
|
||||
"vels = np.concatenate(vels, axis=-1) \n",
|
||||
"\n",
|
||||
"# save for comparison with other methods\n",
|
||||
"import os; os.makedirs(\"./temp\",exist_ok=True)\n",
|
||||
"np.savez_compressed(\"./temp/burgers-diffphys-solution.npz\", np.reshape(vels,[N,STEPS+1])) # remove batch & channel dimension\n",
|
||||
"\n",
|
||||
"show_state(vels)"
|
||||
@@ -454,7 +455,7 @@
|
||||
"source": [
|
||||
"## Physics-informed vs. differentiable physics reconstruction\n",
|
||||
"\n",
|
||||
"Now we have both versions, the one with the PINN, and the DP version, so let's compare both reconstructions in more detail.\n",
|
||||
"Now we have both versions, the one with the PINN, and the DP version, so let's compare both reconstructions in more detail. (Note: The following cells expect that the Burgers-forward and PINN notebooks were executed in the same environment beforehand.)\n",
|
||||
"\n",
|
||||
"Let's first look at the solutions side by side. The code below generates an image with 3 versions, from top to bottom: the \"ground truth\" (GT) solution as given by the regular forward simulation, in the middle the PINN reconstruction, and at the bottom the differentiable physics version.\n"
|
||||
]
|
||||
@@ -486,7 +487,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# note, this requires running the forward sim & PINN notebooks beforehand\n",
|
||||
"# note, this requires previous runs of the forward-sim & PINN notebooks in the same environment\n",
|
||||
"sol_gt=npfile=np.load(\"./temp/burgers-groundtruth-solution.npz\")[\"arr_0\"] \n",
|
||||
"sol_pi=npfile=np.load(\"./temp/burgers-pinn-solution.npz\")[\"arr_0\"] \n",
|
||||
"sol_dp=npfile=np.load(\"./temp/burgers-diffphys-solution.npz\")[\"arr_0\"] \n",
|
||||
|
||||
+181
-106
@@ -109,7 +109,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "hPgwGkzYdIww"
|
||||
},
|
||||
"source": [
|
||||
"## Getting started with the implementation\n",
|
||||
"\n",
|
||||
@@ -126,13 +128,14 @@
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "JwZudtWauiGa",
|
||||
"outputId": "bd3a4a4d-706f-4210-ee4e-ca4e370b762d"
|
||||
"outputId": "30ab90f0-4b0c-4451-81da-f85887aeb7b9"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Downloading training data (73MB), this can take a moment the first time...\n",
|
||||
"Loaded data, 6 training sims\n"
|
||||
]
|
||||
}
|
||||
@@ -166,18 +169,25 @@
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "BGN4GqxkIueM",
|
||||
"outputId": "095adbf8-1ef6-41fd-938e-6cafcf0fdfdc"
|
||||
"outputId": "d934bf06-b6b9-41ce-be11-d1d6d3561c89"
|
||||
},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": []
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#!pip install --upgrade --quiet phiflow\n",
|
||||
"!pip install --upgrade --quiet git+https://github.com/tum-pbs/PhiFlow@develop \n",
|
||||
"#!pip uninstall phiflow\n",
|
||||
"!pip install --upgrade --quiet git+https://github.com/tum-pbs/PhiFlow@develop\n",
|
||||
"\n",
|
||||
"from phi.tf.flow import *\n",
|
||||
"import tensorflow as tf\n",
|
||||
"from tensorflow import keras\n",
|
||||
"\n",
|
||||
"random.seed(42)\n",
|
||||
"random.seed(42) \n",
|
||||
"np.random.seed(42)\n",
|
||||
"tf.random.set_seed(42)"
|
||||
]
|
||||
@@ -268,7 +278,7 @@
|
||||
"The output is: \n",
|
||||
"- a 2 component field containing the x,y velocity.\n",
|
||||
"\n",
|
||||
"First, let's define a minimal network consisting only of three convolutional layers with ReLU activations (we're also using keras here for simplicity). The input channel dimension is defined via the `tensor_in`, then we'll go to 32 and 64 features, before reducing to 2 channels in the output. "
|
||||
"First, let's define a small network consisting only of four convolutional layers with ReLU activations (we're also using keras here for simplicity). The input dimensions are determined from input tensor in the `inputs_dict` (it has three channels: u,v, and Re). Then we process the data via three conv layers with 32 features each, before reducing to 2 channels in the output. "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -280,12 +290,17 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def network_small(inputs_dict):\n",
|
||||
" return keras.Sequential([\n",
|
||||
" keras.layers.Input(**inputs_dict),\n",
|
||||
" keras.layers.Conv2D(filters=32, kernel_size=5, padding='same', activation=tf.nn.relu),\n",
|
||||
" keras.layers.Conv2D(filters=64, kernel_size=5, padding='same', activation=tf.nn.relu),\n",
|
||||
" keras.layers.Conv2D(filters=2, kernel_size=5, padding='same', activation=None), # u, v\n",
|
||||
" ], name='net_small')"
|
||||
" l_input = keras.layers.Input(**inputs_dict)\n",
|
||||
" block_0 = keras.layers.Conv2D(filters=32, kernel_size=5, padding='same')(l_input)\n",
|
||||
" block_0 = keras.layers.LeakyReLU()(block_0)\n",
|
||||
"\n",
|
||||
" l_conv1 = keras.layers.Conv2D(filters=32, kernel_size=5, padding='same')(block_0)\n",
|
||||
" l_conv1 = keras.layers.LeakyReLU()(l_conv1)\n",
|
||||
" l_conv2 = keras.layers.Conv2D(filters=32, kernel_size=5, padding='same')(l_conv1)\n",
|
||||
" block_1 = keras.layers.LeakyReLU()(l_conv2)\n",
|
||||
"\n",
|
||||
" l_output = keras.layers.Conv2D(filters=2, kernel_size=5, padding='same')(block_1) # u, v\n",
|
||||
" return keras.models.Model(inputs=l_input, outputs=l_output)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -294,7 +309,7 @@
|
||||
"id": "YfHvdI7yxtdj"
|
||||
},
|
||||
"source": [
|
||||
"For flexibility (and larger-scale tests later on), let's define a _proper_ ResNet with a few more layers. This architecture is the one from the original paper, and will give a fairly good performance (`network_small` above will train faster, but give a sub-optimal performance at inference time)."
|
||||
"For flexibility (and larger-scale tests later on), let's also define a _proper_ ResNet with a few more layers. This architecture is the one from the original paper, and will give a fairly good performance (`network_small` above will train faster, but give a sub-optimal performance at inference time)."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -570,7 +585,7 @@
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "59EBdEdj0QR2",
|
||||
"outputId": "8043f090-4e7b-4178-d2d2-513981e3905b"
|
||||
"outputId": "d9282614-d514-47d8-b911-c262c81c252e"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -612,25 +627,35 @@
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "EjgkdCzKP2Ip",
|
||||
"outputId": "6b21bd54-15aa-4440-b274-c3a68ab244f8"
|
||||
"outputId": "2d4b34f6-2d40-4273-fc2c-1dac7fe786cb"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Model: \"net_small\"\n",
|
||||
"Model: \"model\"\n",
|
||||
"_________________________________________________________________\n",
|
||||
"Layer (type) Output Shape Param # \n",
|
||||
"=================================================================\n",
|
||||
"input_1 (InputLayer) [(None, 64, 32, 3)] 0 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"conv2d (Conv2D) (None, 64, 32, 32) 2432 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"conv2d_1 (Conv2D) (None, 64, 32, 64) 51264 \n",
|
||||
"leaky_re_lu (LeakyReLU) (None, 64, 32, 32) 0 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"conv2d_2 (Conv2D) (None, 64, 32, 2) 3202 \n",
|
||||
"conv2d_1 (Conv2D) (None, 64, 32, 32) 25632 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"leaky_re_lu_1 (LeakyReLU) (None, 64, 32, 32) 0 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"conv2d_2 (Conv2D) (None, 64, 32, 32) 25632 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"leaky_re_lu_2 (LeakyReLU) (None, 64, 32, 32) 0 \n",
|
||||
"_________________________________________________________________\n",
|
||||
"conv2d_3 (Conv2D) (None, 64, 32, 2) 1602 \n",
|
||||
"=================================================================\n",
|
||||
"Total params: 56,898\n",
|
||||
"Trainable params: 56,898\n",
|
||||
"Total params: 55,298\n",
|
||||
"Trainable params: 55,298\n",
|
||||
"Non-trainable params: 0\n",
|
||||
"_________________________________________________________________\n"
|
||||
]
|
||||
@@ -705,6 +730,7 @@
|
||||
" correction += [ to_phiflow(model_out, domain) ] # [velocity_correction1, velocity_correction2, ...]\n",
|
||||
"\n",
|
||||
" prediction[-1][1] = prediction[-1][1] + correction[-1]\n",
|
||||
" #prediction[-1][1] = correction[-1]\n",
|
||||
"\n",
|
||||
" # evaluate loss\n",
|
||||
" loss_steps_x = [\n",
|
||||
@@ -766,7 +792,7 @@
|
||||
"source": [
|
||||
"## Training\n",
|
||||
"\n",
|
||||
"For the training, we use a standard Adam optimizer, and only run 5 epochs by default. This should be increased for the larger network or to obtain more accurate results. For longer training runs, it would also be beneficial to decrease the learning rate over the course of the epochs, but for simplicity, we'll keep `LR` constant here.\n",
|
||||
"For the training, we use a standard Adam optimizer, and run 15 epochs by default. This should be increased for the larger network or to obtain more accurate results. For longer training runs, it would also be beneficial to decrease the learning rate over the course of the epochs, but for simplicity, we'll keep `LR` constant here.\n",
|
||||
"\n",
|
||||
"Optionally, this is also the right point to load a network state to resume training."
|
||||
]
|
||||
@@ -780,15 +806,16 @@
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"LR = 1e-4\n",
|
||||
"EPOCHS = 5\n",
|
||||
"EPOCHS = 15\n",
|
||||
"\n",
|
||||
"opt = tf.keras.optimizers.Adam(learning_rate=LR) \n",
|
||||
"\n",
|
||||
"# optional, load existing network...\n",
|
||||
"# set to epoch nr. to load existing network from there\n",
|
||||
"resume = 0 \n",
|
||||
"resume = 0\n",
|
||||
"if resume>0: \n",
|
||||
" ld_network = keras.models.load_model('./nn_epoch{:04d}.h5'.format(resume)) \n",
|
||||
" #ld_network = keras.models.load_model('./nn_final.h5') # or the last one\n",
|
||||
" network.set_weights(ld_network.get_weights())\n",
|
||||
" "
|
||||
]
|
||||
@@ -812,7 +839,7 @@
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "m3Nd8YyHRVFQ",
|
||||
"outputId": "148d951b-7070-4a95-c6d7-0fd91d29606e",
|
||||
"outputId": "686a3419-d022-4889-c0de-66e4e02953d1",
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
@@ -820,59 +847,32 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Instructions for updating:\n",
|
||||
"This op will be removed after the deprecation date. Please switch to tf.sets.difference().\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Instructions for updating:\n",
|
||||
"This op will be removed after the deprecation date. Please switch to tf.sets.difference().\n"
|
||||
"epoch 001/015, batch 001/002, step 0001/0496: loss=2605.340576171875\n",
|
||||
"epoch 001/015, batch 001/002, step 0002/0496: loss=1485.1646728515625\n",
|
||||
"epoch 001/015, batch 001/002, step 0003/0496: loss=790.8267211914062\n",
|
||||
"epoch 001/015, batch 001/002, step 0129/0496: loss=98.64994049072266\n",
|
||||
"epoch 001/015, batch 001/002, step 0257/0496: loss=75.3546142578125\n",
|
||||
"epoch 001/015, batch 001/002, step 0385/0496: loss=70.05519104003906\n",
|
||||
"epoch 002/015, batch 001/002, step 0401/0496: loss=19.126527786254883\n",
|
||||
"epoch 003/015, batch 001/002, step 0401/0496: loss=9.628664016723633\n",
|
||||
"epoch 004/015, batch 001/002, step 0401/0496: loss=7.898053169250488\n",
|
||||
"epoch 005/015, batch 001/002, step 0401/0496: loss=3.6936004161834717\n",
|
||||
"epoch 006/015, batch 001/002, step 0401/0496: loss=3.172729730606079\n",
|
||||
"epoch 007/015, batch 001/002, step 0401/0496: loss=2.8511123657226562\n",
|
||||
"epoch 008/015, batch 001/002, step 0401/0496: loss=3.4968295097351074\n",
|
||||
"epoch 009/015, batch 001/002, step 0401/0496: loss=1.6942076683044434\n",
|
||||
"epoch 010/015, batch 001/002, step 0401/0496: loss=1.6551270484924316\n",
|
||||
"epoch 011/015, batch 001/002, step 0401/0496: loss=1.9383186101913452\n",
|
||||
"epoch 012/015, batch 001/002, step 0401/0496: loss=2.0140795707702637\n",
|
||||
"epoch 013/015, batch 001/002, step 0401/0496: loss=1.4174892902374268\n",
|
||||
"epoch 014/015, batch 001/002, step 0401/0496: loss=1.2593278884887695\n",
|
||||
"epoch 015/015, batch 001/002, step 0401/0496: loss=1.250532627105713\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"epoch 001/005, batch 001/002, step 0001/0496: loss=2012.807373046875\n",
|
||||
"epoch 001/005, batch 001/002, step 0002/0496: loss=992.9037475585938\n",
|
||||
"epoch 001/005, batch 001/002, step 0003/0496: loss=738.096435546875\n",
|
||||
"epoch 001/005, batch 001/002, step 0033/0496: loss=213.21969604492188\n",
|
||||
"epoch 001/005, batch 001/002, step 0065/0496: loss=143.3897705078125\n",
|
||||
"epoch 001/005, batch 001/002, step 0097/0496: loss=112.1771240234375\n",
|
||||
"epoch 001/005, batch 001/002, step 0129/0496: loss=91.61509704589844\n",
|
||||
"epoch 001/005, batch 001/002, step 0161/0496: loss=100.89246368408203\n",
|
||||
"epoch 001/005, batch 001/002, step 0193/0496: loss=87.17778015136719\n",
|
||||
"epoch 001/005, batch 001/002, step 0225/0496: loss=67.21128845214844\n",
|
||||
"epoch 001/005, batch 001/002, step 0257/0496: loss=64.24838256835938\n",
|
||||
"epoch 001/005, batch 001/002, step 0289/0496: loss=53.7073860168457\n",
|
||||
"epoch 001/005, batch 001/002, step 0321/0496: loss=55.73740768432617\n",
|
||||
"epoch 001/005, batch 001/002, step 0353/0496: loss=49.17698287963867\n",
|
||||
"epoch 001/005, batch 001/002, step 0385/0496: loss=56.05778121948242\n",
|
||||
"epoch 001/005, batch 001/002, step 0417/0496: loss=41.67274856567383\n",
|
||||
"epoch 001/005, batch 001/002, step 0449/0496: loss=46.14646530151367\n",
|
||||
"epoch 001/005, batch 001/002, step 0481/0496: loss=29.798830032348633\n",
|
||||
"epoch 001/005, batch 002/002, step 0001/0496: loss=39.485069274902344\n",
|
||||
"epoch 001/005, batch 002/002, step 0002/0496: loss=39.97723388671875\n",
|
||||
"epoch 001/005, batch 002/002, step 0003/0496: loss=38.477256774902344\n",
|
||||
"epoch 002/005, batch 001/002, step 0001/0496: loss=21.981830596923828\n",
|
||||
"epoch 002/005, batch 001/002, step 0129/0496: loss=18.73786735534668\n",
|
||||
"epoch 002/005, batch 001/002, step 0257/0496: loss=15.319025039672852\n",
|
||||
"epoch 002/005, batch 001/002, step 0385/0496: loss=14.001985549926758\n",
|
||||
"epoch 003/005, batch 001/002, step 0001/0496: loss=9.053110122680664\n",
|
||||
"epoch 003/005, batch 001/002, step 0129/0496: loss=8.859332084655762\n",
|
||||
"epoch 003/005, batch 001/002, step 0257/0496: loss=6.927613258361816\n",
|
||||
"epoch 003/005, batch 001/002, step 0385/0496: loss=12.725240707397461\n",
|
||||
"epoch 004/005, batch 001/002, step 0001/0496: loss=5.395730018615723\n",
|
||||
"epoch 004/005, batch 001/002, step 0129/0496: loss=4.600362300872803\n",
|
||||
"epoch 004/005, batch 001/002, step 0257/0496: loss=5.964381694793701\n",
|
||||
"epoch 004/005, batch 001/002, step 0385/0496: loss=7.421572208404541\n",
|
||||
"epoch 005/005, batch 001/002, step 0001/0496: loss=5.333580493927002\n",
|
||||
"epoch 005/005, batch 001/002, step 0129/0496: loss=4.6271843910217285\n",
|
||||
"epoch 005/005, batch 001/002, step 0257/0496: loss=4.5750274658203125\n",
|
||||
"epoch 005/005, batch 001/002, step 0385/0496: loss=7.874950408935547\n",
|
||||
"Training done, saved NN\n"
|
||||
]
|
||||
}
|
||||
@@ -913,7 +913,7 @@
|
||||
" loss = training_step_jit(dens_gt, vel_gt, re_nr, math.tensor(steps)) \n",
|
||||
" \n",
|
||||
" steps += 1\n",
|
||||
" if (j==0 and i<3) or (j==0 and ib==0 and i%64==0) or (j>0 and ib==0 and i%248==0): # reduce output \n",
|
||||
" if (j==0 and ib==0 and i<3) or (j==0 and ib==0 and i%128==0) or (j>0 and ib==0 and i==400): # reduce output \n",
|
||||
" print('epoch {:03d}/{:03d}, batch {:03d}/{:03d}, step {:04d}/{:04d}: loss={}'.format( j+1, EPOCHS, ib+1, dataset.numBatches, i+1, dataset.numSteps, loss ))\n",
|
||||
" \n",
|
||||
" dataset.nextStep()\n",
|
||||
@@ -943,7 +943,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "0c38ne0UdIxV"
|
||||
},
|
||||
"source": [
|
||||
"## Evaluation \n",
|
||||
"\n",
|
||||
@@ -958,13 +960,18 @@
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"metadata": {
|
||||
"id": "RumKebW_05xp"
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "RumKebW_05xp",
|
||||
"outputId": "b119bc05-2f9d-4289-c951-f9f12627c7fb"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Downloading test data (38MB), this can take a moment the first time...\n",
|
||||
"Loaded test data, 4 training sims\n"
|
||||
]
|
||||
}
|
||||
@@ -981,7 +988,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "rZ9h-gRddIxb"
|
||||
},
|
||||
"source": [
|
||||
"Next we create a new dataset object `dataset_test` that organizes the data. We're simply using the first batch of the unshuffled dataset, though.\n",
|
||||
"\n",
|
||||
@@ -991,13 +1000,19 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "9OPruTGMdIxe",
|
||||
"outputId": "254e71e0-c471-4fec-df6f-f116227d12f3"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Reynolds numbers in test data set: (120000.0, 480000.0, 1920000.0, 7680000.0) along batch\n"
|
||||
"Reynolds numbers in test data set: (120000.0, 480000.0, 1920000.0, 7680000.0) along batch\u1d47\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -1014,7 +1029,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "sMqRPg2pdIxh"
|
||||
},
|
||||
"source": [
|
||||
"Next we construct a `math.tensor` as initial state for the centered marker fields, and a staggered grid from the next two indices of the test set batch. Similar to `to_phiflow` above, we can use `phi.math.stack()` to combine two fields of appropriate size as a staggered grid."
|
||||
]
|
||||
@@ -1022,7 +1039,9 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "xK1MEaPqdIxi"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"source_dens_initial = math.tensor( batch[0][0], math.batch('batch'), math.spatial('y, x'))\n",
|
||||
@@ -1034,7 +1053,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "KhGVceo6dIxl"
|
||||
},
|
||||
"source": [
|
||||
"Now we can first run the _source_ simulation for 120 steps as baseline:"
|
||||
]
|
||||
@@ -1042,7 +1063,13 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "nbTTl15kdIxl",
|
||||
"outputId": "14521920-1966-41d6-e3a2-41db9fb2f69d"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
@@ -1071,7 +1098,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "vQV0qV5pdIxm"
|
||||
},
|
||||
"source": [
|
||||
"Next, we compute the corresponding states of our learned hybrid solver. Here, we closely follow the training code, however, now without any gradient tapes or loss computations. We only evaluate the NN in a forward pass for each simulated state to compute a correction field:\n"
|
||||
]
|
||||
@@ -1079,7 +1108,13 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "fH5tFfh9dIxn",
|
||||
"outputId": "1a3c76f6-e401-479e-911d-4bd58f69dab1"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
@@ -1114,7 +1149,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "tnHYeOfldIxp"
|
||||
},
|
||||
"source": [
|
||||
"Given the stored states, we quantify the improvements that the NN yields, and visualize the results. \n",
|
||||
"\n",
|
||||
@@ -1123,19 +1160,26 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 32,
|
||||
"metadata": {},
|
||||
"execution_count": 20,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 318
|
||||
},
|
||||
"id": "bU-PwcCCdIxq",
|
||||
"outputId": "66956540-891f-4af7-bafe-22fbd11d8b47"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MAE for source: 0.13630695641040802 , and hybrid: 0.07546938955783844\n"
|
||||
"MAE for source: 0.1363069713115692 , and hybrid: 0.05150971934199333\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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5nHwoHUpeeBAP554IoybbgqiXbvm/84uIuuNMSkNrfOYNgillHKVkpJa5s/PY8GCX4Ph0ksDmDQpgosu8m+xw99oQCillJOUldlYuDCPefPyKC217lW97LIApk6NZNgwfxeX7tQ0IJRSqonl5dWwYEEeixYV1AXDxRcHMGNG6wiGIzQglFKqieTn1/DCC7ksXpxPZaXVvjt8uD9Tp0Zy0UUBLi7d6dOAUEqps1RaamP+/FxeeSWPQ4esNoZrrglk0qQIzj335P2XWjINCKWUOkNVVXYWLy5g5sxsCgutS0lXXtmRmTOjSEpq7+LSnT3tB+Fk/v5HX2985513eOihh066z4gRIzj2lt2GpKam8sgjjzS4rv6gf0qpplVdbeeddwrp1SuNxx/PpLDQxm9+48/q1T34/PPubhEOoDWIVqu2tpaUlBRSUhq8fVkp5QRlZTaWLCngj3/MIyurBoC+fX2ZMyeaK6/s2GJvVz1TWoNwkYMHD5KQkEBNjfVHVlZWdtTy+++/T1JSEv369ePHH38Ejh/ye9WqVVx11VUAFBYWctlll9G3b1/uvvtup8wupZSnOnTIxuzZOcTHb2XChCyysmro29eXd9/twubNvbnqqkC3CwfwoBqETHPOyTNTT/5BXFFRQVJSUt1yUVER11xzDQEBAYwYMYJ//vOfXHvttXz44Ydcf/31tG1rda8vLy9n06ZNfPfdd9x5551s3boVOHrI71WrVtW97rRp07jggguYMmUK//znP3n77beb/mCV8jCHDtl4/fV85s7No6CgFoDf/MafiRPDueIK96sxHMtjAsJV/Pz82LRpU93yO++8U9e+cPfdd/PSSy9x7bXXsmzZMt5666267W6++WYALrzwQsrKyigpKQGOHvK7vu+++45PP/0UgCuvvJKgoCCnHZNS7q601Marr+bxyit5FBVZjc/nndeBGTMiufjiALcPhiM8JiBO9U3fFc4//3wyMjJYtWoVNpuNfv361a079g/wyPKphvxWSp25rKxqFizI4403CuqGxBg2rAPPPRfBb3/r/jWGY2kbhIuNGTOGP/zhD9xxxx1HPf/RRx8BsHr1agIDAwkMDDzp61x44YV88MEHAHzxxRcUFxc7p8BKuaH09CruumsvCQnbmDvXGi/poov8WbkykdWre3D55e7ZxnAqHlODaKluueUWJk+eXHdJ6QhfX1+Sk5Opqalh6dKlp3ydqVOncvPNN9O3b1+GDRtGXFycs4qslNvIyKhi1qwc3nmnkNpaEIEbb+zEhAnhDB2qtXUd7tvFPvnkEz777DPef//9Zn3f1vBvo5SzZGVVM2tWDn/6UyE1NQYvL7j11mAmT44gMdHX1cVrVjrcdwv18MMP88UXX/Cvf/3L1UVRyiPk5dUwZ86vYyWJwC23BDFlSiQ9enhWMDSGBoQLvfrqq64uglIeoaCglrlzc3nttXzKy63G5xtv7MS0aZH06XP8XYHK4vYBYYzxyMalk3GXy4pKnUpDg+hdfXUg06ZFkpzsHsNhOJNbB4Svry+FhYWEhIRoSDgYYygsLMTXV6vTyn1VVNhZsCCPl17KpbjY6sfw2992ZPr0SG18Pg1uHRAxMTFkZmaSn5/v6qK0KL6+vsTExLi6GEo1OWMMn3xSwvjxWezbVw1Y8zHMnBnFBRe0nol6Wgq3Doi2bduSkJDg6mIopZrBli3lPPJIJt9+ewiAAQP8mDcvmksv9Zyez03NqR3lRORyEdkhIrtEZGID658QkTQR2SIiK0WkS711Y0Vkp+NnrDPLqZRqvUpKannkkf0kJ//Mt98eIiTEmzfeiGXDhl6MHOl5vZ+bktNqECLiDSwCRgKZwDoRWWGMSau32UYgxRhTLiL3Ay8Bo0UkGJgKpAAGWO/YV7sHK6UAsNsN771XxFNPZZGfX4uXFzz8cGemTYskKMitL440G2fWIIYCu4wx6caYauBDYFT9DYwx3xhjyh2LPwBHLoz/FviPMabIEQr/AS53YlmVUq3ITz9VMHz4L9xxx17y82v5zW/82bixFwsXxmo4NCFnBkQ0sL/ecqbjuRO5C/jiDPdVSnmAyko7kyZlkZy8ndWrDxMW1ob33uvCt98mMmCA3rba1FpE1IrIrViXk4af5n7jgHGAjj2klJtbu/Ywd9yxl+3bKxGBBx/szMyZkXTq1CI+xtySM2sQWUBsveUYx3NHEZFLgWeBa4wxVaezrzFmiTEmxRiT0rlz5yYruFKq5aistPP001kMG7aD7dsr6dnTh9Wre/Daa7EaDk7mzIBYBySKSIKItANuAlbU30BEkoE3scIhr96qL4HLRCRIRIKAyxzPKaU8yJo1h0hO3s5LL+UCMGFCGBs39mbYMO3T0BycFr/GmFoReQjrg90bWGqM2SYi04FUY8wKYC7gD3zsuBVtnzHmGmNMkYjMwAoZgOnGmCJnlVUp1bKUl9uZMuUAr7ySh90OvXv7smxZF845R3tBNye3Hu5bKdX6rFp1kLvv3sfu3VV4ecFTT4UzdWokvr46v5kz6HDfSqkWr7zczoQJmbz+egEA/fv7snRpF1JStNbgKhoQSimLine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -1172,10 +1216,12 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "aOQP6iCBdIxs"
|
||||
},
|
||||
"source": [
|
||||
"Due to the complexity of the training, the performance can vary, but typically the overall MAE is almost 80% larger for the regular simulation compared to the hybrid simulator. \n",
|
||||
"The gap is typically even bigger for other Reynolds numbers within the training data range, usually around 300%. \n",
|
||||
"Due to the complexity of the training, the performance can vary, but typically the overall MAE is ca. 160% larger for the regular simulation compared to the hybrid simulator. \n",
|
||||
"The gap is typically even bigger for other Reynolds numbers within the training data range. \n",
|
||||
"The graph above also shows this behavior over time.\n",
|
||||
"\n",
|
||||
"Let's also visualize the differences of the two outputs by plotting the y component of the velocities over time. The two following code cells show six velocity snapshots for the batch index `b` in intervals of 20 time steps."
|
||||
@@ -1183,12 +1229,19 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 33,
|
||||
"metadata": {},
|
||||
"execution_count": 21,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 302
|
||||
},
|
||||
"id": "_3f8uhIIdIxs",
|
||||
"outputId": "85675563-7fbb-4476-dc15-a33c2e75e990"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1152x360 with 6 Axes>"
|
||||
]
|
||||
@@ -1214,12 +1267,19 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 34,
|
||||
"metadata": {},
|
||||
"execution_count": 22,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 313
|
||||
},
|
||||
"id": "v2d2WTGedIxt",
|
||||
"outputId": "888de2df-1934-4813-ba56-98321c8c37c9"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHUAAAFtCAYAAACJL1Z8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAACtj0lEQVR4nO39e7il213Xif5+77yvuVatqtr3e0ISEhBCguGiKCKBbo56JE9Dg8jR0EZjn0dbFM4x0e6WYKsN7aOgD7Z2NJjYIBdBDMcGFBFQwIYECJCdnWTv7Oxr7dq1d13Xbd7H+WOtHWqO32fVGrXWrLXmrPn9PM9+dq1R72W84/2N3xjvW+v9DE8pmRBCCCGEEEIIIYRYLKqTroAQQgghhBBCCCGEuHn0UkcIIYQQQgghhBBiAdFLHSGEEEIIIYQQQogFRC91hBBCCCGEEEIIIRYQvdQRQgghhBBCCCGEWED0UkcIIYQQQgghhBBiAdFLHcDdn3L3r7qJ7f+gu3/iBn//fnf/W7Op3WeO+Qvu/mdneUyxfCjWxTKiuBfLiOJeLCOKe7EsKNaXm9vypY67J3d/bVb2Hnf/gVtxvpTSf04pvf5WHHseoPa8iX3f6u4fd/dtd/95d39k1vVbZhTrs+Wwse7uX+ruP+vul9z9JXf/V+5+33V/7+7+3e5+ce+/73Z3n23tlwfF/Ww5So6/7hh/Y+84X3VdWcvdv9/dr7n7eXf/tqPXdnlR3M+WI85tVtz9f3f3l939qrv/p+v+Tvl+hijuZ8sR4/4b3P0xd99w94+5+9uyv/8re7n+2l7ub82k0kuCYn22HGFO33T3H9t7SZbc/Suyv79hjnf3N7n7r+89+/66u7/pyBdTwG35Uuc4cff6SddhVsz6Wtz9TjP712b2P5vZWTP7sJn9yCzPIY4PxfoNOWNm7zWzV5nZI2a2YWb//Lq/f6eZvc3MvsDM3mhm/08z+/MzroO4BSjui477GjP7b83sheyv3mNmr7PdPvGHzeyvuvvX3Io6iNmiuD+Q99ruvOZz9v7/V677O+X7BUVxf8PjPWBmP2Bm32Zmp8zs/2tm/9Ld7977+//azN5tZm+13Zz/WWb2nbOsg5gdivUD+SUz+3+Z2Xn4u31zvLs3zeyDtttXzpjZB8zsg3vlt5SlfKnj7v/I3f9eVvaT7n79oPxFe2+hL7v7P3f39t52X+Huz7n7u9z9vJn981fKrjvWm939N/beZP+ImbVvUJfXuvsv7v1Lz8t727/yd7/f3T+093cfcvffD/u33P2Ku3/edWV3ufvOdYn2j7n7R/a2+xV3f+N12z61dy2/bWZbece47l+ffsvdN939G2/YuNP8N2b2aErpX6WUerY7wf8Cd3/DTRxDHAHF+vHEekrpp/fi/FpKadvMvs/Mvuy6Td5uZn8vpfRcSul5M/t7ZvYtpccXN4fi/thy/Cv8IzN7l5kNsvK3m9n/klK6nFJ6zMz+qSnubxmK++OJe9+dw/xxM3tnSumllNI4pfTr122ifH+MKO6PLd8/aGZX9uY7KaX0f5nZlpm9Zu/v325m70spPZpSumxm/4sp7meKYv3Y5vSDlNL3ppR+yczGsMmNcvxXmFndzL43pdRPKf1DM3Mz+8rS8x+alNJt95+ZJTN7bVb2HjP7gb0/f7GZnTOzau/nO81s28zu2fv5KTP7qJk9ZLv/AvPLZva39v7uK8xsZGbfbWYtM+vslT239/dNM3vadv/VpmFmX29mw1f2h7r+kJn9j7b7gq1tZn9gr/ysmV02sz9lu8HxTXs/37H3979gZn9278/fb2Z/+7pj/gUz+5m9P7/ZzC6Y2ZeYWc12A/EpM2tdd60f2bvWTkl7mtnDZnblBv/9yb3t/oGZ/ePsWB81s6876Ri5Xf5TrM9HrMNx/rKZ/d/X/XzVzL7kup/fYmYbJx0/i/qf4n5+4t52f0Png9ed66v2/nxm77j3XLft15vZ75x0/Czqf4r7+Yh7M/vTZvY7ZvY9Zvby3p+/7rrjKN8r7m/HuK+Z2S/a7gvNmu3+psJzZtbd+/vfMrNvvO64d+6d646TjqFF+U+xPh+xnh3jOTP7iqxs3xy/134/nW3/b83s2295/Jx0AN/CTnEtu1G9VzrF3jaPmdlX7/35L5rZT133d0+Z2X9/3c9/xMw+dV2nGJhZ+7q/v75TfLntdji/7u9/5Qad4l/Y7q/xPpiV/ykz+7Ws7L+Y2bdAp/iqV+q39/Mvm9mf3vvzP7bdfym9/jifMLM/dN21/pmC9nztjbbZZ7/3mdl3ZWW//Mo16D/F+l75wsd6dow3mtklM/uD15WNzewN1/38ur1z+VHOtaz/Ke7nI+7NbM3MHjezV113rlde6jy0d9zr2/Grzeypk46fRf1PcT83cf/X9/Z9j+0+CP0hM9s0s8/Z+3vl+xn+p7ifj7jf2/cde7E+st2XCX/0ur/7lJl9zXU/N/bO9aqTjqFF+U+xPj+xft0x6KXOvjnedpUjP5xt/4Nm9p5bHT+38+dXX5hSOv3Kf2b2Xdnff8B2v5Wzvf//n9nfP3vdn582s/uv+/mltPs5EXG/mT2f9u7idfvvx1+13SD4NXd/1N3/zHXHyfd72swegGP8vJmtuPuXuPurzOxNZvYTe3/3iJl9+96vrl1x9yu2O9m+/nquv9ZZsmm7391ezynb9Y2I2aFY3+UkY93Mdn8d1cx+2sy+NaX0n6/7q7wvnDKzzaztxM2huN/lJOP+PWb2f6aUnoK/29z7fx73yv9HQ3G/y0nG/Y797r9gD1JKv7hX1/9q7++V72eP4n6XE4t735Xg/2+2+yLglZeZ/8x/VwJLcW+mnH+zKNZ3OfE5/Q24UY4/sWff2/mlzkH8gJl9rbt/ge2K7v5N9vcPXffnh2337eUr3GhgfsHMHnCfWung4f02TimdTyn9uZTS/bYrWfrf9x4Mz9luQF/Pw2b2PBxjbGY/aru/4vZNZvZvU0qvBM+ztvurbaev+28lpfRDhdcTcPeH975P3O+/b97b9FHblUi9sl/Xdr+9ffRmzieOjGK97HoCNxHr5rsru/0H2/2XhXyQneoLe39WP7i1KO7LridwE3H/VjP7S7672sl5223TH3X3d6Vdp8ILprg/bhT3ZdcTuIm4/2265Ov+rHx//Cjuy64ncBNx/yYz+08ppQ+nlCYppQ+Z2a/a7m9bmHHcv5hSungz9REHolgvu57AzczpD+BGOf5RM3tj1o5vtGMYA5b2pU5K6Tkz+5DtvuH88ZTSTrbJX3D3B939rO1+M1i6atN/sd1fS/xL7t5w9//Gdr+BRNz9v3X3B/d+vGy7AToxs58ys8929z/p7nXfFTx9ru1+l0f8SzP7RjP75r0/v8I/NbP/fu8tqLt7193/qLuvFV6PmdmLtmuxNzOzlNIzKaXVG/z3g3ub/oSZfZ67f53virr+hpn9dkrp4zdxbnFEFOu3PtZ9d1WI/2hm35dS+idw3H9hZt/m7g+4+/1m9u1m9v6bqJe4SRT3x5Lj32pmn2e7k/032e5k7s/brjjZbDfu/yd3P+O7ctk/Z4r7W4ri/lji/j+Z2TNm9tf2ruHLzOwPm9m/2/t75ftjRnF/LHH/ITP7g773mznu/mYz+4P2uy85/4WZvcPdP9fdT5vZ/2SK+5mjWD+WWH9F5PyKKLrp7u3rXtTcKMf/gu1+nvWX9o7xF/fK/+NN1PtQLO1LnT0+YGafb/FX18x2A+vfm9mTtvud6N8qOWBKaWC7qz59i+16Nb7Rdpf13o8vMrNfdfdNM/tJ2/1s48m9N9t/zHYD5aLt/prbH0spvbzPeX/Vdi3099vu5x+vlH/YdifS32e7ne4Ju3kb/XvM7AO+++tv31C6U0rpJTP7OjP723vn/hIz+xM3eW4xGxTrZbzHDhHrZvZnbXfgeI9f99b/ur//P8zs/2e7Qs2Pmtn/tVcmbi2K+zLeY4fL8Rf3/rXufErpvO1OZC6nlF6J/e+w3bZ92nYFm383pfQzN1k3cfMo7st4jx0u7odm9rW266u4arsPH3/6un+wUr4/GRT3ZbzHDhf3v7i374+5+4aZ/biZ/Z2U0r/f+/ufsd3Ps37edl96Pm27Y4CYPYr1Mt5jh5vTm+36e3Zs97Oxf7f351d+A2nfHL/Xjm+zXaH+FTP7M2b2tr3yW4qnJf7E192/3HZ/je2RtMwNIW57FOtiGVHci2VEcS+WEcW9WBYU64JY2t/UcfeGmX2rmf0zdQhxO6NYF8uI4l4sI4p7sYwo7sWyoFgX+7GUL3Xc/XNs91ei7jOz7z3RyghxC1Gsi2VEcS+WEcW9WEYU92JZUKyLG7HUn18JIYQQQgghhBBCLCpL+Zs6QgghhBBCCCGEEIuOXuoIIYQQQgghhBBCLCD14zxZp1pJa/XTU2VrjbjdSn0Yypqr8TMxX23FnZvZAT+zpPx1HOWTswnsOxrFsmEsS71xPNwgHm80rE3/PInv3iYpXhddVQWl1CSVw3aF+9KZaTvPzlF6ayZw/f1xLZRdHU5vd210xXbGW1jj46RT66ZTWdyfbkzCdivtuNpd1SqsfklIH6Ul6Ph0s6goXmpZfUuh68L4g+0q6gywL22H10oBPF2WYhqwNI7HH45iRYbjWHZtGPvC+cG5l1NKd8UzHR8rEPfrjXjxbSirKgqa2EahuTGuIFfSvTvCvkSCfUtyalXFbWr12B7egOO3YixYA8rqMPTzwADb0b8FQaPkY+BOP+7Vj/d+uAP5fhSvYRPKzvXnI+7Xwzwn3r9WLc4R6rDdXFPaZ0q2ojkI5WIIZ6tBX6jDzjUooxinAaQ8aRQcHw61E+e9/Wuxvpuj2Hef3nnhxOPezKxdraRu7fR0GdybFuS4Vg36SCP2kdrK9M/ehlxWgyCh/DaB/kZlYygbxWtIo7hdgseDyWS6LjxHKpywUb/BtF3Wvwiq3wTmLHmdKxi3KnjmowqPe3GzSzvN6Z+Line truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1152x360 with 6 Axes>"
|
||||
]
|
||||
@@ -1241,7 +1301,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "ivS0SUiYdIxt"
|
||||
},
|
||||
"source": [
|
||||
"They both start out with the same initial state at $t=0$ (the downsampled solution from the reference solution manifold), and at $t=20$ the solutions still share similarities. Over time, the source version strongly diffuses the structures in the flow and looses momentum. The flow behind the obstacles becomes straight, and lacks clear vortices. \n",
|
||||
"\n",
|
||||
@@ -1252,12 +1314,19 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 35,
|
||||
"metadata": {},
|
||||
"execution_count": 23,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 349
|
||||
},
|
||||
"id": "23yyfljqdIxu",
|
||||
"outputId": "9051bab9-59dc-4029-9a34-588ffc3aba8a"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA88AAAFgCAYAAACFXkvRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAACUPElEQVR4nO29e5hlV3ne+X7nXlVdXa1uiZaQhAQGLGMHBJGxHRwHQ/CATSwmg4kvwXJCrEnGtyR4jEwyMXaMI2YSg+exYyJzU2Kbi7kYxiHYGhmG4NiAuBlLQkYICV261VJfqqur6ty/+eOcVu31fd85e5+6nTrV7+95+una66y99tqXb619We+7RFVBCCGEEEIIIYSQ0ZSmXQFCCCGEEEIIIWSvw4dnQgghhBBCCCEkBz48E0IIIYQQQgghOfDhmRBCCCGEEEIIyYEPz4QQQgghhBBCSA58eCaEEEIIIYQQQnLgw/MOIiLfLCJfFJEVEfnZadeHEEIIIbONiHxCRP7JtOtBCCEXInx4zkFEVERWReSciDwsIr8uIuWCq/8CgI+r6qKq/t87WU9CyM4iItcPX4adFZHHReRPReSp064XIWTzDPv4p0+7HoQQQmYDPjwX4zmqegDA3wHwDwD844LrXQXgzs1sUEQqm1mPELL9DG+u/zOA1wJYAvBUAL8FoLcD2yr6co4QsseRAbzXIoSQfQIb9AlQ1XsB/BmAa8+nicjLh1+jzojI/xCRZw/T/xTA9wL4zeFX62eKSF1E/r2IfENEHhWRt4rI3DD/C0XkIRF5nYgcB/BOESmJyE0i8jUROSki7xORw8P8Vw/fmN8wLO9xEflXmXqVReT1w3VXRORzInLl8LdrROQ2ETklIveIyKt26xgSMqNcC+Drqnq7DlhR1Q+o6jcAYBjbbxGRR4b/3iIi9eFvPyEin8oWlv3aJSLvEpHfFpGPisgqgO8VkStF5IMi8tgw9n8zs+4/FpG7ReS0iPyxiFy1a0eBkAuEnP76IhH5o2F8nh7+fUVm3U+IyBtF5M8ArAF42jDm/6mIfHV4v/BbIiKZdUbGtYi8RES+IiLLw7ZAQAghZCrw4XkCROQaAH8bwL3D5ecCeAeA/xXAEQD/CcBHRKSuqi8C8N8B/LSqHlDVvwZwM4BnYnAj/nQAlwP4N5lNXArgMAZfrG8E8DMAXoHBF+8nAziNwdeuLN8N4JsBvBjAvxGRbxmm/0sAPwLg+wEcxOBr+ZqILAC4DcDvA3gSgB8G8B9F5FlbOzqE7Gs+D+AaEXmziHyviBwwv/8rAN+JQWw/B8DzAfzrCcr/UQBvBLAI4M8B/BGABwBcjUE78R5gMHQcwOsB/H0Al2DQxrx7U3tECBnHuP66BOCdGPTVTwGwDuA3zfqvxqAfX8QglgHg5QC+HcCzAbwKwP8EjI9rEbkYwAcxaE8uBvA1AC/Yxv0khBAyAXx4Lsbnh1+E7gbwCQD/cZh+I4D/pKqfVtWeqt4KoIXBTXTC8A3zjQD+haqeUtUVAL+GwcPrefoAfklVW6q6DuCfAvhXqvqQqrYAvAHAK82Q7l9W1XVV/RKAL2Fw4w4A/wTAv1bVe4Zfyr6kqicx6LzvV9V3qmpXVb8A4AMAfmirB4mQ/Yqq3gfghRjcQL8PwOPDL8bnH6J/DMCvqOoJVX0MwC9jcPNclA+r6p+pah+DG+snA/jfVXVVVZuqev7L9T8F8O9U9W5V7WLQhlzLr8+EbB95/bWqnhyOPFkb/vZGDF5yZ3mXqt457Gc7w7SbVfXMcMTKx7Exim1cXH8/gDtV9f3Dct4C4PhO7TshhJDxUFdbjOdh8Lb3hzB4G72AwUPyVQBuEJGfyeStYXDja7kEwDyAz2VHagHI6hsfU9VmZvkqAB8SkX4mrQfgaGY524muATh/M3/lsM6WqwB8h4icyaRVAPyXIC8hZIiq/gUGX4sgIt8O4L0YfHH+RQxi/oFM9gcQtwOjeDDz95UAHhjeRFuuAvAbIvIfMmmCwUP9A0F+QsjkjO2vRWQewJsBvBTARcPfF0WkrKrnfRCyMX2eUf31uLh+crYsVVURicomhBCyC/DLc0GGX2/fh8GQyvNDtx4E8EZVPZT5N6+q0TDKxzEY2vWtmbxLQyOyJzZj1nkQwMtM+Q1VfbhAlR8E8E0j0v8/U+YBVf1nBcokhABQ1c9iMJTy24ZJj2BwA3yepwzTAGAVgxtxAICIXBoVmfn7QQBPkdg08EEA/6uJ3zlV/R+b3BVCiCevv34tBnKp71DVgwC+Z5ie1SLb/nwc4+L6GAYv1AYbGDzNXzmqIEIIITsLH54n52YAPzm8Af4dAP9URL5DBiyIyA+IyKJdaTgc83cAvFlEngQAInK5iPxPY7b1VgBvPD8kU0QuGWqjivA2AP9WRJ4xrNuzReQIBlrKZ4rIq0WkOvz37RmtNCHEICLfLSI/mYndawD8IIC/GGZ5N4B/PYzRizF4wfa7w9++BOBbReRaEWlgIL8Yx2cwuGG+edimNETkvMbxrQB+UUS+dViPJRGh5IKQrVEbxlljGKOC8f31IgYP12dkYOL5S1vc/ri4/q8YtB9/f/hC7Wcx8EchhBAyBfjwPCGq+mUAn8RAj3gHgJ/EwCjkNAZGYj8xZvXXDfP8hYicBfD/YvD2ehS/AeAjAP5ERFYwuFH/joJV/XUMtJl/AuAsgLcDmBvqs74PA+3WIxgMI3sTgHrBcgm5EDmDwcPyl0XkHICPAfgQgP9z+PuvArgDwF8C+DIGBmO/CgBDs8BfwSDevwogcd62DId9/j0MTIq+AeAhDKbIg6p+CIN4fc+wDfkrAC/bpn0k5ELlTgwehs//+0cY31+/BcAcBl+o/wKD9mDTjItrVX0cG5KxkwCegcGsH4QQQqaAqE4ysogQQgghhBBCCLnw4JdnQgghhBBCCCEkBz48E0IIIYQQQgghOfDhmRBCCCGEEEIIyYEPz4QQQgghhBBCSA7RPKI7xsHKvD6pvpSkaTIt4jBtGz3MxBQvBade9LUqVn4pKL8kPq1cCtLK/XS9is8j5QKViAgOqvZ8tn7PlxWl9frpe5duP8ijwbkNj2xatyhHlHbv2vHHVfWS4CcyRZaq83qpi3NPf5NxHl4fBeK8yHoj17VxHsS0RGlBnJfsNsOyfL2KELWdGsRmv2BaT0tmefPtdZG2MuKe1UcZ53uMpeqci/GIuL03eYLLILr+bb44duNaFMlXJOaKxn3ZpEm5YHuxua4cCOIyal+LtAX9sKyoL88nPo8+8a9X2ZcTQmaHXX14flJ9Cf/hWa9J0loFHrqiG7YI22EBQNXcvFYLdn7RJ/m4/PSBt1H2T6QL1a5LW5prurSDi2na3OGOy1NZ8seiNJc/gEBbfZfWXfb70zztL4lzK34WqzNrjWT55HrD5+lUXVonON/2uNpzBsTn4+999tceCJLJlLm0voTffvYNSVp03lv9/AezzcZhreSvd5tnVFqtHKWlcd0IYroWpdWjtLSscs1vr1Qr+ERqjmu35Y9hZ92/cVtfr7m01aZPO9tK01aCmG73iw1gsuekHhz7qC3+23/27xnne4xL60u45Tk/npuvUyDGowez6CHV5ovyRH1HWfx1FrUhNq0SlGXbAQCYq/p+eqHRTvMsBH15w5dVJO777eCeqe1jsN3ycd9q+vhda6Vpa22fZzWI+26B8xadj2bP1+vFf/4mxjghZGbgsG1CCCGEEEIIISQHPjwTQgghhBBCCCE58OGZEEIIIYQQQgjJYVc1zxHOPAdAr4DcLzL1iXRMVmfXCHR28xWvS4zS6hWvUZqvp9qm+fm2z7Pk9U61i10SykdSfWFp6aDP1PDao5Bmus3+cstvr+/rWm35fay1/LGY66Tlz3f8pRRpm/i+howiujKKmPEAPs6j+J0LNMmRXrFRC/LNpflqCz5PZSGo60K+R4HUgmY4ahgDByBtp/tdXQ103SuB3nKlmN7Y6kytgRgAwB+KQj4VvgZAqaC/BZkuAh+H7b5v7yM983YRtwNBH12wLaibtEY9aBvmAg+DA36bZdMWlOf8cZBasb7QxnhvPfAEWQ/cPwO9cWT+We2m5y3SdUdxv9Ytcr6LadAJIWSW4JMMIYQQQgghhBCSAx+eCSGEEEIIIYSQHPjwTAghhBBCCCGE5MCHZ0IIIYQQQgghJIepG4ZtJ5HHjn07UC1oGLbY8AZbiws+be5gaipSP+INMipH/GEuHZlzabI0bwqvuTyoBCZcLW/8pZIeDAlMv6QWmBlVA8OhmjcQqTSNEVtgptboRsYjfptFzIXIbLNZ46Do7V5kFGTjulb213FkDnZg3sd044DPV19Ky6ss+ZqVFr2ZX2kxiOF5k69asBnuBUY7a2nsy4pvC6Tm90cCYyUNDAT7/fS8dft+v3t9f25bQb6ofSazi5qYjoygWppe20Xb+lKBGK8HfXkjMLuKzMEWGv5aXziQtgX1RV9W9ZBLQmnR98nSSNNCc7BykBbEuDZNPYL7ldB+LzAY7Hf8PnVMWjswAitq0OoMBoO2wZo7EkLIrMEvz4QQQgghhBBCSA58eCaEEEIIIYQQQnLgwzMhhBBCCCGEEJJDIbGdiBwC8DYA34bBrPf/GMA9AN4L4GoA9wN4laqenrQCgSwnTNssVjtVCXQ65ZJPqwUa3kj7Wz2Q6nfKkf4p0j0u1H1a3Wgha8HpKXpw1OQL1pNAhCjBJkvlQMdtNKWVQMcU6ctDnZTdnq8C2QV2Ms63k0gPaa+rWqB9rFeDtEaQtuivW6txLh/xMS1LDZ+26L0NMGdiv1Lwim8HWkfTZpQKllXues1ntRUcC+OVMNfx+ulmoJHsBtpWBUXPe4HtiHOFb7ebPX8dWI1zpHmWAtpZwGtloxhvBHrgeqB5rjf8dVydS8urHPD1Ks3n65ujNKkGXiUBYe9u9lvKwTEM0hDc10iQzR7/6HxEba7VvEf5Ourbo0bgt0AIIbNE0eeU3wDLine truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1008x360 with 4 Axes>"
|
||||
]
|
||||
@@ -1297,7 +1366,9 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "BZByQsAydIxv"
|
||||
},
|
||||
"source": [
|
||||
"This shows very clearly how the pure source simulation in the middle deviates from the reference on the left. The learned version stays much closer to the reference solution. \n",
|
||||
"\n",
|
||||
@@ -1306,14 +1377,18 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "UQTY8m6LdIxv"
|
||||
},
|
||||
"source": [
|
||||
"This concludes our evaluation. Note that the improved behavior of the hybrid solver can be difficult to reliably measure with simple vector norms such as an MAE or $L^2$ norm. To improve this, we'd need to employ other, domain-specific metrics. In this case, metrics for fluids based on vorticity and turbulence properties of the flow would be applicable. However, in this text, we instead want to focus on DL-related topics and target another inverse problem with differentiable physics solvers in the next chapter."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"id": "Dl3vzF_XdIxv"
|
||||
},
|
||||
"source": [
|
||||
"## Next steps\n",
|
||||
"\n",
|
||||
@@ -1353,5 +1428,5 @@
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 1
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
@@ -51,7 +51,7 @@
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!pip install stable-baselines3==1.0 phiflow==1.5.1\n",
|
||||
"!pip install stable-baselines3==1.1 phiflow==1.5.1\n",
|
||||
"!git clone https://github.com/Sh0cktr4p/PDE-Control-RL.git\n",
|
||||
"!git clone https://github.com/holl-/PDE-Control.git"
|
||||
]
|
||||
@@ -1291,4 +1291,4 @@
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user