From 75eccd561cfc148589dd8f0d513c67f68a4aed08 Mon Sep 17 00:00:00 2001
From: Klaus <klaus.boehnlein@tu-dresden.de>
Date: Fri, 13 Oct 2023 11:30:32 +0200
Subject: [PATCH] Add plot script for relative error

---
 .../WoodBilayer_ExperimentComparisonError.py  | 223 ++++++++++++++++++
 .../WoodBilayer_expComparison_r022.py         | 134 -----------
 .../WoodBilayer_expComparison_r049.py         | 136 -----------
 3 files changed, 223 insertions(+), 270 deletions(-)
 create mode 100644 Plot-Scripts/WoodBilayer_ExperimentComparisonError.py
 delete mode 100644 Plot-Scripts/WoodBilayer_expComparison_r022.py
 delete mode 100644 Plot-Scripts/WoodBilayer_expComparison_r049.py

diff --git a/Plot-Scripts/WoodBilayer_ExperimentComparisonError.py b/Plot-Scripts/WoodBilayer_ExperimentComparisonError.py
new file mode 100644
index 00000000..0fb0078c
--- /dev/null
+++ b/Plot-Scripts/WoodBilayer_ExperimentComparisonError.py
@@ -0,0 +1,223 @@
+import numpy as np
+import matplotlib.pyplot as plt
+import math
+import os
+import subprocess
+import fileinput
+import re
+import sys
+import matplotlib as mpl
+from mpl_toolkits.mplot3d import Axes3D
+import matplotlib.cm as cm
+import matplotlib.ticker as ticker
+from matplotlib.ticker import MultipleLocator,FormatStrFormatter,MaxNLocator
+import seaborn as sns
+import matplotlib.colors as mcolors
+# ----------------------------------------------------
+# --- Define Plot style:
+# plt.style.use("seaborn-white")
+# plt.style.use("seaborn-pastel")
+# plt.style.use("seaborn-colorblind")
+plt.style.use("seaborn")
+mpl.rcParams['text.usetex'] = True
+mpl.rcParams["font.family"] = "serif"
+mpl.rcParams["font.size"] = "14"
+mpl.rcParams['xtick.bottom'] = True
+mpl.rcParams['xtick.major.size'] = 3
+mpl.rcParams['xtick.minor.size'] = 1.5
+mpl.rcParams['xtick.major.width'] = 0.75
+mpl.rcParams['ytick.left'] = True
+mpl.rcParams['ytick.major.size'] = 3
+mpl.rcParams['ytick.minor.size'] = 1.5
+mpl.rcParams['ytick.major.width'] = 0.75
+
+#Adjust grid:
+mpl.rcParams.update({"axes.grid" : True}) # Add grid
+mpl.rcParams['axes.labelpad'] = 3
+mpl.rcParams['grid.linewidth'] = 0.25
+mpl.rcParams['grid.alpha'] = 0.9 # 0.75
+mpl.rcParams['grid.linestyle'] = '-'
+mpl.rcParams['grid.color']   = 'gray'#'black'
+mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
+# ----------------------------------------------------------------------------------------
+width = 5.79
+height = width / 1.618 # The golden ratio.
+
+
+
+
+#TODO read values from .txt output files....
+
+dataset_numbers = [0, 1, 2, 3, 4 ,5]
+
+for dataset_number in dataset_numbers:
+
+    # fig = plt.figure()      #main
+    # fig, (ax1, ax2) = plt.subplots(1,2, figsize=(width,height))
+    # fig, (ax1, ax2) = plt.subplots(1,2)
+
+    fig, ax = plt.subplots(figsize=(width,height))
+
+    # fig = plt.figure(figsize=(10, 4))
+    # subfigs = fig.subfigures(1, 2, wspace=0.07)
+
+    # ax1 = subfigs[0]
+    # ax2 = subfigs[1]
+
+
+    dataset = [
+
+        [   # Dataset Ratio r = 0.12
+        [14.70179844, 13.6246    , 12.42994508, 11.69773413,11.14159987, 9.500670278, 9.005046347] ,    # input (moisture-content in %)
+        [1.29323308,  1.83458647 , 2.40601504 , 2.76691729 , 3.03759398, 3.81954887 , 4.03007519],   # curvature kappa from Simulation
+        [1.140351217, 1.691038688, 2.243918105, 2.595732726, 2.945361006,4.001528043, 4.312080261] # curvature kappa from Experiment
+        ],
+
+        [   # Dataset Ratio r = 0.17
+        [14.75453569,13.71227639,12.54975012,11.83455959,11.29089521,9.620608917,9.101671742],   # input (moisture-content in %)
+        [1.26315789, 1.77443609, 2.34586466, 2.70676692, 2.97744361, 3.78947368,4.03007519],   # curvature kappa from Simulation
+        [1.02915975,1.573720805,2.407706364,2.790518802,3.173814476,4.187433094,4.511739072]    # curvature kappa from Experiment
+        ],
+
+        [   # Dataset Ratio r = 0.22
+        [14.72680026, 13.64338887, 12.41305478, 11.66482931, 11.09781471, 9.435795985, 8.959564147],   # input (moisture-content in %)
+        [1.20401338 , 1.72575251 , 2.28762542 , 2.64882943 , 2.92976589 , 3.73244147 , 3.93311037 ],   # curvature kappa from Simulation
+        [1.058078122, 1.544624544, 2.317033799, 2.686043143, 2.967694189, 3.913528418, 4.262750825]    # curvature kappa from Experiment
+        ],
+
+        [   # Dataset Ratio r = 0.34
+        [14.98380876,13.97154915,12.77309253,12.00959929,11.42001731,9.561447179,8.964704969],   # input (moisture-content in %)
+        [0.87218045, 1.26315789, 1.7443609,  2.07518797, 2.28571429, 3.03759398, 3.27819549],   # curvature kappa from Simulation
+        [0.789078472,1.1299263,1.738136936,2.159520896,2.370047499,3.088299431,3.18097558]    # curvature kappa from Experiment
+        ],
+
+        [   # Dataset Ratio r = 0.43
+        [15.11316339,14.17997082,13.05739844,12.32309209,11.74608518,9.812372466,9.10519385 ],   # input (moisture-content in %)
+        [0.63157895, 0.93233083, 1.29323308, 1.53383459, 1.71428571, 2.34586466,2.55639098],   # curvature kappa from Simulation
+        [0.577989364,0.829007544,1.094211707,1.325332511,1.400455154,1.832325697,2.047483977]  # curvature kappa from Experiment
+        ],
+
+        [   # Dataset Ratio r = 0.49
+        [15.30614414,14.49463867,13.46629742,12.78388234,12.23057715,10.21852839,9.341730605],   # input (moisture-content in %)
+        [0.60150376, 0.87218045, 1.23308271, 1.5037594 , 1.71428571, 2.46616541,2.79699248],   # curvature kappa from Simulation
+        [0.357615902,0.376287785,0.851008627,0.904475291,1.039744708,1.346405241,1.566568558]   # curvature kappa from Experiment
+        ]
+    ]
+
+
+
+    # input = [14.72680026, 13.64338887, 12.41305478, 11.66482931, 11.09781471, 9.435795985, 8.959564147]  #moisture-content (in %)
+    # kappa_sim = [1.20401338 , 1.72575251, 2.28762542 , 2.64882943 , 2.92976589 , 3.73244147 , 3.93311037 ]    #kappa from Simulation
+    # kappa_exp = [1.058078122,1.544624544, 2.317033799, 2.686043143, 2.967694189, 3.913528418, 4.262750825]    #kappa from Experiment
+
+    # compute difference:
+    # relative_error = (np.array(kappa_sim) - np.array(kappa_exp)) / np.array(kappa_exp)
+    # print('relative_error:', relative_error)
+
+    relative_error = (np.array(dataset[dataset_number][1]) - np.array(dataset[dataset_number][2])) / np.array(dataset[dataset_number][2])
+    print('relative_error:', relative_error)
+
+
+    # --------------- Plot Lines + Scatter -----------------------
+    # line_1 = ax.plot(np.array(dataset[dataset_number][0]), np.array(dataset[dataset_number][1]),                    # data
+    #             #  color='forestgreen',              # linecolor
+    #             marker='D',                         # each marker will be rendered as a circle
+    #             markersize=5,                       # marker size
+    #             #   markerfacecolor='darkorange',      # marker facecolor
+    #             markeredgecolor='black',            # marker edgecolor
+    #             markeredgewidth=0.75,                  # marker edge width
+    #             # linestyle='dashdot',              # line style will be dash line
+    #             linewidth=1.5,                      # line width
+    #             zorder=3,
+    #             label = r"$\kappa_{sim}$")
+
+    # line_2 = ax.plot(np.array(dataset[dataset_number][0]), np.array(dataset[dataset_number][2]),                     # data
+    #             # color='orangered',                # linecolor
+    #             marker='o',                         # each marker will be rendered as a circle
+    #             markersize=5,                       # marker size
+    #             #  markerfacecolor='cornflowerblue',   # marker facecolor
+    #             markeredgecolor='black',            # marker edgecolor
+    #             markeredgewidth=0.75,                  # marker edge width
+    #             # linestyle='--',                   # line style will be dash line
+    #             linewidth=1.5,                      # line width
+    #             zorder=3,
+    #             alpha=0.8,                           # Change opacity
+    #             label = r"$\kappa_{exp}$")
+    
+
+    line_3 = ax.plot(np.array(dataset[dataset_number][0]), relative_error,                     # data
+                # color='orangered',                # linecolor
+                marker='o',                         # each marker will be rendered as a circle
+                markersize=5,                       # marker size
+                #  markerfacecolor='cornflowerblue',   # marker facecolor
+                markeredgecolor='black',            # marker edgecolor
+                markeredgewidth=0.75,                  # marker edge width
+                # linestyle='--',                   # line style will be dash line
+                linewidth=1.5,                      # line width
+                zorder=3,
+                alpha=0.8,                           # Change opacity
+                label = r"relative error")
+
+    # --- Plot order line
+    # x = np.linspace(0.01,1/2,100)
+    # y = CC_L2[0]*x**2
+    # OrderLine = ax.plot(x,y,linestyle='--', label=r"$\mathcal{O}(h)$")
+
+
+
+    # Fix_value = 7.674124
+    # l3 = plt.axhline(y = Fix_value, color = 'black', linewidth=0.75, linestyle = 'dashed')
+    # --------------- Set Axes  -----------------------
+    # ax.set_title(r"ratio $r = 0.22$")   # Plot - Title
+
+    # Plot - Title
+    match dataset_number:
+        case 0:
+            ax.set_title(r"ratio $r = 0.12$") 
+        case 1: 
+            ax.set_title(r"ratio $r = 0.17$") 
+        case 2:
+            ax.set_title(r"ratio $r = 0.22$") 
+        case 3:
+            ax.set_title(r"ratio $r = 0.34$") 
+        case 4:
+            ax.set_title(r"ratio $r = 0.43$") 
+        case 5: 
+            ax.set_title(r"ratio $r = 0.49$") 
+    
+    # plt.xscale('log') # Use Logarithmic-Scale
+    # plt.yscale('log')
+    ax.set_xlabel(r"Wood moisture content $\omega (\%)$", labelpad=4)
+    ax.set_ylabel(r"relative error $\frac{\kappa_{sim}-\kappa_{exp}}{\kappa_{\exp}}$", labelpad=4)
+    plt.tight_layout()
+
+    # # --- Set Line labels
+    # line_labels = [r"$CC_{L_2}$",r"$CC_{H_1}$", r"$\mathcal{O}(h)$"]
+
+    # --- Set Legend
+    legend = ax.legend()
+    # legend = fig.legend([line_1 , line_2, OrderLine],
+    #                     labels = line_labels,
+    #                     bbox_to_anchor=[0.97, 0.50],
+    #                     # bbox_to_anchor=[0.97, 0.53],
+    #                     # loc='center',
+    #                     ncol=1,                  # Number of columns used for legend
+    #                     # borderaxespad=0.15,    # Small spacing around legend box
+    #                     frameon=True,
+    #                     prop={'size': 10})
+
+
+    frame = legend.get_frame()
+    frame.set_edgecolor('black')
+
+
+    # --- Adjust left/right spacing:
+    # plt.subplots_adjust(right=0.81)
+    # plt.subplots_adjust(left=0.11)
+
+    # ---------- Output Figure as pdf:
+    fig.set_size_inches(width, height)
+    fig.savefig('WoodBilayer_expComparison_' + str(dataset_number) + 'relError.pdf')
+    # plt.show()
+
+
diff --git a/Plot-Scripts/WoodBilayer_expComparison_r022.py b/Plot-Scripts/WoodBilayer_expComparison_r022.py
deleted file mode 100644
index f09281bf..00000000
--- a/Plot-Scripts/WoodBilayer_expComparison_r022.py
+++ /dev/null
@@ -1,134 +0,0 @@
-import numpy as np
-import matplotlib.pyplot as plt
-import math
-import os
-import subprocess
-import fileinput
-import re
-import sys
-import matplotlib as mpl
-from mpl_toolkits.mplot3d import Axes3D
-import matplotlib.cm as cm
-import matplotlib.ticker as ticker
-from matplotlib.ticker import MultipleLocator,FormatStrFormatter,MaxNLocator
-import seaborn as sns
-import matplotlib.colors as mcolors
-# ----------------------------------------------------
-# --- Define Plot style:
-# plt.style.use("seaborn-white")
-# plt.style.use("seaborn-pastel")
-# plt.style.use("seaborn-colorblind")
-plt.style.use("seaborn")
-mpl.rcParams['text.usetex'] = True
-mpl.rcParams["font.family"] = "serif"
-mpl.rcParams["font.size"] = "14"
-mpl.rcParams['xtick.bottom'] = True
-mpl.rcParams['xtick.major.size'] = 3
-mpl.rcParams['xtick.minor.size'] = 1.5
-mpl.rcParams['xtick.major.width'] = 0.75
-mpl.rcParams['ytick.left'] = True
-mpl.rcParams['ytick.major.size'] = 3
-mpl.rcParams['ytick.minor.size'] = 1.5
-mpl.rcParams['ytick.major.width'] = 0.75
-
-#Adjust grid:
-mpl.rcParams.update({"axes.grid" : True}) # Add grid
-mpl.rcParams['axes.labelpad'] = 3
-mpl.rcParams['grid.linewidth'] = 0.25
-mpl.rcParams['grid.alpha'] = 0.9 # 0.75
-mpl.rcParams['grid.linestyle'] = '-'
-mpl.rcParams['grid.color']   = 'gray'#'black'
-mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
-# ----------------------------------------------------------------------------------------
-width = 5.79
-height = width / 1.618 # The golden ratio.
-
-# fig = plt.figure()      #main
-fig, ax = plt.subplots(figsize=(width,height))
-
-
-
-
-
-input = [14.72680026, 13.64338887, 12.41305478, 11.66482931, 11.09781471, 9.435795985, 8.959564147]  #moisture-content (in %)
-
-
-kappa_sim = [1.20401338 , 1.72575251, 2.28762542 , 2.64882943 , 2.92976589 , 3.73244147 , 3.93311037 ]    #kappa from Simulation
-kappa_exp = [1.058078122,1.544624544, 2.317033799, 2.686043143, 2.967694189, 3.913528418, 4.262750825]    #kappa from Experiment
-
-# compute difference:
-relative_error = (np.array(kappa_sim) - np.array(kappa_exp)) / np.array(kappa_exp)
-print('relative_error:', relative_error)
-
-
-# --------------- Plot Lines + Scatter -----------------------
-line_1 = ax.plot(input, kappa_sim,                    # data
-            #  color='forestgreen',              # linecolor
-             marker='D',                         # each marker will be rendered as a circle
-             markersize=5,                       # marker size
-            #   markerfacecolor='darkorange',      # marker facecolor
-             markeredgecolor='black',            # marker edgecolor
-             markeredgewidth=0.75,                  # marker edge width
-             # linestyle='dashdot',              # line style will be dash line
-             linewidth=1.5,                      # line width
-             zorder=3,
-             label = r"$\kappa_{sim}$")
-
-line_2 = ax.plot(input, kappa_exp,                     # data
-             # color='orangered',                # linecolor
-             marker='o',                         # each marker will be rendered as a circle
-             markersize=5,                       # marker size
-            #  markerfacecolor='cornflowerblue',   # marker facecolor
-             markeredgecolor='black',            # marker edgecolor
-             markeredgewidth=0.75,                  # marker edge width
-             # linestyle='--',                   # line style will be dash line
-             linewidth=1.5,                      # line width
-             zorder=3,
-             alpha=0.8,                           # Change opacity
-             label = r"$\kappa_{exp}$")
-
-# --- Plot order line
-# x = np.linspace(0.01,1/2,100)
-# y = CC_L2[0]*x**2
-# OrderLine = ax.plot(x,y,linestyle='--', label=r"$\mathcal{O}(h)$")
-
-
-
-# Fix_value = 7.674124
-# l3 = plt.axhline(y = Fix_value, color = 'black', linewidth=0.75, linestyle = 'dashed')
-# --------------- Set Axes  -----------------------
-ax.set_title(r"ratio $r = 0.22$")   # Plot - Title
-# plt.xscale('log') # Use Logarithmic-Scale
-# plt.yscale('log')
-ax.set_xlabel(r"Wood moisture content $\omega (\%)$", labelpad=4)
-ax.set_ylabel(r"Curvature $\kappa$", labelpad=4)
-plt.tight_layout()
-
-# # --- Set Line labels
-# line_labels = [r"$CC_{L_2}$",r"$CC_{H_1}$", r"$\mathcal{O}(h)$"]
-
-# --- Set Legend
-legend = ax.legend()
-# legend = fig.legend([line_1 , line_2, OrderLine],
-#                     labels = line_labels,
-#                     bbox_to_anchor=[0.97, 0.50],
-#                     # bbox_to_anchor=[0.97, 0.53],
-#                     # loc='center',
-#                     ncol=1,                  # Number of columns used for legend
-#                     # borderaxespad=0.15,    # Small spacing around legend box
-#                     frameon=True,
-#                     prop={'size': 10})
-
-
-frame = legend.get_frame()
-frame.set_edgecolor('black')
-
-
-# --- Adjust left/right spacing:
-# plt.subplots_adjust(right=0.81)
-# plt.subplots_adjust(left=0.11)
-
-# ---------- Output Figure as pdf:
-fig.set_size_inches(width, height)
-fig.savefig('WoodBilayer_expComparison.pdf')
-# plt.show()
\ No newline at end of file
diff --git a/Plot-Scripts/WoodBilayer_expComparison_r049.py b/Plot-Scripts/WoodBilayer_expComparison_r049.py
deleted file mode 100644
index 818b705a..00000000
--- a/Plot-Scripts/WoodBilayer_expComparison_r049.py
+++ /dev/null
@@ -1,136 +0,0 @@
-import numpy as np
-import matplotlib.pyplot as plt
-import math
-import os
-import subprocess
-import fileinput
-import re
-import sys
-import matplotlib as mpl
-from mpl_toolkits.mplot3d import Axes3D
-import matplotlib.cm as cm
-import matplotlib.ticker as ticker
-from matplotlib.ticker import MultipleLocator,FormatStrFormatter,MaxNLocator
-import seaborn as sns
-import matplotlib.colors as mcolors
-# ----------------------------------------------------
-# --- Define Plot style:
-# plt.style.use("seaborn-white")
-# plt.style.use("seaborn-pastel")
-# plt.style.use("seaborn-colorblind")
-plt.style.use("seaborn")
-mpl.rcParams['text.usetex'] = True
-mpl.rcParams["font.family"] = "serif"
-mpl.rcParams["font.size"] = "14"
-mpl.rcParams['xtick.bottom'] = True
-mpl.rcParams['xtick.major.size'] = 3
-mpl.rcParams['xtick.minor.size'] = 1.5
-mpl.rcParams['xtick.major.width'] = 0.75
-mpl.rcParams['ytick.left'] = True
-mpl.rcParams['ytick.major.size'] = 3
-mpl.rcParams['ytick.minor.size'] = 1.5
-mpl.rcParams['ytick.major.width'] = 0.75
-
-#Adjust grid:
-mpl.rcParams.update({"axes.grid" : True}) # Add grid
-mpl.rcParams['axes.labelpad'] = 3
-mpl.rcParams['grid.linewidth'] = 0.25
-mpl.rcParams['grid.alpha'] = 0.9 # 0.75
-mpl.rcParams['grid.linestyle'] = '-'
-mpl.rcParams['grid.color']   = 'gray'#'black'
-mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
-# ----------------------------------------------------------------------------------------
-width = 5.79
-height = width / 1.618 # The golden ratio.
-
-# fig = plt.figure()      #main
-fig, ax = plt.subplots(figsize=(width,height))
-
-
-
-
-
-input = [15.30614414,14.49463867,13.46629742,12.78388234,12.23057715,10.21852839,9.341730605] #moisture-content (in %)
-
-
-kappa_sim = [0.59118236, 0.87174349, 1.24248497, 1.49298597, 1.70340681, 2.46492986, 2.79559118]         #kappa from Simulation
-kappa_exp = [0.357615902, 0.376287785, 0.851008627, 0.904475291, 1.039744708, 1.346405241, 1.566568558]   #kappa from Experiment
-
-
-
-# compute difference:
-relative_error = (np.array(kappa_sim) - np.array(kappa_exp)) / np.array(kappa_exp)
-print('relative_error:', relative_error)
-
-
-# --------------- Plot Lines + Scatter -----------------------
-line_1 = ax.plot(input, kappa_sim,                    # data
-            #  color='forestgreen',              # linecolor
-             marker='D',                         # each marker will be rendered as a circle
-             markersize=5,                       # marker size
-            #   markerfacecolor='darkorange',      # marker facecolor
-             markeredgecolor='black',            # marker edgecolor
-             markeredgewidth=0.75,                  # marker edge width
-             # linestyle='dashdot',              # line style will be dash line
-             linewidth=1.5,                      # line width
-             zorder=3,
-             label = r"$\kappa_{sim}$")
-
-line_2 = ax.plot(input, kappa_exp,                     # data
-             # color='orangered',                # linecolor
-             marker='o',                         # each marker will be rendered as a circle
-             markersize=5,                       # marker size
-            #  markerfacecolor='cornflowerblue',   # marker facecolor
-             markeredgecolor='black',            # marker edgecolor
-             markeredgewidth=0.75,                  # marker edge width
-             # linestyle='--',                   # line style will be dash line
-             linewidth=1.5,                      # line width
-             zorder=3,
-             alpha=0.8,                           # Change opacity
-             label = r"$\kappa_{exp}$")
-
-# --- Plot order line
-# x = np.linspace(0.01,1/2,100)
-# y = CC_L2[0]*x**2
-# OrderLine = ax.plot(x,y,linestyle='--', label=r"$\mathcal{O}(h)$")
-
-
-
-# Fix_value = 7.674124
-# l3 = plt.axhline(y = Fix_value, color = 'black', linewidth=0.75, linestyle = 'dashed')
-# --------------- Set Axes  -----------------------
-ax.set_title(r"ratio $r = 0.49$")   # Plot - Title
-# plt.xscale('log') # Use Logarithmic-Scale
-# plt.yscale('log')
-ax.set_xlabel(r"Wood moisture content $\omega (\%)$", labelpad=4)
-ax.set_ylabel(r"Curvature $\kappa$", labelpad=4)
-plt.tight_layout()
-
-# # --- Set Line labels
-# line_labels = [r"$CC_{L_2}$",r"$CC_{H_1}$", r"$\mathcal{O}(h)$"]
-
-# --- Set Legend
-legend = ax.legend()
-# legend = fig.legend([line_1 , line_2, OrderLine],
-#                     labels = line_labels,
-#                     bbox_to_anchor=[0.97, 0.50],
-#                     # bbox_to_anchor=[0.97, 0.53],
-#                     # loc='center',
-#                     ncol=1,                  # Number of columns used for legend
-#                     # borderaxespad=0.15,    # Small spacing around legend box
-#                     frameon=True,
-#                     prop={'size': 10})
-
-
-frame = legend.get_frame()
-frame.set_edgecolor('black')
-
-
-# --- Adjust left/right spacing:
-# plt.subplots_adjust(right=0.81)
-# plt.subplots_adjust(left=0.11)
-
-# ---------- Output Figure as pdf:
-fig.set_size_inches(width, height)
-fig.savefig('WoodBilayer_expComparison_r049.pdf')
-# plt.show()
\ No newline at end of file
-- 
GitLab