Vtk Paraview“;数据大小可能与声明不匹配;错误
Paraview(v4.1.0 64位,OSX 10.9.2)给了我以下错误: 一般警告:在/Users/kitware/Dashboards/MyTests/NightlyMaster/paraviewsuperbuildrelease/paraview/src/paraview/VTK/IO/Legacy/vtkDataReader.cxx中,第1388行 读取ascii数据时出错。数据大小可能与声明不匹配 我不知道为什么。我仔细检查了字段是否都是预期的长度,并且没有一个值是NaN、inf或其他非常大的值。问题从timestep 16的输出开始(0-15不产生错误)。从图形上看,步骤0-15按预期生成我的数据图;步骤16显示了“Y/Yc”系列具有意外大的点(0.5625,2.86616e+36) 很好: 产生错误:Vtk Paraview“;数据大小可能与声明不匹配;错误,vtk,paraview,Vtk,Paraview,Paraview(v4.1.0 64位,OSX 10.9.2)给了我以下错误: 一般警告:在/Users/kitware/Dashboards/MyTests/NightlyMaster/paraviewsuperbuildrelease/paraview/src/paraview/VTK/IO/Legacy/vtkDataReader.cxx中,第1388行 读取ascii数据时出错。数据大小可能与声明不匹配 我不知道为什么。我仔细检查了字段是否都是预期的长度,并且没有一个值是NaN、inf或
过去6个月来,我一直面临着同样的问题,一直在努力寻找解决方案。我得到了以下解释错误的理由()
我希望这也能解决您的问题。这可能无法解决Inf/NaN问题,但如果vtk文件中的数字太大或太小(即1e-50、1e45),则可能会导致相同的错误
这种情况下的一个解决方案是更改数据类型规范。当我遇到这个问题时,我将数据类型指定为“float”,它使用32位浮点表示(与“float32”相同)。将它改为“FLUAT64”,使用64位双精度表示,这与生成使用双倍的VTK文件的C++代码一致。这可能会消除问题。如果您使用Fortran,则在写入文件但未在代码中关闭文件时也会发生此问题 例如:
do i=1,10
write(numb,'(i3)')i
open(unit=1, file='test'//numb//'.vtk')
write(1,*).......
enddo
我发现,一般来说,当数字太小而不是太大时,这种情况就会发生——我想你会说“下溢”。我添加了一个方法,用于检查写入vtk文件的每个值,如果该值低于1e-15左右,则称为0。这似乎已经足够好了。我遇到了第三个问题:十进制逗号的使用。所讨论的VTK文件是在Ubuntu14.04机器上使用VTK5.10.0库编写的,该机器的LC_NUMERIC=nl_nl.UTF-8。此荷兰设置似乎会导致VTK写入十进制逗号。在同一台计算机上尝试使用ParaView(或使用vtk Python-5.10.1版)读取失败。因此,关于十进制分隔符,vtk的行为令人费解。