Besonderer Fehler beim Lösen der Poisson-Gleichung mit einer Methode mit ungleichmäßigem Netz (nur 1D) und endlichem Volumen


9

Ich habe in den letzten Tagen versucht, diesen Fehler zu beheben. Ich habe mich gefragt, ob jemand Ratschläge zum weiteren Vorgehen hat.

Ich löse die Poisson-Gleichung für eine Stufenladungsverteilung (ein häufiges Problem in der Elektrostatik / Halbleiterphysik) auf einem ungleichmäßigen endlichen Volumennetz, bei dem das Unbekannte auf Zellzentren und die Flüsse auf den Zellflächen definiert sind.

0=(ϕx)x+ρ(x)

Das Ladungsprofil (der Quellterm) ist gegeben durch:

ρ(x)={1,if 1x01,if 0x10,otherwise

und die Randbedingungen sind,

ϕ(xL)=0ϕx|xR=0

und die Domäne ist .[10,10]

Ich verwende Code, der entwickelt wurde, um die Advektions-Diffusions-Reaktions-Gleichung zu lösen (ich habe mich selbst geschrieben, siehe meine Notizen hier, http://danieljfarrell.github.io/FVM ). Die Advektions-Diffusions-Reaktions-Gleichung ist ein allgemeinerer Fall der Poisson-Gleichung. In der Tat kann die Poisson-Gleichung wiederhergestellt werden, indem die Advektionsgeschwindigkeit auf Null gesetzt und der Übergangsterm entfernt wird.

Der Code wurde gegen eine Reihe von Situationen für einheitliche, ungleichmäßige und zufällige Gitter getestet und liefert immer eine vernünftige Lösung ( http://danieljfarrell.github.io/FVM/examples.html ) für die Advektions-Diffusions-Reaktions-Gleichung.

Um zu zeigen, wo der Code zusammenbricht, habe ich das folgende Beispiel gemacht. Ich richte ein einheitliches Netz von 20 Zellen ein und mache es dann ungleichmäßig, indem ich eine einzelne Zelle entferne. In der linken Abbildung habe ich Zelle und in der rechten wurde entfernt. Die 9. Zelle deckt den Bereich ab, in dem der Quellterm (dh die Ladung) das Vorzeichen ändert. Der Fehler tritt auf, wenn das Gitter in einem Bereich ungleichmäßig ist, in dem der Reaktionsterm das Vorzeichen ändert . Wie Sie unten sehen können.Ω 9Ω8Ω9

Irgendwelche Ideen, welche Möglichkeit dieses Problem verursachen könnte? Lassen Sie mich wissen, ob weitere Informationen zur Diskretisierung hilfreich wären (ich wollte nicht zu viele Details in diese Frage packen).

Eigenartiger Fehler beim Lösen der Poisson-Gleichung


Können Sie angeben, wie Sie die Dirichlet-Bedingung bei auferlegen und was Sie mit als Anfangsbedingung meinen (ist nicht die Gleichung, die Sie für den stationären Zustand angegeben haben)? x=0ρ=1
Jesse Chan

Wie sieht der Reaktionsbegriff aus?
Januar

Welches Schema verwenden Sie, um die Integrale des Quellterms zu approximieren? Dieses Verhalten kann auch durch eine unzureichende Abtastung der Quelle verursacht werden. (Was wahrscheinlich ist der gleiche Mechanismus in @JLC ‚s Antwort erwähnt.)
Jan

Ich habe die Frage aktualisiert, um die Standardterminologie zu verwenden. Ich habe einen Quellterm ( ), keinen Reaktionsterm, weil wir, wie Sie betont haben, nur den stationären Wert benötigen. Die korrekte räumliche Abhängigkeit von ist nun angegeben (Anfangswert war falsch). ρρ
Boyfarrell

@JLC Die Dirichlet-BCs werden mithilfe eines Ghost-Cell-Ansatzes auferlegt (meine Online-Notizen zu diesem Implementierungsdetail sind veraltet). Hier erfahren
boyfarrell

Antworten:


9

Abgesehen davon ist Ihre Github-Dokumentation fantastisch.

Dies ist nur eine Vermutung von DG-Methoden, die ähnliche Probleme haben können, wenn numerische Flüsse nicht sorgfältig ausgewählt werden (ich denke, FV-Methoden sind eine Teilmenge von DG-Methoden). Wenn Sie die Interpolation von Zellzentren verwenden, um Ihre Flüsse zu definieren, sollte dies der Verwendung des Durchschnitts als numerischer Fluss in DG und der Verwendung einer stückweise konstanten Basis entsprechen. Bei Standard-DG-Methoden für Poisson führt dies zu numerisch nicht eindeutigen Lösungen. Sie können einen nicht trivialen Nullraum für den diskreten Operator erhalten, was meiner Meinung nach Ihre Probleme im zweiten Beispiel verursacht. In diesem DG-Papier finden Sie ihre Theorie dazu von der DG-Seite.

Ich werde versuchen, ein Beispiel für FV zu verspotten, das zeigt, wie dies ins Spiel kommt.

Bearbeiten: Hier ist ein kleines Beispiel dafür, was los ist. Betrachten Sie die Zellen 1-9 und 11-20, in denen . Von der rechten Seite (11-20) haben wir aufgrund der Neumann-Bedingung, die uns aus der Konservierung für diese Zelle sagt, dass . Da der Fluss der Durchschnitt der Zellwerte ist, sagt uns dies, dass über alle diese Zellen konstant ist.ρ(x)=0f(x20)=0f(x19)==f(x11)=0ϕ(x)

Von der linken Seite (1-9) haben wir . Wenn und wir Geisterzellen verwenden, dann ist . Die Konservierung über die nächsten Zellen ergibt, dass (dh konstante Steigung). Beachten Sie jedoch, dass dies eine beliebige Steigung sein kann, die nur konstant ist.f ( - 10 ) = 0 f ( - 10 ) = ϕ 9,5 - ϕ g h o s t = ϕ 9,5f(xi+1)f(xi)=0f(10)=0f(10)=ϕ9.5ϕghost=ϕ9.5f(xi)=f(10)=ϕ9.5

Das Problem tritt in der mittleren Zelle auf. Wie Jan erwähnt hat, unterschätzen Sie das Forcen im zweiten Netz. Dies wirft die Gleichungen an diesem Punkt ab und gibt Ihnen einen Fehler in , der sich dann rückwärts ausbreitet und sowohl die Steigung in der linken Hälfte der Domäne als auch den Wert von .ϕ ( 9,5 )f(10)ϕ(9.5)

Diese Empfindlichkeit gegenüber Fehlern beim Erzwingen ist problematisch - im Gegensatz zu FEM- oder FD-Methoden, die die Dirchlet-Bedingung bei explizit erzwingen , erzwingt FV sie schwach unter Verwendung von Geisterknoten. Intuitiv ist das schwache Auferlegen eines Geisterknotens so, als würde man auch an der linken Grenze eine Neumann-Bedingung festlegen. Wenn Sie zwei Neumann-Bedingungen für ein Diffusionsproblem haben, ist Ihr Problem schlecht gestellt und hat eine nicht eindeutige Lösung (Sie können diesem Problem eine beliebige Konstante hinzufügen und haben immer noch eine Lösung). Sie bekommen das hier nicht ganz auf der diskreten Ebene, aber Sie bekommen ein sehr empfindliches und netzabhängiges Verhalten, wie Sie in Ihren Experimenten sehen.x=10


Durch Experimente kann ich zeigen, dass die FVM-Methode nur dann stabil ist, wenn die Zellen auf beiden Seiten der Diskontinuität (Vorzeichenwechsel) der Quellfunktion gleiche Volumina haben. Würde Ihre Analyse dem zustimmen? Dies bedeutet, dass ich mehr darauf achten muss, ein vernünftiges Raster meiner Probleme zu erstellen, die ich zuvor gemacht habe. Vielleicht sollte ich als nächstes die FEM-Methode lernen?
Boyfarrell

Ein relevanter Artikel, obwohl ich nicht alle Details
befolge

Die FVM-Methode ist in diesem Fall nur dann stabil , wenn das Raster irgendwie an der Quellfunktion ausgerichtet ist. Wenn sich Ihre Quellfunktion ändert, müssen Sie Ihr Raster erneut anpassen. Ich denke nicht, dass die Erzeugung eines vernünftigen Gitters der richtige Ansatz für dieses Problem ist - Sie haben eine instabile Methode.
Jesse Chan

Das ist ein guter Fund. Suli ist ein solider Analytiker. Ich würde sagen, FEM zu lernen könnte Spaß machen, aber FD sollte auch bei elliptischen 1D-Problemen funktionieren. Sie können auch sehen, was FV-Leute tun (möglicherweise ihre Flüsse mit Strafbegriffen erweitern), um Konvergenz für elliptische Probleme 2. Ordnung auf allgemeinen Gittern zu erhalten. Mathematische Volksweisheit besagt normalerweise, dass FV / Upwinded FD für hyperbolische Probleme geeignet ist, während FEM / Central Diff FD für Ellipsentrainer geeignet ist.
Jesse Chan

Ich überarbeite dieses Problem. Wenn ich Ihre Antwort noch einmal lese, muss ich sagen, dass es fantastisch ist! Ich sehe Ihren Standpunkt, dass sich die Methode ändern sollte, da dies die Wurzel des Problems ist (nicht das Raster). Haben Sie Vorschläge oder Dinge, die ich befolgen könnte (die einem Nicht-Experten zugänglich sind), wie Sie den Fluss in diesem Fall besser approximieren können? Dh auf eine Weise, die es stabiler machen könnte. Wenn möglich, würde ich gerne eine bessere FVM für diese Gleichung finden.
Boyfarrell

0

Das erste, was Sie bemerken müssen, sind Ihre Randbedingungen. Da Sie die Steigung und den Wert ändern können, haben Sie weder Dirichlet- noch Neumann-Bedingungen.

Dann ist jede gerade Linie eine Lösung, bei der die rechte Seite Null ist. Du hast diesen Teil.

Ihre Flüsse sind wahrscheinlich abhängig von . Verwenden Sie das richtige wenn Sie eine Zelle entfernen?hhh


1
Nein, das stimmt nicht. Das Problem ist gut gestellt. Für den Fall nur eine Lösung. Es gibt keine andere lineare Funktion, die an einem Punkt Null ist und an einem zweiten Punkt eine Steigung von Null aufweist. ϕ 0ρ0ϕ0
Jan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.