我正在尝试用分析字段填充结构化网格,但是尽管阅读了 vtk 文档,我还没有找到如何在网格点实际设置标量值或设置网格的间距/原点信息。从下面的代码开始,我该如何
- 将空间信息与网格相关联(即单元格 0,0,0 位于坐标 0,0,0,每个方向的间距为 dx)
- 将标量值与每个网格点相关联。一开始,我只需要一个,但最终我想在每个点存储 3 条数据(不是向量,而是 3 个不同的标量)。
grid = vtk.vtkStructuredGrid()
numPoints = int((maxGrid - minGrid)/dx)
grid.SetDimensions(numPoints, numPoints, numPoints)
在VTK中有3种类型的“结构化”网格,vtkImageData(vtkUniformGrid由此派生)、vtkRectilinearGrid和vtkStructuredGrid。它们都是在拓扑已设置的意义上结构化的。 vtkImageData 在点之间具有恒定的间距并且是轴对齐的,vtkRecti LinearGrid 是轴对齐的但可以改变每个轴方向上的间距,并且 vtkStructuredGrid 具有任意定位的点(尽管单元格可能无效)。
对于你想做的事情,你应该这样做:
from vtk import *
dx = 2.0
grid = vtkImageData()
grid.SetOrigin(0, 0, 0) # default values
grid.SetSpacing(dx, dx, dx)
grid.SetDimensions(5, 8, 10) # number of points in each direction
# print grid.GetNumberOfPoints()
# print grid.GetNumberOfCells()
array = vtkDoubleArray()
array.SetNumberOfComponents(1) # this is 3 for a vector
array.SetNumberOfTuples(grid.GetNumberOfPoints())
for i in range(grid.GetNumberOfPoints()):
array.SetValue(i, 1)
grid.GetPointData().AddArray(array)
# print grid.GetPointData().GetNumberOfArrays()
array.SetName("unit array")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)