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] pot = list(map(case.off_body_potential, _grid)) with open(check_path("results/coordinates_not_aligned/field.vtk"), "w") as _file: writer = VtkWriter() writer.structed_grid(_file, "airfoil", [nx, ny, 1]) writer.points(_file, grid) writer.data(_file, velocity, name="velocity", _type="VECTORS", data_type="POINT_DATA") writer.data(_file, pot, name="pot", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, vel1, name="vel", _type="SCALARS",
import numpy import paraBEM from paraBEM.pan3d import vortex_3_0_v from paraBEM.vtk_export import VtkWriter from paraBEM.utils import check_path v1 = paraBEM.Vector3(-1, 0, 0) v2 = paraBEM.Vector3(1, 0, 0) n = 80 a = numpy.linspace(-10, 10, n).tolist() b = [paraBEM.Vector3(i, j, k) for i in a for j in a for k in a] vel = [vortex_3_0_v(v1, v2, i) for i in b] writer = VtkWriter() with open(check_path("results/vortex_field.vtk"), "w") as _file: writer.structed_grid(_file, "vortex", [n, n, n]) writer.points(_file, b) writer.data(_file, vel, name="velocity", _type="VECTORS", data_type="POINT_DATA")
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)) pot = list(map(case.off_body_potential, grid)) with open(check_path("results/airfoil_2d_linear/field.vtk"), "w") as _file: writer = VtkWriter() writer.structed_grid(_file, "airfoil", [nx, ny, 1]) writer.points(_file, grid) writer.data(_file, velocity, name="velocity", _type="VECTORS", data_type="POINT_DATA") writer.data(_file, pot, name="pot", _type="SCALARS", data_type="POINT_DATA") with open(check_path("results/airfoil_2d_linear/shape.vtk"), "w") as _file: writer = VtkWriter() writer.unstructed_grid(_file, "airfoil") writer.points(_file, [[i[0], i[1], 0]for i in airfoil.coordinates]) writer.lines(_file, [range(len(airfoil.coordinates))])
import paraBEM from paraBEM.pan3d import doublet_src_3_0_vsaero, src_3_0_vsaero_v from paraBEM.vtk_export import VtkWriter import numpy from paraBEM.utils import check_path v1 = paraBEM.PanelVector3(-0.5, -0.5, 0) v2 = paraBEM.PanelVector3(0.5, -0.5, 0) v3 = paraBEM.PanelVector3(0.5, 0.5, 0) v4 = paraBEM.PanelVector3(-0.5, 0.5, 0) p = paraBEM.Panel3([v1, v2, v3, v4]) p.potential = 1.0 n = 50 a = numpy.linspace(-1, 1, n).tolist() b = [paraBEM.PanelVector3(i, j, k) for i in a for j in a for k in a] pot = [doublet_src_3_0_vsaero(i, p)[1] for i in b] vel = [src_3_0_vsaero_v(i, p) for i in b] writer = VtkWriter() with open(check_path("results/src_panel.vtk"), "w") as _file: writer.structed_grid(_file, "duplet", [n, n, n]) writer.points(_file, b) writer.data(_file, pot, name="potential", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, vel, name="velocity", _type="VECTORS", data_type="POINT_DATA")
v2 = paraBEM.PanelVector3(0.5, -0.5, 0) v3 = paraBEM.PanelVector3(0.5, 0.5, 0) v4 = paraBEM.PanelVector3(-0.5, 0.5, 0) p = paraBEM.Panel3([v1, v2, v3, v4]) # p = paraBEM.Panel3([v1, v2, v3]) # triangle p.potential = 1. n = 50 a = numpy.linspace(-1, 1, n).tolist() b = [paraBEM.PanelVector3(i, j, k) for i in a for j in a for k in a] pot = [doublet_3_0_sphere(i, p) for i in b] vel = [doublet_3_0_vsaero_v(i, p) for i in b] writer = VtkWriter() with open(check_path("results/panel_influence.vtk"), "w") as _file: writer.structed_grid(_file, "duplet", [n, n, n]) writer.points(_file, b) writer.data(_file, pot, name="potential", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, vel, name="velocity", _type="VECTORS", data_type="POINT_DATA")
import numpy as np import paraBEM from paraBEM.pan2d import vortex_2, vortex_2_v from paraBEM.vtk_export import VtkWriter from paraBEM.utils import check_path source = paraBEM.Vector2(0, 0) direction = paraBEM.Vector2(1, 0) n = 20 a = np.linspace(-10, 10, n).tolist() b = [paraBEM.Vector2(i, j) for i in a for j in a] vel = [vortex_2_v(target, source) for target in b] pot = [vortex_2(target, source, direction) for target in b] writer = VtkWriter() with open(check_path("results/vortex_2_field.vtk"), "w") as _file: writer.structed_grid(_file, "vortex", [n, n, 1]) writer.points(_file, b) writer.data(_file, vel, name="velocity", _type="VECTORS", data_type="POINT_DATA") writer.data(_file, pot, name="potential", _type="SCALARS", data_type="POINT_DATA")
v1 = paraBEM.PanelVector2(-2, 0) v2 = paraBEM.PanelVector2(2, 0) panel = paraBEM.Panel2([v1, v2]) n = 500 space = np.linspace(-5, 5, n) grid = [paraBEM.Vector2([x, y]) for y in space for x in space] dub_vals = [doublet_2_0(target, panel) for target in grid] dub_vals_lin_1 = [doublet_2_1(target, panel, True) for target in grid] dub_vals_lin_2 = [doublet_2_1(target, panel, False) for target in grid] src_vals = [source_2_0(target, panel) for target in grid] dublinv1_vals = [doublet_2_1_v(target, panel, True) for target in grid] dublinv2_vals = [doublet_2_1_v(target, panel, False) for target in grid] dubv_vals = [doublet_2_0_v(target, panel) for target in grid] srcv_vals = [source_2_0_v(target, panel) for target in grid] writer = VtkWriter() with open(check_path("results/element_2.vtk"), "w") as _file: writer.structed_grid(_file, "element_2", [n, n, 1]) writer.points(_file, grid) writer.data(_file, dub_vals, name="doublet", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, dub_vals_lin_1, name="doublet_lin_1", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, dub_vals_lin_2, name="doublet_lin_2", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, src_vals, name="source", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, dublinv1_vals, name="doublet_lin_1_v", _type="VECTORS", data_type="POINT_DATA") writer.data(_file, dublinv2_vals, name="doublet_lin_2_v", _type="VECTORS", data_type="POINT_DATA") writer.data(_file, dubv_vals, name="doublet_v", _type="VECTORS", data_type="POINT_DATA") writer.data(_file, srcv_vals, name="source_v", _type="VECTORS", data_type="POINT_DATA")
from paraBEM.pan2d import doublet_2_0, source_2_0, source_2_0_v from paraBEM.vtk_export import VtkWriter from paraBEM.utils import check_path a = list(map(paraBEM.PanelVector2, [[-1, -1], [-1, 1]])) b = list(map(paraBEM.PanelVector2, [[1, -1], [1, 1]])) pan_a = paraBEM.Panel2(a) pan_b = paraBEM.Panel2(b) n = 100 space = numpy.linspace(-2, 2, n) grid = [paraBEM.Vector2(x, y) for y in space for x in space] pot = [source_2_0(v, pan_a) - source_2_0(v, pan_b) for v in grid] vel = [source_2_0_v(v, pan_a) - source_2_0_v(v, pan_b) for v in grid] writer = VtkWriter() with open(check_path("results/parallel_flow.vtk"), "w") as _file: writer.structed_grid(_file, "doublet_2", [n, n, 1]) writer.points(_file, grid) writer.data(_file, pot, name="potential", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, vel, name="velocity", _type="VECTORS", data_type="POINT_DATA")
# ---------------------------------------------------------- zeta_range_x = np.linspace(-3, 3, num_x) zeta_range_y = np.linspace(-3, 3, num_y) zeta_grid = [x + 1j * y for y in zeta_range_y for x in zeta_range_x] zeta_to_z = list(map(airfoil.z, zeta_grid)) zeta_vel = list(map(zeta_velocity, zeta_to_z)) zeta_pot = list(map(potential, zeta_to_z)) zeta_stream = list(map(stream, zeta_to_z)) airfoil = list(map(complex_to_3vec, airfoil.coordinates())) # ---------------------------------------------------------- with open(check_path("results/conformal_mapping/joukowsky_z.vtk"), "w") as _file: writer = VtkWriter() writer.structed_grid(_file, "z_plane", [num_x, num_y, 1]) writer.points(_file, list(map(complex_to_3vec, z_grid))) writer.data(_file, z_stream, name="stream", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, z_pot, name="pot", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, z_vel, name="velocity", _type="VECTORS", data_type="POINT_DATA") with open(check_path("results/conformal_mapping/joukowsky_zeta.vtk"), "w") as _file: writer = VtkWriter() writer.structed_grid(_file, "zeta_plane", [num_x, num_y, 1]) writer.points(_file, list(map(complex_to_3vec, zeta_grid))) writer.data(_file, zeta_stream, name="stream", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, zeta_pot, name="pot", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, zeta_vel, name="velocity", _type="VECTORS", data_type="POINT_DATA") with open(check_path("results/conformal_mapping/joukowsky_circle.vtk"), "w") as _file: writer = VtkWriter()
# ---------------------------------------------------------- # complex zeta-plane with mapped circle (=joukowsky airfoil) # ---------------------------------------------------------- z_to_zeta = list(map(airfoil.zeta, z_grid)) zeta_vel = list(map(zeta_velocity, z_grid)) zeta_pot = list(map(potential, z_grid)) zeta_stream = list(map(stream, z_grid)) airfoil = list(map(complex_to_3vec, airfoil.coordinates())) # ---------------------------------------------------------- with open(check_path("results/conformal_mapping/vandevooren_zeta.vtk"), "w") as _file: writer = VtkWriter() writer.structed_grid(_file, "zeta_plane", [num_x, num_y, 1]) writer.points(_file, list(map(complex_to_3vec, z_to_zeta))) writer.data(_file, zeta_stream, name="stream", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, zeta_pot, name="pot", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, zeta_vel, name="velocity", _type="VECTORS",
import paraBEM from paraBEM.pan2d import doublet_2_0, source_2_0, source_2_0_v from paraBEM.vtk_export import VtkWriter from paraBEM.utils import check_path a = list(map(paraBEM.PanelVector2, [[-1, -1], [-1, 1]])) b = list(map(paraBEM.PanelVector2, [[1, -1], [1, 1]])) pan_a = paraBEM.Panel2(a) pan_b = paraBEM.Panel2(b) n = 100 space = numpy.linspace(-2, 2, n) grid = [paraBEM.Vector2(x, y) for y in space for x in space] pot = [ source_2_0(v, pan_a) - source_2_0(v, pan_b) for v in grid] vel = [ source_2_0_v(v, pan_a) - source_2_0_v(v, pan_b) for v in grid] writer = VtkWriter() with open(check_path("results/parallel_flow.vtk"), "w") as _file: writer.structed_grid(_file, "doublet_2", [n, n, 1]) writer.points(_file, grid) writer.data(_file, pot, name="potential", _type="SCALARS", data_type="POINT_DATA") writer.data(_file, vel, name="velocity", _type="VECTORS", data_type="POINT_DATA")