def show_pressure(self): import paraBEM from paraBEM.pan2d import DirichletDoublet0Source0Case2 # 1. get the panels from the airfoil self.current_airfoil.apply_splines() coords = self.current_airfoil.data[:-1] pans = [] vertices = [] vertices = [paraBEM.PanelVector2(*i) for i in coords] vertices[0].wake_vertex = True for i, coord in enumerate(coords): j = (i + 1 if (i + 1) < len(coords) else 0) pan = paraBEM.Panel2([vertices[i], vertices[j]]) pans.append(pan) # 2. compute pressure case = DirichletDoublet0Source0Case2(pans) alpha = np.deg2rad(self.Qalpha.value()) case.v_inf = paraBEM.Vector2(np.cos(alpha), np.sin(alpha)) case.run() for pan in pans: p0 = pan.center p1 = p0 + pan.n * pan.cp * 0.03 l = [[*p0, 0.], [*p1, 0.]] # adding z-value self.pressure_sep += pp.Line(l).object return True
import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import numpy as np import paraBEM from paraBEM.vtk_export import CaseToVTK from paraBEM.pan2d import DirichletDoublet0Source0Case2 as Case from paraBEM.airfoil import Airfoil n_x = 2000 n_y = 10 a = Airfoil.import_from_dat("/home/lo/Copy/modellbau/profile/jwl/jwl044.dat") a.numpoints = n_x case = Case(a.panels) case.v_inf = paraBEM.Vector2(1, 0.2) case.run() plt.plot(*zip(*[[pan.center.x, pan.cp] for pan in case.panels]), marker="x") # plt.show()