博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
paraview加载<cell>错误: the “offsets/types“ array is not long enough
阅读量:2123 次
发布时间:2019-04-30

本文共 3669 字,大约阅读时间需要 12 分钟。

目录

         


错误说明

报错原因:<cell>元素填写不对

offsets array is not long enough 

ERROR: In C:\glr\builds\paraview\paraview-ci\build\superbuild\paraview\src\VTK\IO\XML\vtkXMLUnstructuredDataReader.cxx, line 647

vtkXMLUnstructuredGridReader (000001FAC8C7BA40): Cannot read cell offsets from Cells in piece 0 because the "offsets" array is not long enough.

报错代码位于: int vtkXMLUnstructuredDataReader::ReadCellArray(vtkIdType numberOfCells,

  vtkIdType vtkNotUsed(totalNumberOfCells), vtkXMLDataElement* eCells, vtkCellArray* outCells)中:

int vtkXMLUnstructuredDataReader::ReadCellArray(vtkIdType numberOfCells,  vtkIdType vtkNotUsed(totalNumberOfCells), vtkXMLDataElement* eCells, vtkCellArray* outCells)

types array is not long enough

ERROR: In D:\pv\ParaView\VTK\IO\XML\vtkXMLUnstructuredGridReader.cxx, line 293

vtkXMLUnstructuredGridReader (000001EBA1A74270): Cannot read cell types from Cells in piece 0 because the "types" array is not long enough.

 

一个例子说明UnstructuredData的<cell>元素填充规则

《》中对cell元素的说明如下:

文档中并没有说明<cell>中三个<DataArray>如何填充,尤其是offsets如何填充。

但是我们在发现paraview包含功能,可以把现有的vtk文件保存为vtu文件,从而得到规则。

vtk文件根据《》中的例子三,自己设计。

vtk文件

下面以一个demo尝试去理解paraview中<CELL>三个<DataArray>填充规则:

test.vtk文件如下:

# vtk DataFile Version 2.0Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 12 float0 0 0  1 0 0  0 1 0  1 1 0  0 0 1  1 0 10 1 1  1 1 1  2 0 0  2 1 0  2 0 1  2 1 1 CELLS 2 188 0 1 2 3 4 5 6 78 1 8 3 9 5 10 7 11 CELL_TYPES 21111 POINT_DATA 12SCALARS scalars float 1LOOKUP_TABLE default0.0 1.0 2.0 3.0 4.0 5.06.0 7.0 8.0 9.0 10.0 11.0

paraview中显示test.vtk:

保存vtk为vtu文件

paraview 保存test.vtk为test.vtu文件:

 【file】--》【save data]--》修改file of types为vtu,并且输入文件名称--》点击【ok】按钮后弹出,configure writer对话框,修改【Data Mode】为Ascii:

得到的test.vtu文件如下:

0 1 2 3 4 5 6 7 8 9 10 11
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1
0
2.4494897428
0
2.4494897428
0 1 2 3 4 5 6 7 1 8 3 9 5 10 7 11
8 16
11 11

 paraview打开test.vtu文件,显示效果跟test.vtk完全一样。

简化vtu文件

删除《》没有介绍的一些字段和属性。

下面做一些实验:

删掉其中的<InformationKey>元素和删除<DataArray>中的RangeMin和RangeMax属性。得到1.vtu文件如下:

0 1 2 3 4 5 6 7 8 9 10 11
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1
0 1 2 3 4 5 6 7 1 8 3 9 5 10 7 11
8 16
11 11

paraview显示效果同test.vtu和test.vtk.

下面再看看报错的vtk文件:

0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1
0 1 2 3 4 5 6 7
0 0
11
1 8 3 9 5 10 7 11
0 0
11

理解正确的vtu文件就可以了,不要被误导

转载地址:http://lzcrf.baihongyu.com/

你可能感兴趣的文章
Joda Time API -2
查看>>
Spring使用Cache、整合Ehcache
查看>>
Chrome调试工具奇淫技
查看>>
30分钟快速掌握Bootstrap
查看>>
如何针对业务做DB优化
查看>>
程序猿都该知道的MySQL秘籍
查看>>
Eclipse全面提速小技巧
查看>>
前端程序员必知的30个Chrome扩展
查看>>
memcached分布式实现原理
查看>>
怎么成为架构师
查看>>
40个重要的HTML 5面试问题及答案
查看>>
在Java中如何高效判断数组中是否包含某个元素
查看>>
设计模式总结
查看>>
什么时候可以使用Ehcache缓存
查看>>
Java核心知识点-JVM结构和工作方式
查看>>
Java编程中“为了性能”一些尽量做到的地方
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>