Algebraischer Multigrid-Code

9

Ich würde gerne mehr Details über die Implementierung von Algebraic Multigrid Methods (AMG) erfahren. Ich habe "A Multigrid Tutorial" gelesen, das ziemlich gut ist und alle Details der Interpolation, des Grobgitteroperators und der Grobgitterauswahl für AMG erklärt. Ich denke jedoch, es gibt nichts Schöneres, als herumzuspielen und einen Code zu lesen.

Daher möchte ich fragen, ob jemand einen klassischen AMG "Beispielcode" kennt, wie den geometrischen FORTRAN-Code für mehrere Migranten, der am Ende von "Multigrid Methods" (SIAM) von SF McCormick verfügbar ist. Es ist ziemlich schwierig, einen hochwertigen Qualitäts- und Produktionscode wie BoomerAMG zu erhalten, um mehr über die Methode zu erfahren.

Bernardo MR
quelle
Interessieren Sie sich speziell für klassisches AMG (im Gegensatz zu * geglätteter Aggregation)? Wenn ja, geben Sie dies bitte in der Frage an.
Jed Brown

Antworten:

10

BoomerAMG ist Teil des Hypre- Pakets, das kinderleicht zu erwerben ist. Ein viel weniger komplexer Code, wenn Sie sich diese Methoden ansehen, könnte PyAMG sein .

Peter Brune
quelle
Ja, ich habe mir PyAMG angesehen, einen sehr schönen Code, aber es enthält all das Zeug zum Umschließen von C / C ++ - Code in Python. Es implementiert andere AMG-Methoden als die "klassische" und so weiter. Ich suchte nach etwas Einfacherem, das die Leute zum Unterrichten benutzen.
Bernardo MR
4
Leider ist die allgemeine Erfahrung mit der Verwendung und dem Versuch, einen Beitrag zu AMG-Codes zu leisten, dass Sie, wenn Sie nicht über eine Vielzahl von Optionen verfügen, nichts lösen können, was sich einem interessanten Problem nähert. Daher enthält Ihr typisches AMG-Paket eine Reihe von Optionen für die Annäherung an die Verbindung, die Interpolatorkonstruktion und die Glättung, die durch das Lesen von Code sicherlich schwer zu analysieren sind. Abgesehen davon ist die klassische AMG kinderleicht, und die Implementierung selbst oder der Versuch Ihrer Schüler, dies selbst zu tun (abhängig von ihrem Kenntnisstand), kann der richtige Weg sein.
Peter Brune
2

Ich kann Alfio Borizis Einführung in die algebraische Multigrid-Methode nur empfehlen . Anhang A enthält einen Beispielcode für fortran 77.

Paul
quelle
Ich denke, er fragt nach Implementierungen, nicht nach mehr Literatur.
Jack Poulson
1
@ JackPoulson: Es hat eine Implementierung im Anhang.
Paul
2
Entschuldigung, anscheinend kann ich heute Morgen nicht lesen. Upvoted.
Jack Poulson
1
@Paul: Ich könnte mich irren, aber ich denke, dies ist ein geometrischer Multigrid-Code für das Poisson-Problem (der auch für den nichtlinearen Fall funktioniert).
Bernardo MR
@ BernardoM.R.: Ich habe gerade diese Postscript-Datei gefunden ... Sie enthält viele konkrete Beispiele für Verlängerungs- und Einschränkungsoperatoren für Modellprobleme. Es hat zwar nicht wirklich einen vollständigen Code, aber es kann für Sie dennoch von Nutzen sein.
Paul
1

Es gibt auch das ML-Paket, das Teil von Trilinos ist. Sein Ruf ist ebenso gut wie der von BoomerAMG / hypre.

Ich glaube, ein neueres Trilinos-Paket für AMG heißt MueLu und sollte auch in den neueren Versionen verfügbar sein.

Alle diese sind Open Source.

Wolfgang Bangerth
quelle
1
MueLu wurde nicht veröffentlicht und als ich das letzte Mal mit ihm sprach, hatte Ray für ein weiteres Jahr oder so keine Veröffentlichung erwartet. Beachten Sie, dass ML und MueLu (soweit ich gehört habe, was darin enthalten ist) auf einer geglätteten Aggregation basieren, die einen ganz anderen Algorithmus darstellt als das klassische AMG (auf dem BoomerAMG basiert).
Jed Brown
1

Ich habe eine Weile an dieser Implementierung gearbeitet . Es ist Python / Numpy / Scipy. Es ist kein algebraisches Multigrid - Sie müssen Ihren eigenen Restriktionsoperator angeben. Wenn es sich jedoch um eine Bildungsimplementierung handelt, an der Sie interessiert sind, würde ich einige Pull-Anfragen begrüßen, um solche Funktionen hinzuzufügen.

Tsbertalan
quelle