FDTD-Tutorial: Ausbreitung von grünem Licht in einem freien Raum
1. Überblick: Was Sie simulieren werden.
Dieses Tutorial stellt die Finite-Differenzen-Zeitbereichs-Methode (FDTD) in OghmaNano anhand des einfachsten physikalischen Systems vor: die Ausbreitung elektromagnetischer Wellen im freien Raum. Eine monochromatische Quelle für grünes Licht mit einer Wellenlänge von 530 nm wird in einen leeren Berechnungsbereich eingebracht. Es gibt keine Wellenleiter, keine Resonatoren und keine anderen Materialien als Vakuum. Ziel ist es nicht, ein bestimmtes Bauelement zu demonstrieren, sondern die zugrunde liegende numerische Methode zu veranschaulichen.
Das FDTD-Modul löst die Maxwell-Gleichungen in der Zeitdomäne direkt auf einem diskreten räumlichen Gitter. Bei jedem Zeitschritt werden die elektrischen und magnetischen Felder im gesamten Gitter aktualisiert. Da der Algorithmus hochgradig parallelisierbar ist, führt OghmaNano ihn mithilfe von OpenCL aus und nutzt automatisch Ihre GPU, falls eine verfügbar ist. Dieses Tutorial dient daher sowohl als physikalisches Demonstrationsbeispiel als auch als erste Einführung in das GPU-beschleunigte FDTD-Backend.
Am Ende dieser Seite haben Sie eine Simulation erstellt, die Größe der Welt und das räumliche Netz überprüft, den Solver ausgeführt und visualisiert, wie sich grünes Licht in drei Dimensionen im Raum ausbreitet.
2. Erstellung der Simulation für den freien Raum
Öffnen Sie das Fenster „Neue Simulation“ und wählen Sie die Kategorie „FDTD-Beispiele“ aus. Wählen Sie dann das Beispiel mit dem Namen „Freier Raum“. Die beiden Auswahldialogfenster sind unten dargestellt.
Nach dem Laden erscheint das Hauptfenster von OghmaNano mit einer einfachen, dreidimensionalen Szene. Die Simulationsumgebung ist zunächst leer, mit Ausnahme einer Quelle und eines Detektorbereichs. Klicken Sie mit der rechten Maustaste in die 3D-Ansicht und aktivieren Sie die Option „Weltbegrenzung anzeigen“. Es erscheint ein roter Rahmen, der die Grenzen des FDTD-Bereichs definiert.
Die globalen Abmessungen können Sie einsehen, indem Sie auf der linken Werkzeugleiste auf die Schaltfläche „Substratgröße (xz)“ klicken. Dadurch wird der Editor für die Weltgröße geöffnet, in dem die physische Größe des Simulationsbereichs in Mikrometern definiert wird. Für dieses Tutorial müssen Sie nichts ändern; der Bereich ist bereits so konfiguriert, dass er mehrere Wellenlängen von grünem Licht bequem aufnehmen kann.
3. Überprüfung der optischen Einstellungen und des Gitters
Öffnen Sie als Nächstes die Symbolleiste „Optik“ oben im Fenster.
Klicken Sie auf „Optisches Netz“, um den Netzeditor zu öffnen.
Der Netzeditor zeigt an, wie viele Gitterpunkte in jeder räumlichen Richtung verwendet werden. Diese bestimmen die räumliche Auflösung der FDTD-Berechnung. Der Wellenlängenbereich ist auf 531 nm bis 532 nm eingestellt, was dem grünen Licht entspricht. In diesem Beispiel werden die im Netzeditor angezeigten Dickenparameter automatisch an die Weltgröße angepasst und können ignoriert werden. Entscheidend ist, dass das räumliche Gitter ausreichend fein ist, um die elektromagnetische Wellenlänge aufzulösen.
4. Ausführen des GPU-beschleunigten FDTD-Solvers
Starten Sie die Simulation, indem Sie auf die Schaltfläche „Simulation starten“ klicken oder die Taste F9 drücken. Im Tab „Terminal“ werden Informationen zum Solver angezeigt.
snapshots/, das zeitaufgelöste Felddaten enthält.Beachten Sie in der Terminalausgabe den grünen Text, der „Suche nach OpenCL-Geräten“ anzeigt. In dieser Phase durchsucht das Programm Ihr System nach kompatiblen GPUs. Auf Systemen mit einer unterstützten Grafikkarte wählt der Solver die GPU aus und führt die Zeitschleife dort aus. In dem gezeigten Beispiel wird die Berechnung auf einer CPU ausgeführt, die ein OpenCL-Gerät emuliert, aber auf einem modernen Arbeitsplatzrechner wird dieselbe Simulation automatisch den Grafikprozessor zur Beschleunigung nutzen.
5. Überprüfung der Ausgabedaten und der Aufnahmen vor Ort
Nach Abschluss des Vorgangs wechseln Sie zum Reiter „Ausgabe“. Dort werden die erstellten Dateien aufgelistet.
Doppelklicken Sie auf das Verzeichnis der Momentaufnahmen, um die Momentaufnahmen-Ansicht zu öffnen. Wählen Sie in der Dropdown-Liste am unteren Rand des Fensters die Leistungsdichte aus. Das farbige Feld stellt die momentane elektromagnetische Energiedichte dar. Verwenden Sie den horizontalen Schieberegler, um sich in der Zeit vorwärts und rückwärts zu bewegen, und die räumlichen Schieberegler, um verschiedene Querschnitte des Bereichs zu untersuchen. Auf einigen Computern, insbesondere bei der Verarbeitung großer Netze, kann es einen kurzen Moment dauern, bis die Ansicht reagiert, da sie jeden Datensatz lädt.
Wenn Sie sich durch die Zeit bewegen, werden Sie beobachten, wie sich die Wellenfront über den gesamten Bereich ausbreitet. In einem freien Raum, ohne Begrenzungen oder Strukturen, ist die Ausbreitung gleichmäßig und symmetrisch und wird nur durch die absorbierenden Randbedingungen an den Rändern des Berechnungsbereichs begrenzt.
6. Anzeige der Detektorleistung
Das in dem Hauptfenster sichtbare, violette Raster stellt eine Detektorebene dar, die innerhalb des Simulationsbereichs platziert ist. Doppelklicken Sie in der Registerkarte „Ausgabe“ auf Detektor 0, um die aufgezeichnete Leistungskurve anzuzeigen.
Die resultierende Grafik zeigt die elektromagnetische Leistung, die diese Ebene durchquert, in Abhängigkeit von der Zeit. Anfangs erfasst der Detektor kein Signal. Wenn die Wellenfront die Ebene erreicht, steigt die gemessene Leistung an und stabilisiert sich dann entsprechend dem zeitlichen Verlauf der Quelle. Diese einfache Konfiguration ermöglicht es, die visuelle Ausbreitung der Welle in der Momentaufnahme einfach mit einer quantitativen Leistungsmessung in Verbindung zu bringen.
Sie haben nun Ihre erste FDTD-Simulation in OghmaNano abgeschlossen. Obwohl das System keine Materialien oder Bauelemente enthielt, demonstrierte es die vollständige numerische Prozesskette: Definition der Simulationsumgebung, Erstellung des Gitters, Auswahl der GPU, Zeitschrittberechnung, Feldvisualisierung und Auswertung der Detektordaten. In den folgenden Tutorials werden diese Werkzeuge auf strukturierte photonische und optoelektronische Systeme angewendet.
7. Beschleunigung der Simulation durch Umstellung auf 2D (XZ).
Oftmals sind vollständig dreidimensionale Simulationen nicht erforderlich, um Strukturen und Geräte zu verstehen, insbesondere wenn die physikalischen Eigenschaften im Wesentlichen in einer Richtung unverändert bleiben. In solchen Fällen kann man durch die Reduzierung des Problems auf zwei Dimensionen eine deutliche Beschleunigung erzielen. Im Fall der Freiraum-Simulation führt der Wechsel von einer 3D-Umgebung zu einer XZ-Simulation dazu, dass die gesamte Y-Dimension aus dem Berechnungsraster entfernt wird. Das Ergebnis ist eine geringere Anzahl von Netzpunkten, weniger Felddaten und deutlich kürzere Berechnungszeiten – in der Regel so schnell, dass wiederholte Berechnungen praktisch interaktiv werden.
Dazu navigieren Sie zurück zum Bereich „Optische Elemente“, öffnen „Optisches Netz“ und wählen die in ?? gezeigte 2D-Netzkonfiguration aus. Die wichtigste Änderung besteht darin, dass die Y-Achse deaktiviert wird, sodass die Simulation zu einer Berechnung in der XZ-Ebene wird.
Nachdem das Netz auf zwei Dimensionen reduziert wurde, führen Sie die Simulation erneut aus. Sie werden sofort feststellen, dass der Solver im Vergleich zum 3D-Fall nahezu sofort das Ergebnis liefert. Öffnen Sie erneut das Verzeichnis snapshots/ und blättern Sie in der Momentaufnahme-Ansicht (??) durch die Zeit. Da der Datensatz viel kleiner ist, lädt die Ansicht nicht nur schneller, sondern reagiert auch schneller, wenn Sie den Zeitregler verschieben oder die Steuerelemente für den räumlichen Querschnitt bewegen.
Ein wichtiger Punkt ist, dass die wahrgenommene Geschmeidigkeit der Animation variieren kann. Bei der 2D-Simulation schreitet die Berechnung sehr schnell voran, und es werden in der Regel weniger Einzelbilder gespeichert. Wenn man sich die Animation dann in schneller Vorwärtsbewegung ansieht, kann die Entwicklung etwas ruckartig wirken – einfach weil zwischen den einzelnen Zeitpunkten weniger Aufnahmen gespeichert wurden. Wenn Sie die Ausbreitung der Welle in feineren zeitlichen Details verfolgen möchten, erhöhen Sie die Menge der auf die Festplatte geschriebenen Daten.
Gehen Sie dazu erneut zum Reiter „Optisch“, klicken Sie auf die Schaltfläche „FDTD-Simulation“, um das Konfigurationsfenster für die FDTD-Simulation zu öffnen, und ändern Sie die Einstellung „Ausgabeausführlichkeit“ von „Alle 8. Schritte auf die Festplatte schreiben“ zu „Jeden einzelnen Zeitschritt auf die Festplatte schreiben (??)“. Dadurch wird bei jedem einzelnen Zeitschritt ein Schnappschuss erstellt. Wenn Sie den Schnappschuss-Viewer erneut öffnen, können Sie die Ausbreitung der Welle im Laufe der Zeit sehr genau verfolgen, wobei während der Wiedergabe und beim Durchlaufen der Schnappschüsse eine viel feinere zeitliche Auflösung zur Verfügung steht.