Gibt es eine Universalbibliothek für die Verfeinerung von strukturierten Gitternetzen?

18

Adaptive Mesh Refinement (AMR) ist eine gängige Technik, um das Problem stark variierender räumlicher Skalen in der numerischen Lösung von PDEs zu lösen. Welche Universalbibliotheken gibt es für AMR auf strukturierten Gittern? Idealerweise hätte ich gerne etwas im Sinne von PETSc, wo die Bibliothek nur die adaptiven Netze verwaltet und ich die Physik und Diskretisierung (endliche Differenz / Volumen / Element) bereitstelle.

Die ideale Bibliothek wäre

  • Modular : Gibt nicht vor, wie ich meinen Code oder zu viele meiner Datenstrukturen schreibe
  • Allgemein : Es ist mir egal, welche Art von Diskretisierung ich verwende
  • Effizient : Es entsteht nicht zu viel Overhead
  • Parallel und hoch skalierbar

Bibliotheken, die nur eine Teilmenge dieser Kriterien erfüllen, wären weiterhin von Interesse.

Nachtrag : Mir ist die umfangreiche Liste der AMR-Pakete von Donna Calhoun bekannt , aber ich weiß nicht, welche davon (falls vorhanden) die oben genannten Kriterien erfüllen. Daher bin ich hauptsächlich daran interessiert, von Leuten zu hören, die tatsächlich Erfahrung mit einem oder (besser noch) mehreren Paketen haben, wie sie in diesen Begriffen abschneiden.

David Ketcheson
quelle
2
+1, ich bin gespannt, welche AMR-Software es auch gibt, und würde es vorziehen, die oben genannten Kriterien zu erfüllen.
Geoff Oxberry
Ich dachte nur, ich würde erwähnen, dass die neueste Version von Chombo gerade veröffentlicht wurde, und (es wird behauptet) das sollte einfacher in ein größeres Paket zu integrieren sein ( Versionshinweise ). Da es sich nicht um eine größere Überarbeitung handelt, erfüllen einige Dinge möglicherweise immer noch nicht alle Ihre Kriterien.
Jeremy Kozdon

Antworten:

14

Eine zu berücksichtigende Bibliothek ist BoxLib . Seine Hauptmerkmale (von der Website) sind:

  • Unterstützung für blockstrukturiertes AMR mit optionalem Subcycling in time
  • Unterstützung für zellzentrierte, flächenzentrierte und knotenzentrierte Daten
  • Unterstützung für hyperbolische, parabolische und elliptische Lösungen für hierarchische Gitterstrukturen
  • C ++ und Fortran90 Versionen
  • Unterstützt hybrides Programmiermodell mit MPI und OpenMP
  • Basis ausgereifter Anwendungen in Verbrennung, Astrophysik, Kosmologie und porösen Medien
  • Demonstrierte Skalierung auf über 200.000 Prozessoren
  • Für interessierte Benutzer frei verfügbar
  • Es gibt auch einen Python-Wrapper (von mir geschrieben), der in der Fortran-Version enthalten ist (obwohl er noch recht jung ist).

    Matthew Emmett
    quelle
    9

    Sie sollten sich auch libMesh ansehen . Es zielt auf Finite-Elemente-Methoden ab, aber abgesehen davon, glaube ich, werden die meisten Ihrer Kontrollkästchen aktiviert. Im Gegensatz zu BoxLib handelt es sich um eine vollständig unstrukturierte Bibliothek mit gemischten Elementen, die Tets, Pyramiden, Prismen und Hexaeder im selben Netz unterstützt. Es hat auch eine der größten Mengen von Integrationsregeln für polynomiale Basisfunktionen höherer Ordnung. Sie können PETSc (und auch einige andere Bibliotheken) direkt aufrufen, sodass Sie dieselbe Solver-Skalierbarkeit wie PETSc haben.

    Es gibt sicherlich eine libMesh-Methode, um Dinge zu erledigen, aber es gibt auch eine PETSc-Methode, um Dinge zu erledigen. Hoffentlich schreckt Sie das nicht ab.

    Bill Barth
    quelle
    4

    Ich würde SAMRAI ausprobieren . Ich kenne mindestens einen Code, der es mit Erfolg verwendet - IBAMR , einen Code für die Methode der eingetauchten Grenze für die Fluid-Struktur-Wechselwirkung mit AMR.

    John Travolta
    quelle
    Danke Johntra (und willkommen bei scicomp)! Kennen Sie zufällig die wesentlichen Unterschiede zwischen SAMRAI und BoxLib? Sie können Links auch inline verwenden, indem Sie den Linktext in [] und das Ziel in ()
    einfügen
    Leider habe ich nicht - eigentlich habe ich gerade zum ersten Mal davon gehört (BoxLib). Das ist genau der Grund, warum ich mich für eine Teilnahme entschieden habe - um etwas Neues zu lernen, indem ich mich informell mit euch unterhalte - danke.
    Johntra Volta
    Ich würde SAMRAI empfehlen, es ist ein sehr nützliches Allzweck-Framework für AMR. Das hybride C ++ / Fortran-Design gefällt mir auch sehr gut. Computerkerne können wie vorgesehen in Fortran geschrieben werden, und die C ++ - Klassen bieten die gesamte Abstraktion, die zum Verbergen der inneren MPI- und Speicherverwaltung erforderlich ist.
    Talonmies
    @AronAhmadia: BoxLib kann keine stückweise lineare Interpolation mit sich ändernden Dirichlet-Grenzen in zellzentriertem geometrischem Multigrid verarbeiten. Der Gedanke würde es als einen interessanten Punkt hinzufügen.
    Gaurav Saxena
    2

    Sie haben nicht strukturiert oder unstrukturiert angegeben.

    Schauen Sie sich Paramesh, Pyramid, p4est, Dendro, Samrai und Chombo an.

    Übrigens: Pyramide vergröbert nicht.

    stali
    quelle
    1
    Guter Fang; Ich habe die Frage bearbeitet. Könnten Sie kommentieren, wie gut diese Bibliotheken meinen Kriterien entsprechen?
    David Ketcheson