Пример #1
0
    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
Пример #2
0
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()