diff --git a/src/Playground.ipynb b/src/Playground.ipynb
deleted file mode 100644
index bb41bef94ac418375086adb98852ec61fb94d83d..0000000000000000000000000000000000000000
--- a/src/Playground.ipynb
+++ /dev/null
@@ -1,165 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import pandas as pd\n",
-    "import os\n",
-    "import argparse\n",
-    "import shutil\n",
-    "import time\n",
-    "import subprocess\n",
-    "import re\n",
-    "import numpy as np"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Function to extract the times of different stages from the program output\n",
-    "def extract_times(program_output):\n",
-    "    # Dictionary to store timing values\n",
-    "    timing_values = {}\n",
-    "    \n",
-    "    # Regular expressions to match specific timing entries\n",
-    "    time_patterns = {\n",
-    "        'Total time': r'Total time: (\\d+\\.\\d+)',\n",
-    "        'Setup': r'Setup: (\\d+\\.\\d+)',\n",
-    "        'Assembly Linear System': r'Assembly Linear System: (\\d+\\.\\d+)',\n",
-    "        'Solving Linear System': r'Solving Linear System: (\\d+\\.\\d+)',\n",
-    "        'Plotting': r'Plotting: (\\d+\\.\\d+)'\n",
-    "    }\n",
-    "    \n",
-    "    # Extract times using regex\n",
-    "    for key, pattern in time_patterns.items():\n",
-    "        match = re.search(pattern, program_output)\n",
-    "        if match:\n",
-    "            timing_values[key] = float(match.group(1))\n",
-    "        else:\n",
-    "            timing_values[key] = None\n",
-    "    \n",
-    "    return timing_values"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# refinement level\n",
-    "DEGREE_ELEVATIONS = 0\n",
-    "H_REFINEMENTS = 1\n",
-    "# Define the folder where the geometry is stored\n",
-    "DataFolder = f'Data/H_REFINEMENTS_{H_REFINEMENTS}'"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# path to gismo executable for numerical simulation\n",
-    "stokes_executable = 'gismo/stokes_example'"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# lets go for training data\n",
-    "stage = 'train'\n",
-    "df = pd.read_excel(f'{DataFolder}/{stage}/parameter_input.xlsx').transpose()\n",
-    "N_FILES_STAGE = df.shape[1]\n",
-    "\n",
-    "# Just run the first geometry\n",
-    "index_vec = [0, 1, 2, 3, 4]\n",
-    "timings = []\n",
-    "total_time = 0\n",
-    "setup_time = 0\n",
-    "assembly_linear_system_time = 0\n",
-    "solving_linear_system_time = 0\n",
-    "dict_entries = ['Total time', 'Setup', 'Assembly Linear System', 'Solving Linear System']\n",
-    "property_entries = [total_time, setup_time, assembly_linear_system_time, solving_linear_system_time]\n",
-    "for index in index_vec:\n",
-    "    # file for the geometry\n",
-    "    file = f'{DataFolder}/{stage}/microstructure/index_{index}.xml'\n",
-    "\n",
-    "    # Run simulation\n",
-    "    program_output = subprocess.Popen(\n",
-    "        [f'./{stokes_executable}', f'-f {file}', '--export-xml', f'-e {DEGREE_ELEVATIONS}', f'-r {H_REFINEMENTS}', '--no-plot'],\n",
-    "        # shell=True, # do I need it?\n",
-    "        stdout=subprocess.PIPE,\n",
-    "        text=True\n",
-    "    ).communicate()[0]\n",
-    "    # print(program_output)\n",
-    "\n",
-    "    timings.append(extract_times(program_output))\n",
-    "    total_time += timings[-1]['Total time']\n",
-    "    setup_time += timings[-1]['Setup']\n",
-    "    assembly_linear_system_time += timings[-1]['Assembly Linear System']\n",
-    "    solving_linear_system_time += timings[-1]['Solving Linear System']"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 21,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "total time: 2.417550374869\n",
-      "setup time: 0.03952433483208\n",
-      "assembly linear system time: 0.32472395699010004\n",
-      "solving linear system time: 2.053302083049\n"
-     ]
-    }
-   ],
-   "source": [
-    "print(f'total time: {total_time}')\n",
-    "print(f'setup time: {setup_time}')\n",
-    "print(f'assembly linear system time: {assembly_linear_system_time}')\n",
-    "print(f'solving linear system time: {solving_linear_system_time}')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "POD",
-   "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.12.7"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/src/Visualizations/HighestError.zip b/src/Visualizations/HighestError.zip
new file mode 100644
index 0000000000000000000000000000000000000000..b86d91da4f04716b612abf628faaf7c114022a39
Binary files /dev/null and b/src/Visualizations/HighestError.zip differ
diff --git a/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_Error.png b/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_Error.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b277e346d913de07661dfc863bac7ec123d7316
Binary files /dev/null and b/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_Error.png differ
diff --git a/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_Predicted.png b/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_Predicted.png
new file mode 100644
index 0000000000000000000000000000000000000000..4fbc68e123056568a7752fddc28be0835afa8f4f
Binary files /dev/null and b/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_Predicted.png differ
diff --git a/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_True.png b/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_True.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe7b6e18deeb5ad77d00645cfeccd9befd8a0afb
Binary files /dev/null and b/src/Visualizations/HighestError/Pressure_RBFCubic_R16_i59_True.png differ
diff --git a/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_Error.png b/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_Error.png
new file mode 100644
index 0000000000000000000000000000000000000000..48f149921ff1bea779b4bc45ccfc9e9482840c0e
Binary files /dev/null and b/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_Error.png differ
diff --git a/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_Predicted.png b/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_Predicted.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab3b3450550cd6bc4f75c409d605734bf174e05a
Binary files /dev/null and b/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_Predicted.png differ
diff --git a/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_True.png b/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_True.png
new file mode 100644
index 0000000000000000000000000000000000000000..c938c2597d4aa91f34011537e4363b2fa87fb8ad
Binary files /dev/null and b/src/Visualizations/HighestError/VelocityX_RBFCubic_R16_i63_True.png differ
diff --git a/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_Error.png b/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_Error.png
new file mode 100644
index 0000000000000000000000000000000000000000..9076cdfc9358d325348800225c8d81d24961b680
Binary files /dev/null and b/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_Error.png differ
diff --git a/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_Predicted.png b/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_Predicted.png
new file mode 100644
index 0000000000000000000000000000000000000000..04fbb56a90b05134ea285b2bcbc3a5aa16dc95ce
Binary files /dev/null and b/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_Predicted.png differ
diff --git a/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_True.png b/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_True.png
new file mode 100644
index 0000000000000000000000000000000000000000..845bf94fc00b48a3754251557e49845c53ea5f92
Binary files /dev/null and b/src/Visualizations/HighestError/VelocityY_RBFCubic_R16_i55_True.png differ
diff --git a/src/f2_EvaluationError_POD.py b/src/f2_EvaluationError_POD.py
index 03889624f0a0ec2556a864f7bff840a747e8f9b2..27045e9b47c18703ad5bf32e4b678af6e67d160b 100755
--- a/src/f2_EvaluationError_POD.py
+++ b/src/f2_EvaluationError_POD.py
@@ -115,17 +115,7 @@ for R_ in tqdm(R):
             ms_v.show()
 
         # Compute errors
-        # norms = list(norm_funcs.keys())
-        # error_values = []
-        # # Pressure
-        # for norm in norms:
-        #     error_value = compute_integral_error(
-        #         multipatch=microstructure,
-        #         fields_original=pressure_data,
-        #         fields_recreated=pressure_rec_data,
-        #         norm=norm
-        #     )
-        #     error_values.append(error_value)
+        # Pressure
         error_values = compute_integral_error(
             multipatch=microstructure,
             fields_original=pressure_data,
@@ -138,15 +128,6 @@ for R_ in tqdm(R):
         L2_rel_p_s.append(error_values[3])
 
         # Velocity
-        # error_values = []
-        # for norm in norms:
-        #     error_value = compute_integral_error(
-        #         multipatch=ms_vel,
-        #         fields_original=velocity_data,
-        #         fields_recreated=velocity_rec_data,
-        #         norm=norm
-        #     )
-        #     error_values.append(error_value)
         error_values = compute_integral_error(
             multipatch=ms_vel,
             fields_original=velocity_data,
diff --git a/src/i6_VisualizeDifferentErrorFields.py b/src/i6_VisualizeDifferentErrorFields.py
index 5713002952868585cda808a7bcb536e4c0e9f9cd..892ecb6b4ddca0a3572109d4f6300f03803ed2c4 100644
--- a/src/i6_VisualizeDifferentErrorFields.py
+++ b/src/i6_VisualizeDifferentErrorFields.py
@@ -27,7 +27,7 @@ ModelFolder = f'{DataFolder}/TrainedModels/RBF_cubic'
 PatchesFolder = f'{DataFolder}/Patches'
 
 R_ = 21
-sample = 14#!0
+sample = 14
 
 GEOMETRY_FILE = f'{DataFolder}/test/microstructure/index_{sample}.xml'
 PRESSURE_FILE = f'{PatchesFolder}/POD_{int(R_)}/pressure_field_patches_{sample}.xml'
diff --git a/src/i8_IdentifyWorstPrediction.ipynb b/src/i8_IdentifyWorstPrediction.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..6f66293f6bc99924e7b9c3c732f42987e9c4b1ac
--- /dev/null
+++ b/src/i8_IdentifyWorstPrediction.ipynb
@@ -0,0 +1,359 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "541bec77",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import pandas as pd\n",
+    "import argparse\n",
+    "import os\n",
+    "from tqdm import tqdm"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "7a7f470c",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from miscellaneous.error_evaluation import get_solution_vectors, load_geometry, compute_integral_error, show_multipatch_field"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "21199ef3",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Define refinement\n",
+    "DEGREE_ELEVATIONS = 1\n",
+    "H_REFINEMENTS = [0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "33201cad",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Take the 99 percent cutoff\n",
+    "# As the velocity cutoff is later than the pressure cutoff we take the velocity cutoff\n",
+    "R = 16\n",
+    "models = {\n",
+    "    # 'POD'\n",
+    "    # 'LinearRegression',\n",
+    "    # 'GP_RationalQuadratic',\n",
+    "    # 'RBF_Linear',\n",
+    "    # 'RBF_thinplatespline',\n",
+    "    'RBF_cubic',\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "de6d2dd0",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "DataFolder = [f'Data/H_REFINEMENTS_{H_REFINEMENT}' for H_REFINEMENT in H_REFINEMENTS]\n",
+    "# Load test input \n",
+    "df = [pd.read_excel(f'{DataFolder_}/test/parameter_input.xlsx').transpose() for DataFolder_ in DataFolder]\n",
+    "SAMPLES_TEST = [df_.shape[1] for df_ in df]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "a38a3424",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "  0%|          | 0/1 [00:00<?, ?it/s]"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Evaluating model RBF_cubic with R=16 for H_REFINEMENT=0\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "100%|██████████| 64/64 [00:36<00:00,  1.77it/s]\n",
+      "100%|██████████| 1/1 [00:36<00:00, 36.16s/it]\n"
+     ]
+    }
+   ],
+   "source": [
+    "L1_rel_p, L2_rel_p = [], []\n",
+    "L1_rel_vx, L2_rel_vx = [], []\n",
+    "L1_rel_vy, L2_rel_vy = [], []\n",
+    "\n",
+    "# Loop over H_REFINEMENTS\n",
+    "for h_ref_idx, H_REFINEMENT in enumerate(H_REFINEMENTS):\n",
+    "    L1_rel_p_h, L2_rel_p_h = [], []\n",
+    "    L1_rel_vx_h, L2_rel_vx_h = [], []\n",
+    "    L1_rel_vy_h, L2_rel_vy_h = [], []\n",
+    "    \n",
+    "    DataFolder = f'Data/H_REFINEMENTS_{H_REFINEMENT}'\n",
+    "    \n",
+    "    for model_name in tqdm(models):\n",
+    "        print(f'Evaluating model {model_name} with R={R} for H_REFINEMENT={H_REFINEMENT}')\n",
+    "        ModelFolder = f'{DataFolder}/TrainedModels/{model_name}'\n",
+    "        PatchesFolder = f'{DataFolder}/Patches'\n",
+    "        # Solution vector\n",
+    "        L1_rel_p_s, L2_rel_p_s = [], []\n",
+    "        L1_rel_vx_s, L2_rel_vx_s = [], []\n",
+    "        L1_rel_vy_s, L2_rel_vy_s = [], []\n",
+    "\n",
+    "        # iterate over the test samples\n",
+    "        for sample in tqdm(range(SAMPLES_TEST[h_ref_idx])):\n",
+    "            # Collect input files for evaluation\n",
+    "            GEOMETRY_FILE = f'{DataFolder}/test/microstructure/index_{sample}.xml'\n",
+    "            PRESSURE_FILE = f'{PatchesFolder}/{model_name}_{int(R)}/pressure_field_patches_{sample}.xml'\n",
+    "            VELOCITY_FILE = f'{PatchesFolder}/{model_name}_{int(R)}/velocity_field_patches_{sample}.xml'\n",
+    "            PRESSURE_REC_FILE = f'{PatchesFolder}/{model_name}_{int(R)}/pressure_field_rec_patches_{sample}.xml'\n",
+    "            VELOCITY_REC_FILE = f'{PatchesFolder}/{model_name}_{int(R)}/velocity_field_rec_patches_{sample}.xml'\n",
+    "\n",
+    "            # Get solution vector for pressure and velocity\n",
+    "            pressure_data = get_solution_vectors(file_path=PRESSURE_FILE)\n",
+    "            velocity_data = get_solution_vectors(file_path=VELOCITY_FILE, two_dimensional=True)\n",
+    "            pressure_rec_data = get_solution_vectors(file_path=PRESSURE_REC_FILE)\n",
+    "            velocity_rec_data = get_solution_vectors(file_path=VELOCITY_REC_FILE, two_dimensional=True)\n",
+    "\n",
+    "            # Load the geometry\n",
+    "            microstructure, ms_vel = load_geometry(GEOMETRY_FILE, degree_elevations=DEGREE_ELEVATIONS, h_refinements=H_REFINEMENTS[h_ref_idx])\n",
+    "\n",
+    "            # Compute the error\n",
+    "            # Pressure\n",
+    "            error_values = compute_integral_error(\n",
+    "                multipatch=microstructure,\n",
+    "                fields_original=pressure_data,\n",
+    "                fields_recreated=pressure_rec_data,\n",
+    "            )\n",
+    "            L1_rel_p_s.append(error_values[2])\n",
+    "            L2_rel_p_s.append(error_values[3])\n",
+    "            # Velocity\n",
+    "            error_values = compute_integral_error(\n",
+    "                multipatch=ms_vel,\n",
+    "                fields_original=velocity_data,\n",
+    "                fields_recreated=velocity_rec_data,\n",
+    "            )\n",
+    "\n",
+    "            # Append the error values\n",
+    "            L1_rel_vx_s.append(error_values[2][0])\n",
+    "            L2_rel_vx_s.append(error_values[3][0])\n",
+    "            L1_rel_vy_s.append(error_values[2][1])\n",
+    "            L2_rel_vy_s.append(error_values[3][1])\n",
+    "\n",
+    "        # Append the error values for this model\n",
+    "        L1_rel_p_h.append(L1_rel_p_s)\n",
+    "        L2_rel_p_h.append(L2_rel_p_s)\n",
+    "        L1_rel_vx_h.append(L1_rel_vx_s)\n",
+    "        L2_rel_vx_h.append(L2_rel_vx_s)\n",
+    "        L1_rel_vy_h.append(L1_rel_vy_s)\n",
+    "        L2_rel_vy_h.append(L2_rel_vy_s)\n",
+    "    \n",
+    "    # Append results for this h-refinement level\n",
+    "    L1_rel_p.append(L1_rel_p_h)\n",
+    "    L2_rel_p.append(L2_rel_p_h)\n",
+    "    L1_rel_vx.append(L1_rel_vx_h)\n",
+    "    L2_rel_vx.append(L2_rel_vx_h)\n",
+    "    L1_rel_vy.append(L1_rel_vy_h)\n",
+    "    L2_rel_vy.append(L2_rel_vy_h)\n",
+    "\n",
+    "# Save the error values\n",
+    "np.savez(\n",
+    "    f'Data/error_evaluation_99Cutoff.npz',\n",
+    "    L1_rel_p=L1_rel_p, L2_rel_p=L2_rel_p,\n",
+    "    L1_rel_vx=L1_rel_vx, L2_rel_vx=L2_rel_vx,\n",
+    "    L1_rel_vy=L1_rel_vy, L2_rel_vy=L2_rel_vy,\n",
+    "    h_refinements=H_REFINEMENTS\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "c8e0eca1",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "((1, 64), (1, 64), (1, 64))"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "L2_rel_p = np.array(L2_rel_p).reshape(len(models), SAMPLES_TEST[0])\n",
+    "L2_rel_vx = np.array(L2_rel_vx).reshape(len(models), SAMPLES_TEST[0])\n",
+    "L2_rel_vy = np.array(L2_rel_vy).reshape(len(models), SAMPLES_TEST[0])\n",
+    "L2_rel_p.shape, L2_rel_vx.shape, L2_rel_vy.shape"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "ebf09da1",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Identify for each model the index with the highest L2 error\n",
+    "identifier_p = np.where(\n",
+    "    L2_rel_p == np.max(L2_rel_p),\n",
+    "    True,\n",
+    "    False,\n",
+    ")\n",
+    "identifier_vx = np.where(\n",
+    "    L2_rel_vx == np.max(L2_rel_vx),\n",
+    "    True,\n",
+    "    False,\n",
+    ")\n",
+    "identifier_vy = np.where(\n",
+    "    L2_rel_vy == np.max(L2_rel_vy),\n",
+    "    True,\n",
+    "    False,\n",
+    ")\n",
+    "# print('Pressure')\n",
+    "# print(f'Max Pressure Error: {L2_rel_p[identifier_p == True]}')\n",
+    "# print(f'Identifier pressure {identifier_p}')\n",
+    "# print(f'---------' * 20)\n",
+    "# print('Velocity X')\n",
+    "# print(f'Max Velocity X Error: {L2_rel_vx[identifier_vx == True]}')\n",
+    "# print(f'Identifier velocity x {identifier_vx}')\n",
+    "# print(f'---------' * 20)\n",
+    "# print('Velocity Y')\n",
+    "# print(f'Max Velocity Y Error: {L2_rel_vy[identifier_vy == True]}')\n",
+    "# print(f'Identifier velocity y {identifier_vy}')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "5b6e6c8f",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "((array([0]), array([59])),\n",
+       " (array([0]), array([63])),\n",
+       " (array([0]), array([55])))"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "idx_p = np.where(identifier_p == True)\n",
+    "idx_vx = np.where(identifier_vx == True)\n",
+    "idx_vy = np.where(identifier_vy == True)\n",
+    "idx_p, idx_vx, idx_vy"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "bd27750b",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Pressure\n",
+      "Pressure\n",
+      "Model with maximum relative L2 error: RBF_cubic\n",
+      "Test sample for the maximum error: 59\n",
+      "Max Pressure Error: [0.0580657]\n",
+      "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n",
+      "Velocity X\n",
+      "Model with maximum relative L2 error: RBF_cubic\n",
+      "Test sample for the maximum error: 63\n",
+      "Max Velocity X Error: [0.03785187]\n",
+      "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n",
+      "Velocity Y\n",
+      "Model with maximum relative L2 error: RBF_cubic\n",
+      "Test sample for the maximum error: 55\n",
+      "Max Velocity Y Error: [0.06116032]\n",
+      "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "/var/folders/v_/5q1gkdc53z34pdsfnpkx2t340000gn/T/ipykernel_81308/1771942688.py:9: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
+      "  print(f'Model with maximum relative L2 error: {model_list[int(idx[0])]}')\n",
+      "/var/folders/v_/5q1gkdc53z34pdsfnpkx2t340000gn/T/ipykernel_81308/1771942688.py:10: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
+      "  print(f'Test sample for the maximum error: {int(idx[1])}')\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(f'Pressure')\n",
+    "model_list = list(models)\n",
+    "for field_name, idx, L2_rel in [\n",
+    "    (\"Pressure\", idx_p, L2_rel_p), \n",
+    "    (\"Velocity X\", idx_vx, L2_rel_vx), \n",
+    "    (\"Velocity Y\", idx_vy, L2_rel_vy)\n",
+    "]:\n",
+    "    print(f'{field_name}')\n",
+    "    print(f'Model with maximum relative L2 error: {model_list[int(idx[0])]}')\n",
+    "    print(f'Test sample for the maximum error: {int(idx[1])}')\n",
+    "    print(f'Max {field_name} Error: {L2_rel[idx]}')\n",
+    "    print(f'---------' * 20)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0f4e9bf4",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "POD",
+   "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.12.7"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}