Существует ли библиотека общего назначения для структурированной сетки с адаптивным уточнением сетки?


18

Адаптивное уточнение сетки (AMR) является распространенным методом решения проблемы широко варьирующихся пространственных масштабов в численном решении PDE. Какие библиотеки общего назначения существуют для AMR на структурированных сетках? В идеале я хотел бы что-то в духе PETSc, где библиотека обрабатывает только адаптивные сетки, и я предоставляю физику и дискретизацию (конечная разница / объем / элемент).

Идеальная библиотека была бы

  • Модульный : не диктует, как я пишу свой код или слишком много структур данных
  • Общее : не волнует, какую дискретизацию я использую
  • Эффективно : не несет слишком много накладных расходов
  • Параллельный и хорошо масштабируемый

Библиотеки, которые соответствуют только подмножеству этих критериев, все равно будут представлять интерес.

Приложение : Мне известен обширный список пакетов AMR Донны Кэлхун , но я не знаю, какой из них (если есть) соответствует вышеуказанным критериям. Поэтому я в основном заинтересован в том, чтобы услышать от людей, которые имеют реальный опыт работы с одним или (еще лучше) несколькими пакетами, о том, как они соответствуют этим условиям.


2
+1, мне интересно, какое программное обеспечение AMR существует, и я бы предпочел, чтобы оно удовлетворяло критериям, указанным выше.
Джефф Оксберри

Просто подумал, что упомяну, что только что была выпущена новейшая версия Chombo , и (как утверждается) ее легче интегрировать в более крупный пакет ( Примечания к выпуску ). Это не главная ревизия, так что, скорее всего, некоторые вещи все еще не удовлетворяют всем вашим критериям.
Джереми Коздон

Ответы:


14

Одна библиотека, чтобы рассмотреть, является BoxLib . Его основные функции (с веб-сайта):

  • Поддержка блочной структуры AMR с дополнительной подциклизацией во времени
  • Поддержка центрированных на ячейках, гранецентрированных и узловых данных
  • Поддержка гиперболических, параболических и эллиптических решений на иерархической сеточной структуре
  • Версии C ++ и Fortran90
  • Поддерживает гибридную модель программирования с MPI и OpenMP
  • Основа зрелых применений в горении, астрофизике, космологии и пористых средах
  • Продемонстрировано масштабирование до 200 000 процессоров
  • Свободно доступен для заинтересованного пользователя
  • Существует также обертка Python (написанная мной) для версии на Фортране (хотя она довольно молодая).


    9

    Вы также должны посмотреть на libMesh . Он нацелен на методы конечных элементов, но кроме этого, я думаю, он проверяет большинство ваших полей. В отличие от BoxLib, это полностью неструктурированная, смешанная библиотека типов элементов, которая должна поддерживать теты, пирамиды, призмы и гексаэдры в одной и той же сетке. Он также имеет один из самых больших наборов правил интегрирования для полиномиальных базисных функций высокого порядка. Он настроен на то, чтобы вы могли напрямую вызывать PETSc (и некоторые другие библиотеки), чтобы у вас была та же решающая масштабируемость, что и у PETSc.

    Конечно, есть способ сделать что-то в libMesh, но есть и способ работы в PETSc. Надеюсь, это вас не отпугнет.


    4

    Я бы попробовал SAMRAI. Я знаю, по крайней мере, один код, который успешно его использует - IBAMR , код метода погруженной границы для взаимодействия структуры жидкости с AMR.


    Спасибо Johntra (и добро пожаловать в scicomp)! Вы случайно не заметили существенные различия между SAMRAI и BoxLib? Кроме того, вы можете использовать встроенные ссылки, поместив текст ссылки в [] и пункт назначения в ()
    Арон Ахмадиа

    К сожалению, я не - поскольку я имею в виду факты, я только что услышал об этом (BoxLib) в первый раз. Именно поэтому я решил присоединиться - учиться чему-то новому, неформально обсуждая с вами, ребята, спасибо.
    Johntra Volta

    Я хотел бы повторить SAMRAI, это очень полезная универсальная структура для AMR. Мне также очень нравится гибридный дизайн C ++ / Fortran, который нравится автору. Вычислительные ядра могут быть написаны на Фортране, как и должно быть, а классы C ++ обеспечивают всю абстракцию, необходимую для скрытия внутреннего MPI и управления памятью.
    talonmies

    @AronAhmadia: BoxLib не может обрабатывать кусочно-линейную интерполяцию с изменением границ Дирихле в геометрической многосетке с центром в ячейке. Мысль добавит это как интересный момент.
    Гаурав Саксена

    2

    Вы не указали структурированный или неструктурированный.

    Взгляните на Парамеш, Пирамиду, П4ест, Дендро, Самраи и Чомбо.

    Кстати, пирамида не делает грубым.


    1
    Хороший улов; Я редактировал вопрос. Не могли бы вы прокомментировать, насколько хорошо эти библиотеки соответствуют моим критериям?
    Дэвид Кетчесон
    Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
    Licensed under cc by-sa 3.0 with attribution required.