Ich habe eine seltsame Beobachtung gemacht, als ich die Lösung für eine einfache 1D-Reaktionsdiffusionsgleichung berechnet habe:
Der Anfangswert von ist eine Konstante ( ), und ich interessiere mich nur für das Integral über von bis ( ). Der Zweck von und der Gleichung besteht nur darin, dieses Integral zu bewerten.b ( 0 , x ) = b 0 a 0 1 ≤ 1 0 a ( t , x ) d t c ≤
Ich verwendete ein Strang-Aufteilungsschema für die Kopplung zwischen Diffusion und Reaktion (eine Halbschrittreaktion, dann eine Vollschrittdiffusion und dann wieder eine Halbschrittreaktion), ein Crank Nicholson-Schema für die Diffusion und eine analytische Lösung für die Reaktion ( einschließlich der Gleichung ).
Da ein Schritt der analytischen Lösung mehr als einen Faktor 3 langsamer war als ein Schritt des Crank Nicholson-Schemas, habe ich versucht, mehr als einen Crank Nicholson-Schritt für jeden Reaktionsschritt durchzuführen. Ich hatte gehofft, mit weniger Schritten des Strang-Aufteilungsschemas auszukommen, damit ich insgesamt schneller bin.
Es kann jedoch der gegenteilige Effekt beobachtet werden, nämlich dass viel mehr Schritte für das Strang-Aufteilungsschema erforderlich sind, wenn mehr als ein Crank Nicholson-Schritt verwendet wird. (Ich befasse mich nur mit der Genauigkeit des Integrals über , das schneller zu konvergieren scheint als selbst.) Nachdem ich mich einige Zeit gewundert hatte, bemerkte ich, dass der gleiche Effekt auch für und dass ich sogar verstehe warum für diesen Fall. Der Punkt ist, dass, wenn ich genau einen Crank Nicholson-Schritt mache, das Gesamtschema zu einer Trapezregel wird (wenn ).a b ( t , x ) = b 0 = 0 b ( t ) = 0
Wenn ich also als Teil des Diffusionsschritts behandeln würde, würde eine Erhöhung der Anzahl der Crank Nicholson-Schritte (wahrscheinlich) nicht zu einer verringerten Gesamtgenauigkeit führen (wie beobachtet). Dies scheint jedoch den Zweck der Verwendung einer analytischen Lösung für den (nichtlinearen und möglicherweise sehr steifen) Reaktionsteil des Systems zu vereiteln.
Hier ist meine Frage: Gibt es eine bessere Möglichkeit, im Kontext einer Strang-Aufspaltung zu behandeln, als sie entweder als Teil des Reaktionsschritts zu behandeln oder zu behandeln es als Teil des Diffusionsschritts. Ich möchte vermeiden, "gezwungen" zu werden, genau einen Crank Nicholson-Schritt für die Diffusion zu verwenden. (Zum Beispiel in 3D würde ich es vorziehen, die Diffusion mithilfe einer FFT analytisch zu lösen, anstatt Crank Nicholson zu verwenden. Natürlich kann ich FFT auch mit Crank Nicholson kombinieren, es ist also keine so große Sache.)