Startseite Beispiele Screenshots Benutzerhandbuch Bluesky-Logo YouTube ☰
OghmaNano Simulation von organischen/Perowskit-Solarzellen, OFETs und OLEDs DOWNLOAD Quick Start guide

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.

OghmaNano main simulation window showing a periodic array of objects with a right-click context menu open, highlighting the Edit object option
Klicken Sie mit der rechten Maustaste auf das gewünschte Objekt im Hauptfenster der Simulation und wählen Sie „Objekt bearbeiten“, um den Objekteditor zu öffnen.
OghmaNano object editor showing the Steps row with dx, nx, dy, ny, dz, nz fields and an Edit button with three-dot access to the step editor
Der Objekt-Editor. Die Zeile „Schritte“ zeigt die aktuelle Schrittkonfiguration an. Klicken Sie auf die Schaltfläche „Bearbeiten“ (…), um den Schritt-Editor 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:

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.

OghmaNano step editor in Basic step mode showing step fields dx, dy, dz and number of objects x, y, z. dz is set to 209 nm and nz to 10, producing a 1D array along z.
Der grundlegende Schrittmodus. Ein einzelner Schrittvektor (dx, dy, dz) und eine Objektanzahl (nx, ny, nz) definieren ein gleichmäßiges 1D-, 2D- oder 3D-Array. Hier wird ein 1D-Array mit 10 Objekten konfiguriert, die entlang der z-Achse in einem Abstand von 209 nm angeordnet sind.
OghmaNano step editor in Crystal mode showing primitive lattice vector fields a1, a2, a3 with x, y, z components, an Origin field, and Number of objects fields.
Der Kristallmodus. Drei primitive Gittervektoren, a1, a2 und a3, definieren die Elementarzelle, und das Objekt wird über das resultierende Bravais-Gitter angeordnet.
OghmaNano step editor in Lua script mode showing a code editor with clear_points() and add_point() commands and a Refresh button to update the 3D view.
Der Lua-Skriptmodus. Punkte werden an beliebigen (x, y, z)-Koordinaten mit 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:

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.

OghmaNano crystal editor configured for a hexagonal lattice. a1 is set to (3 µm, 0, 0), a2 to (1.5 µm, 2.59 µm, 0), a3 to (0, 0, 3 µm), with 3×3×3 objects.
Der Crystal-Editor ist für ein hexagonales Gitter mit einer Gitterkonstante von 3 µm konfiguriert. a1 = (3 µm, 0, 0), a2 = (1,5 µm, 2,59 µm, 0), a3 = (0, 0, 3 µm).
OghmaNano 3D simulation window showing a hexagonal array of red spheres arranged in a close-packed hexagonal pattern, viewed from above and to the side.
Das resultierende hexagonale Gitter in der 3D-Ansicht von OghmaNano. Der Versatz von 60° zwischen den Reihen ist deutlich erkennbar und entspricht dem Vektor a2, der einen Winkel von 60° zu a1 bildet.

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.

OghmaNano Lua script editor showing the double helix code. Two helical strands are generated using sin and cos functions offset by pi, with 200 points per strand over 6 turns.
Das Lua-Skript für die Doppelhelix. Zwei Stränge werden mithilfe parametrischer trigonometrischer Funktionen erzeugt, wobei sie um π Radiant um die Helixachse zueinander versetzt sind.
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
Die Doppelhelix wird in der 3D-Ansicht von OghmaNano dargestellt. Zwei ineinandergreifende Stränge winden sich über sechs vollständige Umdrehungen, was die Flexibilität des Lua-Skriptmodus bei der Erzeugung nicht-periodischer Geometrien demonstriert.

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.