Welcome to MeshPy’s documentation!¶
MeshPy offers quality triangular and tetrahedral mesh generation for Python. Meshes of this type are chiefly used in finite-element simulation codes, but also have many other applications ranging from computer graphics to robotics.
In order to generate these 2D and 3D meshes, MeshPy provides Python interfaces to a few well-regarded mesh generators:
Triangle and TetGen are included in the package in slightly modified versions. An interface for Gmsh was also part of MeshPy, but is now its own package gmsh_interop.
MeshPy has its own web page, where you can find updated software, news, a forum, and documentation.
Show me! I need examples!¶
This file is included in the meshpy
distribution as
examples/demo.py
.
from meshpy.tet import MeshInfo, build
mesh_info = MeshInfo()
mesh_info.set_points(
[
(0, 0, 0),
(2, 0, 0),
(2, 2, 0),
(0, 2, 0),
(0, 0, 12),
(2, 0, 12),
(2, 2, 12),
(0, 2, 12),
]
)
mesh_info.set_facets(
[
[0, 1, 2, 3],
[4, 5, 6, 7],
[0, 4, 5, 1],
[1, 5, 6, 2],
[2, 6, 7, 3],
[3, 7, 4, 0],
]
)
mesh = build(mesh_info, max_volume=0.5)
print("Mesh Points:")
for i, p in enumerate(mesh.points):
print(i, p)
print("Point numbers in tetrahedra:")
for i, t in enumerate(mesh.elements):
print(i, t)
mesh.write_vtk("test.vtk")
As a result of this, you will get:
Mesh Points:
0 [0.0, 0.0, 0.0]
1 [2.0, 0.0, 0.0]
2 [2.0, 2.0, 0.0]
3 [0.0, 2.0, 0.0]
4 [0.0, 0.0, 12.0]
5 [2.0, 0.0, 12.0]
6 [2.0, 2.0, 12.0]
7 [0.0, 2.0, 12.0]
8 [1.000116, 0.0, 0.0]
9 [0.0, 0.99960499999999997, 0.0]
10 [0.0, 0.99934199999999995, 12.0]
11 [1.0006170000000001, 0.0, 12.0]
...
Point numbers in tetrahedra:
0 [21, 39, 38, 52]
1 [9, 50, 2, 3]
2 [12, 45, 15, 54]
3 [39, 43, 20, 52]
4 [41, 45, 24, 54]
...
and a file test.vtk
that you can view with
Paraview or
Visit.