# -*- 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))
Example #2
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)
Example #3
0
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)
Example #6
0
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()
Example #7
0
# -*- 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]
Example #9
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)
Example #10
0
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()