Ich habe einen Navier Stokes implementiert, der auf FEM-Diskretisierung und PETSc basiert, um das lineare Gleichungssystem zu lösen. Um ein effizientes Lösungsverfahren zu erstellen, folge ich dem Artikel "Effiziente Vorkonditionierung der linearisierten Navier-Stokes-Gleichungen für inkompressiblen Fluss" (Silvester et al.), Der einen Schur-Komplement-Ansatz vorschlägt. Es funktioniert ganz gut in dem Sinne, dass ich eine nahezu konstante Anzahl von Iterationen unabhängig von Maschengröße und Zeitschritt für die einfachen Benchmarks habe, die auch in diesem Artikel vorgestellt werden (2D-gesteuerter Hohlraumfluss und rückwärts gerichteter Schritt). Aber im Moment löse ich den oberen Geschwindigkeitsblock mit einem parallelen Direktlöser (MUMPS). Der Druck-Schur-Block wird mit ungenauen Lösern gelöst, wie in der Veröffentlichung vorgeschlagen.
In der Arbeit schlagen die Autoren vor, in jeder äußeren Iteration einen einzelnen Multigrid-V-Zyklus durchzuführen und einen Punkt-Gauß-Seidel-Glätter zu verwenden, um die Umkehrung dieses diskreten Konvektionsdiffusionsoperators zu approximieren. Da ich eine geometrische Multigrid-Methode nicht einfach verwenden kann, dachte ich, den direkten Löser durch einen algebraischen Multigrid-V-Zyklus (Bumeramg aus dem Hypre-Paket) zu ersetzen. Aber dann verliere ich die konstante Anzahl von Iteraten, während ich das Netz feiner mache.
Hat jemand von euch eine Idee, wie man einen spektral äquivalenten und effizienten Vorkonditionierer für die Inverse der Geschwindigkeitsmatrizen basierend auf algebraischem Multigrid erstellt? Gibt es etwas inhärentes, das es in diesem Fall nicht erlaubt, algebraisches Multigrid zu verwenden? Wenn nicht, was könnte die Ursache für den Verlust der konstanten Iterationsskalierung sein?
Bearbeiten:
Ich habe einige Benchmarks für verschiedene Löser des Geschwindigkeitsblocks hinzugefügt. Das Problem, das gelöst wird, ist der standardmäßige 2D-gesteuerte Hohlraumfluss, die Diskretisierung mit Taylor-Hood und eine einheitliche Verfeinerung des Gerätekastens
Exakt-Löser (MUMPS)
: 25 iter : 25 iter : 25 iter : 22 iter
ein V-AMG (algebraisch, Bumeramg)
: 30 iter : 30 iter : 39 iter : 48 iter
FGMRES mit Vorkonditionierer V-AMG (algebraisch, Boomeramg), RTOL:
: 30 iter : 29 iter : 30 iter : 47 iter
FGMRES mit Vorkonditionierer V-AMG (algebraisch, Bumeramg), Atol:
: 27 iter : 27 iter : 28 iter : 26 iter