Paraview возможное несоответствие размера данных с ошибкой объявления

Paraview (64-разрядная версия 4.1.0, 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


person Stershic    schedule 22.05.2014    source источник


Ответы (3)


Я столкнулся с той же проблемой в течение последних 6 месяцев и изо всех сил пытался найти решение. Мне были даны следующие причины для объяснения ошибки(http://www.cfd-online.com/Forums/paraview/139451-error-while-reading-vtk-files-paraview.html#post503315):

  1. Это может быть проблемой из-за символа, используемого для окончания строки (http://en.wikipedia.org/wiki/Newline) В двух словах: а) В Windows переход строки выполняется с помощью CR+LF. б) В Linux переход строки осуществляется только с помощью LF. c) На Mac некоторые старые версии использовали только CR. В настоящее время я думаю, что он также должен использовать LF. CR= байт "возврат каретки" LF= байт "перевод строки"
  2. Может быть одно или несколько значений типа NaN или Inf или какое-либо другое специальное вычислительное числовое определение для недействительных чисел. Они могут быть читаемы в Linux, но не на Mac, возможно, в следующей возможности. Если это так,
  3. Числовые определения на основе местоположения, также известные как Locale, могут вызывать ситуации, когда значения хранятся с запятыми или со странной научной записью. Например, если значение «1,0002» хранится как «1,0002» или даже, возможно, «1,0002ES+000»,

Я просматривал другие форумы, и они обычно указывали № 2 и № 3 и возможные решения - в целом это сработало. Однако ни одно из вышеперечисленных не помогло решить мою проблему.

Я заметил, что некоторые из хранимых значений решений в файлах ASCII имеют размер всего 10.e-34. У меня было ощущение, что проблемы с недостаточным потоком могут быть вызваны. Я поставил проверку в своем коде на наличие условий потери значимости и округлил их до 0. Это устранило проблему, и решение всегда отображалось без сообщений об ошибках.

Надеюсь, это решит и вашу проблему.

person rayd    schedule 30.07.2014
comment
Я обнаружил, что обычно это происходило, когда числа были слишком малы, а не слишком велики — я полагаю, вы бы сказали, что недостаточное переполнение. Я добавил метод, который проверяет каждое значение, которое я записываю в файл vtk, и если оно ниже 1e-15 или около того, я называю его 0. Кажется, это работает достаточно хорошо. - person Stershic; 31.07.2014
comment
Я столкнулся с проблемой 3 использования десятичных запятых. Рассматриваемый файл VTK был написан с использованием библиотеки VTK 5.10.0 на компьютере с Ubuntu 14.04 с LC_NUMERIC=nl_NL.UTF-8. Эта голландская настройка заставляет VTK писать десятичные запятые. Попытка чтения с помощью ParaView (или с использованием vtk Python — версия 5.10.1) на той же машине не удалась. Так что относительно десятичных разделителей поведение vtk вызывает недоумение. - person bvanlew; 20.12.2017

Это может не решить проблемы Inf/NaN, но если числа в файле vtk слишком велики или слишком малы (например, 1e-50, 1e45), это может вызвать ту же ошибку.

Одним из решений в этом случае является изменение спецификации типа данных. Когда у меня возникла эта проблема, я указал тип данных как "float", который использует 32-битное представление с плавающей запятой (такое же, как "float32"). Изменение его на "float64" использует 64-битное представление с двойной точностью, которое согласуется с моим кодом на C++, сгенерировавшим файл vtk, использующий удвоения. Это может устранить проблему.

person Stershic    schedule 21.12.2015

Если вы используете Fortran, эта проблема также возникает, когда вы записываете в файл, но не закрываете его в коде.

Например:

do i=1,10
write(numb,'(i3)')i
open(unit=1, file='test'//numb//'.vtk')
write(1,*).......
enddo
person Hải Phạm Thanh    schedule 12.05.2016