diff --git a/experiment/perforated-bilayer/perfBilayer_test.py b/experiment/perforated-bilayer/perfBilayer_test.py index e247918982c221597cd418f0675ac9d685b3ee23..01d1c57ea4a6373e6d37ae7ee1bd48a2424c47a6 100644 --- a/experiment/perforated-bilayer/perfBilayer_test.py +++ b/experiment/perforated-bilayer/perfBilayer_test.py @@ -107,30 +107,59 @@ def eval_energy(kappa,alpha,Q,B) : # pythonPath = '/home/klaus/Desktop/Dune_release/dune-microstructure/experiment/wood-bilayer' #--- 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_" + perforatedLayer - -executable = os.getcwd() + '/build-cmake/src/Cell-Problem' -# --------------------------------- -# Setup Experiment -# --------------------------------- -gamma = 1.0 - -# ----- Define Parameters for Material Function -------------------- -# [r, h, omega_flat, omega_target, theta, experimental_kappa] -# r = (thickness upper layer)/(thickness) -# h = thickness [meter] -# omega_flat = moisture content in the flat state before drying [%] -# omega_target = moisture content in the target state [%] -# theta = rotation angle (not implemented and used) -# beta = design parameter for perforation = ratio of Volume of (cylindrical) perforation to Volume of active/passive layer - -#Experiment: Perforate "active" bilayer phase -materialFunctionParameter=[ +# perforatedLayer = 'upper' +perforatedLayer = 'lower' + +dataset_numbers = [0, 1, 2, 3, 4, 5] + +for dataset_number in dataset_numbers: + print("------------------") + print(str(dataset_number) + "th data set") + print("------------------") + + + # path = os.getcwd() + '/experiment/perforated-bilayer/results_' + perforatedLayer + '/' + path = os.getcwd() + '/experiment/perforated-bilayer/results_' + perforatedLayer + '_' + str(dataset_number) + '/' + pythonPath = os.getcwd() + '/experiment/perforated-bilayer' + pythonModule = "perforated_wood_" + perforatedLayer + executable = os.getcwd() + '/build-cmake/src/Cell-Problem' + # --------------------------------- + # Setup Experiment + # --------------------------------- + gamma = 1.0 + + # ----- Define Parameters for Material Function -------------------- + # [r, h, omega_flat, omega_target, theta, experimental_kappa] + # r = (thickness upper layer)/(thickness) + # h = thickness [meter] + # omega_flat = moisture content in the flat state before drying [%] + # omega_target = moisture content in the target state [%] + # theta = rotation angle (not implemented and used) + # beta = design parameter for perforation = ratio of Volume of (cylindrical) perforation to Volume of active/passive layer + + #Experiment: Perforate "active"/"passive" bilayer phase + + + materialFunctionParameter=[ + [ # Dataset Ratio r = 0.12 + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.0 ], + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.05], + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.1 ], + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.15], + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.2 ], + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.25], + [0.12, 0.0047, 17.17547062, 8.959564147, 0.0, 0.3 ] + ], + [ # Dataset Ratio r = 0.17 + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.0 ], + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.05], + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.1 ], + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.15], + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.2 ], + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.25], + [0.17, 0.0049, 17.17547062, 8.959564147, 0.0, 0.3 ] + ], + [ # Dataset Ratio r = 0.22 [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.0 ], [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.05 ], [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.1 ], @@ -138,62 +167,153 @@ materialFunctionParameter=[ [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.2 ], [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.25 ], [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.3 ] -] + ], + [ # Dataset Ratio r = 0.34 + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.0 ], + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.05], + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.1 ], + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.15], + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.2 ], + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.25], + [0.34, 0.0063, 17.17547062, 8.959564147, 0.0, 0.3 ] + ], + [ # Dataset Ratio r = 0.43 + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.0 ], + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.05], + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.1 ], + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.15], + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.2 ], + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.25], + [0.43, 0.0073, 17.17547062, 8.959564147, 0.0, 0.3 ] + ], + [ # Dataset Ratio r = 0.49 + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.0 ], + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.05], + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.1 ], + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.15], + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.2 ], + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.25], + [0.49, 0.008, 17.17547062, 8.959564147, 0.0, 0.3 ] + ] + ] + -# ------ Loops through Parameters for Material Function ----------- -for i in range(0,np.shape(materialFunctionParameter)[0]): - print("------------------") - print("New Loop") - print("------------------") - # Check output directory - outputPath = path + str(i) - isExist = os.path.exists(outputPath) - if not isExist: - # Create a new directory because it does not exist - os.makedirs(outputPath) - print("The new directory " + outputPath + " is created!") - - # thread = threading.Thread(target=run_CellProblem(executable, pythonModule, pythonPath, LOGFILE)) - # thread.start() - - #TODO: apperently its not possible to pass a variable via subprocess and "calculate" another input value inside the python file. - # Therefore we use this instead. - SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_r",materialFunctionParameter[i][0]) - SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_h",materialFunctionParameter[i][1]) - SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_omega_flat",materialFunctionParameter[i][2]) - SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_omega_target",materialFunctionParameter[i][3]) - SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_theta",materialFunctionParameter[i][4]) - SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_beta",materialFunctionParameter[i][5]) - - LOGFILE = outputPath + "/" + pythonModule + "_output" + "_" + str(i) + ".log" - - processList = [] - p = subprocess.Popen(executable + " " + pythonPath + " " + pythonModule - + " -outputPath " + outputPath - + " -gamma " + str(gamma) - + " | tee " + LOGFILE, shell=True) - - # p = subprocess.Popen(executable + " " + pythonPath + " " + pythonModule - # + " -outputPath " + outputPath - # + " -gamma " + str(gamma) - # + " -param_r " + str(materialFunctionParameter[i][0]) - # + " -param_h " + str(materialFunctionParameter[i][1]) - # + " -param_omega_flat " + str(materialFunctionParameter[i][2]) - # + " -param_omega_target " + str(materialFunctionParameter[i][3]) - # + " -phase2_angle " + str(materialFunctionParameter[i][4]) - # + " | tee " + LOGFILE, shell=True) - - p.wait() # wait - processList.append(p) - exit_codes = [p.wait() for p in processList] - # --------------------------------------------------- - # wait here for the result to be available before continuing - # thread.join() - f = open(outputPath+"/parameter.txt", "w") - f.write("r = "+str(materialFunctionParameter[i][0])+"\n") - f.write("h = "+str(materialFunctionParameter[i][1])+"\n") - f.write("omega_flat = "+str(materialFunctionParameter[i][2])+"\n") - f.write("omega_target = "+str(materialFunctionParameter[i][3])+"\n") - f.write("param_beta = "+str(materialFunctionParameter[i][5])+"\n") - f.close() - # + + #--- Different moisture values for different thicknesses: + + # materialFunctionParameter=[ + # [ # Dataset Ratio r = 0.12 + # [0.12, 0.0047, 17.32986047, 14.70179844, 0.0, 0.0 ], + # [0.12, 0.0047, 17.32986047, 13.6246, 0.0, 0.05], + # [0.12, 0.0047, 17.32986047, 12.42994508, 0.0, 0.1 ], + # [0.12, 0.0047, 17.32986047, 11.69773413, 0.0, 0.15], + # [0.12, 0.0047, 17.32986047, 11.14159987, 0.0, 0.2 ], + # [0.12, 0.0047, 17.32986047, 9.500670278, 0.0, 0.25], + # [0.12, 0.0047, 17.32986047, 9.005046347, 0.0, 0.3 ] + # ], + # [ # Dataset Ratio r = 0.17 + # [0.17, 0.0049, 17.28772791 , 14.75453569, 0.0, 0.0 ], + # [0.17, 0.0049, 17.28772791 , 13.71227639, 0.0, 0.05], + # [0.17, 0.0049, 17.28772791 , 12.54975012, 0.0, 0.1 ], + # [0.17, 0.0049, 17.28772791 , 11.83455959, 0.0, 0.15], + # [0.17, 0.0049, 17.28772791 , 11.29089521, 0.0, 0.2 ], + # [0.17, 0.0049, 17.28772791 , 9.620608917, 0.0, 0.25], + # [0.17, 0.0049, 17.28772791 , 9.101671742, 0.0, 0.3 ] + # ], + # [ # Dataset Ratio r = 0.22 + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.0 ], + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.05 ], + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.1 ], + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.15 ], + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.2 ], + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.25 ], + # [0.22, 0.0053, 17.17547062, 8.959564147, 0.0, 0.3 ] + # ], + # [ # Dataset Ratio r = 0.34 + # [0.34, 0.0063, 17.14061081 , 14.98380876, 0.0, 0.0 ], + # [0.34, 0.0063, 17.14061081 , 13.97154915, 0.0, 0.05], + # [0.34, 0.0063, 17.14061081 , 12.77309253, 0.0, 0.1 ], + # [0.34, 0.0063, 17.14061081 , 12.00959929, 0.0, 0.15], + # [0.34, 0.0063, 17.14061081 , 11.42001731, 0.0, 0.2 ], + # [0.34, 0.0063, 17.14061081 , 9.561447179, 0.0, 0.25], + # [0.34, 0.0063, 17.14061081 , 8.964704969, 0.0, 0.3 ] + # ], + # [ # Dataset Ratio r = 0.43 + # [0.43, 0.0073, 17.07559686 , 15.11316339, 0.0, 0.0 ], + # [0.43, 0.0073, 17.07559686 , 14.17997082, 0.0, 0.05], + # [0.43, 0.0073, 17.07559686 , 13.05739844, 0.0, 0.1 ], + # [0.43, 0.0073, 17.07559686 , 12.32309209, 0.0, 0.15], + # [0.43, 0.0073, 17.07559686 , 11.74608518, 0.0, 0.2 ], + # [0.43, 0.0073, 17.07559686 , 9.812372466, 0.0, 0.25], + # [0.43, 0.0073, 17.07559686 , 9.10519385 , 0.0, 0.3 ] + # ], + # [ # Dataset Ratio r = 0.49 + # [0.49, 0.008, 17.01520754, 15.30614414, 0.0, 0.0 ], + # [0.49, 0.008, 17.01520754, 14.49463867, 0.0, 0.05], + # [0.49, 0.008, 17.01520754, 13.46629742, 0.0, 0.1 ], + # [0.49, 0.008, 17.01520754, 12.78388234, 0.0, 0.15], + # [0.49, 0.008, 17.01520754, 12.23057715, 0.0, 0.2 ], + # [0.49, 0.008, 17.01520754, 10.21852839, 0.0, 0.25], + # [0.49, 0.008, 17.01520754, 9.341730605, 0.0, 0.3 ] + # ] + # ] + + + + # ------ Loops through Parameters for Material Function ----------- + for i in range(0,np.shape(materialFunctionParameter)[1]): + print("------------------") + print("New Loop") + print("------------------") + # Check output directory + outputPath = path + str(i) + isExist = os.path.exists(outputPath) + if not isExist: + # Create a new directory because it does not exist + os.makedirs(outputPath) + print("The new directory " + outputPath + " is created!") + + # thread = threading.Thread(target=run_CellProblem(executable, pythonModule, pythonPath, LOGFILE)) + # thread.start() + + #TODO: apperently its not possible to pass a variable via subprocess and "calculate" another input value inside the python file. + # Therefore we use this instead. + SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_r",materialFunctionParameter[dataset_number][i][0]) + SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_h",materialFunctionParameter[dataset_number][i][1]) + SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_omega_flat",materialFunctionParameter[dataset_number][i][2]) + SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_omega_target",materialFunctionParameter[dataset_number][i][3]) + SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_theta",materialFunctionParameter[dataset_number][i][4]) + SetParameterMaterialFunction(pythonPath + "/" + pythonModule, "param_beta",materialFunctionParameter[dataset_number][i][5]) + + LOGFILE = outputPath + "/" + pythonModule + "_output" + "_" + str(i) + ".log" + + processList = [] + p = subprocess.Popen(executable + " " + pythonPath + " " + pythonModule + + " -outputPath " + outputPath + + " -gamma " + str(gamma) + + " | tee " + LOGFILE, shell=True) + + # p = subprocess.Popen(executable + " " + pythonPath + " " + pythonModule + # + " -outputPath " + outputPath + # + " -gamma " + str(gamma) + # + " -param_r " + str(materialFunctionParameter[i][0]) + # + " -param_h " + str(materialFunctionParameter[i][1]) + # + " -param_omega_flat " + str(materialFunctionParameter[i][2]) + # + " -param_omega_target " + str(materialFunctionParameter[i][3]) + # + " -phase2_angle " + str(materialFunctionParameter[i][4]) + # + " | tee " + LOGFILE, shell=True) + + p.wait() # wait + processList.append(p) + exit_codes = [p.wait() for p in processList] + # --------------------------------------------------- + # wait here for the result to be available before continuing + # thread.join() + f = open(outputPath+"/parameter.txt", "w") + f.write("r = "+str(materialFunctionParameter[dataset_number][i][0])+"\n") + f.write("h = "+str(materialFunctionParameter[dataset_number][i][1])+"\n") + f.write("omega_flat = "+str(materialFunctionParameter[dataset_number][i][2])+"\n") + f.write("omega_target = "+str(materialFunctionParameter[dataset_number][i][3])+"\n") + f.write("param_beta = "+str(materialFunctionParameter[dataset_number][i][5])+"\n") + f.close() + # diff --git a/experiment/perforated-bilayer/perforated_wood_lower.py b/experiment/perforated-bilayer/perforated_wood_lower.py index 9ac85607531b3acbf88cb0913302200d1e8e4b8e..40720e7ac89736e88dd958e6588afd54fb1a19ca 100644 --- a/experiment/perforated-bilayer/perforated_wood_lower.py +++ b/experiment/perforated-bilayer/perforated_wood_lower.py @@ -70,13 +70,13 @@ parameterSet.Phases=3 # Parameters of the model # -- (thickness upper layer) / (thickness) # param_r = 0.22 -param_r = 0.22 +param_r = 0.49 # -- thickness [meter] -param_h = 0.0053 +param_h = 0.008 # -- moisture content in the flat state [%] -param_omega_flat = 17.17547062 +param_omega_flat = 17.01520754 # -- moisture content in the target state [%] -param_omega_target = 8.959564147 +param_omega_target = 9.341730605 # -- Drehwinkel param_theta = 0.0 @@ -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= '4 4' +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 780a40598eadf1611312990224ab51fbac009059..93ad9edc2f37a2087e30fe8775ae6d2204301ce4 100644 --- a/experiment/perforated-bilayer/perforated_wood_upper.py +++ b/experiment/perforated-bilayer/perforated_wood_upper.py @@ -70,13 +70,13 @@ parameterSet.Phases=3 # Parameters of the model # -- (thickness upper layer) / (thickness) # param_r = 0.22 -param_r = 0.22 +param_r = 0.49 # -- thickness [meter] -param_h = 0.0053 +param_h = 0.008 # -- moisture content in the flat state [%] -param_omega_flat = 17.17547062 +param_omega_flat = 17.01520754 # -- moisture content in the target state [%] -param_omega_target = 8.959564147 +param_omega_target = 9.341730605 # -- Drehwinkel param_theta = 0.0 @@ -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= '4 4' +parameterSet.numLevels= '3 3' # computes all levels from first to second entry +# parameterSet.numLevels= '4 4' ############################################# # Assembly options