Ich verstehe das unterschiedliche Verhalten der Advektions-Diffusions-Gleichung nicht, wenn ich unterschiedliche Randbedingungen anwende. Meine Motivation ist die Simulation einer realen physikalischen Größe (Teilchendichte) unter Diffusion und Advektion. Die Teilchendichte sollte im Inneren erhalten bleiben, es sei denn, sie fließt aus den Rändern heraus. Wenn ich nach dieser Logik Neumann-Randbedingungen wie (auf der linken und rechten Seite) erzwinge , sollte das System "geschlossen" sein, d. Wenn der Fluss an der Grenze Null ist, können keine Partikel entweichen.
Für alle folgenden Simulationen habe ich die Crank-Nicolson-Diskretisierung auf die Advektions-Diffusions-Gleichung angewendet und alle Simulationen haben Randbedingungen. Für die erste und letzte Zeile der Matrix (die Randbedingungszeilen) erlaube ich jedoch, dass unabhängig vom inneren Wert geändert wird. Dadurch können die Endpunkte vollständig implizit sein.β
Im Folgenden werden 4 verschiedene Konfigurationen besprochen, von denen nur eine den Erwartungen entspricht. Am Ende diskutiere ich meine Implementierung.
Diffusionslimit
Hier werden die Advektionsterme ausgeschaltet, indem die Geschwindigkeit auf Null gesetzt wird.
Nur Diffusion mit = 0,5 (Crank-Niscolson) an allen Punkten
Die Menge bleibt nicht erhalten, wie die Verringerung der Impulsfläche zeigt.
Nur Diffusion mit = 0,5 (Crank-Niscolson) an den inneren Punkten und = 1 (vollständig implizit) an den Grenzen
Durch die Verwendung einer vollständig impliziten Gleichung an den Grenzen erreiche ich das, was ich erwarte: Keine Partikel entweichen . Sie können dies daran erkennen, dass die Fläche als Partikel diffus konserviert wird. Warum sollte die Wahl von an den Grenzpunkten die Physik der Situation beeinflussen? Ist das ein Bug oder erwartet?
Verbreitung und Beratung
Wenn der Advektionsbegriff eingeschlossen ist, scheint der Wert von an den Grenzen die Lösung nicht zu beeinflussen. In allen Fällen, in denen die Grenzen offen zu sein scheinen, können Partikel den Grenzen entkommen. Warum ist das so?
Advektion und Diffusion mit = 0,5 (Crank-Niscolson) an allen Punkten
Advektion und Diffusion mit = 0,5 (Crank-Niscolson) an inneren Punkten und = 1 (vollständig implizit) an den Grenzen
Implementierung der Advektions-Diffusions-Gleichung
Ausgehend von der Advektions-Diffusions-Gleichung
Schreiben mit Crank-Nicolson gibt,
Beachten Sie, dass = 0,5 für Crank-Nicolson, = 1 für vollständig implizite und = 0 für vollständig explizite.
Um die Notation zu vereinfachen, nehmen wir die Ersetzung vor,
und verschiebe den bekannten Wert der Zeitableitung nach rechts,
Die Berücksichtigung der Terme ergibt,
die wir in Matrixform wie schreiben kann , wo,
Neumann-Randbedingungen anwenden
NB arbeitet die Ableitung erneut ab. Ich glaube, ich habe den Fehler entdeckt. Ich habe beim Schreiben der endlichen Differenz der Randbedingung ein vollständig implizites Schema ( = 1) angenommen. Wenn Sie hier ein Crank-Niscolson-Schema annehmen, wird die Komplexität zu groß und ich könnte die resultierenden Gleichungen nicht lösen, um die Knoten zu beseitigen, die außerhalb der Domäne liegen. Es scheint jedoch möglich, dass es zwei Gleichungen mit zwei Unbekannten gibt, aber ich konnte es nicht schaffen. Dies erklärt wahrscheinlich den Unterschied zwischen dem ersten und dem zweiten Diagramm oben. Ich denke, wir können daraus schließen, dass nur die Diagramme mit = 0.5 an den Grenzpunkten gültig sind.
Unter der Annahme, dass der Fluss auf der linken Seite bekannt ist (unter Annahme einer vollständig impliziten Form),
Schreiben Sie dies als zentrierte Differenz gibt,
daher ist
Beachten Sie, dass dadurch ein Knoten der sich außerhalb der Domäne des Problems befindet. Dieser Knoten kann mit einer zweiten Gleichung eliminiert werden. Wir können den Knoten schreiben als
Einsetzen des Wertes von aus der Randbedingung ergibt folgendes Ergebnis für die Zeile = 1,
Durch Ausführen des gleichen Verfahrens für die letzte Reihe (bei = ) erhält man
Wenn Sie die Randzeilen implizit machen (setze = 1), erhalten Sie:
Daher mit Neumann - Randbedingungen können wir die Matrixgleichung schreiben, ,
woher,
Mein aktuelles Verständnis
Ich denke, der Unterschied zwischen dem ersten und dem zweiten Plot erklärt sich aus dem oben beschriebenen Fehler.
In Bezug auf die Erhaltung der physikalischen Größe. Ich glaube, die Ursache liegt darin, dass, wie hier ausgeführt , die Advektionsgleichung in der von mir geschriebenen Form keine Ausbreitung in der umgekehrten Richtung zulässt, sodass die Welle auch bei Bedingungen mit null Fluss nur durchläuft . Meine anfängliche Vorstellung von der Erhaltung galt nur, wenn der Advektionszeitraum Null ist (dies ist die Lösung in Parzelle Nr. 2, in der die Fläche erhalten bleibt).Auch bei Neumann-Nullfluss- Randbedingungen die Masse das System noch verlassen, weil die korrekten Randbedingungen in diesem Fall Robin- Randbedingungen sind, bei denen der Gesamtfluss ist angegeben ist . Darüber hinaus gibt die Neunmann-Bedingung an, dass die Masse die Domäne nicht durch Diffusion verlassen kann , und sagt nichts über die Advektion aus. Wir hören im Wesentlichen geschlossene Randbedingungen für die Diffusion und offene Randbedingungen für die Advektion. Weitere Informationen finden Sie in der Antwort hier, Implementierung der Randbedingung für den Gradienten Null in der Advektions-Diffusions-Gleichung.
Würdest du zustimmen?