# -*- 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))
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)
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.vtk_export import VtkWriter from paraBEM import PanelVector2, Vector2, Panel2 from paraBEM.airfoil import Airfoil from paraBEM.pan2d import NeumannSource0Case2 as Case from paraBEM.utils import check_path airfoil = Airfoil.joukowsky(m=-0.1 +0.1j) airfoil.numpoints = 50 alpha = np.deg2rad(10) # panelmethode case = Case(airfoil.panels) case.v_inf = Vector2(np.cos(alpha), np.sin(alpha)) case.run() print(np.array(case.matrix.values)) nx = 300 ny = 300 space_x = np.linspace(-1, 2, nx) space_y = np.linspace(-0.2, 0.2, ny) vec = lambda x: paraBEM.Vector2(x[0], x[1]) vec3 = lambda x: [x[0], x[1], 0] grid = [paraBEM.Vector2(x, y) for y in space_y for x in space_x] velocity = list(map(vec3, map(case.off_body_velocity, grid))) vel1 = [(i[0]**2 + i[1]**2)**(0.5) for i in velocity]
# -*- 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)
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()
# -*- coding: utf-8 -*- import numpy as np import paraBEM from paraBEM.vtk_export import VtkWriter from paraBEM import PanelVector2, Vector2, Panel2 from paraBEM.airfoil import Airfoil from paraBEM.pan2d import NeumannDoublet0Case2 as Case from paraBEM.utils import check_path airfoil = Airfoil.vandevooren(tau=np.deg2rad(20), epsilon=0.05) airfoil.numpoints = 150 alpha = np.deg2rad(10) # panelmethode case = Case(airfoil.panels) case.v_inf = Vector2(np.cos(alpha), np.sin(alpha)) case.run() nx = 200 ny = 200 space_x = np.linspace(-1, 2, nx) space_y = np.linspace(-0.2, 0.2, ny) vec = lambda x: paraBEM.Vector2(x[0], x[1]) vec3 = lambda x: [x[0], x[1], 0] grid = [paraBEM.Vector2(x, y) for y in space_y for x in space_x] velocity = list(map(vec3, map(case.off_body_velocity, grid))) vel1 = [(i[0]**2 + i[1]**2)**(0.5) for i in velocity]
# -*- coding: utf-8 -*- import numpy as np import paraBEM from paraBEM.vtk_export import VtkWriter from paraBEM import PanelVector2, Vector2, Panel2 from paraBEM.airfoil import Airfoil from paraBEM.pan2d import NeumannSource0Case2 as Case from paraBEM.utils import check_path airfoil = Airfoil.joukowsky(m=-0.1 + 0.1j) airfoil.numpoints = 50 alpha = np.deg2rad(10) # panelmethode case = Case(airfoil.panels) case.v_inf = Vector2(np.cos(alpha), np.sin(alpha)) case.run() print(np.array(case.matrix.values)) nx = 300 ny = 300 space_x = np.linspace(-1, 2, nx) space_y = np.linspace(-0.2, 0.2, ny) vec = lambda x: paraBEM.Vector2(x[0], x[1]) vec3 = lambda x: [x[0], x[1], 0] grid = [paraBEM.Vector2(x, y) for y in space_y for x in space_x] velocity = list(map(vec3, map(case.off_body_velocity, grid))) vel1 = [(i[0]**2 + i[1]**2)**(0.5) for i in velocity]
from paraBEM.vtk_export import CaseToVTK from paraBEM.pan3d import DirichletDoublet0Source0Case3 as Case from paraBEM.airfoil import Airfoil def rib3d(airfoil, y_pos): out = [paraBEM.PanelVector3(coo[0], y_pos, coo[1]) for coo in airfoil.coordinates[:-1]] out.append(out[0]) out[0].wake_vertex = True return out n_x = 50 n_y = 10 a = Airfoil.joukowsky(-0.01+1j) a.numpoints = n_x print(a.coordinates) ribs = [rib3d(a, y) for y in np.linspace(-5, 5, n_y)] panels = [] for i in range(n_y)[:-1]: for j in range(n_x): panels.append(paraBEM.Panel3([ribs[i][j], ribs[i + 1][j], ribs[i + 1][j + 1], ribs[i][j + 1]])) te = [rib[0] for rib in ribs] print(te) case = Case(panels, te) case.farfield = 5 case.v_inf = paraBEM.Vector3(1, 0, 0.0) case.create_wake(length=10000, count=3) # length, count case.run()