Numerisches Lösen der 2D-Poisson-Gleichung durch FFT, richtige Einheiten

Die 2D-Poisson-Gleichung lautet:

(1)

D 2 φ ( X , j ) D X 2 + D 2 φ ( X , j ) D j 2 = ϱ ( X , j ) ϵ 0 ϵ

Und in k -Raum ist es in Form von:

(2)

( k X 2 + k j 2 ) ϕ ( k X , k j ) = ρ ( k X , k j ) ϵ 0 ϵ .

Um numerisch zu lösen, verwende ich komplexe FFT (FFTW-Bibliothek in C). Für Fläche der physikalischen Größe L und Gitter der Größe N (Gitterkonst. h=L/N), diskrete Koordinaten und periodische Grenzen habe ich:

(3)

ρ [ k X , k j ] = 1 N 2 X = 0 N 1 j = 0 N 1 ϱ [ X , j ] e J 2 π ( X k X + j k j ) / N

Ich kann beide Seiten mit multiplizieren 1 ϵ ϵ 0 , dann teilen ρ [ k X , k j ] von ( k X 2 + k j 2 ) an jedem Punkt (unter Berücksichtigung, dass der FFT-Ausgang symmetrisch ist k X = N/2 und k j = N/2) Ich verstehe ϕ [ k X , k j ] . Durch inverse FFT:

(4)

φ [ X , j ] = k X = 0 N 1 k j = 0 N 1 ϕ [ k X , k j ] e J 2 π ( X k X + j k j ) / N
Ich bekomme 2D-Potenzial, das von der Ladungsdichte herrührt ϱ . Aber mir fehlt ein Skalierungsfaktor in den obigen Definitionen und ich kann das nicht herausfinden. Kurz gesagt, was zu tun ist, um die SI-Einheiten in den obigen Definitionen so anzupassen, dass sie passen, sowohl in Bezug auf die Fourier-Transformation als auch auf das tatsächliche Ergebnis φ . Mein Hauptanliegen ist, dass, wenn ich die Testladung der Dichte eingebe ϱ ( X , j ) = e H 2 δ [ X , j ] in Einheiten von C / M 2 in der Mitte des Bereichs mit L = 10 6 M Ich erwarte eine Ausgabe ähnlich dem Coulomb-Potential 1 R e 4 π ϵ ϵ 0 , aber die Lösung unterscheidet sich in vielen Ordnungen. Warum?

Also denke ich, dass es ein Problem mit der Division durch k sein könnte. Was sollte k für diese Definition der diskreten Transformation sein? Zum Beispiel k = 2 π H / L oder k = 2 π X / N

Wie sind Sie auf die k-Raum-Gleichung gekommen? Wenn ich mich nicht sehr irre, wenn Sie die erste Gleichung Fourier-transformieren, die ϵ s sollen nicht fallen, und die linke Seite soll ein Minuszeichen bekommen.
Mein Fehler Ich habe es geändert und einige zusätzliche Kommentare hinzugefügt.
Ich denke immer noch, das Vorzeichen von Gl. (2) könnte falsch sein. Beachten Sie auch, dass FFTW die inverse Transformation nicht normalisiert (die meisten FFTs tun dies, aber FFTW ist wirklich auf Leistung optimiert, daher muss dies manuell durchgeführt werden).
Ja, ich normalisiere manuell in (3), bezüglich des Vorzeichens haben Sie wahrscheinlich Recht, aber wird dies die Reihenfolge der Lösung ändern? Ich denke nur das Zeichen. Das Vorzeichen sollte eine Frage der Polarität für positive und negative e-Ladung sein, die ich zu Beginn der Berechnung angenommen habe.
Ich habe es einmal geschafft, FFTW-Dinge herauszufinden, und verdammt, es war langweilig. Beachten Sie, dass hier r2c und c2r verwendet werden. gitlab.com/askhl/libvdwxc/blob/master/src/vdw_include.c#L85 ^ Zeilen 85-101 finden heraus, was k an einem bestimmten FFT-Punkt ist. Die reziproke Zelle wird hier berechnet: gitlab.com/askhl/libvdwxc/blob/master/src/vdw_core.c#L182

Antworten (2)

Ok ich glaube ich habe das Problem gelöst. Also, um die Dichte-FFT durch zu teilen k 2 Ich brauche tatsächliche Werte von k In k -Platz für mein System. FFTW ordnet das Ergebnis der Transformation in sogenannter "In-Order"-Ausgabe an, dh im ersten Quadranten der FFT entspricht das erste Pixel der DC-Frequenz und das nächste Pixel k / L Frequenz ( k aus 0 Zu N 1 ) Wo L ist die Länge des gesamten Systems. Kleinste Wellenlänge des Systems ist H = L / N , Dann 1 / H ist höchste Frequenz. So k X in obigen Gleichungen geändert werden sollte 2 π k / L . Die Koordinate k sollte auch davon abhängen, in welchem ​​Quadranten der Ausgabe fft wir uns befinden, für einen symmetrischen Quadranten sollten wir verwenden N k anstatt k . Wahrscheinlich ist es das.

Ersatz

φ ( X , j ) = D X D j ϕ ( k X , k j ) e ich k X X + ich k j j ,     ϱ ( X , j ) = D X D j ρ ( k X , k j ) e ich k X X + ich k j j
in die erste Gleichung und dies sollte sofort die gewünschte Gleichung ergeben. Beachten Sie auch, nur für mögliche zukünftige Zwecke
D X e ich k X = 2 π δ ( k )
(Siehe hier zur Diskussion.)

Ich dachte, das führt zu meinen Gleichungen, nicht wahr?
Ich habe v1 Ihrer Frage so verstanden, wie Sie die zweite Gleichung erhalten und ob Sie alle Faktoren von erhalten haben 2 π und was nicht stimmt. Wenn Sie das nicht wollten, ignorieren Sie diese Antwort.
Vielleicht war ich in der 1. Version der Frage nicht präzise genug, ich werde den 4pi ^ 2-Faktor zur Gleichung hinzufügen. Aber mein Problem ist damit nicht gelöst. Danke trotzdem für die Antwort.