Matrix-Solver

Der Diskretisierungsprozess produziert algebraische Gleichungen an jedem Knoten. Diese Gleichungen bilden eine Matrix mit den Koeffizienten Aij, die so viele Zeilen enthält, wie es Finite-Element-Knoten gibt, und genügend Spalten, um die von null verschiedenen Koeffizienten für die -Werte der Knoten aufzunehmen.

Die klassische Methode zum Lösen der Matrixgleichung ist das Gauß'sche Eliminationsverfahren. Dies ist ein eher aufwendiges Lösungsverfahren, da der Eliminationsprozess zumindest eine Bandmatrix für das Speichern der Zwischenergebnisse während der Zerlegung benötigt. Die von Autodesk® CFD gespeicherten Aij belegen viel weniger Platz als eine Bandmatrix. Außerdem ist der Eliminationsprozess ziemlich rechenintensiv. Da diese Gleichungen wiederholt gelöst werden müssen, wäre das Eliminationsverfahren extrem langsam und mühsam.

Die Alternative zu Eliminationstechniken besteht darin, iterative Matrix-Solver zu verwenden, bei denen Näherungen der Lösung benutzt werden, um die Anzahl der Rechnungsschritte zu verringern und den Auffüllungsprozess vollständig auszuschließen. In diesem Fall sind nur von null verschiedene Matrixeinträge erforderlich, was den Speicherbedarf des Computers erheblich (bei 3D-Problemen um 2 bis 3 Größenordnungen) reduziert. Eine Besonderheit der Näherung ist, dass alte Werte von als Schätzungen der aktuellen Werte verwendet werden können. Wiederholte Durchläufe oder Iterationen des Solvers führen letztlich zur selben Lösung wie das Gauß'sche Eliminationsverfahren, jedoch ohne Rundungsfehler. Aufgrund der Nichtlinearität der Gleichungen ist es jedoch möglicherweise wünschenswert, die Iterationen abzubrechen, bevor dieser Punkt erreicht wird.

Der einfachste iterative Matrix-Solver ist das Gauß-Seidel Verfahren, bei dem die Werte wie folgt bestimmt werden:

Die -Werte in dieser Gleichung sind die jeweils zuletzt verfügbaren Werte. Letztlich werden hier alle nicht diagonalen Terme auf die rechte Seite der Gleichung gebracht. Da die die zum Erreichen einer brauchbaren Lösung nötige Anzahl von Gauß-Seidel-Iterationen recht groß ist, wird diese Methode nicht häufig verwendet.

Ein anderer iterativer Matrix-Solver, der eine deutlich bessere Lösung als Gauß-Seidel liefert, insbesondere für Transportprobleme, ist der Tridiagonalmatrix-Algorithmus (TDMA). Bei dieser Methode wird eine Matrixgleichung unter Verwendung einer Tridiagonalmatrix konstruiert. Hier bleiben nur die Terme in der Diagonalen und den beiden angrenzenden Nebendiagonalen erhalten, während alle anderen Terme auf die rechte Seite der Gleichung gebracht werden, wo alte Werte von í verwendet werden. Die Matrixgleichung für TDMA kann wie folgt geschrieben werden:

Der TDMA-Algorithmus ermöglicht die effektive simultane Lösung von eindimensionalen Knotenebenen. In den Transportgleichungen werden Informationen von der Einlassebene an jede nachfolgende Ebene weitergereicht. Die Lösung der Transportgleichungen mit dem TDMA-Algorithmus imitiert also gewissermaßen diesen Fluss physikalischer Informationen.

Es gibt mehrere iterative Matrix-Solver, die Varianten der CG-Methode (Methode der konjugierten Gradienten) darstellen. Einige dieser Methoden sind nur auf symmetrischen Matrizen, andere auf nicht symmetrische Matrizen anwendbar. Alle diese Varianten verwenden ähnliche Techniken zum Lösen der Matrixgleichung. Genauer gesagt, sie verwenden eine Suchtechnik, um die Lösung der Matrixgleichungen zu steuern und schneller zu konvergieren. Sie werden häufig als "halbdirekte" Matrix-Solver bezeichnet, da sie sehr genaue Lösungen produzieren. In Autodesk® CFD iterieren die CG-Solver so lange durch den Eliminationsprozess, bis das Konvergenzkriterium erfüllt ist oder die vom Benutzer festgelegte Anzahl der Iterationen überschritten wird.