Multigrid-Einführungen verwenden normalerweise ein rechteckiges Raster. Die Interpolation von Werten ist dann einfach: Interpolieren Sie einfach linear an der Kante zwischen zwei benachbarten Knoten des Grobgitters, um den Wert des Feingitterknotens an dieser Kante zu ermitteln.
Für eine FEM-Anwendung habe ich ein Gitter, das "topologisch" rechteckig ist, so dass Knotenverbindungen wie in einem rechteckigen Gitter sind. Die Knoten sind jedoch nicht perfekt auf einem Gitter ausgerichtet, sondern können kleine Entfernungen zurücklegen, um die Geometrie besser anzupassen, während die Verbindungen wie in einem perfekten rechteckigen Gitter beibehalten werden.
Das Netz sieht ungefähr so aus: Beispiel Netz . Sie sehen: Verbindungen sind "normal rechteckig", Knotenpositionen jedoch nicht.
Ich kann mir mehrere "vernünftige" geometrische Interpolationsschemata für eine solche Einstellung vorstellen.
Die allgemeine Frage lautet: Benötigt Multigrid ein perfekt ausgerichtetes rechteckiges Gitter oder funktioniert es auch mit der oben beschriebenen Situation, solange die Interpolation "gut" ist? Oder ist es in diesem Fall besser, algebraisches Multigrid zu verwenden? (Was ich nicht bevorzuge, da es nicht so intuitiv ist wie geometrisches Multigrid.)
Antworten:
Multigrid benötigt kein kartesisches (rechteckiges), einheitliches Gitter. Sie müssen eine feine und eine grobe Ebene definieren (möglicherweise rekursiv, wenn Sie von einem zweistufigen zu einem mehrstufigen Schema wechseln möchten) und Interpolationsoperatoren zwischen diesen Ebenen definieren. Der einfachste Weg, dies zu erklären, ist, wenn Sie tatsächlich ein kartesisches Gitter haben, aber Sie können tatsächlich mit jedem groben Netz beginnen, es einmal verfeinern und einfach so: Sie haben ein feineres Netz.
Mit anderen Worten, es ist am einfachsten, sich Multigrid-geeignete Netze nicht als feines Netz vorzustellen und die gröberen Netze zu finden, sondern mit einem groben Netz zu beginnen, aus dem Sie durch gleichmäßige Verfeinerung die feineren Ebenen erhalten (dh jedes Viereck ist unterteilt in vier kleinere). Da eine einheitliche Verfeinerung immer möglich ist, erhalten Sie leicht eine Hierarchie. Dies steht im Gegensatz zur Vergröberung, die nicht immer möglich ist, wenn Sie nur ein bestimmtes Netz erhalten, und das Definieren einer Netzhierarchie erheblich erschwert. (Aus diesem Grund haben die Leute algebraische Multigrid-Methoden entwickelt, um die Grobebenen basierend auf der Matrix zu definieren, ohne an das zugrunde liegende Netz zu denken, aus dem sie erstellt wurden.)
quelle
Nehmen wir an, Sie haben das folgende Raster aus rechteckigen Elementen:
Wenn Sie nun Ihre Interpolation unter der Annahme eines normal strukturierten rechteckigen Gitters durchführen, werden Sie Fehler einführen, die mit dieser ungenauen Interpolation verbunden sind. Mit anderen Worten, wenn Sie Ihren Restvektor einschränken und Ihren Fehlervektor verlängern, treten Fehler bei der Interpolation auf.
Wenn Ihr Raster einem normalen strukturierten kartesischen Raster "nahe" ist, kann dies zumindest zunächst funktionieren, aber ich vermute, dass eines von zwei Dingen passieren wird, je nachdem, wie weit Ihr Raster von der Rechteckigkeit entfernt ist:
1) Möglicherweise stellen Sie fest, dass das Multigrid zunächst konvergiert. Schließlich ist Ihr Fehler anfangs sowieso groß und Ihre "ungefähre" Interpolation bedeutet wirklich nur, dass einige Knoten leicht überrepräsentiert sind, während andere leicht unterrepräsentiert sind. Möglicherweise stagniert die Konvergenz jedoch, wenn die Lösung genauer wird und die Interpolationsfehler wichtiger werden.
2) Eine andere Möglichkeit besteht darin, dass das Multigrid zwar konvergiert, jedoch nicht so schnell wie es sollte, wenn Sie die richtige Interpolation verwendet haben.
Grundsätzlich gewichten Sie die Wichtigkeit bestimmter Knoten ungenau, indem Sie Ihre Interpolation deaktivieren. Zum Beispiel in 2D, wenn Sie einen bestimmten Knoten wie folgt gewichten:
wenn in Wahrheit, weil Ihr Gitter nicht genau kartesisch ist, sollte es sein:
dann führt dies zu einem Fehler. Ob dieser Fehler die Konvergenz verhindert, hängt wahrscheinlich davon ab, wie weit Ihr Raster davon entfernt ist, kartesisch zu sein.
Obwohl AMG schwieriger zu verstehen / zu implementieren ist, scheint es die richtige Methode für Ihr Grid zu sein. Das Anwenden von geometrischem Multigrid auf ein "ungefähres" rechteckiges Gitter mag funktionieren, aber ich würde vermuten, dass es bestenfalls eine Pflasterlösung ist. Hoffe das hilft.
Update : Ich glaube, meine Antwort war verwirrend. Ich sage nicht, dass geometrisches Multigrid nur mit kartesischen Netzen funktioniert, sondern dass das Definieren der Interpolation (und damit der Einschränkung) von kartesischen Netzen einfach ist, während dies bei nicht strukturierten Netzen schwierig sein kann. Betrachten Sie beispielsweise den Fall einer einfachen 2D-Domäne mit einem Dreiecksnetz. Das Verfeinern dieses Netzes ist - zumindest konzeptionell - einfach, aber wie würden Sie einen Interpolationsoperator zwischen dem groben und dem feinen Netz definieren? Ich bevorzuge AMG einfach, weil es eher wie ein "Black-Box" -Löser funktioniert, dh keine Informationen über das zugrunde liegende Netz benötigt, dies ist jedoch nur meine persönliche Voreingenommenheit / Eigenart. Geometrisches Multigrid kann funktionieren, solange Sie genaue Interpolationsoperatoren bereitstellen können.
quelle