Die Wärmegleichung wird mit FV (oder FEM) im Raum diskretisiert, und es wird eine halbdiskrete Gleichung erhalten (System von ODEs). Dieser Ansatz, der als Linienmethode bekannt ist , ermöglicht den einfachen Wechsel von einer zeitlichen Diskretisierung zu einer anderen, ohne dass Code dupliziert wird. Insbesondere können Sie jeden Zeitintegrator für ODEs ohne großen Aufwand wiederverwenden. Dies ist sehr praktisch, da Sie, wenn Sie Ihre räumliche Diskretisierung von FV in FE ändern, immer noch eine halbdiskrete Gleichung erhalten und Ihre Zeitintegratoren weiterhin arbeiten.
Jetzt versuche ich, die Rotationsmethode für das gleiche Problem zu implementieren . Die zeitliche Diskretisierung zwingt mich jedoch zunächst dazu, die räumliche Diskretisierung für jedes zeitliche Diskretisierungsschema, das ich möglicherweise verwenden möchte, neu zu schreiben. Dies eliminiert die Wiederverwendung von Zeitintegratoren, die ich zuvor hatte, und macht es sehr kompliziert, modulare Software zu schreiben, die eine PDE sowohl mit der Methode der Linien als auch mit der Methode von Rothe diskretisieren kann.
Gibt es eine Möglichkeit, beide Ansätze ohne Codeduplizierung zu implementieren?
Bearbeiten:
Bei konvektionsdominierten Problemen muss die FE-Diskretisierung sowohl zeitlich als auch räumlich stabilisiert werden, was die Rothe-Methode zur "besten" Wahl macht. Dies ist jedoch bei FV / DG-Methoden nicht der Fall.
Bei der Linienmethode wird die PDE zuerst räumlich und dann zeitlich diskretisiert. Bei der Rothe-Methode wird die PDE zuerst zeitlich und dann räumlich diskretisiert. Die dritte Möglichkeit besteht darin, sowohl räumlich als auch zeitlich gleichzeitig zu diskretisieren (auch als Raum-Zeit-Diskretisierungen bezeichnet). Eine Diskussion über die Methode der Linien und die Methode der Rothe finden Sie hier . Für weitere Informationen ist das Buch "Finite-Elemente-Methoden für Strömungsprobleme" von Donea und Huerta eine gute Ressource.
Antworten:
Ich habe nicht wirklich viel mehr zu sagen als auf den Seiten, auf die Sie verlinkt haben, aber für mich lauten die Hauptargumente wie folgt:
Bei vielen Problemen muss das Netz zwischen den Zeitschritten angepasst werden. Der konzeptionelle Rahmen hierfür ist die Rothe-Methode, bei der die räumliche Diskretisierung bei jedem Zeitschritt unabhängig gewählt werden kann, während bei der Linienmethode a priori davon ausgegangen wird, dass die PDE in ein ODE-System umgewandelt wird - was mit der Netzanpassung nicht kompatibel ist.
Wenn Sie Ihr Netz jedoch nicht anpassen möchten, spielt es keine Rolle: In den meisten Fällen spielt es keine Rolle, ob die räumliche Diskretisierung zwischen den Zeitschritten gleich sein soll oder nicht Wenn Sie zuerst im Raum und dann in der Zeit mit Ihrem bevorzugten Zeitintegrator diskretisieren oder umgekehrt, werden Sie in jedem Zeitschritt das gleiche diskrete Problem haben, das Sie lösen müssen. In solchen Fällen sind die Rothe-Methode und die Linienmethode identisch.
Dies gilt auch für den Fall, dass Sie das Netz nur gelegentlich anpassen möchten: Sie können dies als Methode für Linien betrachten, die auf mehrere Zeitschritte angewendet werden, dann das Netz anpassen und dann einen weiteren Satz von Zeitschritten, in denen Sie sich befinden Wenden Sie die Linienmethode an. Oder Sie können sich dies als die Rothe-Methode vorstellen, bei der Sie das Netz nur gelegentlich anpassen. Es wird im Wesentlichen zu demselben numerischen Schema kommen, nur zu einem anderen philosophischen Standpunkt.
Es könnte sich lohnen, noch einen Punkt hinzuzufügen: In der ODE-Welt werden häufig Schemata höherer Ordnung mit mehreren Stufen oder mehreren Schritten verwendet. Das Abfüllen dieser Algorithmen in Pakete bietet daher einen erheblichen Vorteil, da Sie ein ODE-System nur auf die eine oder andere Weise übergeben müssen. Andererseits verwendet man für zeitabhängige PDEs meistens ziemlich einfache Zeitschrittmethoden (mit der bemerkenswerten Ausnahme einiger hyperbolischer Löser): zum Beispiel Crank-Nicolson, BDF-2 oder nur die Vorwärts- oder Rückwärts-Euler-Schemata . Für diese einfachen Zeitintegratoren ist es nicht besonders schwierig, die Zeitintegration von Hand zu codieren, da sie so viel einfacher ist als die räumliche Diskretisierung. Dies bedeutet, dass der Preis für das Denken in Bezug auf die Rothe-Methode - da kein ODE-Solver-Paket verwendet werden kann - gering ist. Der Preis für die Verwendung der Linienmethode, bei der das Netz zwischen den Zeitschritten nicht angepasst werden kann, ist hoch. Dies könnte erklären, warum die meisten Menschen in der adaptiven Finite-Elemente-Welt lieber nach der Rothe-Methode denken.
Als Konsequenz aus dem letzten Punkt und zurück zur ursprünglichen Frage: Es ist in der Tat wahr, dass es bei der Rothe-Methode schwierig ist, alles objektorientiert schön zu verpacken. (I) Solange Sie sich jedoch an eine einzelne Klasse von ODE-Integratoren halten, können Sie natürlich die Koeffizienten der verschiedenen Stufen des Integrators in einer Klasse tabellieren und den Code, der sie berechnet, vollständig kapseln lassen. und (ii) die Tatsache, dass man üblicherweise relativ einfache Zeitintegratoren für zeitabhängige PDEs verwendet, bedeutet, dass die zur Implementierung der Zeitintegration erforderliche Codemenge gewöhnlich erheblich kleiner ist als die Codemenge, die sich mit der räumlichen Diskretisierung befasst. Mit anderen Worten, ich weiß nicht, wie ich die räumliche von der zeitlichen Diskretisierung mit der Rothe-Methode gut trennen kann, aber ich habe '
quelle