Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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]
Exemplo n.º 3
0
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)