Чи є бібліотека загального призначення для вдосконалення структурованої сітки адаптивного сітки?


18

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

Ідеальною була б бібліотека

  • Модульний : не диктує, як я пишу свій код або занадто багато своїх структур даних
  • Загальне : байдуже, яку дискретизацію я використовую
  • Ефективність : не вимагає занадто великих витрат
  • Паралельний і сильно масштабований

Бібліотеки, які відповідають лише низці цих критеріїв, все ще будуть цікаві.

Додаток : Мені відомо широкий перелік пакетів AMR Донни Калхун , але я не знаю, який з них (якщо такий є) відповідає наведеним вище критеріям. Тож мені в основному цікаво почути від людей, які мають фактичний досвід роботи з одним або (ще краще) більшою кількістю пакунків щодо того, як вони вимірюють ці умови.


2
+1, мені цікаво, яке програмне забезпечення AMR також є там, і я вважаю за краще, щоб він відповідав вищезгаданим критеріям.
Джефф Оксберрі

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

Відповіді:


14

Одна бібліотека, яку слід врахувати, це BoxLib . Основними його особливостями (з веб-сайту) є:

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


    9

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

    Існує звичайно спосіб libMesh робити речі, але існує і спосіб PETSc. Тож сподіваємось, це не злякає вас.


    4

    Я б спробував SAMRAI, я знаю принаймні один код, який успішно використовує його - IBAMR , код зануреного методу граничної взаємодії з рідинною структурою з AMR.


    Дякую Джоннтра (і ласкаво просимо до scicomp)! Чи знаєте ви, що помітні відмінності між SAMRAI і BoxLib? Також ви можете використовувати посилання, вбудовані в рядок, додавши текст посилання у [] та пункт призначення в ()
    Арон Ахмадія

    На жаль, я цього не маю - я маю на увазі факти, я щойно чув про це (BoxLib) вперше. Це саме причина, чому я вирішив приєднатися - щоб дізнатися smt new, обговорюючи неофіційно з вами хлопці - спасибі.
    Johntra Volta

    По-друге, SAMRAI, це дуже корисна рамка загального призначення для AMR. Мені також дуже подобається гібридний C ++ / Fortran дизайн прихильності автора. Обчислювальні ядра можуть бути записані у Fortran, як вони повинні бути, а класи C ++ забезпечують всю абстракцію, необхідну для приховування внутрішнього управління MPI та управління пам'яттю.
    талонії

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

    2

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

    Погляньте на Paramesh, Pyramid, p4est, Dendro, Samrai та Chombo.

    Піраміда Btw не робить грубіша.


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