Der Schritt-Editor: periodische Platzierung von Objekten in OghmaNano.
1. Einleitung
Viele photonische und elektronische Bauelemente weisen von Natur aus eine periodische Struktur auf. Ein DFB-Gitter (verteiltes Rückkopplungs-Gitter) erfordert ein präzise angeordnetes Array aus Rillen oder Schlitzen. Ein photonischer Kristall besteht aus einem regelmäßigen Gitter aus dielektrischen Objekten. Eine plasmonische Metamaterialoberfläche besteht aus wiederholten Resonatorelementen in einem Abstand, der kleiner als die Wellenlänge ist. Das einzelne Erstellen dieser Strukturen wäre unpraktisch. Daher bietet OghmaNano einen Schritt-Editor an, der ein einzelnes Objekt verwendet und automatisch Kopien davon an den angegebenen Positionen im dreidimensionalen Raum generiert.
Eine wichtige Eigenschaft dieses Systems ist, dass jede Kopie die gleichen optischen und elektrischen Parameter wie das Original aufweist. Die Kopien sind keine unabhängigen Objekte – sie bilden eine Gruppe exakter Repliken, die alle die Materialeigenschaften, Schichteigenschaften und optischen Konstanten des ursprünglichen Objekts übernehmen. Dadurch lässt sich die gesamte periodische Struktur einfach durch Bearbeiten nur des Originals verändern.
Der Schritt-Editor bietet drei Modi mit zunehmender Komplexität: einen einfachen Schritt-Modus für einfache, gleichmäßige Punktanordnungen, einen Kristall-Modus für durch primitive Gittervektoren definierte Strukturen und einen Lua-Skript-Modus für völlig beliebige Punktverteilungen.
2. Zugriff auf den Schritt-Editor
Um den Schritt-Editor aufzurufen, öffnen Sie zunächst das Hauptfenster der OghmaNano-Simulation (??). Klicken Sie mit der rechten Maustaste auf das Objekt, das Sie replizieren möchten, und wählen Sie im Kontextmenü die Option „Objekt bearbeiten“ aus. Dadurch wird der Objekt-Editor geöffnet, wie in ?? dargestellt.
Öffnen Sie den Objekt-Editor und suchen Sie die Zeile „Schritte“. In dieser Zeile werden die aktuellen Schrittparameter angezeigt – die Verschiebung (dx, dy, dz) zwischen den Kopien und die Anzahl der Kopien (nx, ny, nz) in jeder Richtung. Klicken Sie auf die Schaltfläche „Bearbeiten“ (dargestellt durch drei Punkte) am rechten Ende der Zeile „Schritte“, um das Fenster des Schritt-Editors zu öffnen.
3. Grundlegender Schrittmodus
Standardmäßig öffnet sich der Schritt-Editor im einfachen Schrittmodus, wie in ?? dargestellt. Dieser Modus ist die einfachste Methode, um ein 1D-, 2D- oder 3D-Array von Objekten zu erstellen. Er verwendet einen einzelnen Schrittvektor (dx, dy, dz) und wiederholt das Objekt entlang jeder Achse entsprechend oft. Die Felder sind:
- Schrittweite dx, dy, dz – die Verschiebung zwischen aufeinanderfolgenden Kopien in jeder Richtung.
- Anzahl der Objekte x, y, z – die Anzahl der Kopien, die entlang jeder Achse platziert werden sollen.
Um beispielsweise ein eindimensionales Gitter mit 10 Elementen zu erstellen, die entlang der z-Achse in einem Abstand von 209 nm angeordnet sind, setzen Sie dz = 209 nm und nz = 10. Lassen Sie dx und dy auf Null. Dies ist die in ?? dargestellte Konfiguration, die einer einfachen DFB-Gitterperiode entspricht.
add_point() platziert. Klicken Sie auf „Aktualisieren“, um die 3D-Ansicht zu aktualisieren.4. Kristallgitter-Modus
Für Strukturen mit nicht-orthogonaler oder nicht-uniformer Periodizität klicken Sie in der Symbolleiste des Schritteditors auf die Schaltfläche „Kristall“, um in den Kristallmodus zu wechseln (??). In diesem Modus wird die periodische Anordnung mithilfe von drei primitiven Gittervektoren a1, a2 und a3 definiert – das gleiche formale System, das in der Kristallographie zur Beschreibung eines Bravais-Gitters verwendet wird.
Die Position jedes Objekts wird wie folgt berechnet:
\[ \mathbf{r}_{ijk} = \mathbf{r}_0 + i\,\mathbf{a}_1 + j\,\mathbf{a}_2 + k\,\mathbf{a}_3 \]
wobei i, j und k ganzzahlige Indizes sind, die jeweils von 0 bis nx−1, ny−1 bzw. nz−1 laufen, und r₀ der Ursprung ist. Durch die geeignete Wahl von a1, a2 und a3 kann jede Bravais-Gitterstruktur aufgebaut werden – einfaches kubisches Gitter, flächenzentriertes kubisches Gitter, raumzentriertes kubisches Gitter, hexagonales Gitter oder eine beliebige kundenspezifische, nicht-orthogonale Anordnung.
5. Lua-Skriptmodus
Für völlig beliebige Punktverteilungen – Spiralen, Helices, Quasikristalle oder jede andere Geometrie, die nicht als einfaches Gitter dargestellt werden kann – bietet der Schritt-Editor eine Lua-Skriptschnittstelle, die durch Klicken auf die Schaltfläche „Lua-Skript“ (??) aufgerufen werden kann.
In diesem Zusammenhang stehen zwei integrierte Funktionen zur Verfügung:
clear_points()– löscht alle zuvor definierten Punkte.add_point(x, y, z)– platziert eine Kopie des Objekts an der Position (x, y, z) in Metern.
Zwischen diesen Aufrufen kann beliebiger gültiger Lua-Code verwendet werden, einschließlich Schleifen, bedingter Anweisungen, trigonometrischer Funktionen und der Erzeugung von Zufallszahlen über math.random(). Nachdem Sie das Skript bearbeitet haben, klicken Sie auf „Aktualisieren“, um die Punktverteilung neu zu generieren und die 3D-Ansicht zu aktualisieren.
Ein einfaches Beispiel – das Anordnen von Objekten in gleichmäßigen Abständen entlang der z-Achse, wobei jeder Position eine geringe, zufällige Rauheit hinzugefügt wird – ist unten dargestellt. Dies ist nützlich für die Modellierung von Fertigungsfehlern in Gitterstrukturen:
clear_points()
N = 14
lambda = 240e-9
roughness = 4e-9 -- set to 0, 1e-9, 2e-9, 5e-9, etc.
z = 0.0
for n = 1, N do
for i = 1, 10 do
add_point(0.0, 0.0, z + (math.random() * 2.0 - 1.0) * roughness)
z = z + lambda
end
end
6. Beispiel: hexagonales Gitter
Ein praktisches Beispiel für den Kristallmodus ist der Aufbau eines hexagonalen Gitters, wie es beispielsweise für einen photonischen Kristall oder ein hexagonal angeordnetes Array von Nanostäben verwendet werden könnte. Die Konfiguration des Gittereditors ist in ?? dargestellt, und die resultierende 3D-Struktur ist in ?? zu sehen.
Die wichtigsten Werte sind a2_x = a/2 = 1,5 µm und a2_y = a√3/2 = 2,598 µm. Zusammen ergeben diese den Winkel von 60° zwischen a1 und a2, der die hexagonale Symmetrie definiert. Der Vektor a3, der senkrecht zur Ebene liegt, entspricht einfach dem wiederholenden Abstand zwischen den Schichten entlang der z-Achse.
7. Beispiel: Doppelhelix mithilfe von Lua-Skripten
Ein visuell komplexeres Beispiel dafür, was mit dem Lua-Skriptmodus erstellt werden kann, ist eine Doppelhelix – zwei ineinandergreifende, spiralförmige Stränge, die sich um eine gemeinsame Achse winden. Diese Geometrie lässt sich nicht als Bravais-Gitter darstellen und erfordert die Verwendung der Skriptschnittstelle. Der Lua-Code ist in ?? und die resultierende Struktur in ?? dargestellt.
Das vollständige Lua-Skript für diese Struktur lautet:
clear_points()
N = 200
radius = 1.5e-6
pitch = 3e-6
turns = 6
for i = 1, N do
t = (i / N) * turns * 2 * math.pi
-- first helix strand
x1 = radius * math.cos(t)
y1 = radius * math.sin(t)
z1 = (i / N) * turns * pitch
add_point(x1, y1, z1)
-- second helix strand offset by pi (opposite side)
x2 = radius * math.cos(t + math.pi)
y2 = radius * math.sin(t + math.pi)
add_point(x2, y2, z1)
end
Jede Spirale wird gezeichnet, indem der Parameter t von 0 bis 2π × Windungen schrittweise erhöht wird. Die x- und y-Koordinaten folgen einem Kreis mit dem angegebenen Radius, während z linear mit t bei der angegebenen Steigung zunimmt. Die zweite Spirale ist um π Radiant versetzt, wodurch sie an jedem Punkt auf der gegenüberliegenden Seite der Helixachse liegt, was die charakteristische, ineinandergreifende Doppelhelix-Geometrie erzeugt.
8. Zusammenfassung
Der Schritt-Editor in OghmaNano bietet drei ergänzende Methoden, um Objekte periodisch in einem dreidimensionalen Raum zu platzieren. Der einfache Schrittmodus verarbeitet einfache, gleichmäßige Anordnungen mit einem einzigen Verschiebungsvektor. Der Kristallmodus unterstützt jede Bravais-Gitterstruktur durch drei primitive Vektoren (a1, a2, a3) und ermöglicht so hexagonale, kubische oder benutzerdefinierte, nicht-orthogonale Anordnungen. Der Lua-Skriptmodus entfernt alle geometrischen Einschränkungen und ermöglicht die Platzierung von Punkten an beliebigen Koordinaten, die aus beliebigen mathematischen Ausdrücken berechnet werden – wie das obige Beispiel der Doppelhelix zeigt. In allen drei Modi erbt jede Kopie des Objekts die gleichen optischen und elektrischen Eigenschaften wie das Original, sodass die gesamte periodische Struktur durch die Bearbeitung eines einzelnen Objekts verändert werden kann.