コード例 #1
0
ファイル: vtk_parallel_flow.py プロジェクト: luzpaz/paraBEM
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")
コード例 #2
0
ファイル: vtk_element2.py プロジェクト: luzpaz/paraBEM
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")
コード例 #3
0
ファイル: heat_simple.py プロジェクト: booya-at/paraBEM
ny = 300
x_grid = np.linspace(-3, 3, nx)
y_grid = np.linspace(-3, 3, ny)


grid = [paraBEM.Vector2(x, y) for y in y_grid for x in x_grid]
temp_list = []
for point in grid:
    t = 0
    t -= doublet_2_0(point, pan1) * sol[0] * R1 * l
    t -= doublet_2_0(point, pan2) * sol[1] * R2 * l
    t += source_2_0(point, pan1) * sol[0]
    t += source_2_0(point, pan2) * sol[1]
    temp_list.append(t)

q_list = []
for point in grid:
    q = paraBEM.Vector2(0, 0)
    q -= doublet_2_0_v(point, pan1) * sol[0] * R1 * l
    q -= doublet_2_0_v(point, pan2) * sol[1] * R2 * l
    q += source_2_0_v(point, pan1) * sol[0]
    q += source_2_0_v(point, pan2) * sol[1]
    q_list.append(q)

writer = VtkWriter()
with open(check_path("results/heat_test.vtk"), "w") as _file:
    writer.structed_grid(_file, "element_2", [nx, ny, 1])
    writer.points(_file, grid)
    writer.data(_file, temp_list, name="temperature", _type="SCALARS", data_type="POINT_DATA")
    writer.data(_file, q_list, name="q", _type="VECTORS", data_type="POINT_DATA")
コード例 #4
0
ファイル: heat_ring.py プロジェクト: booya-at/paraBEM

nx = 300
ny = 300
x_grid = np.linspace(-3, 3, nx)
y_grid = np.linspace(-3, 3, ny)
grid = [paraBEM.Vector2(x, y) for y in y_grid for x in x_grid]
t_list = []
for point in grid:
    t = 0
    for i, panel_i in enumerate(panels):
        t -= source_2_0(point, panel_i) * sol[i]
        t += doublet_2_0(point, panel_i) * sol[i] * R
    t_list.append(t)

q_list = []
for point in grid:
    q = paraBEM.Vector2(0, 0)
    for i, panel_i in enumerate(panels):
        q -= source_2_0_v(point, panel_i) * sol[i]
        q += doublet_2_0_v(point, panel_i) * sol[i] * R
    q_list.append(q)


writer = VtkWriter()
with open(check_path("results/heat_test.vtk"), "w") as _file:
    writer.structed_grid(_file, "element_2", [nx, ny, 1])
    writer.points(_file, grid)
    writer.data(_file, t_list, name="temperature", _type="SCALARS", data_type="POINT_DATA")
    writer.data(_file, q_list, name="q", _type="VECTORS", data_type="POINT_DATA")
コード例 #5
0
x_grid = np.linspace(-3, 3, nx)
y_grid = np.linspace(-3, 3, ny)
grid = [paraBEM.Vector2(x, y) for y in y_grid for x in x_grid]
t_list = []
for point in grid:
    t = 0
    for i, panel_i in enumerate(panels):
        t -= source_2_0(point, panel_i) * sol[i]
        t += doublet_2_0(point, panel_i) * sol[i] * R
    t_list.append(t)

q_list = []
for point in grid:
    q = paraBEM.Vector2(0, 0)
    for i, panel_i in enumerate(panels):
        q -= source_2_0_v(point, panel_i) * sol[i]
        q += doublet_2_0_v(point, panel_i) * sol[i] * R
    q_list.append(q)

writer = VtkWriter()
with open(check_path("results/heat_test.vtk"), "w") as _file:
    writer.structed_grid(_file, "element_2", [nx, ny, 1])
    writer.points(_file, grid)
    writer.data(_file,
                t_list,
                name="temperature",
                _type="SCALARS",
                data_type="POINT_DATA")
    writer.data(_file,
                q_list,
                name="q",
コード例 #6
0
ファイル: vtk_parallel_flow.py プロジェクト: booya-at/paraBEM
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")
コード例 #7
0
ファイル: vtk_heat_test.py プロジェクト: booya-at/paraBEM
# T  0   ?   1
# l    1   2
#   panel1: temp-formulation
T1 = -10
T2 = 10
l1 = 1
l2 = 2
mat[0, 0] = source_2_0(panels[0].center, panels[0])
mat[0, 1] = source_2_0(panels[0].center, panels[1]) * (1 - l2 / l1)
mat[0, 2] = source_2_0(panels[0].center, panels[2])
rhs[0] += doublet_2_0(panels[0].center, panels[0]) * T1
rhs[0] += doublet_2_0(panels[0].center, panels[2]) * T2
rhs[0] += T1

#   panel2: velocity formulation
mat[1, 0] = source_2_0_v(panels[1].center, panels[0]).dot(panels[1].n)
mat[1, 1] = source_2_0_v(panels[1].center, panels[1]).dot(panels[1].n) * (1 - l2 / l1) - 1
mat[1, 2] = source_2_0_v(panels[1].center, panels[2]).dot(panels[1].n)
rhs[1] += doublet_2_0_v(panels[1].center, panels[0]).dot(panels[1].n) * T1
rhs[1] += doublet_2_0_v(panels[1].center, panels[2]).dot(panels[1].n) * T2

#   panel3: temp-formulation
mat[2, 0] = source_2_0(panels[2].center, panels[0])
mat[2, 1] = source_2_0(panels[2].center, panels[1]) * (1 - l2 / l1)
mat[2, 2] = source_2_0(panels[2].center, panels[2])
rhs[2] += doublet_2_0(panels[2].center, panels[0]) * T1
rhs[2] += doublet_2_0(panels[2].center, panels[2]) * T2
rhs[2] += T2

sol = np.linalg.solve(mat, rhs)
print(mat)