import matplotlib matplotlib.use('Agg') from matplotlib import pyplot as plt import numpy as np import paraBEM from paraBEM.pan2d import DirichletDoublet0Source0Case2 as Case from paraBEM.airfoil import Airfoil from paraBEM.utils import check_path a = Airfoil.trefftz_kutta(-0.1 + 0.01j, np.deg2rad(2), 51) alpha_list = np.deg2rad(np.linspace(-15, 30, 30)) cl = [] cd = [] cm = [] xcp = [] for alpha in alpha_list: case = Case(a.panels) case.v_inf = paraBEM.Vector2(np.cos(alpha), np.sin(alpha)) case.mom_ref_point = paraBEM.Vector2(-0, -3) case.run() cl.append(case.cl) cd.append(case.force.dot(case.v_inf) * 10) cm.append(case.cm) # xcp.append(case.center_of_pressure.x) del (case) plt.plot(cl, alpha_list, color="black", linestyle="-", label="cl") plt.plot(cm, alpha_list, color="black", dashes=[8, 4, 2, 4, 2, 4], label="cm")
# -*- coding: utf-8 -*- import numpy as np import paraBEM from paraBEM.airfoil import Airfoil from paraBEM.utils import check_path from paraBEM.vtk_export import VtkWriter from paraBEM.pan2d import DirichletDoublet1Case2 as Case # geometry airfoil = Airfoil.trefftz_kutta(-0.1 + 0.0j, np.deg2rad(30)) airfoil.numpoints = 50 points = [paraBEM.PanelVector2(*i) for i in airfoil.coordinates[:-1]] points[0].wake_vertex = True panels = [paraBEM.Panel2([coord, points[i+1]]) for i, coord in enumerate(points[:-1])] panels.append(paraBEM.Panel2([points[-1], points[0]])) # panelmethode case = Case(panels) case.v_inf = paraBEM.Vector2(1, 0.3) case.run() # plt.plot(np.array(case.matrix.values).T) # # plt.show() nx = 200 ny = 200 space_x = np.linspace(-0.2, 1.5, nx) space_y = np.linspace(-0.5, 0.5, ny) grid = [paraBEM.Vector2(x, y) for y in space_y for x in space_x] velocity = list(map(case.off_body_velocity, grid))
# -*- coding: utf-8 -*- import numpy as np import paraBEM from paraBEM.airfoil import Airfoil from paraBEM.utils import check_path from paraBEM.vtk_export import VtkWriter from paraBEM.pan2d import DirichletDoublet1Case2 as Case # geometry airfoil = Airfoil.trefftz_kutta(-0.1 + 0.0j, np.deg2rad(30)) airfoil.numpoints = 50 points = [paraBEM.PanelVector2(*i) for i in airfoil.coordinates[:-1]] points[0].wake_vertex = True panels = [ paraBEM.Panel2([coord, points[i + 1]]) for i, coord in enumerate(points[:-1]) ] panels.append(paraBEM.Panel2([points[-1], points[0]])) # panelmethode case = Case(panels) case.v_inf = paraBEM.Vector2(1, 0.3) case.run() # plt.plot(np.array(case.matrix.values).T) # # plt.show() nx = 200 ny = 200 space_x = np.linspace(-0.2, 1.5, nx) space_y = np.linspace(-0.5, 0.5, ny)