updated SoL code to phiflow3.2
This commit is contained in:
1 parent
148118cbe3
commit
1049044612
1 file changed
+166
-97
+166
-97
@@ -123,33 +123,49 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"This notebook is running locally, please make sure the necessary pip packages are isntalled.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"try:\n",
|
||||
" import google.colab # to ensure that we are inside colab\n",
|
||||
" !pip install --upgrade --quiet phiflow==3.2\n",
|
||||
" #!pip install --upgrade --quiet git+https://github.com/tum-pbs/PhiFlow@develop\n",
|
||||
" # NT_DEBUG , remove develop for pbdl-dataset:\n",
|
||||
" !pip install --upgrade --quiet git+https://github.com/tum-pbs/pbdl-dataset@develop\n",
|
||||
"\n",
|
||||
"except ImportError:\n",
|
||||
" print(\"This notebook is running locally, please make sure the necessary pip packages are installed.\")\n",
|
||||
" pass"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "JwZudtWauiGa",
|
||||
"outputId": "3e61b6dd-e1ea-47e7-f9af-6cde0c64162a"
|
||||
"outputId": "bb03fd1b-62e7-4657-fe80-046b11c9852d"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\u001b[2K \u001b[90m\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u001b[0m \u001b[32m182.2/182.2 kB\u001b[0m \u001b[31m9.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
||||
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
|
||||
"\u001b[2K \u001b[90m\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u001b[0m \u001b[32m306.1/306.1 kB\u001b[0m \u001b[31m11.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
||||
"\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
|
||||
" Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n",
|
||||
" Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n",
|
||||
" Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n",
|
||||
"Using device: cuda:0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"!pip install --upgrade --quiet phiflow==3.1\n",
|
||||
"!pip install --upgrade --quiet git+https://github.com/tum-pbs/pbdl-dataset@develop\n",
|
||||
"\n",
|
||||
"import os, sys, logging, argparse, pickle, glob, random, pylab, time\n",
|
||||
"from tqdm import tqdm\n",
|
||||
"from phi.torch.flow import *\n",
|
||||
@@ -175,7 +191,7 @@
|
||||
"id": "RY1F4kdWPLNG"
|
||||
},
|
||||
"source": [
|
||||
"And while we're at it, we also set the random seed - obviously, 42 is the ultimate choice here \ud83d\ude42"
|
||||
"And while we're at it, we also set the random seed - obviously, 42 is the ultimate choice here 🙂"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -206,7 +222,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"id": "6WNMcdWUw4EP"
|
||||
},
|
||||
@@ -218,7 +234,7 @@
|
||||
" def __init__(self, domain):\n",
|
||||
" self.domain = domain\n",
|
||||
"\n",
|
||||
" self.vel_BcMask = self.domain.staggered_grid(HardGeometryMask( Box(y=(None, 5), x=None) ) )\n",
|
||||
" self.vel_BcMask = self.domain.staggered_grid( HardGeometryMask( Box(y=(None, 5), x=None) ) )\n",
|
||||
"\n",
|
||||
" self.inflow = self.domain.scalar_grid(Box(y=(5,10), x=(25,75)) ) # scale with domain if necessary!\n",
|
||||
" self.obstacles = [Obstacle(Sphere(center=tensor([50, 50], channel(vector=\"y,x\")), radius=10))]\n",
|
||||
@@ -280,13 +296,13 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "qIrWYTy6xscA",
|
||||
"outputId": "90e91528-0f57-467a-a407-6f895bd8333b"
|
||||
"outputId": "209465bc-507e-4cd1-de90-2df940cda497"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -362,7 +378,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"id": "hhGFpTjGyRyg"
|
||||
},
|
||||
@@ -421,7 +437,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"id": "Dfwd4TnqN1Tn"
|
||||
},
|
||||
@@ -449,22 +465,23 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "59EBdEdj0QR2",
|
||||
"outputId": "16176f06-542c-4a65-8562-b0efd0da621d"
|
||||
"outputId": "3fb7f0f4-a515-4478-ec4d-18a329ad693b"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\u001b[Kdownload completed\t \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u001b[38;5;240m\u001b[94m 100%\u001b[0m\n",
|
||||
"\u001b[96m\u001b[1mSuccess:\u001b[22m Loaded solver-in-the-loop-wake-flow with 6 simulations (6 selected) and 496 samples each.\u001b[0m\n",
|
||||
"\u001b[1mInfo:\u001b[22m No precomputed normalization data found (or not complete). Calculating data...\u001b[0m\n"
|
||||
"\u001b[Kdownload completed\t ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[38;5;240m\u001b[96m 100%\u001b[0m6m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\n",
|
||||
"\u001b[96m\u001b[1mSuccess:\u001b[22m Loaded solver-in-the-loop-wake-flow with 10 simulations (6 selected) and 496 samples each.\u001b[0m\n",
|
||||
"\u001b[1mInfo:\u001b[22m No precomputed normalization data found (or not complete). Calculating data...\u001b[0m\n",
|
||||
"[np.float64(1237.79296875), np.float64(1453.7359614526729)]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -473,12 +490,16 @@
|
||||
"import pbdl.torch.loader\n",
|
||||
"\n",
|
||||
"dataloader = pbdl.torch.loader.Dataloader(\"solver-in-the-loop-wake-flow\", MSTEPS, shuffle=True, sel_sims=[0,1,2,3,4,5],\n",
|
||||
" batch_size=BATCH_SIZE, normalize=\"std\", intermediate_time_steps=True)\n",
|
||||
" batch_size=BATCH_SIZE, normalize_const=\"std\", normalize_data=\"std\", intermediate_time_steps=True)\n",
|
||||
"\n",
|
||||
"# remember for normalization of the Reynolds number conditioning , then turn off (None), we'll only normalize Re manually below\n",
|
||||
"DATA_RE_MEAN = dataloader.dataset.normalize.const_mean[0][0]\n",
|
||||
"DATA_RE_STD = dataloader.dataset.normalize.const_std[0][0]\n",
|
||||
"dataloader.dataset.normalize = None"
|
||||
"# workaround for using un-normalized and normalized values in one script:\n",
|
||||
"# save the normalization constants of the Reynolds number conditioning , then turn off (norm=None);\n",
|
||||
"# the Re values will be normalized manually later on\n",
|
||||
"DATA_RE_MEAN = dataloader.dataset.norm_strat_const.const_mean[0][0]\n",
|
||||
"DATA_RE_STD = dataloader.dataset.norm_strat_const.const_std[0][0]\n",
|
||||
"print([DATA_RE_MEAN,DATA_RE_STD])\n",
|
||||
"dataloader.dataset.norm_strat_const = None\n",
|
||||
"dataloader.dataset.norm_strat_data = None"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -494,16 +515,34 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "EjgkdCzKP2Ip",
|
||||
"outputId": "36d2d677-6293-4b7d-e7f2-c6f1a7343aa9",
|
||||
"outputId": "3ebef773-0d85-43de-9f78-c31719ccbd45",
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/tmp/ipykernel_774262/1641432920.py:8: FutureWarning: Domain (phi.physics._boundaries) is deprecated and will be removed in a future release.\n",
|
||||
"Please create grids directly, replacing the domain with a dict, e.g.\n",
|
||||
" domain = dict(x=64, y=128, bounds=Box(x=1, y=1))\n",
|
||||
" grid = CenteredGrid(0, **domain)\n",
|
||||
" from phi.physics._boundaries import Domain, OPEN, STICKY as CLOSED\n",
|
||||
"/tmp/ipykernel_774262/1641432920.py:15: DeprecationWarning: Domain is deprecated and will be removed in a future release. Use a dict instead, e.g. CenteredGrid(values, extrapolation, **domain_dict)\n",
|
||||
" domain = phi.physics._boundaries.Domain(y=SOURCE_RES[0], x=SOURCE_RES[1], boundaries=BNDS, bounds=Box(y=2*LENGTH, x=LENGTH))\n",
|
||||
"/tmp/ipykernel_774262/1641432920.py:15: FutureWarning: Domain is deprecated and will be removed in a future release. Use a dict instead, e.g. CenteredGrid(values, extrapolation, **domain_dict)\n",
|
||||
" domain = phi.physics._boundaries.Domain(y=SOURCE_RES[0], x=SOURCE_RES[1], boundaries=BNDS, bounds=Box(y=2*LENGTH, x=LENGTH))\n",
|
||||
"/tmp/ipykernel_774262/1529251970.py:7: DeprecationWarning: HardGeometryMask and SoftGeometryMask are deprecated. Use field.mask or field.resample instead.\n",
|
||||
" self.vel_BcMask = self.domain.staggered_grid( HardGeometryMask( Box(y=(None, 5), x=None) ) )\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# this is the actual resolution in terms of cells for phiflow (not too crucial)\n",
|
||||
"SOURCE_RES = [64,32]\n",
|
||||
@@ -536,7 +575,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"id": "5VCAzofU1FoH"
|
||||
},
|
||||
@@ -565,7 +604,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"id": "KFp4eUta1FoH"
|
||||
},
|
||||
@@ -617,18 +656,40 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "AJn5a5k31FoH",
|
||||
"outputId": "91c710f7-1475-4dbb-8c33-45d33063859b",
|
||||
"outputId": "11f40f98-5554-4b6f-f436-c385d98534b0",
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" 0%| | 0/4960 [00:00<?, ?it/s]/tmp/ipykernel_774262/4154370188.py:7: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
|
||||
" input = torch.tensor(input_cpu, dtype=torch.float32).to(device);\n",
|
||||
"/tmp/ipykernel_774262/4154370188.py:8: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
|
||||
" targets = torch.tensor(targets_cpu, dtype=torch.float32).to(device)\n",
|
||||
"/home/thuerey/anaconda3/envs/torch24/lib/python3.12/site-packages/phiml/math/_optimize.py:631: UserWarning: Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\n",
|
||||
" warnings.warn(\"Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\")\n",
|
||||
"/home/thuerey/anaconda3/envs/torch24/lib/python3.12/site-packages/phiml/backend/torch/_torch_backend.py:803: UserWarning: Sparse CSR tensor support is in beta state. If you miss a functionality in the sparse tensor support, please submit a feature request to https://github.com/pytorch/pytorch/issues. (Triggered internally at ../aten/src/ATen/SparseCsrTensorImpl.cpp:53.)\n",
|
||||
" return torch.sparse_csr_tensor(row_pointers, column_indices, values, shape, device=values.device)\n",
|
||||
"/home/thuerey/anaconda3/envs/torch24/lib/python3.12/site-packages/phiml/math/_optimize.py:631: UserWarning: Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\n",
|
||||
" warnings.warn(\"Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\")\n",
|
||||
"loss 15.62617: 0%| | 1/4960 [00:12<16:36:58, 12.06s/it]/tmp/ipykernel_774262/4154370188.py:7: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
|
||||
" input = torch.tensor(input_cpu, dtype=torch.float32).to(device);\n",
|
||||
"/tmp/ipykernel_774262/4154370188.py:8: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
|
||||
" targets = torch.tensor(targets_cpu, dtype=torch.float32).to(device)\n",
|
||||
"loss 0.23079132: 100%|████████████████████████████████████| 4960/4960 [3:10:57<00:00, 2.31s/it]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"EPOCHS = 1\n",
|
||||
"EPOCHS = 5\n",
|
||||
"\n",
|
||||
"pbar = tqdm(initial=0, total=EPOCHS*len(dataloader), ncols=96)\n",
|
||||
"\n",
|
||||
@@ -673,26 +734,21 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "RPhPR9-51FoI",
|
||||
"outputId": "6adee7c0-2117-4ec6-e731-b71532d4e819"
|
||||
"id": "RPhPR9-51FoI"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\u001b[Kdownload completed\t \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u001b[38;5;240m\u001b[94m 100%\u001b[0m\n",
|
||||
"\u001b[Kdownload completed\t ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[38;5;240m\u001b[96m 100%\u001b[0m6m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\u001b[96m\n",
|
||||
"\u001b[96m\u001b[1mSuccess:\u001b[22m Loaded solver-in-the-loop-wake-flow with 10 simulations (4 selected) and 300 samples each.\u001b[0m\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"#del dataloader # close hdf5 file handle\n",
|
||||
"del dataloader # close hdf5 file handle\n",
|
||||
"\n",
|
||||
"# get new & unseen test data\n",
|
||||
@@ -711,7 +767,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 13,
|
||||
"metadata": {
|
||||
"id": "NRJwUnRz1FoI"
|
||||
},
|
||||
@@ -737,7 +793,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": 14,
|
||||
"metadata": {
|
||||
"id": "RWC0mKNJ1FoI"
|
||||
},
|
||||
@@ -803,20 +859,26 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"execution_count": 15,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "aA7BRsSZ1FoJ",
|
||||
"outputId": "fa436860-e5c9-4719-a605-50b9668fbe2d"
|
||||
"id": "aA7BRsSZ1FoJ"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Re \u001b[94m1171.875\u001b[0m\n"
|
||||
"Re \u001b[94m73.24219\u001b[0m\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/tmp/ipykernel_774262/1514360431.py:3: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
|
||||
" input = torch.tensor(input_cpu, dtype=torch.float32).to(device)\n",
|
||||
"/tmp/ipykernel_774262/1514360431.py:4: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
|
||||
" targets = torch.tensor(targets_cpu, dtype=torch.float32).to(device)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -840,39 +902,61 @@
|
||||
"`ROLLOUT_STEPS` below determines the number of time steps to compute with both variants. The cell also directly outputs the mean relative error.\n",
|
||||
"Due to the stochastic training and numerical round-off errors, the results can vary slightly over different runs, but in general the hybrid solver with its Neural correction operator should show a significantly reduced numerical error: typically 5-6x lower than the low-fidelity solver.\n",
|
||||
"\n",
|
||||
"**This shows the central objective of this training setup has been achieved: the hybrid solver yields substantially reduced numerical errors and generalizes to new Reynolds numbers \ud83d\udc4d**"
|
||||
"**This shows the central objective of this training setup has been achieved: the hybrid solver yields substantially reduced numerical errors and generalizes to new Reynolds numbers 👍**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"execution_count": 16,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "QlsK9rG71FoJ",
|
||||
"outputId": "2005389a-32e1-49b9-cb46-3a7c6d2d425d"
|
||||
"id": "QlsK9rG71FoJ"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Running test with Re=\u001b[94m1171.875\u001b[0m, Sim. only\n"
|
||||
"Running test with Re=\u001b[94m73.24219\u001b[0m, Sim. only\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Sim. only: 0%| | 0/100 [00:00<?, ?it/s]/home/thuerey/anaconda3/envs/torch24/lib/python3.12/site-packages/phiml/math/_optimize.py:631: UserWarning: Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\n",
|
||||
" warnings.warn(\"Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\")\n",
|
||||
"/home/thuerey/anaconda3/envs/torch24/lib/python3.12/site-packages/phiml/math/_optimize.py:631: UserWarning: Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\n",
|
||||
" warnings.warn(\"Possible rank deficiency detected. Matrix might be singular which can lead to convergence problems. Please specify using Solve(rank_deficiency=...).\")\n",
|
||||
"Sim. only: 100%|██████████████| 100/100 [00:31<00:00, 3.14it/s]\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Running test with Re=\u001b[94m1171.875\u001b[0m, With corr.\n"
|
||||
"Running test with Re=\u001b[94m73.24219\u001b[0m, With corr.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"With corr.: 100%|█████████████| 100/100 [00:52<00:00, 1.89it/s]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Rel. L2 errors: low-fidelity: 0.13708033837378025 corrected: 0.03381159909069538\n"
|
||||
"\n",
|
||||
" Rel. L2 errors: low-fidelity: 0.10863638424314559 corrected: 0.031211425131186844\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -895,26 +979,24 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"execution_count": 17,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 466
|
||||
},
|
||||
"id": "ys_qAMGu1FoK",
|
||||
"outputId": "02dc5fa1-62e9-4f24-cce6-051bd644c30e"
|
||||
"id": "ys_qAMGu1FoK"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"MAE for low-fidelity: 0.13708033837378025 , and hybrid: 0.03381159909069538\n"
|
||||
]
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<matplotlib.legend.Legend at 0x7de77dc7b770>"
|
||||
]
|
||||
},
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 640x480 with 1 Axes>"
|
||||
]
|
||||
@@ -942,19 +1024,14 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"execution_count": 18,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/",
|
||||
"height": 471
|
||||
},
|
||||
"id": "MZnqSzq21FoK",
|
||||
"outputId": "14037f18-44e4-4d3a-c0bd-0caeb384513b"
|
||||
"id": "MZnqSzq21FoK"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABhIAAAHqCAYAAADhzdTUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde3wU1fk/8M/MXpNAiNwS0HBRK3gFhBJRaKFGIyoVoV6oVkShrYpVoqJY5aJ+oVZFbItGFAVtFbVeqj8UL1EKKEgBabUVBERBJBFQCAlkr/P7A7MyZ+c5m72EhOTz9rUv2TlzzpyZ3T3PTM7MOYZlWRaIiIiIiIiIiIiIiIgcmI1dASIiIiIiIiIiIiIiarrYkUBERERERERERERERCJ2JBARERERERERERERkYgdCUREREREREREREREJGJHAhERERERERERERERidiRQEREREREREREREREInYkEBERERERERERERGRiB0JREREREREREREREQkYkcCERERERERERERERGJ2JFAh8SGDRtw9tlno02bNjAMA6+88kpjV4mIiA4z9913H44++mi4XC707t0bANCtWzdceeWVCfPOmzcPhmHgiy++aNA6EhERERERETVH7EigOHV/bKl7ud1uHHnkkbjyyiuxbdu2lMocPXo0Pv74Y/zf//0fnn76afTr1y/DtSYiokyoiwGrVq1q7KrYvPXWW5g4cSLOOOMMPPnkk5g+fXpjV4mIiBrApk2b8Jvf/AZHH300/H4/cnNzccYZZ+Chhx7C/v37G7t6RERERC2Wu7ErQE3XXXfdhe7du6O2thYrVqzAvHnzsGzZMnzyySfw+/31Lmf//v1Yvnw5fv/732P8+PENWGMiImqu3n33XZimiblz58Lr9caWr1+/HqbJ+yKIiJqDhQsX4qKLLoLP58MVV1yBk046CcFgEMuWLcMtt9yC//73v5gzZ05jV5OIiIioRWJHAomGDh0ae3Jg7NixaN++Pe699168+uqruPjii+tdzo4dOwAAeXl5DVFNIiJqAb755htkZWXZOhEAwOfzNVKNiIgokzZv3oxLL70UXbt2xbvvvotOnTrF0q677jps3LgRCxcuTGsblmWhtrYWWVlZcWm1tbXwer3snCYiIiIS8CyJ6m3QoEEADjxuXGfdunX4xS9+gbZt28Lv96Nfv3549dVXY+lTp05F165dAQC33HILDMNAt27dDmm9iYgosz766CMMHToUubm5aNWqFc4880ysWLEilr579264XC786U9/ii3buXMnTNNEu3btYFlWbPk111yDgoIC7fYMw8CTTz6Jmpqa2LB78+bNA+A8R8J///tf/OxnP0NWVhaOOuoo3HPPPYhGo+nvOBERNZg//vGPqK6uxty5c22dCHWOPfZY3HDDDQCAcDiMu+++G8cccwx8Ph+6deuG22+/HYFAwJanW7duOP/88/Hmm2+iX79+yMrKwqOPPorFixfDMAwsWLAAd9xxB4488khkZ2ejqqrqkOwrERER0eGITyRQvdVNUHnEEUcAOPCHmjPOOANHHnkkbrvtNuTk5OD555/H8OHD8eKLL+LCCy/EiBEjkJeXhwkTJmDUqFE499xz0apVq0bcCyIiSsd///tfDBo0CLm5uZg4cSI8Hg8effRRDB48GP/85z9RVFSEvLw8nHTSSViyZAl+97vfAQCWLVsGwzDw7bff4n//+x9OPPFEAMDSpUtjHdWSp59+GnPmzMHKlSvx+OOPAwBOP/10x3UrKiowZMgQhMPhWGyaM2eO492nRETUdLz22ms4+uijxfb9YGPHjsX8+fPxi1/8AjfddBM+/PBDzJgxA59++ilefvll27rr16/HqFGj8Jvf/Abjxo1Djx49Yml33303vF4vbr75ZgQCgbin3oiIiIjoB+xIINGePXuwc+dO1NbW4sMPP8S0adPg8/lw/vnnAwBuuOEGdOnSBf/6179iQ0tce+21GDhwIG699VZceOGFOOWUU5Cbm4sJEybg1FNPxeWXX96Yu0RERGm64447EAqFsGzZMhx99NEAgCuuuAI9evTAxIkT8c9//hPAgafY/v73v8fyLV26FAMHDsS6deuwdOlSnHjiibFOhV//+tfabV5++eV45513sGbNmoRx5N5778WOHTvw4Ycfon///gCA0aNH40c/+lE6u01ERA2oqqoK27ZtwwUXXJBw3X//+9+YP38+xo4di8ceewzAgWuQjh074v7778d7772HIUOGxNbfuHEjFi1ahJKSktiyxYsXAzgwnNGqVavY2UxERERUDxzaiETFxcXo0KEDCgsL8Ytf/AI5OTl49dVXcdRRR+Hbb7/Fu+++i4svvhh79+7Fzp07sXPnTuzatQslJSXYsGEDtm3b1ti7QEREGRSJRPDWW29h+PDhsU4EAOjUqRN++ctfYtmyZbFhIQYNGoTKykqsX78ewIGOhJ/85CcYNGgQli5dCuDAUwqWZSV8IiEZr7/+Ok477bRYJwIAdOjQAZdddlnGtkFERJlVFztat26dcN3XX38dAFBaWmpbftNNNwFA3DwK3bt3t3UiHGz06NHsRCAiIiKqJ3YkkGj27Nl4++238fe//x3nnnsudu7cGXvyYOPGjbAsC3feeSc6dOhge02ZMgXAgYkxiYio+dixYwf27dtnGxaizvHHH49oNIqtW7cC+GFenaVLl6KmpgYfffQRBg0ahJ/85CexjoSlS5ciNzcXvXr1AgBUV1ejoqIi9tqxY0fSdfzyyy8dnz5wqjMRETUNubm5AIC9e/cmXPfLL7+EaZo49thjbcsLCgqQl5eHL7/80ra8e/fuYlm6NCIiIiKy49BGJOrfvz/69esHABg+fDgGDhyIX/7yl1i/fn1s0sqbb75ZvMNHPbknIqKWo3PnzujevTuWLFmCbt26wbIsDBgwAB06dMANN9yAL7/8EkuXLsXpp58O0zxwX8P999+PadOmxcro2rVrbH4eIiJqvnJzc9G5c2d88skn9c5jGEa91tM9ccCnEYiIiIjqjx0JVC8ulwszZszAkCFD8Je//AVXXXUVAMDj8aC4uLiRa0dERIdChw4dkJ2dHRuu6GDr1q2DaZooLCyMLRs0aBCWLFmC7t27o3fv3mjdujV69eqFNm3aYNGiRVizZo2t4+CKK67AwIEDY+9T+QNP165dsWHDhrjlTnUmIqKm4/zzz8ecOXOwfPlyDBgwQFyva9euiEaj2LBhA44//vjY8srKSuzevRtdu3Y9FNUlIiIianE4tBHV2+DBg9G/f3/MmjULubm5GDx4MB599FFs3749bt1UhqMgIqKmzeVy4eyzz8Y//vEP25MClZWVeOaZZzBw4MDY8BTAgY6EL774As8991xsqCPTNHH66adj5syZCIVCtvkRjj76aBQXF8deZ5xxRtJ1PPfcc7FixQqsXLkytmzHjh3429/+Frfu9u3bsW7dOoRCoaS3Q0REmTVx4kTk5ORg7NixqKysjEvftGkTHnroIZx77rkAgFmzZtnSZ86cCQA477zzUq4D4wIRERGRjE8kUFJuueUWXHTRRZg3bx5mz56NgQMH4uSTT8a4ceNw9NFHo7KyEsuXL8dXX32Ff//7341dXSIiStETTzyBRYsWxS2fOnUq3n77bQwcOBDXXnst3G43Hn30UQQCAfzxj3+0rVvXSbB+/XpMnz49tvwnP/kJ3njjDfh8Pvz4xz/OaL0nTpyIp59+Gueccw5uuOEG5OTkYM6cOejatSv+85//2NadNGkS5s+fj82bN6Nbt24ZrQcRESXnmGOOwTPPPINLLrkExx9/PK644gqcdNJJCAaD+OCDD/DCCy/gyiuvxA033IDRo0djzpw52L17N376059i5cqVmD9/PoYPH44hQ4akXAfGBSIiIiIZOxIoKSNGjMAxxxyD+++/H+PGjcOqVaswbdo0zJs3D7t27ULHjh3Rp08fTJ48ubGrSkREaXjkkUccl1955ZVYunQpJk2ahBkzZiAajaKoqAh//etfUVRUZFu3R48e6NixI7755hvbkEV1HQz9+/eHz+fLaL07deqE9957D9dffz3+8Ic/oF27dvjtb3+Lzp074+qrr87otoiIKLN+/vOf4z//+Q/uu+8+/OMf/8AjjzwCn8+HU045BQ888ADGjRsHAHj88cdx9NFHY968eXj55ZdRUFCASZMmYcqUKY28B0RERETNl2FZltXYlSAiIiIiIiIiIiIioqaJcyQQEREREREREREREZGIHQlERERERERERERERCRiRwIREREREREREREREYnYkUBERERERERERERERCJ2JBARERERERERERERkYgdCUREREREREREREREJHI3dgVU0WgUX3/9NVq3bg3DMBq7OkTNimVZ2Lt3Lzp37gzTTK0fsba2FsFgMKP18nq98Pv9GS2TiPGEqGFkIpYAjCd0eGAsIWoYjCVERNRUNEQsAZpnPGlyHQlff/01CgsLG7saRM3a1q1bcdRRRyWdr7a2Ft27H4mKim8zWp+CggJs3ry52TWw1LgYT4gaVqqxBGA8ocMHYwlRw2IsISKixlRbW4vuXXNR8U0o42U3x3jS5DoSWrduDQBYceYv0crtjUs/avyRzhmzNB+KIdzhYMp3FVm++G0DAPw+eTtuj5wmCQYcFxu7vhOzWJ9uFdP2LK92XL52Uycxz7/3ZDkur6wVsyBqOS9vIxw2AMjzOGc6QlgOAEd4w8JyuafwiCy54q2zndP8reTyPH7n+pmar4IpHAdD84sz3Mnf5bZ3k8tx+RXlbR2Xh60gVuydE/udJSsYDKKi4lt88eXzyM3NTqkMVVXVPnTrejGCwWCzalyp8dV9z1/p92vkOMSTfpfud8xnHOn8+wEAuJx/c9qBAqPScikBQERIC8htlbXPOZ5Ye+Q2Mfqdcx4ACH/nXIfa3XJbVVvt3PjtD8jBoTbo3DCGovJBteSwIXKZzpmLine truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAABgkAAAHqCAYAAAA+g67LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXgV1f0/8PfM3C0JBGQNKJtawaosQokotKDRiEqlUheqFVGwWrFKqiitsqgVrRaxFaW4Bf1WUVvXH4pLlIItSgFppS0IFAWRBFAhEMjdZn5/xFy5c8/n3NzhhmzvF888D5mZM3Nm7tzzmblnzjmG4zgOiIiIiIiIiIiIiIioxTEbOgNERERERERERERERNQwWElARERERERERERERNRCsZKAiIiIiIiIiIiIiKiFYiUBEREREREREREREVELxUoCIiIiIiIiIiIiIqIWipUEREREREREREREREQtFCsJiIiIiIiIiIiIiIhaKFYSEBERERERERERERG1UKwkICIiIiIiIiIiIiJqoVhJQIfFhg0bcNZZZ6FNmzYwDAMvv/xyQ2eJiIiagPvuuw9HH300LMtC//79AQA9e/bEFVdckTZtaWkpDMPAp59+Wq95JCIiIiIiImrKWElAKWp/VKmdfD4fjjzySFxxxRXYtm2bp22OGzcOH3/8MX7zm9/g6aefxqBBg7KcayIi8qq23F+5cmVDZyXJW2+9hSlTpuC0007Dk08+ibvvvruhs0RERFm0adMm/OxnP8PRRx+NUCiE/Px8nHbaaXjwwQdx4MCBhs4eERERUYvha+gMUON1xx13oFevXqiursYHH3yA0tJSvP/++1i7di1CoVCdt3PgwAEsX74cv/71rzFp0qR6zDERETUn7777LkzTxOOPP45AIJCYv379epgm33MgImrKFi1ahAsvvBDBYBCXX345TjzxREQiEbz//vu4+eab8e9//xvz589v6GwSERERtQisJCDRyJEjE2/8T5gwAR06dMC9996LV199FRdddFGdt7Nz504AQNu2besjm0RE1Ezt2LEDOTk5SRUEABAMBhsoR0RElA2bN2/GJZdcgh49euDdd99Fly5dEsuuu+46bNy4EYsWLTqkfTiOg+rqauTk5KQsq66uRiAQYIUzERER0Td4V0R1NmzYMAA1zYJrrVu3Dj/+8Y/Rrl07hEIhDBo0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TsTRRx+NiooKLF++HJ9//jn++c9/NnR2iYgoA0888QQWL16cMn/GjBl4++23MXToUPz85z+Hz+fDH//4R4TDYfz2t79NWre2AmD9+vW4++67E/O///3v44033kAwGMT3vve9rOZ7ypQpePrpp3H22WfjhhtuQF5eHubPn48ePXrgX//6V9K6U6dOxYIFC7B582b07Nkzq/kgIqK6OeaYY/DMM8/g4osvxvHHH4/LL78cJ554IiKRCP7+97/jhRdewBVXXIEbbrgB48aNw/z587F792784Ac/wIoVK7BgwQKMHj0aI0aM8JwHxgMiIiKib7GSgDJywQUX4JhjjsH999+PiRMnYuXKlZg5cyZKS0vx5ZdfolOnThgwYACmTZvW0FklIqIMPfLII8r5V1xxBZYtW4apU6di1qxZsG0bhYWF+L//+z8UFhYmrdu7d2906tQJO3bsSOpGqLbyYPDgwQgGg1nNd5cuXfDee+/h+uuvxz333IP27dvjmmuuQdeuXXHVVVdldV9ERJQdP/zhD/Gvf/0L9913H1555RU88sgjCAaD6Nu3L373u99h4sSJAIDHHnsMRx99NEpLS/HSSy+hoKAAU6dOxfTp0xv4CIiIiIiaD8NxHKehM0FERERERERERERERIcfxyQgIiIiIiIiIiIiImqhWElARERERERERERERNRCsZKAiIiIiIiIiIiIiKiFYiUBEREREREREREREVE9WLp0KUaNGoWuXbvCMAy8/PLLadMsWbIEJ598MoLBII499liUlpbWax5ZSUBEREREREREREREVA+qqqrQr18/zJ07t07rb968Geeeey5GjBiBNWvW4MYbb8SECRPw5ptv1lseDcdxnHrbOhERERERERERERERwTAMvPTSSxg9erS4zi233IJFixZh7dq1iXmXXHIJdu/ejcWLF9dLvnz1stVDYNs2vvjiC7Ru3RqGYTR0doiaFcdxsHfvXnTt2hWm6b0hUXV1NSKRSBZzBgQCAYRCoaxuk1oexhCi+sH4QS0BYwhR/WAMISKihtQU48fy5ctRVFSUNK+4uBg33nhjve2z0VUSfPHFF+jWrVtDZ4OoWdu6dSuOOuooT2mrq6vRq9eRKC//Kqt5KigowObNm3mTToeEMYSofjF+UHPGGEJUvxhDiIjocKuurkavHvko3xHN6nYLCgrwz3/+Myl+BINBBIPBrGy/vLwcnTt3TprXuXNnVFZW4sCBA8jJycnKfg7W6CoJWrduDQC4qMNk+M3UE3tqR3XvSN9ts1fc5tHdv1Tv62T5hJoDeinn292OFNMgN08939b06FS9Xznb2FclJjG+/Fre3rZdytnx/8k3U/s3x5Tzv6xoJab5ar/63B2IWWILine truncated
|
||||
"text/plain": [
|
||||
"<Figure size 1600x500 with 8 Axes>"
|
||||
]
|
||||
@@ -1032,15 +1109,6 @@
|
||||
"* Use the external github code to generate tougher test data, and run your trained NN on these cases. You'll see that a reduced training error not always directly correlates with an improved test performance.\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {
|
||||
"id": "WyM-UoqA1FoL"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
@@ -1051,7 +1119,8 @@
|
||||
"provenance": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
@@ -1068,5 +1137,5 @@
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
Reference in new issue
Block a user