Paraview"数据化可能与声明不匹配"错误

时间:2014-05-22 18:27:35

标签: vtk paraview

Paraview(v4.1.0 64位,OSX 10.9.2)给出了以下错误:

  

通用警告:在/Users/kitware/Dashboards/MyTests/NightlyMaster/ParaViewSuperbuild-Release/paraview/src/paraview/VTK/IO/Legacy/vtkDataReader.cxx,第1388行   读取ascii数据时出错。数据大小可能与声明不匹配。

我不确定为什么。我已经仔细检查了那些字段是否都是预期的长度,并且没有值是NaN,inf或其他非常大的值。问题始于时间步长16的输出(0-15不产生错误)。从图形上看,步骤0-15按预期生成我的数据图;步骤16显示“Y / Yc”系列具有意外的大点(0.5625,2.86616e + 36)。

很好: http://www.filedropper.com/ring0000015

产生错误: http://www.filedropper.com/ring0000016

3 个答案:

答案 0 :(得分:4)

过去6个月我一直面临同样的问题,一直在努力寻找解决方案。我有以下理由解释错误(http://www.cfd-online.com/Forums/paraview/139451-error-while-reading-vtk-files-paraview.html#post503315):

  1. 由于用于行结尾的字符(http://en.wikipedia.org/wiki/Newline),这可能是个问题 简而言之: a)在Windows上,行转换使用CR + LF。 b)在Linux上,行转换仅使用LF。 c)在Mac上,某些旧版本仅使用CR。现在我猜它也应该使用LF。 CR ="回车"字节 LF ="换行"字节
  2. 对于非实数,可能存在一个或多个NaN或Inf类型的值或一些其他特殊计算数字定义。它们可能在Linux上可读,但在Mac上不可读,也许是下一种可能性。如果是这种情况,
  3. 基于位置的数字定义(也称为Locale)可能会触发以逗号或奇怪的科学记数法存储值的情况。例如,如果值为" 1.0002"存储为" 1,0002"甚至可能" 1.0002ES + 000"
  4. 我查看了其他论坛,他们一般都说过#2和#3以及可能的解决方案 - 它一般都有效。但是,以上都没有解决我的问题。

    我注意到ASCII文件中存储的一些解决方案值小到10.e-34。我有一种感觉,下溢情况可能会引发问题。我检查了我的代码中的下溢情况并将它们四舍五入为0.这解决了问题,解决方案始终显示而没有错误消息。

    我希望这也能解决你的问题。

答案 1 :(得分:0)

这可能无法解决Inf / NaN问题,但如果vtk文件中的数字太大或太小(即1e-50,1e45),则可能会导致相同的错误。

在这种情况下,一种解决方案是更改数据类型规范。当我遇到这个问题时,我将数据类型指定为" float",它使用32位浮点表示(与" float32"相同)。将其更改为" float64"使用64位双精度表示,这与我生成使用双精度的vtk文件的C ++代码一致。这可以消除这个问题。

答案 2 :(得分:0)

如果您使用的是Fortran,当您写入文件但未在代码中将其关闭时,也会出现此问题。

例如:

do i=1,10
write(numb,'(i3)')i
open(unit=1, file='test'//numb//'.vtk')
write(1,*).......
enddo