如何在 VTK 中通过坐标查找元素?

How do I find the element by coordinate in VTK?

我有一个由 Gmsh(*.vtu) 生成的网格文件,网格是一个立方体区域,由四面体组成。然后我在立方体中有一个点(由坐标给出),我想找到哪个四面体包含这个点,我是怎么做到的?

with pygmsh.occ.Geometry() as geom:
    geom.add_box([0, 0, 0],
                 [1, 1, 1], mesh_size=0.1)
    mesh = geom.generate_mesh()
mesh.write('original_gmsh.vtu')

uGridReader = vtkXMLUnstructuredGridReader()
uGridReader.SetFileName('original_gmsh.vtu')
uGridReader.Update()
uGrid: vtkUnstructuredGrid = uGridReader.GetOutput()

givenPoint = [0.5, 0.5, 0.5]

您应该能够使用 vtkUnstructuredGrid 从 vtkDataSet 继承的 FindAndGetCell() 方法。 python 文档可以在你的 python shell 中使用 help(vtkUnstructuredGrid.FindAndGetCell) 找到(假设你已经导入了 vtkUnstructuredGrid,如果没有像往常一样添加 vtk.

作为建议,考虑查看 PyVista 包,根据我的经验,它更容易使用,并且也使用 VTK 作为其后端。