Вы видели принятый ответ на вопрос Ошибка формата данных vtk ? Вопрос заключается в отладке модуля записи VTK в C ++, но он очень похож на ваш код (и, конечно, должен давать те же результаты).
Ключевым моментом из принятого ответа является то, что данные записываются в мажорном столбце порядке, не мажорном порядке строки (вы, похоже, намекаете на это в своем вопросе: «Я» Я осознаю тот факт, что structd_points могут использовать индексирование по основным столбцам ").
Кроме того, всегда полезно (если вы можете) сравнить ваш код с чем-то, что, как вы знаете, работает. Например, VisIt предоставляет небольшую библиотеку C для записи устаревших форматов файлов VTK, которая называется VisItWriterLib . Сравните вывод из вашего кода и VisItWriterLib, чтобы увидеть, где ваши файлы данных отличаются. Я бы порекомендовал использовать VisItWriterLib для ввода-вывода VTK, а не писать собственные подпрограммы - не нужно заново изобретать колесо.
Редактировать : Чтобы ответить на пару других ваших вопросов:
После запуска списка данных сетки через эту процедуру, у меня есть
Строки XPIX * YPIX в lookup_table, каждая из которых содержит записи ZPIX. Это
неверный формат?
Это , а не правильный формат. LOOKUP_TABLE
должен быть списком XPIX*YPIX*ZPIX
строк, с одним элементом на строку (или, в качестве альтернативы, VisIt примет одну строку с XPIX*YPIX*ZPIX
элементами). См. Раздел Формат атрибута набора данных в документе Форматы файлов VTK (www.vtk.org/VTK/img/file-formats.pdf).
.
Мой набор данных слишком большой?
Я сомневаюсь в этом. VisIt предназначен для обработки огромных наборов данных и, AFAIK, может отображать петабайтные наборы данных. Я был бы очень удивлен, если ваши данные настолько велики.
Однако, если вас беспокоит наличие больших файлов, вы можете разделить ваши данные на несколько файлов и сказать VisIt, что эти файлы считаются параллельными. Для этого запишите немного ваших данных в отдельные файлы, например, domain1.vtk
, domain2.vtk
, ... domainN.vtk
и т. Д. Затем запишите главный файл .visit
, имеющий структуру
!NBLOCKS N
domain1.vtk
domain2.vtk
...
domainN.vtk
Сохраните, например, mydata.visit
, а затем откройте этот файл .visit
, а не .vtk
, в VisIt.