Визуализация сеток квадри и октри

10

Так называемые квадратные и октридные сетки весьма привлекательны для приложений, требующих адаптивного уточнения сетки. Они, например, используются в Gerris и Paramesh . Кто-нибудь знает о хорошем формате файлов для таких сеток и поддерживает программное обеспечение для визуализации? Смотрите также этот ответ в FAQ по Gerris. Единственный потенциальный кандидат, о котором я сейчас знаю, это класс VTK HyperOctree , но, похоже, документации почти нет.

В качестве конкретного примера сетки рассмотрим разреженную сетку октодеревьев, состоящую из блоков, каждый из которых содержит 8 × 8 × 8 = 512 ячеек. Мои текущие стратегии в Визите / Paraview:1048×8×8=512

  1. Запишите сетку в виде неструктурированного файла VTK. Это дорого для больших наборов данных и не использует «структурированность» квад / октре.
  2. Соберите соседние «ящики» в дереве в большие блоки и напишите блочную сетку. Это включает в себя довольно много дополнительного кода и теряет информацию о подключении, встроенную в quad / octree.

Обновление Если в настоящее время нет подходящего формата для прямой записи и визуализации сетки октодеревьев, я был бы признателен за предложения относительно формата файла, который можно использовать для записи октодерева в виде блочно-структурированной сетки. В идеале этот формат:

  1. Имеет относительно простое определение / реализацию, в идеале с открытым исходным кодом и совместимостью с C / Fortran.
  2. Может эффективно обрабатывать большое количество блоков сетки (например, 1000 или более).
  3. Позволяет легко указать связность блоков сетки, в частности на границах уточнения.

В настоящее время я использую Silo для этой цели, но я ищу что-то, что получило бы лучшие результаты по вышеуказанным трем пунктам (меньше, быстрее, проще).

Яннис Теуниссен
источник
1
Почему неструктурированная сетка создает слишком много данных? Было бы всего 5 миллионов клеток. Это довольно небольшой набор данных для меня, чтобы визуализировать в Визите или Paraview.
Вольфганг Бангерт
Поскольку координаты и связность указываются для каждой ячейки, а не только один раз для каждой ячейки (содержащей, например, 512 ячеек). Для больших наборов данных (например, 20 миллионов ячеек или более) визуализация становится намного медленнее, чем с сеткой с блочной структурой, в частности, если значимые части сетки находятся на одном уровне уточнения.
Яннис Теуниссен
Возможно, список поддерживаемых форматов файлов в Визите полезен для этого вопроса: visitusers.org/…
Jannis Teunissen
1
Может также посмотреть, что делают CHOMBO, SAMRAI и т.д. для визуализации?
Абхилаш Редди М
1
Добавьте BoxLib в список. Они разработали пакет под названием AMRVis для визуализации данных AMR. Код доступен на веб-сайте LBL.
Абхилаш Редди М

Ответы:

2

В моем случае, когда я выполнял многоуровневое уточнение, я использовал для записи файлов сетки на разных уровнях отдельно. Обычно уровень 0 является базовой грубой сеткой, которая остается фиксированной. А для уровня 1 и выше я использовал разные файлы для разных патчей. Скажем, если у вас есть 5 хороших патчей на уровне 1, моя стратегия заключалась в том, чтобы написать пять разных файлов в конце моей программы, что-то вроде Level_1_Patch_1, Level_1_Patch_2 ..., что можно динамически сделать в C (никогда не работало в Fortran).

        char filename1[64];
        sprintf(filename1, "Patch%d.dat", patch_number);

        FILE *file;
        file= fopen(filename1, "wb");

Я должен упомянуть здесь, что я использовал конечно-разностную структурированную сеточную систему.

Итак, однажды у меня были все уровни и их файлы .PLT или .DAT. Я импортирую их все в TecPLOT. Например, когда я писал свой двухуровневый код с парочкой мелких патчей на уровне 1, ваш меш должен выглядеть так в Tecplot.

введите описание изображения здесь

Я не очень хорошо разбираюсь в работе с необработанными сетками, но структурированные хорошо обрабатываются в Tecplot

Tanmay Agrawal
источник
Интересно почитать о вашем подходе, но это не представляется жизнеспособным для большого дерева, тогда вам придется писать и читать тысячи файлов, что обычно довольно медленно.
Яннис Теуниссен
1
@JannisTeunissen: Если вы собираетесь использовать блочно-структурированное решение, для Tecplot все блоки могут быть записаны в один файл в виде отдельных «зон» (терминология tecplot). Они не должны быть отдельными файлами. Однако параллельного ввода-вывода нет. Большие наборы данных будут задыхаться. Файлы tecplot могут быть загружены в ParaView (Tecplot является проприетарным). Формат ASCII очень прост. С некоторыми усилиями вы можете напрямую записывать двоичные файлы в формате tecplot. Существует официальная библиотека под названием TecIO, с помощью которой вы можете связать свой код для более удобного создания файлов.
Абхилаш Редди М
Я не думаю, что это сработает лучше, чем мой нынешний подход к Silo, который (что важно) является открытым исходным кодом. Обратите внимание, что файлы ASCII на самом деле не подходят для этой проблемы.
Яннис Теуниссен