Strona główna Przykłady Zrzuty ekranu Instrukcja obsługi Logo Bluesky. YouTube ☰
OghmaNano Platforma do symulacji wielofizycznych procesów zachodzących w optoelektronicznych urządzeniach i systemach fotonicznych. POBIERZ Przewodnik szybkiego uruchomienia

Edytor sekwencji: okresowe rozmieszczanie obiektów w OghmaNano.

1. Wprowadzenie

Wiele struktur urządzeń fotonicznych i elektronicznych ma z natury okresową budowę. Siatka DFB (z rozproszonym sprzężeniem zwrotnym) wymaga precyzyjnie rozmieszczonych rzędów lub szczelin. Kryształ fotoniczny jest zbudowany z regularnej sieci dielektrycznych elementów. Metapowierzchnia plazmoniczna składa się z powtarzających się elementów rezonatorowych, rozmieszczonych w odległościach mniejszych niż długość fali. Tworzenie tych struktur element po elemencie byłoby niepraktyczne, dlatego OghmaNano oferuje edytor, który na podstawie jednego elementu automatycznie generuje jego kopie w określonych pozycjach w przestrzeni 3D.

Ważną cechą tego systemu jest to, że każda kopia ma takie same parametry optyczne i elektryczne jak oryginał. Kopie nie są niezależnymi obiektami – stanowią one grupę identycznych replik, które dziedziczą wszystkie właściwości materiałowe, właściwości warstw i stałe optyczne obiektu nadrzędnego. Dzięki temu łatwo można zmodyfikować całą periodyczną strukturę, edytując jedynie oryginał.

Edytor kroków oferuje trzy tryby o rosnącym poziomie złożoności: podstawowy tryb dla prostych, jednorodnych układów, tryb „kryształ”, przeznaczony do struktur zdefiniowanych przez podstawowe wektory sieci krystalicznej, oraz tryb skryptów Lua, umożliwiający definiowanie dowolnych rozkładów punktów.

2. Otwieranie edytora kroków.

Aby otworzyć edytor kroków, rozpocznij od głównego okna symulacji OghmaNano (??). Kliknij prawym przyciskiem myszy na obiekcie, który chcesz zduplikować, i wybierz opcję „Edytuj obiekt” z menu kontekstowego. Spowoduje to otwarcie edytora obiektów, jak pokazano na ilustracji ??.

W edytorze obiektów znajdź wiersz o nazwie „Kroki”. W tym wierszu wyświetlane są aktualne parametry kroku – przesunięcie (dx, dy, dz) między kopiami oraz liczba kopii (nx, ny, nz) w każdym kierunku. Kliknij przycisk „Edytuj” (oznaczony trzema kropkami) znajdujący się na prawym końcu wiersza „Kroki”, aby otworzyć okno edytora kroku.

OghmaNano main simulation window showing a periodic array of objects with a right-click context menu open, highlighting the Edit object option
Kliknij prawym przyciskiem myszy na interesujący Cię obiekt w głównym oknie symulacji i wybierz opcję „Edytuj obiekt”, aby otworzyć edytor obiektów.
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
Edytor obiektów. W wierszu „Kroki” wyświetlane są aktualne ustawienia danego kroku. Kliknij przycisk „Edytuj” (oznaczony trzema kropkami), aby otworzyć edytor kroków.

3. Podstawowy tryb sekwencyjny.

Domyślnie edytor kroków otwiera się w podstawowym trybie, jak pokazano na ilustracji ??. Ten tryb jest najprostszym sposobem tworzenia tablicy obiektów w jednym, dwóch lub trzech wymiarach. Wymaga on podania pojedynczego wektora kroku (dx, dy, dz) i powtarza obiekt określoną liczbę razy wzdłuż każdej osi. Pola to:

Na przykład, aby utworzyć jednowymiarową siatkę składającą się z 10 elementów, rozmieszczonych w odległości 209 nm od siebie wzdłuż osi z, należy ustawić dz = 209 nm, nz = 10, a wartości dx i dy pozostawić na poziomie zera. Jest to konfiguracja przedstawiona w ??, która odpowiada prostej strukturze okresowej DFB.

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.
Podstawowy tryb krokowy. Pojedynczy wektor kroku (dx, dy, dz) i liczba obiektów (nx, ny, nz) definiują jednorodną tablicę 1D, 2D lub 3D. W tym przykładzie skonfigurowano jednowymiarową tablicę składającą się z 10 obiektów, rozmieszczonych w odległości 209 nm od siebie wzdłuż osi z.
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.
Tryb krystaliczny. Trzy podstawowe wektory sieci krystalicznej – a1, a2, a3 – definiują elementarną komórkę, a dany obiekt jest powtarzany wzdłuż powstałej sieci Bravaisa.
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.
Tryb skryptu Lua. Punkty są umieszczane w dowolnych współrzędnych (x, y, z) za pomocą polecenia add_point(). Kliknij „Odśwież”, aby zaktualizować widok 3D.

4. Tryb sieci krystalicznej

W przypadku struktur o nieortogonalnej lub nieregularnej periodyczności kliknij przycisk „Kryształ” na pasku narzędzi edytora, aby przełączyć się w tryb krystalograficzny (??). W tym trybie periodyczny układ definiowany jest za pomocą trzech wektorów elementarnej sieci krystalicznej: a1, a2 i a3 – stosuje się tę samą metodę, która jest wykorzystywana w krystalografii do opisu sieci Bravaisa.

Położenie każdego obiektu jest obliczane według następującego wzoru:

\[ \mathbf{r}_{ijk} = \mathbf{r}_0 + i\,\mathbf{a}_1 + j\,\mathbf{a}_2 + k\,\mathbf{a}_3 \]

gdzie i, j, k to całkowite indeksy przyjmujące wartości od 0 do nx−1, ny−1 i nz−1 odpowiednio, a r₀ to punkt początkowy. Dobierając odpowiednio wartości a1, a2 i a3, można skonstruować dowolną sieć Bravaisa – prostą, z centrami na ścianach, z centrami wewnątrz, heksagonalną lub dowolną niestandardową, nieortogonalną konfigurację.

5. Tryb skryptów Lua.

W przypadku dowolnych, nieregularnych rozkładów punktów – spiral, helis, kwazikryształów lub jakiejkolwiek geometrii, której nie da się przedstawić w postaci prostej siatki – edytor kroków udostępnia interfejs skryptów Lua, do którego można uzyskać dostęp, klikając przycisk „Skrypt Lua” (??).

W tym kontekście dostępne są dwie wbudowane funkcje:

Pomiędzy tymi wywołaniami można używać dowolnego prawidłowego kodu Lua, w tym pętli, instrukcji warunkowych, funkcji trygonometrycznych oraz funkcji generujących liczby losowe za pomocą math.random(). Po edycji skryptu kliknij przycisk „Odśwież”, aby ponownie wygenerować rozkład punktów i zaktualizować widok 3D.

Poniżej przedstawiono prosty przykład – rozmieszczenie obiektów w równomiernych odstępach wzdłuż osi z, przy czym do każdego położenia dodawana jest niewielka, losowa nierówność. Jest to przydatne do modelowania niejednorodności w procesie wytwarzania struktur dyfrakcyjnych:

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. Przykład: sieć heksagonalna

Praktycznym przykładem struktury krystalicznej jest tworzenie heksagonalnej sieci, którą można wykorzystać na przykład do budowy fotonicznej struktury krystalicznej lub heksagonalnej matrycy nanostrzyków. Konfiguracja edytora sieci jest przedstawiona w ?? oraz wynikająca z tego trójwymiarowa struktura w ??.

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.
Edytor Crystal skonfigurowany do pracy z heksagonalną siecią krystaliczną o parametrze sieci 3 µm. 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.
Na załączonym obrazie 3D OghmaNano widać powstałą heksagonalną strukturę. Widoczny jest wyraźny kąt 60 stopni między rzędami, co odpowiada wektorowi a2, który tworzy kąt 60 stopni z wektorem a1.

Kluczowe wartości to a2_x = a/2 = 1,5 µm i a2_y = a√3/2 = 2,598 µm, które razem tworzą kąt 60° między wektorami a1 i a2, definiując heksagonalną symetrię. Wektor a3, prostopadły do płaszczyzny, to po prostu odległość między kolejnymi warstwami wzdłuż osi z.

7. Przykład: model podwójnej helisy z wykorzystaniem języka skryptowego Lua.

Bardziej złożonym przykładem, ilustrującym możliwości trybu skryptowego Lua, jest podwójna helisa – dwie splecione ze sobą, spiralne struktury, które owijają się wokół wspólnej osi. Tę geometrię nie można przedstawić za pomocą sieci Bravaisa i wymaga ona użycia interfejsu skryptowego. Kod Lua znajduje się w ??, a wynikowa struktura w ??.

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.
Skrypt Lua generujący podwójną helisę. Dwie spirale są tworzone za pomocą parametrycznych funkcji trygonometrycznych, przy czym są one przesunięte względem siebie o π radianów wokół osi helisy.
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
Podwójna helisa przedstawiona w widoku 3D programu OghmaNano. Dwa splecione łańcuchy tworzą sześć pełnych zwojów, co ilustruje elastyczność trybu skryptowego Lua, umożliwiającego generowanie nieokresowych struktur geometrycznych.

Pełny skrypt Lua dla tej struktury wygląda następująco:

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

Każda linia jest rysowana poprzez stopniowe zwiększanie wartości parametru t od 0 do 2π × liczba zwojów. Współrzędne x i y wyznaczają okrąg o zadanym promieniu, natomiast współrzędna z rośnie liniowo wraz z t, zgodnie z określonym skokiem. Druga linia jest przesunięta o π radianów – co oznacza, że w każdym punkcie znajduje się po przeciwnej stronie osi helisy – co w rezultacie tworzy charakterystyczną, przeplataną strukturę podwójnej helisy.

8. Podsumowanie

Edytor sekwencji w OghmaNano oferuje trzy uzupełniające się metody rozmieszczania obiektów w regularnych odstępach w przestrzeni 3D. Podstawowy tryb sekwencji obsługuje proste, jednorodne układy z jednym wektorem przesunięcia. Tryb „Kryształ” obsługuje dowolną sieć Bravaisa za pomocą trzech wektorów elementarnych (a1, a2, a3), umożliwiając tworzenie układów heksagonalnych, kubicznych lub niestandardowych, nieortogonalnych. Tryb skryptów Lua usuwa wszystkie ograniczenia geometryczne, umożliwiając umieszczanie punktów w dowolnych współrzędnych obliczanych na podstawie dowolnego wyrażenia matematycznego – jak ilustruje to przykład podwójnej helisy przedstawiony powyżej. We wszystkich trzech trybach każda kopia obiektu dziedziczy te same właściwości optyczne i elektryczne, co oryginał, dzięki czemu można modyfikować całą regularną strukturę, edytując tylko jeden obiekt.