Пример #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