3

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

4

3 回答 3

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. 基于位置的数字定义(也称为区域设置)可能会触发以逗号或奇怪的科学记数法存储值的情况。例如,如果值“1.0002”存储为“1,0002”,甚至可能存储为“1.0002ES+000”

我查看了其他论坛,他们一般都说明了#2 和#3 以及可能的解决方案——它通常是有效的。但是,以上似乎都没有解决我的问题。

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

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

于 2014-07-30T13:14:30.723 回答
0

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

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

于 2015-12-21T20:30:50.180 回答
0

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

例如:

do i=1,10
write(numb,'(i3)')i
open(unit=1, file='test'//numb//'.vtk')
write(1,*).......
enddo
于 2016-05-12T01:56:02.623 回答