如何存储适合paraview的结构化方格数据?

How to store structured square grid data suitable for paraview?

我有这样的数据

i  j  Rho  ux   vy
1  1  1.0  0    1.5
2  1  1.0  0.1  1
...

这些数字是单元格中心坐标(i 和 j)和该单元格的其他 属性 值。 所有单元格的大小都相同并且是正方形的。 我怎样才能保存我的数据以便 Paraview 可以读取它? 感谢您的关注。

我认为您可以开发一个 ParaView 编写器,将您的数据转换为 VTK 兼容格式。关于您拥有的单元格类型,我建议使用专门用于 vtkImageData.vti 格式。

第一步是将单元格中心坐标转换为点坐标。假设 s 是单元格的大小,(i,j) 是其中心的坐标:

// using d for visiblity
d = s/2

// the embedding is in the plane, the value of z is arbitrary
z = 0

// list of points for one cell
p0 = (i-d, j-d, z)
p1 = (i-d, j+d, z)
p2 = (i+d, j-d, z)
p3 = (i+d, j+d, z)

我使用了伪代码,因为您没有特别指定语言。通过这种转换,请记住您应该避免重复点,因为连接的单元格共享公共点。

然后第二步是添加 属性 值作为标量或矢量场(参见 vtkDataArray) associated on the cells (see vtkCellData)。

解决方案如下

  • 将您的数据集读取为 table 假设它是一个 csv 文件。
  • 添加 TableToPoints 过滤器并正确设置 I 和 J。
  • 添加 ResampleWithImageData 过滤器以生成点周围的单元格。