Ich plane, mit Multigrid einige Eigenwerte und Vektoren zu berechnen, und mir ist aufgefallen, dass PETSc Multigrid auf hohem Niveau unterstützt. Die PETSc-Dokumentation besagt, dass dieser Teil von PETSc nicht verwendet werden sollte, da er bald ersetzt wird.
Welche anderen Bibliotheken unterstützen Multigrid auf hohem Niveau, und wie bald wird PETSc die neue Multigrid-Unterstützung veröffentlichen?
Antworten:
Sowohl PETSc als auch Trilinos verfügen über gute algebraische Multigrid-Methoden.
deal.II implementiert geometrische Multigrid-Methoden für Finite-Elemente-Diskretisierungen, siehe zum Beispiel das Lernprogramm für Schritt 16 .
quelle
PETSc multigrid (als Vorkonditionierer) ist ziemlich ausgereift und kann mit jedem der KSP-Löser (iterative Krylov-Methode) in PETSc verwendet werden, indem Folgendes eingegeben wird:
-pc_type mg
Dies setzt jedoch voraus, dass Sie eine Möglichkeit zum Generieren Ihrer Grobstufen haben, z. B. durch PETSc DA-Objekte definierte strukturierte Gitter, die automatisch vergröbert werden.
Oder, wenn Sie algebraisches Multigrid aus dem HYPRE-Paket verwenden möchten, können Sie verwenden
-pc_type hypre
Oder aus dem ML-Paket mit
-pc_type ml
Diese werden während des Konfigurationsprozesses durch Anhängen heruntergeladen
--download-hypre=1 --download-ml=1
zu Ihrer ./configure Kommandozeile.
Der Teil, der (vorerst) abgeschrieben wird, ist das DMMG-Framework, das durch den SNES-FAS-Solver (nichtlinear) ersetzt wird und das den Umgang mit mehrstufigen Diskretisierungen bei der Verwendung von MG oder FAS besser unterstützt. Der andere Ersatz (für lineare Probleme) ist
-pc_type gamg -pc_gamg_type sa
Dies ist ein neuerer, in PETSc integrierter, hoch skalierbarer algebraischer Multigrid-Code mit geglätteter Aggregation.
quelle