PVD/compare_samples.py

40 lines
1 KiB
Python

from pathlib import Path
import numpy as np
import pyvista as pv
VTKFILE_NOMINAL = Path("~/data/stage-laurent-f/datasets/Rotor37/processed/nominal_blade_rotated.vtk")
# load nominal blade
nominal = pv.read(VTKFILE_NOMINAL)
# for each generated/sampled blade
gen_files = Path("./output").glob("gen*.txt")
pc_files = Path("./output").glob("pc*.txt")
files = list(gen_files) + list(pc_files)
for gen_file in files:
# load numpy txt
blade = np.loadtxt(gen_file)
# get top and bottom index (filter outliers a bit)
top = int(blade.shape[0] * 0.001)
bot = int(blade.shape[0] * 0.999)
# sort blade coordinates
sorted_blade = np.sort(blade, axis=0)
# get center of blade
center = (sorted_blade[bot, :] + sorted_blade[top, :]) / 2
# translate blade to world origin
blade -= center
# save to txt
np.savetxt(f"output/test_{gen_file.stem}.txt", blade)
# swap nominal points to blade points
nominal.points = blade
# save altered blade to vtk
nominal.save(f"output/test_{gen_file.stem}.vtk")