LabVIEWForum.de
Helmholtz Gleichung numerisch lösen und darstellen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Helmholtz Gleichung numerisch lösen und darstellen (/Thread-Helmholtz-Gleichung-numerisch-loesen-und-darstellen)



Helmholtz Gleichung numerisch lösen und darstellen - horscht(i) - 01.02.2012 12:19

Hallo LabView-Gemeinde,

ich möchte gerne die optischen Moden von einfachen 1D und 2D Schichtwellenleitern ausrechnen. Ich habe bereits einen mehr oder weniger arbeitenden Mathematica-Code für die 1D-Variante.
In LabView wäre das aber alles angenehmer, da dies hier standardmäßig eingesetzt wird und für jeden verfüg- und anwendbar ist.

Insgesamt muss man eigentlich "nur" die 1D und 2D Helmholtz-Gleichung für die Verteilung des elektrischen Feldes lösen und hierfür bietet LabView ja bereits eine ganze Palette an PDE-Tools, die einem unschöne Dinge wie Randbedingungen und Diskretisierung abnehmen. Mit denen komme ich aber gerade gar nicht klar.

Kennt jemand ein paar Code-Beispiele oder Tutorials, die den Umgang mit den PDE-Tools verdeutlichen und erklären?
Damit wäre mir schonmal geholfen.

Am Ende sollte dann ein kleines Programm stehen, in dem man - grafisch oder per eingelesener Textdatei - ein Brechungsindexprofil vorgibt und das dann daraus die Modenverteilung berechnet und grafisch darstellt.

Schonmal vielen Dank für eure Hilfe!


RE: Helmholtz Gleichung numerisch lösen und darstellen - Hook1986 - 01.02.2012 12:37

Hallo horscht,

Beispiel zum Umgang mit den PDE-Tools gibt es in der ausführlichen Hilfe. Da findest du am unteren Ende einige Beispiele, die dir wahrscheinlich beim Umgang damit helfen werden.

MfG Carsten

Edit:
labview\examples\math\PDE.llb

In dem einen Beispiel steht auch etwas von 2D Helmholtz drin. Eventuell ist es ja genau dein Problem ;-)


RE: Helmholtz Gleichung numerisch lösen und darstellen - horscht(i) - 01.02.2012 14:16

(01.02.2012 12:37 )Hook1986 schrieb:  Hallo horscht,

Beispiel zum Umgang mit den PDE-Tools gibt es in der ausführlichen Hilfe. Da findest du am unteren Ende einige Beispiele, die dir wahrscheinlich beim Umgang damit helfen werden.

MfG Carsten

Edit:
labview\examples\math\PDE.llb

In dem einen Beispiel steht auch etwas von 2D Helmholtz drin. Eventuell ist es ja genau dein Problem ;-)

Hier mal die Helmholtz-Gleichung, wie sie in "Define Equation" hinterlegt ist:
[attachment=38745]
In meinem Fall gilt: F(x,y)=0, k^2=1 und a=(w*n(x,y)/c)^2-b^2
n(x,y) ist das Brechungsindexprofil, was ich in jedem Punkt des numerischen Gitters definieren muss. Allerdings muss der Koeffizient a konstant sein, was er bei mir definitiv nicht ist. Keines der Beispiele arbeitet mit einem nicht-konstanten Koeffizienten, soweit ich das überblicke. Daher helfen dir mir leider nicht weiter.
Kann ich die PDE Palette so überhaupt einsetzen?


RE: Helmholtz Gleichung numerisch lösen und darstellen - horscht(i) - 21.02.2012 11:21

Hi Gemeinde,

ich recycle den Thread mal in der Hoffnung, dass ihn nochmal jemand anklickt. Ich hole mal ein wenig allgemeiner aus, um die Problemstellung klar zu machen.
Mittlerweile habe ich eine lauffähige Version mit Mathematica geschrieben, die ich nun gerne möglichst einfach in LabView übersetzen möchte. Es gibt einfach viel bessere Möglichkeiten eine komfortable GUI zusammenzubauen, was Mathematica einfach nicht hergibt.

Konkret geht es um Lichtwellenleiter und die geführten Moden innerhalb des Wellenleiters. Dazu muss man, wie oben schon beschrieben, die Helmholzt-DGL lösen. Die gesuchte Funktion ist dabei die Komponente des elektrischen Feldes E entlang der Wellenleiterachse.
[attachment=38743]
E(x,y) als wie gesagt die gesuchte Funktion. n(x,y) ist das Brechungsindexprofil des Wellenleiters.
Hier mal ein Beispiel:
[attachment=38740]
Das ist ein Querschnitt senkrecht zur Wellenleiterachse, die senkrecht auf der Bildebene steht
Die eingebauten Labview-Solver können diese Gleichung nicht lösen, da sie mit nicht-konstanten Koeffizienten nicht umgehen können. n(x,y) ist aber so ein nicht-konstanter Koeffizient.
Zur Lösung entwickelt man die gesuchte Funktion E(x,y) in ein orthonormiertes System von Basisfunktionen und überführt somit die Gleichung in ein Eigenwertproblem.
[attachment=38744]

Man bekommt dann eine ganze Reihe von Eigenwerten, die möglichen Lösungen für beta entsprechen. Die Komponenten der zugehörigen Eigenvektoren entsprechen dann den Entwicklungskoeffizienten c_n in der obigen Summe. So kann man sich also für jede Mode (jeden Eigenwert) die zugehörige Eigenfunktion (die c_n) zusammensetzen und plotten. Labview hat für die Eigenwert/Eigenvektor Lösung eingebaute Solver, die wohl auch recht schnell arbeiten.
Hier mal ein Beispiel für die erste Eigenlösung mit dem obigen Profil:
[attachment=38741]
Das ist die Intensitätsverteilung des Lichts im Wellenleiter.

Ich möchte nun aber möglichst unkompliziert die Matrix zusammensetzen.
Die Matrixeinträge sehen in etwa so aus:
[attachment=38742]
Ist nicht ganz korrekt, aber der Einfachheit halber...
Ich möchte jetzt aus einer Textdatei die Werte von n(x,y) einlesen. Ich hätte die sogar schon als tab-separierte Datei vorliegen.
Dann die entsprechenden Matrixeinträge berechnen und so meine Matrix zusammensetzen. Ob ich die Integrale dann numerisch oder analytisch oder wie auch immer auswerte, ist erstmal egal. Später wäre natürlich ein grafisches Interface wünschenswert, mit dem man das Brechungsindexprofil "zeichnen" kann und dann daraus die Matrix baut.
Tjo, dann ist es eben nur noch Eigenwerte/Eigenvektoren berechnen lassen, die Lösungen daraus zusammenbauen und plotten.

Soweit so gut. Nun lese ich die Textdatei über ein Spreadsheet ein und hier gibt es schon Probleme.
die Werte sind nämlich komplex und in der Form "3,14+0,000253*I" abgespeichert. Das große "I" steht für die imaginäre Einheit. LabView ließt konsequent einfach 3,000 ein fertig...
Das wäre so die erste Hürde. Jemand eine Idee?


RE: Helmholtz Gleichung numerisch lösen und darstellen - Ome - 21.02.2012 12:50

Hallo,

das Problem mit den Komplexenzahlen lässt sich lösen in dem du die Werte als String einließt und dann den String umwandelst. Ist wahrscheinlich nicht die eleganteste Lösung, aber es es ist erst mal eine.

Gruß Ome


RE: Helmholtz Gleichung numerisch lösen und darstellen - horscht(i) - 21.02.2012 17:09

Ok, das passt so. Die Datei lese ich über ein String-Spreadsheet ein, zerlege die Elemente in Real- und Imaginärteil und fülle die Matrix damit auf. Vielen Dank schonmal soweit!

Wäre natürlich schöner, wenn man direkt beim Einlesen das richtige Format vorliegen hätte. Soweit ich das überblicke, wird das aber mit einem Spreadsheet nicht gehen. Ich teste mal hübsch weiter.