diff --git a/Plot-Scripts/PerforatedBilayer_parameterDependence.py b/Plot-Scripts/PerforatedBilayer_parameterDependence.py new file mode 100644 index 0000000000000000000000000000000000000000..f2b15eb2450d6fe24c18afab643200ef2354478a --- /dev/null +++ b/Plot-Scripts/PerforatedBilayer_parameterDependence.py @@ -0,0 +1,150 @@ +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 %) + +# input = [0 , np.pi/4, np.pi/2] # rotation angle + + +# input = [0 , np.pi/6.0, np.pi/3.0, np.pi/2.0, 2.0*(np.pi/3.0), 5.0*(np.pi/6.0), np.pi] # rotation angle +# kappa_sim = [ 3.94388778, 5.53106212, 8.72945892, 10.22044088, 8.72945892, 5.53106212, 3.94388778] + +# input = [0 , np.pi/12.0, np.pi/6.0, np.pi/4.0, np.pi/3.0, 5.0*(np.pi/12.0), np.pi/2.0] # rotation angle +# kappa_sim = [ 3.94388778, 4.37675351, 5.53106212, 7.14228457, 8.72945892, 9.83567134, 10.22044088] + + +input = [0 , 0.05, 0.10, 0.15, 0.20, 0.25, 0.30] # Design parameter (volume ratio) + +#perforation in upper (passive) layer +# kappa_sim_upper = [3.94388778, 3.91983968, 3.84769539, 3.7755511, 3.75150301, 3.70340681, 3.67935872] #gridLevel3 +kappa_sim_upper = [3.96793587, 3.91983968, 3.87174349, 3.84769539, 3.7995992 , 3.75150301, 3.70340681] #gridLevel4 + +#perforation in lower (active) layer +# kappa_sim_lower = [3.94388778, 3.94388778, 3.96793587, 3.99198397, 3.99198397, 4.01603206,4.01603206] #gridLevel3 +kappa_sim_lower = [3.96793587, 3.99198397, 3.99198397, 3.99198397, 3.99198397, 3.99198397,3.99198397] #gridLevel4 + +# 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_upper, # 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}$ (upper=passive perf.)") + +line_2 = ax.plot(input, kappa_sim_lower, # 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_{sim}$ (lower=active perf.)") + +# --- 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("Perforated upper/lower layer , " r"Layer thickness ratio $r = 0.22$") # Plot - Title +# plt.xscale('log') # Use Logarithmic-Scale +# plt.yscale('log') +ax.set_xlabel(r"Volume ratio ", 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('PerforatedBilayer_dependence.pdf') +# plt.show() \ No newline at end of file diff --git a/experiment/perforated-bilayer/PolarPlotLocalEnergy.py b/experiment/perforated-bilayer/PolarPlotLocalEnergy.py index efb121731eba3d0f8eab390e571b31778f401973..86e7b2e0d34af84569a06f2c4ebeba2b3dbf7bec 100644 --- a/experiment/perforated-bilayer/PolarPlotLocalEnergy.py +++ b/experiment/perforated-bilayer/PolarPlotLocalEnergy.py @@ -52,13 +52,16 @@ def ReadEffectiveQuantities(QFilePath, BFilePath): number=7 show_plot = False +#--- Choose wether to perforate upper (passive) or lower (active) layer +perforatedLayer = 'upper' +# perforatedLayer = 'lower' + kappa=np.zeros(number) for n in range(0,number): # Read from Date print(str(n)) - DataPath = './experiment/perforated-bilayer/results/'+str(n) - DataPath = './experiment/perforated-bilayer/results/'+str(n) + DataPath = './experiment/perforated-bilayer/results_' + perforatedLayer + '/'+str(n) QFilePath = DataPath + '/QMatrix.txt' BFilePath = DataPath + '/BMatrix.txt' ParameterPath = DataPath + '/parameter.txt' @@ -80,7 +83,7 @@ for n in range(0,number): for i in range(0,N): for j in range(0,N): if theta[i,j]<np.pi: - E[i,j]=energy(r[i,j],theta[i,j],Q,B) * (thickness**2) + E[i,j]=energy(r[i,j],theta[i,j],Q,B) * (thickness**2) else: E[i,j]=energy(-r[i,j],theta[i,j],Q,B) * (thickness**2) @@ -103,10 +106,10 @@ for n in range(0,number): width = 5.79 height = width / 1.618 # The golden ratio. fig.set_size_inches(width, height) - fig.savefig('Plot_PerforatedBilayer.pdf') + fig.savefig('Plot_PerforatedBilayer_'+perforatedLayer + '_' + str(n) + '.pdf') -f = open("./experiment/perforated-bilayer/results/kappa_simulation.txt", "w") +f = open("./experiment/perforated-bilayer/results_" + perforatedLayer + "/kappa_simulation.txt", "w") f.write(str(kappa)) f.close() diff --git a/experiment/perforated-bilayer/perfBilayer_test.py b/experiment/perforated-bilayer/perfBilayer_test.py index dedc84af15bdb84185ed83ff1d23717bcc80000d..e247918982c221597cd418f0675ac9d685b3ee23 100644 --- a/experiment/perforated-bilayer/perfBilayer_test.py +++ b/experiment/perforated-bilayer/perfBilayer_test.py @@ -105,10 +105,15 @@ def eval_energy(kappa,alpha,Q,B) : # write_LOG = True # writes Cell-Problem output-LOG in "Cell-Problem_output.log" # path='/home/klaus/Desktop/Dune_release/dune-microstructure/experiment/wood-bilayer/results/' # pythonPath = '/home/klaus/Desktop/Dune_release/dune-microstructure/experiment/wood-bilayer' -path = os.getcwd() + '/experiment/perforated-bilayer/results/' + +#--- Choose wether to perforate upper (passive) or lower (active) layer +perforatedLayer = 'upper' +# perforatedLayer = 'lower' + +path = os.getcwd() + '/experiment/perforated-bilayer/results_' + perforatedLayer + '/' pythonPath = os.getcwd() + '/experiment/perforated-bilayer' -pythonModule = "perforated_wood_upper" -# pythonModule = "perforated_wood_lower" +pythonModule = "perforated_wood_" + perforatedLayer + executable = os.getcwd() + '/build-cmake/src/Cell-Problem' # --------------------------------- # Setup Experiment diff --git a/experiment/perforated-bilayer/perforated_wood_lower.py b/experiment/perforated-bilayer/perforated_wood_lower.py index 95730419f1f1a8d1c8c5dce00f350b429ca24edb..9ac85607531b3acbf88cb0913302200d1e8e4b8e 100644 --- a/experiment/perforated-bilayer/perforated_wood_lower.py +++ b/experiment/perforated-bilayer/perforated_wood_lower.py @@ -225,8 +225,8 @@ parameterSet.gamma=1.0 ## numLevels : Number of Levels on which solution is computed. starting with a 2x2x2 cube mesh. ## {start,finish} computes on all grid from 2^(start) to 2^finish refinement #---------------------------------------------------- -parameterSet.numLevels= '3 3' # computes all levels from first to second entry - +# parameterSet.numLevels= '3 3' # computes all levels from first to second entry +parameterSet.numLevels= '4 4' ############################################# # Assembly options diff --git a/experiment/perforated-bilayer/perforated_wood_upper.py b/experiment/perforated-bilayer/perforated_wood_upper.py index 9316c2b1dadd3031a71b6c0e1cc073da8042b80b..780a40598eadf1611312990224ab51fbac009059 100644 --- a/experiment/perforated-bilayer/perforated_wood_upper.py +++ b/experiment/perforated-bilayer/perforated_wood_upper.py @@ -225,8 +225,8 @@ parameterSet.gamma=1.0 ## numLevels : Number of Levels on which solution is computed. starting with a 2x2x2 cube mesh. ## {start,finish} computes on all grid from 2^(start) to 2^finish refinement #---------------------------------------------------- -parameterSet.numLevels= '3 3' # computes all levels from first to second entry - +# parameterSet.numLevels= '3 3' # computes all levels from first to second entry +parameterSet.numLevels= '4 4' ############################################# # Assembly options