首页 > 解决方案 > VTK - 非结构化网格:更改点/标记点的顺序

问题描述

我有问题将现有网格从 vtk 旧格式转换。

VTK-非结构化网格具有以下结构:

DATASET UNSTRUCTURED_ GRID 
POINTS n dataType 
p0x p0y p0z 
p1x p1y p1z 

... 
p (n-1) x p (n-1) y p (n-1) z 

CELLS n size 
numPoints0 ,i, j, k, l,... 
numPoints1 ,i, j, k, l,... 
numPoints2 ,i, j, k, l,... 
... 
numPointsn-1 ,i, j, k, l,... 
Simple Legacy Formats 5 

CELL_ TYPES n 
...

单元由它们的连接点 ID 及其类型指定。似乎点 ID 总是与之前块中指定的点的顺序相对应。

有没有办法以任意顺序标记点?例如,点块中的第一个条目应该对应于索引 3 而不是索引 0。

我将衷心感谢您的帮助!TIA。

标签: gridmeshvtk

解决方案


传统的 VTK 格式不支持。您将必须编写一个脚本,以便相应地重新排列您在该POINTS部分中的点。

此外,即使在更灵活的基于 XML 的 VTU 格式中,我也看不到这种能力。所以,我建议:

  1. 编写一个脚本,对 [0, N-1] 中的点进行重新排序,以便在本CELLS节中引用它们以进行连接。
  2. 反之亦然,编写一个脚本,将相应地重新编号该CELLS部分中的连接信息。
  3. 可选)考虑切换到基于 XML 的格式,因为它们更灵活,具有更好的 IO 支持库 (IMHO),并允许适当的并行 IO、随机访问和可移植数据压缩。

推荐阅读