Skip to content
Snippets Groups Projects
Commit ba444dbb authored by Jan Habscheid's avatar Jan Habscheid
Browse files

Update

parent 0cf8240f
Branches
No related tags found
No related merge requests found
......@@ -62,11 +62,11 @@ models = {
# 'GP_DotWhite': GaussianProcessRegressionModel(),
# 'GP_RBF': GaussianProcessRegressionModel(),
# 'GP_Matern': GaussianProcessRegressionModel(),
# 'GP_RationalQuadratic': GaussianProcessRegressionModel(),
'GP_RationalQuadratic': GaussianProcessRegressionModel(),
# 'GP_ExpSineSquared': GaussianProcessRegressionModel(),
# 'RBF_Linear': RadialBasisRegressionModel(),
# 'RBF_thinplatespline': RadialBasisRegressionModel(),
# 'RBF_cubic': RadialBasisRegressionModel(),
'RBF_Linear': RadialBasisRegressionModel(),
'RBF_thinplatespline': RadialBasisRegressionModel(),
'RBF_cubic': RadialBasisRegressionModel(),
# 'RBF_quintic': RadialBasisRegressionModel(),
# 'RBF_multiquadric': RadialBasisRegressionModel(),
# 'RBF_inversemultiquadric': RadialBasisRegressionModel(),
......
......@@ -38,8 +38,8 @@ models = {
'GP_RationalQuadratic',
# 'GP_ExpSineSquared',
'RBF_Linear',
# 'RBF_thinplatespline',
# 'RBF_cubic',
'RBF_thinplatespline',
'RBF_cubic',
# 'RBF_quintic',
# 'RBF_multiquadric',
# 'RBF_inversemultiquadric',
......
......@@ -34,7 +34,7 @@ models = {
# 'gaussianProcessMod_RBF': GaussianProcessRegressionModel(),
# 'gaussianProcessMod_Matern': GaussianProcessRegressionModel(),
'gaussianProcessMod_RationalQuadratic': GaussianProcessRegressionModel(),
'gaussianProcessMod_ExpSineSquared': GaussianProcessRegressionModel(),
# 'gaussianProcessMod_ExpSineSquared': GaussianProcessRegressionModel(),
# 'radialBasisMod_Linear': RadialBasisRegressionModel(),
'radialBasisMod_thinplatespline': RadialBasisRegressionModel(),
'radialBasisMod_cubic': RadialBasisRegressionModel(),
......
import numpy as np
import pandas as pd
import time
import os
import shutil
import subprocess
import argparse
from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel, RBF, Matern, RationalQuadratic, ExpSineSquared
......@@ -9,46 +12,75 @@ from models.LinearRegression import LinearRegressionModel
from models.RBFInterpolator import RadialBasisRegressionModel
from models.GaussianProcessRegressor import GaussianProcessRegressionModel
from miscellaneous.DataPreparation import save_numpy_to_xml, get_matrix_size
# Degree Elevation
parser = argparse.ArgumentParser(
description="Script that reads the Elevation Degrees from CMD"
)
parser.add_argument("--e", required=False, type=int)
parser.add_argument("--r", required=True, type=int)
parser.add_argument("--n", required=False, type=int)
parser.add_argument("--R_lower", required=False, type=int)
parser.add_argument("--R_upper", required=False, type=int)
parser.add_argument("--R_step", required=False, type=int)
parser.add_argument("--Architecture", required=False, type=str)
args = parser.parse_args()
DEGREE_ELEVATIONS = args.r
if args.e is not None:
DEGREE_ELEVATIONS = args.e
else:
DEGREE_ELEVATIONS = 1
if args.r is not None:
H_REFINEMENTS = args.r
else:
H_REFINEMENTS = 0
if args.n is not None:
N_RUNS = args.n
else:
N_RUNS = 1
print('DEGREE_ELEVATIONS:', DEGREE_ELEVATIONS)
DataFolder = f'Data/DegreeElevations_{DEGREE_ELEVATIONS}'
print(f'H_REFINEMENTS: \t\t{H_REFINEMENTS}')
# Create the folder to store the trained models
DataFolder = f'Data/DegreeElevations_{DEGREE_ELEVATIONS}'
DataFolder = f'Data/H_REFINEMENTS_{H_REFINEMENTS}'
TimingsFolder = f'{DataFolder}/Timings'
if not os.path.exists(TimingsFolder):
os.mkdir(TimingsFolder)
df = pd.read_excel(f'{DataFolder}/test/parameter_input.xlsx').transpose()
SAMPLES_TEST = df.shape[1]
# Sizes of the microstructures
VELOCITY_SIZE = get_matrix_size(f'{DataFolder}/train/velocities/velocity_field_0.xml')
PRESSURE_SIZE = get_matrix_size(f'{DataFolder}/train/pressure/pressure_field_0.xml')
path_to_executable = 'gismo/stokes_recreation'
if args.Architecture is not None:
if args.Architecture == 'MacOS':
path_to_executable = 'gismo/stokes_recreation'
elif args.Architecture == 'Linux':
path_to_executable = 'gismo/stokes_recreation_linux'
elif args.Architecture == 'Windows':
path_to_executable = 'gismo/stokes_recreation_linux'
else:
raise ValueError('Architecture not recognized')
models = {
'LinearRegression': LinearRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
'RBF_Linear': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
'RBF_thinplatespline': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
'RBF_cubic': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'RBF_quintic': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'RBF_multiquadric': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'RBF_inversemultiquadric': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'RBF_inversequadratic': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'RBF_gaussian': RadialBasisRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'GP_DotWhite': GaussianProcessRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'GP_RBF': GaussianProcessRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
# 'GP_Matern': GaussianProcessRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
'GP_RationalQuadratic': GaussianProcessRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS), # Sehr langsam, besser raus nehmen
# 'GP_ExpSineSquared': GaussianProcessRegressionModel(DEGREE_ELEVATIONS=DEGREE_ELEVATIONS),
'LinearRegression': LinearRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
'RBF_Linear': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
'RBF_thinplatespline': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
'RBF_cubic': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'RBF_quintic': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'RBF_multiquadric': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'RBF_inversemultiquadric': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'RBF_inversequadratic': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'RBF_gaussian': RadialBasisRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'GP_DotWhite': GaussianProcessRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'GP_RBF': GaussianProcessRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
# 'GP_Matern': GaussianProcessRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
'GP_RationalQuadratic': GaussianProcessRegressionModel(H_REFINEMENTS=H_REFINEMENTS), # Sehr langsam, besser raus nehmen
# 'GP_ExpSineSquared': GaussianProcessRegressionModel(H_REFINEMENTS=H_REFINEMENTS),
}
Kernel_RBF = [
......@@ -92,6 +124,7 @@ for ModelIndex, model_name in enumerate(models):
timings_train_w_POD = np.zeros((N_RUNS, len(R)))
timings_train_wo_POD = np.zeros((N_RUNS, len(R)))
timings_evaluate = np.zeros((N_RUNS, len(R)))
timings_reconstruct = np.zeros((N_RUNS, len(R)))
for RunIndex in range(N_RUNS):
print(f'Run: \t\t\t{RunIndex}')
for PODIndex, R_value in enumerate(R):
......@@ -126,6 +159,36 @@ for ModelIndex, model_name in enumerate(models):
end_evaluate = time.time()
timings_evaluate[RunIndex, PODIndex] = end_evaluate - start_evaluate
# Create Patches
start_reconstruct = time.time()
for sample in range(SAMPLES_TEST):
save_numpy_to_xml(test_velocity_predict[:,sample], f'temp_{model_name}/predict_velocity_field_{sample}.xml', rows=VELOCITY_SIZE, cols='1')
save_numpy_to_xml(test_pressure_predict[:,sample], f'temp_{model_name}/predict_pressure_field_{sample}.xml', rows=PRESSURE_SIZE, cols='1')
# Get all the input files for the evaluation
geometry_file = f'{DataFolder}/test/microstructure/index_{sample}.xml'
velocity_solution = f'{DataFolder}/test/velocities/velocity_field_{sample}.xml'
pressure_solution = f'{DataFolder}/test/pressure/pressure_field_{sample}.xml'
velocity_predicted = f'temp_{model_name}/predict_velocity_field_{sample}.xml'
pressure_predicted = f'temp_{model_name}/predict_pressure_field_{sample}.xml'
# Create patches for the geometry with gismo script
program_output = subprocess.Popen(
[f'./{path_to_executable}', f'-f {geometry_file}', f'-v {velocity_solution}', f'-p {pressure_solution}', f'-w {velocity_predicted}', f'-q {pressure_predicted}', f'-e {DEGREE_ELEVATIONS}', f'-r {H_REFINEMENTS}', '--no-plot'],
stdout=subprocess.PIPE,
text=True
).communicate()[0]
end_reconstruct = time.time()
timings_reconstruct[RunIndex, PODIndex] = end_reconstruct - start_reconstruct
os.remove('pressure_field_patches.xml')
os.remove('velocity_field_patches.xml')
os.remove('pressure_field_rec_patches.xml')
os.remove('velocity_field_rec_patches.xml')
shutil.rmtree(f'temp_{model_name}')
# Save the timings
np.savez(f'{TimingsFolder}/{model_name}.npz', timings_train_w_POD=timings_train_w_POD, timings_train_wo_POD=timings_train_wo_POD, timings_evaluate=timings_evaluate)
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment