我试图用Python解决一个有限元问题,但我被困在网格生成阶段。我已经使用pip安装了MeshPy v2014.1 (所以所有依赖项都应该整理好了),但是在the MeshPy website上给出的以下示例似乎不起作用。
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)
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")
我已经准确地复制/粘贴了代码。该示例运行,但不会生成站点上列出的结果。相反,我得到了
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 [2.0, 2.0, 6.0]
9 [0.0, 0.0, 6.0]
10 [0.0, 2.0, 6.0]
11 [2.0, 0.0, 6.0]
Point numbers in tetrahedra:
0 [2, 10, 0, 8]
1 [2, 0, 1, 8]
2 [4, 11, 9, 8]
3 [0, 10, 9, 8]
4 [6, 10, 4, 7]
5 [4, 11, 8, 5]
6 [0, 11, 1, 8]
7 [2, 10, 3, 0]
8 [6, 10, 8, 4]
9 [5, 4, 6, 8]
10 [0, 11, 8, 9]
11 [4, 10, 8, 9]
VtkData.__init__.warning:
No data defined
输出文件已写入(test.vtk),但仅包含点(无网格)。我假设built(mesh_info)
命令不起作用,但是我找不到一种方法来跟踪这个问题。MeshPy文档列出了几个可以传递给build()
的标志,但没有提到它们的作用。我尝试了build(mesh_info,verbose=True)
,但没有得到额外的输出。然后我尝试了build(mesh_info,diagnose=True)
,它停止了,出现以下错误:
ValueError: Cell 'tetra' requires exactly 4 points but got 0: <meshpy._tetgen.IntArray object at 0x7f288bba54b0>
我似乎找不到同样问题的任何其他例子。如有任何帮助,我们将不胜感激!
发布于 2015-03-13 01:22:40
您需要使用名为Paraview的程序来可视化输出文件。我昨天测试了一下meshpy,它运行正常。
发布于 2017-09-23 21:06:15
要生成vtk输出,代码"meshpy“需要在系统上安装pyvtk。您可以使用pip和meshpy轻松安装它
https://stackoverflow.com/questions/27474277
复制相似问题