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.
E(x,y) als wie gesagt die gesuchte Funktion. n(x,y) ist das Brechungsindexprofil des Wellenleiters.
Hier mal ein Beispiel:
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.
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:
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:
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?