Home Esempi Immagini dello schermo Manuale utente Logo di Bluesky YouTube ☰
OghmaNano Piattaforma di simulazione multifisica per dispositivi optoelettronici e sistemi fotonici SCARICA Guida rapida per iniziare.

L’editor di sequenze: posizionamento periodico degli oggetti in OghmaNano.L’editor di sequenze: posizionamento periodico degli oggetti in OghmaNano.

1. Introduzione1. Introduzione

Molte strutture di dispositivi fotonici ed elettronici sono intrinsecamente periodiche. Una griglia DFB (a retroazione distribuita) richiede una serie di creste o fessure disposte a intervalli precisi. Un cristallo fotonico è costituito da una struttura regolare di elementi dielettrici. Una metasuperficie plasmonica è composta da elementi risonanti ripetuti, disposti a intervalli inferiori alla lunghezza d’onda. La costruzione di queste strutture elemento per elemento sarebbe impraticabile, pertanto OghmaNano offre un editor che consente di selezionare un singolo elemento e generare automaticamente copie di esso in posizioni specifiche nello spazio tridimensionale.Molte strutture di dispositivi fotonici ed elettronici sono intrinsecamente periodiche. Una griglia DFB (a retroazione distribuita) richiede una serie di creste o fessure disposte a intervalli precisi. Un cristallo fotonico è costituito da una struttura regolare di elementi dielettrici. Una metasuperficie plasmonica è composta da elementi risonanti ripetuti, disposti a intervalli inferiori alla lunghezza d’onda. La costruzione di queste strutture elemento per elemento sarebbe impraticabile, pertanto OghmaNano offre un editor che consente di selezionare un singolo elemento e generare automaticamente copie di esso in posizioni specifiche nello spazio tridimensionale.

Una caratteristica importante di questo sistema è che ogni copia presenta gli stessi parametri ottici ed elettrici dell’originale. Le copie non sono oggetti indipendenti, ma costituiscono un insieme di repliche esatte, che ereditano tutte le caratteristiche del materiale, le proprietà degli strati e le costanti ottiche dell’oggetto originale. Ciò consente di modificare facilmente l’intera struttura periodica apportando modifiche unicamente all’originale.Una caratteristica importante di questo sistema è che ogni copia presenta gli stessi parametri ottici ed elettrici dell’originale. Le copie non sono oggetti indipendenti, ma costituiscono un insieme di repliche esatte, che ereditano tutte le caratteristiche del materiale, le proprietà degli strati e le costanti ottiche dell’oggetto originale. Ciò consente di modificare facilmente l’intera struttura periodica apportando modifiche unicamente all’originale.

L’editor di sequenze offre tre modalità di crescente complessità: una modalità base per sequenze semplici e uniformi, una modalità «cristallo» per strutture definite da vettori di reticolo primitivi e una modalità di scripting Lua per distribuzioni di punti completamente arbitrarie.L’editor di sequenze offre tre modalità di crescente complessità: una modalità base per sequenze semplici e uniformi, una modalità «cristallo» per strutture definite da vettori di reticolo primitivi e una modalità di scripting Lua per distribuzioni di punti completamente arbitrarie.

2. Come accedere all’editor delle fasi2. Come accedere all’editor delle fasi

Per accedere all’editor delle fasi, partire dalla finestra principale della simulazione OghmaNano (??). Fare clic con il pulsante destro del mouse sull’oggetto che si desidera replicare e selezionare «Modifica oggetto» dal menu contestuale. In questo modo si aprirà l’editor dell’oggetto, come mostrato in ??.Per accedere all’editor delle fasi, partire dalla finestra principale della simulazione OghmaNano (??). Fare clic con il pulsante destro del mouse sull’oggetto che si desidera replicare e selezionare «Modifica oggetto» dal menu contestuale. In questo modo si aprirà l’editor dell’oggetto, come mostrato in ??.

Nell’editor degli oggetti, individuate la riga denominata «Passaggi». In questa riga vengono visualizzati i parametri relativi al passaggio corrente, ovvero lo spostamento (dx, dy, dz) tra le copie e il numero di copie (nx, ny, nz) in ciascuna direzione. Cliccate sul pulsante «Modifica» (indicato con i puntini di sospensione) all’estremità destra della riga «Passaggi» per aprire la finestra dell’editor dei passaggi.Nell’editor degli oggetti, individuate la riga denominata «Passaggi». In questa riga vengono visualizzati i parametri relativi al passaggio corrente, ovvero lo spostamento (dx, dy, dz) tra le copie e il numero di copie (nx, ny, nz) in ciascuna direzione. Cliccate sul pulsante «Modifica» (indicato con i puntini di sospensione) all’estremità destra della riga «Passaggi» per aprire la finestra dell’editor dei passaggi.

OghmaNano main simulation window showing a periodic array of objects with a right-click context menu open, highlighting the Edit object option
Fare clic con il pulsante destro del mouse sull’oggetto di interesse nella finestra principale della simulazione e selezionare «Modifica oggetto» per aprire l’editor dell’oggetto.Fare clic con il pulsante destro del mouse sull’oggetto di interesse nella finestra principale della simulazione e selezionare «Modifica oggetto» per aprire l’editor dell’oggetto.
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
L’editor di oggetti. La riga «Passaggi» mostra la configurazione attuale del passaggio. Fare clic sul pulsante «Modifica» (indicato con i puntini di sospensione) per aprire l’editor dei passaggi.L’editor di oggetti. La riga «Passaggi» mostra la configurazione attuale del passaggio. Fare clic sul pulsante «Modifica» (indicato con i puntini di sospensione) per aprire l’editor dei passaggi.

3. Modalità di funzionamento base.3. Modalità di funzionamento base.

L’editor delle sequenze di operazioni si apre, per impostazione predefinita, in modalità «Sequenza di operazioni di base», come illustrato in ??. Questa modalità è il metodo più semplice per creare una matrice di oggetti monodimensionale, bidimensionale o tridimensionale. Utilizza un singolo vettore di passo (dx, dy, dz) e ripete l’oggetto per il numero di volte specificato lungo ciascun asse. I campi sono:L’editor delle sequenze di operazioni si apre, per impostazione predefinita, in modalità «Sequenza di operazioni di base», come illustrato in ??. Questa modalità è il metodo più semplice per creare una matrice di oggetti monodimensionale, bidimensionale o tridimensionale. Utilizza un singolo vettore di passo (dx, dy, dz) e ripete l’oggetto per il numero di volte specificato lungo ciascun asse. I campi sono:

Ad esempio, per creare una griglia monodimensionale composta da 10 elementi distanziati di 209 nm lungo l’asse z, impostare dz = 209 nm, nz = 10 e lasciare dx e dy a zero. Questa è la configurazione mostrata in ??, che corrisponde a un semplice periodo di griglia DFB.Ad esempio, per creare una griglia monodimensionale composta da 10 elementi distanziati di 209 nm lungo l’asse z, impostare dz = 209 nm, nz = 10 e lasciare dx e dy a zero. Questa è la configurazione mostrata in ??, che corrisponde a un semplice periodo di griglia 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.
La modalità di base prevede un singolo vettore di passo (dx, dy, dz) e un numero di oggetti (nx, ny, nz) che definiscono una matrice uniforme 1D, 2D o 3D. In questo caso, viene configurata una matrice 1D composta da 10 oggetti, distanziati di 209 nm lungo l’asse z.La modalità di base prevede un singolo vettore di passo (dx, dy, dz) e un numero di oggetti (nx, ny, nz) che definiscono una matrice uniforme 1D, 2D o 3D. In questo caso, viene configurata una matrice 1D composta da 10 oggetti, distanziati di 209 nm lungo l’asse 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.
La modalità Cristallo. Tre vettori primitivi del reticolo, a1, a2 e a3, definiscono la cella elementare, e l’oggetto viene ripetuto in modo regolare sulla griglia di Bravais risultante.La modalità Cristallo. Tre vettori primitivi del reticolo, a1, a2 e a3, definiscono la cella elementare, e l’oggetto viene ripetuto in modo regolare sulla griglia di Bravais risultante.
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.
Modalità di scripting Lua. I punti vengono posizionati in coordinate (x, y, z) arbitrarie utilizzando add_point(). Cliccare su «Aggiorna» per aggiornare la visualizzazione 3D.Modalità di scripting Lua. I punti vengono posizionati in coordinate (x, y, z) arbitrarie utilizzando add_point(). Cliccare su «Aggiorna» per aggiornare la visualizzazione 3D.

4. Modo reticolare cristallino4. Modo reticolare cristallino

Per le strutture con periodicità non ortogonale o non uniforme, fare clic sul pulsante «Cristallo» nella barra degli strumenti dell’editor di passaggi per passare alla modalità cristallo (??). Questa modalità definisce la disposizione periodica utilizzando tre vettori di base della cella elementare, a1, a2 e a3; si tratta dello stesso formalismo utilizzato in cristallografia per descrivere una cella di Bravais.Per le strutture con periodicità non ortogonale o non uniforme, fare clic sul pulsante «Cristallo» nella barra degli strumenti dell’editor di passaggi per passare alla modalità cristallo (??). Questa modalità definisce la disposizione periodica utilizzando tre vettori di base della cella elementare, a1, a2 e a3; si tratta dello stesso formalismo utilizzato in cristallografia per descrivere una cella di Bravais.

La posizione di ciascun oggetto viene calcolata nel modo seguente:La posizione di ciascun oggetto viene calcolata nel modo seguente:

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

dove i, j, k sono indici interi che variano rispettivamente da 0 a nx−1, ny−1, nz−1, e r₀ è l’origine. Scegliendo opportunamente a1, a2, a3, è possibile costruire qualsiasi reticolo di Bravais: cubico semplice, cubico a facce centrate, cubico a corpo centrato, esagonale o qualsiasi altra configurazione non ortogonale personalizzata.dove i, j, k sono indici interi che variano rispettivamente da 0 a nx−1, ny−1, nz−1, e r₀ è l’origine. Scegliendo opportunamente a1, a2, a3, è possibile costruire qualsiasi reticolo di Bravais: cubico semplice, cubico a facce centrate, cubico a corpo centrato, esagonale o qualsiasi altra configurazione non ortogonale personalizzata.

5. Modalità di scripting Lua5. Modalità di scripting Lua

Per distribuzioni di punti completamente arbitrarie – spirali, eliche, quasicristalli o qualsiasi geometria che non possa essere espressa come una semplice griglia – l’editor di passaggi offre un’interfaccia di scripting Lua, accessibile facendo clic sul pulsante dello script Lua (??).Per distribuzioni di punti completamente arbitrarie – spirali, eliche, quasicristalli o qualsiasi geometria che non possa essere espressa come una semplice griglia – l’editor di passaggi offre un’interfaccia di scripting Lua, accessibile facendo clic sul pulsante dello script Lua (??).

In questo contesto sono disponibili due funzioni integrate:In questo contesto sono disponibili due funzioni integrate:

Tra queste chiamate è possibile utilizzare qualsiasi codice Lua valido, comprese istruzioni di ciclo, istruzioni condizionali, funzioni trigonometriche e la generazione di numeri casuali tramite math.random(). Dopo aver modificato lo script, fare clic su Aggiorna per rigenerare la distribuzione dei punti e aggiornare la visualizzazione 3D.Tra queste chiamate è possibile utilizzare qualsiasi codice Lua valido, comprese istruzioni di ciclo, istruzioni condizionali, funzioni trigonometriche e la generazione di numeri casuali tramite math.random(). Dopo aver modificato lo script, fare clic su Aggiorna per rigenerare la distribuzione dei punti e aggiornare la visualizzazione 3D.

Di seguito è riportato un semplice esempio: si posizionano degli oggetti a intervalli regolari lungo l’asse z, applicando a ciascuna posizione una leggera irregolarità casuale. Questo è utile per modellare le imperfezioni di fabbricazione nelle strutture a reticolo:Di seguito è riportato un semplice esempio: si posizionano degli oggetti a intervalli regolari lungo l’asse z, applicando a ciascuna posizione una leggera irregolarità casuale. Questo è utile per modellare le imperfezioni di fabbricazione nelle strutture a reticolo:

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. Esempio: reticolo esagonale6. Esempio: reticolo esagonale

Un esempio pratico del modello a cristallo è la creazione di una struttura reticolare esagonale, che potrebbe essere utilizzata per un cristallo fotonico o per una matrice di nanopilastri disposti in configurazione esagonale. La configurazione dell’editor della struttura reticolare è mostrata in ?? e la struttura tridimensionale risultante in ??.Un esempio pratico del modello a cristallo è la creazione di una struttura reticolare esagonale, che potrebbe essere utilizzata per un cristallo fotonico o per una matrice di nanopilastri disposti in configurazione esagonale. La configurazione dell’editor della struttura reticolare è mostrata in ?? e la struttura tridimensionale risultante in ??.

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.
Editor di Crystal configurato per una struttura cristallina esagonale con parametro di reticolo di 3 µm. a1 = (3 µm, 0, 0), a2 = (1,5 µm, 2,59 µm, 0), a3 = (0, 0, 3 µm).Editor di Crystal configurato per una struttura cristallina esagonale con parametro di reticolo di 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.
La visualizzazione 3D di OghmaNano mostra la struttura reticolare esagonale risultante. La differenza di 60° tra le file è chiaramente visibile e corrisponde al vettore a2, che forma un angolo di 60° con il vettore a1.La visualizzazione 3D di OghmaNano mostra la struttura reticolare esagonale risultante. La differenza di 60° tra le file è chiaramente visibile e corrisponde al vettore a2, che forma un angolo di 60° con il vettore a1.

I valori fondamentali sono a2_x = a/2 = 1,5 µm e a2_y = a√3/2 = 2,598 µm, che insieme determinano l’angolo di 60° tra a1 e a2, definendo così la simmetria esagonale. Il vettore a3, perpendicolare al piano, rappresenta semplicemente la distanza tra gli strati lungo l’asse z.I valori fondamentali sono a2_x = a/2 = 1,5 µm e a2_y = a√3/2 = 2,598 µm, che insieme determinano l’angolo di 60° tra a1 e a2, definendo così la simmetria esagonale. Il vettore a3, perpendicolare al piano, rappresenta semplicemente la distanza tra gli strati lungo l’asse z.

7. Esempio: creazione di una doppia elica tramite script Lua.7. Esempio: creazione di una doppia elica tramite script Lua.

Un esempio più complesso, dal punto di vista visivo, di ciò che si può ottenere con la modalità di scripting Lua è una doppia elica, ovvero due filamenti elicoidali intrecciati che si avvolgono attorno a un asse comune. Questa geometria non può essere espressa come un reticolo di Bravais e richiede l’utilizzo dell’interfaccia di scripting. Il codice Lua è mostrato in ?? e la struttura risultante in ??.Un esempio più complesso, dal punto di vista visivo, di ciò che si può ottenere con la modalità di scripting Lua è una doppia elica, ovvero due filamenti elicoidali intrecciati che si avvolgono attorno a un asse comune. Questa geometria non può essere espressa come un reticolo di Bravais e richiede l’utilizzo dell’interfaccia di scripting. Il codice Lua è mostrato in ?? e la struttura risultante in ??.

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.
Lo script Lua per la doppia elica. Due filamenti vengono generati utilizzando funzioni trigonometriche parametriche, con una differenza di fase di π radianti l’uno rispetto all’altro attorno all’asse dell’elica.Lo script Lua per la doppia elica. Due filamenti vengono generati utilizzando funzioni trigonometriche parametriche, con una differenza di fase di π radianti l’uno rispetto all’altro attorno all’asse dell’elica.
OghmaNano 3D simulation window showing a green double helix structure — two interleaved helical strands winding along the z axis over six complete turns.
La doppia elica visualizzata nella vista 3D di OghmaNano. Due filamenti intrecciati si avvolgono per sei giri completi, dimostrando la flessibilità della modalità di scripting Lua per la generazione di geometrie non periodiche.La doppia elica visualizzata nella vista 3D di OghmaNano. Due filamenti intrecciati si avvolgono per sei giri completi, dimostrando la flessibilità della modalità di scripting Lua per la generazione di geometrie non periodiche.

Lo script Lua completo per questa struttura è il seguente:Lo script Lua completo per questa struttura è il seguente:

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

Ogni filamento viene tracciato facendo variare il parametro t da 0 a 2π × numero di spire. Le coordinate x e y seguono una circonferenza del raggio specificato, mentre z aumenta linearmente con t, secondo l’inclinazione definita. Il secondo filamento è spostato di π radianti, il che lo posiziona sul lato opposto dell’asse dell’elica in ogni punto, creando la caratteristica geometria a doppia elica intrecciata.Ogni filamento viene tracciato facendo variare il parametro t da 0 a 2π × numero di spire. Le coordinate x e y seguono una circonferenza del raggio specificato, mentre z aumenta linearmente con t, secondo l’inclinazione definita. Il secondo filamento è spostato di π radianti, il che lo posiziona sul lato opposto dell’asse dell’elica in ogni punto, creando la caratteristica geometria a doppia elica intrecciata.

8. Riepilogo8. Riepilogo

L’editor di sequenze di OghmaNano offre tre metodi complementari per posizionare periodicamente gli oggetti nello spazio 3D. La modalità di sequenza di base gestisce semplici sequenze uniformi con un singolo vettore di spostamento. La modalità cristallo supporta qualsiasi reticolo di Bravais tramite tre vettori primitivi (a1, a2, a3), consentendo disposizioni esagonali, cubiche o personalizzate non ortogonali. La modalità di scripting Lua elimina tutti i vincoli geometrici, consentendo di posizionare i punti in coordinate arbitrarie calcolate a partire da qualsiasi espressione matematica, come illustrato dall’esempio della doppia elica riportato sopra. In tutte e tre le modalità, ogni copia dell’oggetto eredita le stesse proprietà ottiche ed elettriche dell’oggetto originale, in modo che l’intera struttura periodica possa essere modificata modificando un singolo oggetto.L’editor di sequenze di OghmaNano offre tre metodi complementari per posizionare periodicamente gli oggetti nello spazio 3D. La modalità di sequenza di base gestisce semplici sequenze uniformi con un singolo vettore di spostamento. La modalità cristallo supporta qualsiasi reticolo di Bravais tramite tre vettori primitivi (a1, a2, a3), consentendo disposizioni esagonali, cubiche o personalizzate non ortogonali. La modalità di scripting Lua elimina tutti i vincoli geometrici, consentendo di posizionare i punti in coordinate arbitrarie calcolate a partire da qualsiasi espressione matematica, come illustrato dall’esempio della doppia elica riportato sopra. In tutte e tre le modalità, ogni copia dell’oggetto eredita le stesse proprietà ottiche ed elettriche dell’oggetto originale, in modo che l’intera struttura periodica possa essere modificata modificando un singolo oggetto.