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") # plt.plot(xcp, alpha_list, color="black", linestyle="dashed", label="x(cm=0)") plt.legend() plt.plot(*zip(*a.coordinates), marker="*") plt.grid(True)
num_pan = 500 alpha = np.deg2rad(10) # panelmethode coordiantes = list( zip( airfoil.coordinates(num=num_pan).real, airfoil.coordinates(num=num_pan).imag)) vertices = [PanelVector2(*v) for v in coordiantes[:-1]] vertices[0].wake_vertex = True panels = [ Panel2([vertices[i], vertices[i + 1]]) for i in range(len(vertices[:-1])) ] panels.append(Panel2([vertices[-1], vertices[0]])) case = Case(panels) case.v_inf = Vector2(np.cos(alpha), np.sin(alpha)) case.run() nx = 500 ny = 500 space_x = np.linspace(-3, 7, nx) space_y = np.linspace(-2, 2, ny) vec = lambda x: paraBEM.Vector2(x[0], x[1]) vec3 = lambda x: [x[0], x[1], 0] grid = [[x, y, 0] for y in space_y for x in space_x] _grid = list(map(vec, grid)) velocity = list(map(vec3, list(map(case.off_body_velocity, _grid)))) vel1 = [(i[0]**2 + i[1]**2)**(0.5) for i in velocity]
import paraBEM from paraBEM.pan2d import DirichletDoublet0Case2 as Case from paraBEM.airfoil import Airfoil airfoil = Airfoil.vandevooren(0.5) airfoil.numpoints = 40 case = Case(airfoil.panels) case.v_inf = paraBEM.Vector2(1, 0.1) case.run() print(airfoil.coordinates)