跳转至

PyGmsh学习笔记

约 56 个字 76 行代码 2 张图片 预计阅读时间 1 分钟

绘制高阶单元

三角形高阶单元

import pygmsh
import pyvista as pv
import meshio

def meshGenerator():
    with pygmsh.geo.Geometry() as geom:
        geom.add_circle(
            [0.0, 0.0, 0.0],
            1.0,
            mesh_size=0.3,
        )
        mesh = geom.generate_mesh(order=2)

    return mesh

mesh = meshGenerator()

meshio_mesh = meshio.Mesh(points=mesh.points, cells=[("triangle6", mesh.cells_dict['triangle6'])])

plotter = pv.Plotter()

darg = dict(
    show_edges=False,
)

plotter.add_mesh(meshio_mesh, **darg)
plotter.add_points(meshio_mesh.points, color='red', point_size=15, render_points_as_spheres=True)

for cell in meshio_mesh.cells_dict['triangle6']:
    # 每个单元数组包含形成三角形的点索引
    # 高阶三角形单元顺序:0-3-1-4-2-5-0(连接三角形的角点和边中点)
    triangle_points = meshio_mesh.points[cell]
    boundary_order = [0, 3, 1, 4, 2, 5, 0]
    points_for_lines = triangle_points[boundary_order]

    # 绘制边界线
    plotter.add_lines(points_for_lines, color='blue', width=3, connected=True)

plotter.show()

四边形高阶单元(Q9)

import pygmsh
import pyvista as pv
import meshio

def meshGenerator():
    with pygmsh.geo.Geometry() as geom:
        rectangle = geom.add_rectangle(0, 5, 0, 5, 0.0, 0.8)
        geom.set_recombined_surfaces([rectangle.surface])
        mesh = geom.generate_mesh(order=2)

    return mesh

mesh = meshGenerator()

meshio_mesh = meshio.Mesh(points=mesh.points, cells=[("quad9", mesh.cells_dict['quad9'])])

plotter = pv.Plotter()

darg = dict(
    show_edges=False,
)

plotter.add_mesh(meshio_mesh, **darg)
plotter.add_points(meshio_mesh.points, color='red', point_size=15, render_points_as_spheres=True)

for cell in meshio_mesh.cells_dict['quad9']:
    # 每个单元数组包含形成三角形的点索引
    # 高阶四边形单元顺序 0-4-1-5-2-6-3-7-0
    triangle_points = meshio_mesh.points[cell]
    boundary_order = [0, 4, 1, 5, 2, 6, 3, 7, 0]
    points_for_lines = triangle_points[boundary_order]

    # 绘制边界线
    plotter.add_lines(points_for_lines, color='blue', width=3, connected=True)

plotter.view_xy()
plotter.show()

四边形高阶单元(Q8)

四面体高阶单元

六面体高阶单元