Ich habe kürzlich einen großen Teil des Legacy-Codes geerbt, der ein sehr steifes, vorübergehendes Problem löst. Ich möchte zeigen, dass die räumlichen und zeitlichen Schrittgrößen so klein sind, dass sich die qualitative Natur der berechneten Lösung nicht ändert, wenn sie verringert wird. Mit anderen Worten, ich möchte zeigen, dass die Lösung qualitativ "konvergiert". Da ich die räumliche Maschengröße explizit festlegen kann, ist dieser Teil unkompliziert. Da der Code jedoch die automatische Zeitschrittgrößensteuerung verwendet, kann ich die Zeitschrittgröße nicht direkt einstellen.
Der Algorithmus ändert den Zeitschritt zwischen zwei Grenzen basierend auf der Anzahl der Jacobi-Iterationen, die erforderlich sind, um eine Fehlertoleranz während der letzten Zeitschritte zu erreichen . Die Tatsache, dass es eine jacobianische Iteration verwendet, macht mich ziemlich sicher, dass es sich um eine Art implizites Schema handelt, aber ich kann nicht absolut sicher sein. Es berücksichtigt nicht den Fehler, den es im aktuellen Zeitschritt sieht, was dazu führt, dass es gelegentlich in die Iterationsgrenze gerät (vielleicht ein Dutzend Mal im Verlauf von mehreren tausend Zeitschritten, fast immer während der dynamischsten Abschnitte des Simulation). Die aktuellen Läufe, die ich abschließe, setzen die Zeitschrittgrenzen zweieinhalb Größenordnungen auseinander ( bis ).
In den Läufen habe ich die Kontrolle über die Zeitschrittgrenzen, die Anzahl der vergangenen Zeitschritte, in denen der aktuelle Zeitschritt ausgewählt wird, die maximale Änderung des Zeitschritts (Verhältnisse), die Zielanzahl der Jacobi-Iterationen, die maximale Anzahl von Iterationen und die Fehlergrenze. Ich würde gerne wissen, ob mich jemand auf den richtigen Weg bringen könnte, um die Zeitschrittunabhängigkeit zu analysieren oder zumindest herauszufinden, welcher Algorithmus verwendet wird.