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.

Tutorial FDTD: propagazione della luce verde nello spazio liberoTutorial FDTD: propagazione della luce verde nello spazio libero

1. Panoramica: cosa simulerai.1. Panoramica: cosa simulerai.

Questo tutorial presenta il motore Finite-Difference Time-Domain (FDTD) in OghmaNano, utilizzando il sistema fisico più semplice possibile: la propagazione di onde elettromagnetiche nello spazio libero. Viene utilizzata una sorgente monocromatica di luce verde, con una lunghezza d’onda di 530 nm, che viene introdotta in un dominio computazionale vuoto. Non sono presenti guide d’onda, risuonatori o materiali diversi dal vuoto. L’obiettivo non è dimostrare il funzionamento di un dispositivo, ma rendere visibile il meccanismo numerico.Questo tutorial presenta il motore Finite-Difference Time-Domain (FDTD) in OghmaNano, utilizzando il sistema fisico più semplice possibile: la propagazione di onde elettromagnetiche nello spazio libero. Viene utilizzata una sorgente monocromatica di luce verde, con una lunghezza d’onda di 530 nm, che viene introdotta in un dominio computazionale vuoto. Non sono presenti guide d’onda, risuonatori o materiali diversi dal vuoto. L’obiettivo non è dimostrare il funzionamento di un dispositivo, ma rendere visibile il meccanismo numerico.

Il modulo FDTD risolve direttamente le equazioni di Maxwell nel dominio del tempo, utilizzando una griglia spaziale discreta. Ad ogni passo temporale, i campi elettrici e magnetici vengono aggiornati sull’intera griglia. Poiché l’algoritmo è altamente parallelizzabile, OghmaNano lo esegue utilizzando OpenCL e, se disponibile, utilizzerà automaticamente la GPU. Questo tutorial ha quindi una duplice funzione: illustrare i principi fisici e fornire una prima introduzione al sistema FDTD accelerato tramite GPU.Il modulo FDTD risolve direttamente le equazioni di Maxwell nel dominio del tempo, utilizzando una griglia spaziale discreta. Ad ogni passo temporale, i campi elettrici e magnetici vengono aggiornati sull’intera griglia. Poiché l’algoritmo è altamente parallelizzabile, OghmaNano lo esegue utilizzando OpenCL e, se disponibile, utilizzerà automaticamente la GPU. Questo tutorial ha quindi una duplice funzione: illustrare i principi fisici e fornire una prima introduzione al sistema FDTD accelerato tramite GPU.

Al termine di questa pagina, avrete creato una simulazione, esaminato le dimensioni del mondo e la griglia spaziale, eseguito il calcolatore e visualizzato come la luce verde si propaga nello spazio in tre dimensioni.Al termine di questa pagina, avrete creato una simulazione, esaminato le dimensioni del mondo e la griglia spaziale, eseguito il calcolatore e visualizzato come la luce verde si propaga nello spazio in tre dimensioni.

2. Creazione della simulazione dello spazio libero.2. Creazione della simulazione dello spazio libero.

Aprire la finestra della nuova simulazione e selezionare la categoria degli esempi FDTD, quindi scegliere l’esempio denominato «Spazio libero». Di seguito sono riportate le due finestre di selezione.Aprire la finestra della nuova simulazione e selezionare la categoria degli esempi FDTD, quindi scegliere l’esempio denominato «Spazio libero». Di seguito sono riportate le due finestre di selezione.

New simulation window showing the FDTD examples category.
Aprire gli esempi di FDTD dalla nuova finestra di simulazione.Aprire gli esempi di FDTD dalla nuova finestra di simulazione.
FDTD example list showing the Free space simulation.
Seleziona l’esempio relativo allo spazio libero.Seleziona l’esempio relativo allo spazio libero.

Dopo il caricamento, si apre la finestra principale di OghmaNano, che mostra una semplice scena tridimensionale. Inizialmente, l’ambiente di calcolo è vuoto, ad eccezione di una regione di origine e di una regione di rilevamento. Cliccare con il pulsante destro del mouse all’interno della visualizzazione 3D e attivare l’opzione «Mostra area». Verrà visualizzato un riquadro rosso che delimita i confini del dominio FDTD.Dopo il caricamento, si apre la finestra principale di OghmaNano, che mostra una semplice scena tridimensionale. Inizialmente, l’ambiente di calcolo è vuoto, ad eccezione di una regione di origine e di una regione di rilevamento. Cliccare con il pulsante destro del mouse all’interno della visualizzazione 3D e attivare l’opzione «Mostra area». Verrà visualizzato un riquadro rosso che delimita i confini del dominio FDTD.

Main OghmaNano window showing the Free space simulation. Checking the show world option.
Finestra principale di OghmaNano che mostra la simulazione dello spazio libero. Controllo dell’opzione per visualizzare il mondo.Finestra principale di OghmaNano che mostra la simulazione dello spazio libero. Controllo dell’opzione per visualizzare il mondo.
Main OghmaNano window showing the Free space simulation. Showing the world box that shows the extent of the simulation domain.
Finestra principale di OghmaNano che mostra la simulazione dello spazio libero. Visualizza il riquadro del mondo, che indica l’estensione del dominio di simulazione.Finestra principale di OghmaNano che mostra la simulazione dello spazio libero. Visualizza il riquadro del mondo, che indica l’estensione del dominio di simulazione.
World size editor showing the dimensions of the FDTD simulation domain.
L’editor per la definizione delle dimensioni del mondo è accessibile tramite il pulsante «xz-size» di Substrate.L’editor per la definizione delle dimensioni del mondo è accessibile tramite il pulsante «xz-size» di Substrate.

È possibile visualizzare le dimensioni del mondo cliccando sul pulsante «Dimensione xz del substrato» nella barra degli strumenti a sinistra. In questo modo si apre l’editor delle dimensioni del mondo, in cui vengono definite le dimensioni fisiche del dominio di simulazione in micrometri. Per questo tutorial, non è necessario apportare alcuna modifica; il dominio è già stato configurato in modo da poter contenere comodamente diverse lunghezze d’onda della luce verde.È possibile visualizzare le dimensioni del mondo cliccando sul pulsante «Dimensione xz del substrato» nella barra degli strumenti a sinistra. In questo modo si apre l’editor delle dimensioni del mondo, in cui vengono definite le dimensioni fisiche del dominio di simulazione in micrometri. Per questo tutorial, non è necessario apportare alcuna modifica; il dominio è già stato configurato in modo da poter contenere comodamente diverse lunghezze d’onda della luce verde.

3. Controllo delle impostazioni ottiche e della griglia.3. Controllo delle impostazioni ottiche e della griglia.

Successivamente, apri la barra degli strumenti «Ottica» nella parte superiore della finestra.Successivamente, apri la barra degli strumenti «Ottica» nella parte superiore della finestra.

Optical ribbon in OghmaNano showing the Optical mesh button.
La banda ottica. Fare clic su «Rete ottica» per visualizzare la discretizzazione spaziale.La banda ottica. Fare clic su «Rete ottica» per visualizzare la discretizzazione spaziale.

Fare clic su «Optical mesh» per aprire l’editor della griglia.Fare clic su «Optical mesh» per aprire l’editor della griglia.

Optical mesh editor showing mesh points and wavelength range between 531 nm and 532 nm.
Impostazioni della griglia ottica, tra cui la risoluzione spaziale e l’intervallo di lunghezze d’onda (da 531 a 532 nm).Impostazioni della griglia ottica, tra cui la risoluzione spaziale e l’intervallo di lunghezze d’onda (da 531 a 532 nm).

L’editor della griglia mostra il numero di punti della griglia utilizzati in ciascuna direzione spaziale. Questi valori determinano la risoluzione spaziale del calcolo FDTD. L’intervallo di lunghezze d’onda è impostato tra 531 nm e 532 nm, il che corrisponde alla luce verde. In questo esempio, i parametri di spessore visualizzati nell’editor della griglia vengono automaticamente adattati alle dimensioni del modello e possono essere ignorati. L’aspetto importante è che la griglia spaziale sia sufficientemente fine da risolvere la lunghezza d’onda elettromagnetica.L’editor della griglia mostra il numero di punti della griglia utilizzati in ciascuna direzione spaziale. Questi valori determinano la risoluzione spaziale del calcolo FDTD. L’intervallo di lunghezze d’onda è impostato tra 531 nm e 532 nm, il che corrisponde alla luce verde. In questo esempio, i parametri di spessore visualizzati nell’editor della griglia vengono automaticamente adattati alle dimensioni del modello e possono essere ignorati. L’aspetto importante è che la griglia spaziale sia sufficientemente fine da risolvere la lunghezza d’onda elettromagnetica.

4. Esecuzione del risolutore FDTD con accelerazione GPU4. Esecuzione del risolutore FDTD con accelerazione GPU

Avvia la simulazione facendo clic sul pulsante «Esegui simulazione» oppure premendo il tasto F9. Nella scheda «Terminale» verranno visualizzate le informazioni relative al risolutore.Avvia la simulazione facendo clic sul pulsante «Esegui simulazione» oppure premendo il tasto F9. Nella scheda «Terminale» verranno visualizzate le informazioni relative al risolutore.

Terminal output showing the FDTD module initialising and searching for OpenCL devices.
Durante l’esecuzione, l’output viene visualizzato nel terminale. Il modulo FDTD viene inizializzato, visualizza la spaziatura della griglia e la lunghezza d’onda e ricerca i dispositivi OpenCL disponibili prima di avviare il ciclo di calcolo temporale.Durante l’esecuzione, l’output viene visualizzato nel terminale. Il modulo FDTD viene inizializzato, visualizza la spaziatura della griglia e la lunghezza d’onda e ricerca i dispositivi OpenCL disponibili prima di avviare il ciclo di calcolo temporale.
Output tab showing simulation result files including detector data and snapshots directory.
La scheda «Output» visualizzata al termine dell’operazione. I file generati includono i dati di tracciamento del rilevatore, i file di esportazione della configurazione e la directory snapshots/, che contiene i dati di campo acquisiti nel tempo.La scheda «Output» visualizzata al termine dell’operazione. I file generati includono i dati di tracciamento del rilevatore, i file di esportazione della configurazione e la directory snapshots/, che contiene i dati di campo acquisiti nel tempo.

Nell’output del terminale, si noti il testo verde che indica la ricerca di dispositivi OpenCL. In questa fase, il programma esegue una scansione del sistema alla ricerca di GPU compatibili. Nei sistemi dotati di una scheda grafica supportata, il programma selezionerà la GPU ed eseguirà il ciclo di calcolo incrementale su di essa. Nell’esempio mostrato, il calcolo viene eseguito su un backend CPU che emula un dispositivo OpenCL, ma su una workstation moderna, la stessa simulazione utilizzerà automaticamente il processore grafico per accelerare i calcoli.Nell’output del terminale, si noti il testo verde che indica la ricerca di dispositivi OpenCL. In questa fase, il programma esegue una scansione del sistema alla ricerca di GPU compatibili. Nei sistemi dotati di una scheda grafica supportata, il programma selezionerà la GPU ed eseguirà il ciclo di calcolo incrementale su di essa. Nell’esempio mostrato, il calcolo viene eseguito su un backend CPU che emula un dispositivo OpenCL, ma su una workstation moderna, la stessa simulazione utilizzerà automaticamente il processore grafico per accelerare i calcoli.

5. Controllo dei risultati e delle immagini acquisite sul campo5. Controllo dei risultati e delle immagini acquisite sul campo

Una volta completata l’operazione, passare alla scheda «Output». I file generati sono elencati in questa sezione.Una volta completata l’operazione, passare alla scheda «Output». I file generati sono elencati in questa sezione.

Later-time snapshot showing spherical wavefront propagation.
Un’immagine successiva che mostra la propagazione verso l’esterno del fronte d’onda della luce verde.Un’immagine successiva che mostra la propagazione verso l’esterno del fronte d’onda della luce verde.
Snapshot viewer showing green light propagating in free space.
Visualizzatore di immagini: selezionare la densità di potenza e utilizzare i cursori per esplorare le dimensioni temporali e spaziali.Visualizzatore di immagini: selezionare la densità di potenza e utilizzare i cursori per esplorare le dimensioni temporali e spaziali.

Fate doppio clic sulla cartella degli snapshot per aprire il visualizzatore di snapshot. Selezionate la densità di potenza dall’elenco a discesa nella parte inferiore della finestra. Il campo colorato rappresenta la densità di energia elettromagnetica istantanea. Utilizzate la barra di scorrimento orizzontale per spostarvi avanti e indietro nel tempo e le barre di scorrimento spaziali per esaminare diverse sezioni trasversali del dominio. Su alcuni computer, soprattutto quando si utilizzano modelli di grandi dimensioni, potrebbe essere necessario attendere qualche istante prima che il visualizzatore risponda, poiché carica ogni set di dati.Fate doppio clic sulla cartella degli snapshot per aprire il visualizzatore di snapshot. Selezionate la densità di potenza dall’elenco a discesa nella parte inferiore della finestra. Il campo colorato rappresenta la densità di energia elettromagnetica istantanea. Utilizzate la barra di scorrimento orizzontale per spostarvi avanti e indietro nel tempo e le barre di scorrimento spaziali per esaminare diverse sezioni trasversali del dominio. Su alcuni computer, soprattutto quando si utilizzano modelli di grandi dimensioni, potrebbe essere necessario attendere qualche istante prima che il visualizzatore risponda, poiché carica ogni set di dati.

Mentre si avanza nel tempo, si potrà osservare l’onda che si propaga e si espande nell’area di interesse. In uno spazio libero, privo di confini o strutture, la propagazione è uniforme e simmetrica, e limitata solo dalle condizioni al contorno assorbenti presenti sui bordi del dominio di calcolo.Mentre si avanza nel tempo, si potrà osservare l’onda che si propaga e si espande nell’area di interesse. In uno spazio libero, privo di confini o strutture, la propagazione è uniforme e simmetrica, e limitata solo dalle condizioni al contorno assorbenti presenti sui bordi del dominio di calcolo.

6. Visualizzazione della potenza del rivelatore6. Visualizzazione della potenza del rivelatore

La griglia viola visibile nella finestra principale rappresenta un piano di rilevamento posizionato all’interno del dominio di simulazione. Fate doppio clic sul rilevatore 0 nella scheda Output per aprire il grafico della potenza registrata.La griglia viola visibile nella finestra principale rappresenta un piano di rilevamento posizionato all’interno del dominio di simulazione. Fate doppio clic sul rilevatore 0 nella scheda Output per aprire il grafico della potenza registrata.

Main window showing the detector plane in purple.
Il piano del rivelatore (griglia viola) all’interno del dominio a spazio libero.Il piano del rivelatore (griglia viola) all’interno del dominio a spazio libero.
Detector power versus time plot.
Potenza del rivelatore in funzione del tempo.Potenza del rivelatore in funzione del tempo.

Il grafico risultante mostra la potenza elettromagnetica che attraversa il piano in funzione del tempo. Inizialmente, il rivelatore registra un segnale nullo. Quando l’onda raggiunge il piano, la potenza misurata aumenta e poi si stabilizza in base al profilo temporale della sorgente. Questa semplice configurazione consente di collegare facilmente la propagazione visiva dell’onda, visualizzata nell’immagine, con una misurazione quantitativa della potenza.Il grafico risultante mostra la potenza elettromagnetica che attraversa il piano in funzione del tempo. Inizialmente, il rivelatore registra un segnale nullo. Quando l’onda raggiunge il piano, la potenza misurata aumenta e poi si stabilizza in base al profilo temporale della sorgente. Questa semplice configurazione consente di collegare facilmente la propagazione visiva dell’onda, visualizzata nell’immagine, con una misurazione quantitativa della potenza.

Ora avete completato la vostra prima simulazione FDTD in OghmaNano. Sebbene il sistema non contenesse materiali o dispositivi, ha dimostrato l’intero processo numerico: definizione dell’ambiente, creazione della griglia, selezione del dispositivo GPU, avanzamento temporale, visualizzazione dei campi ed estrazione dei dati dal rivelatore. Nei tutorial successivi, gli stessi strumenti saranno applicati a sistemi fotonici e optoelettronici strutturati.Ora avete completato la vostra prima simulazione FDTD in OghmaNano. Sebbene il sistema non contenesse materiali o dispositivi, ha dimostrato l’intero processo numerico: definizione dell’ambiente, creazione della griglia, selezione del dispositivo GPU, avanzamento temporale, visualizzazione dei campi ed estrazione dei dati dal rivelatore. Nei tutorial successivi, gli stessi strumenti saranno applicati a sistemi fotonici e optoelettronici strutturati.

7. Accelerare la simulazione passando alla modalità 2D (piano XZ).7. Accelerare la simulazione passando alla modalità 2D (piano XZ).

Spesso, simulazioni completamente tridimensionali non sono necessarie per comprendere la struttura e il funzionamento di dispositivi, in particolare quando le leggi della fisica sono sostanzialmente invarianti in una direzione. In questi casi, è possibile ottenere un notevole aumento della velocità di calcolo riducendo il problema a due dimensioni. Nell’esempio dello spazio libero, il passaggio da un modello 3D a una simulazione XZ elimina l’intera dimensione Y dalla griglia di calcolo. Il risultato è un minor numero di punti della griglia, una minore quantità di dati di campo e tempi di esecuzione notevolmente più brevi, in genere così rapidi da rendere le ripetizioni della simulazione effettivamente interattive.Spesso, simulazioni completamente tridimensionali non sono necessarie per comprendere la struttura e il funzionamento di dispositivi, in particolare quando le leggi della fisica sono sostanzialmente invarianti in una direzione. In questi casi, è possibile ottenere un notevole aumento della velocità di calcolo riducendo il problema a due dimensioni. Nell’esempio dello spazio libero, il passaggio da un modello 3D a una simulazione XZ elimina l’intera dimensione Y dalla griglia di calcolo. Il risultato è un minor numero di punti della griglia, una minore quantità di dati di campo e tempi di esecuzione notevolmente più brevi, in genere così rapidi da rendere le ripetizioni della simulazione effettivamente interattive.

Per farlo, tornate alla scheda «Ottico», aprite «Rete ottica» e selezionate la configurazione della rete 2D mostrata in ??. La modifica principale consiste nel disattivare l’asse Y, in modo che la simulazione venga eseguita su un piano XZ.Per farlo, tornate alla scheda «Ottico», aprite «Rete ottica» e selezionate la configurazione della rete 2D mostrata in ??. La modifica principale consiste nel disattivare l’asse Y, in modo che la simulazione venga eseguita su un piano XZ.

Optical mesh editor configured for a 2D XZ simulation by suppressing the Y dimension.
Rete ottica configurata per simulazioni bidimensionali: disattivare l’asse Y per eseguire una simulazione sugli assi X e Z.Rete ottica configurata per simulazioni bidimensionali: disattivare l’asse Y per eseguire una simulazione sugli assi X e Z.
Snapshot viewer in 2D showing the wave propagating in the XZ plane.
La visualizzazione delle immagini in 2D consente di osservare rapidamente l’evoluzione del campo nel piano XZ ed è facile scorrere le immagini.La visualizzazione delle immagini in 2D consente di osservare rapidamente l’evoluzione del campo nel piano XZ ed è facile scorrere le immagini.
FDTD editor showing output verbosity to disk set to write everything to disk.
Per una riproduzione più fluida, aumenti la densità degli screenshot impostando il livello di dettaglio dell’output su «Salva tutto su disco».Per una riproduzione più fluida, aumenti la densità degli screenshot impostando il livello di dettaglio dell’output su «Salva tutto su disco».

Ora che la griglia è stata ridotta a due dimensioni, esegui nuovamente la simulazione. Dovresti notare immediatamente che il risolutore completa l’operazione quasi istantaneamente rispetto al caso tridimensionale. Apri nuovamente la directory snapshots/ e scorri le immagini nel visualizzatore (??). Poiché il set di dati è molto più piccolo, il visualizzatore non solo si carica più velocemente, ma risponde anche più rapidamente quando trascini la barra di scorrimento del tempo o sposti i controlli della sezione trasversale spaziale.Ora che la griglia è stata ridotta a due dimensioni, esegui nuovamente la simulazione. Dovresti notare immediatamente che il risolutore completa l’operazione quasi istantaneamente rispetto al caso tridimensionale. Apri nuovamente la directory snapshots/ e scorri le immagini nel visualizzatore (??). Poiché il set di dati è molto più piccolo, il visualizzatore non solo si carica più velocemente, ma risponde anche più rapidamente quando trascini la barra di scorrimento del tempo o sposti i controlli della sezione trasversale spaziale.

Un aspetto da tenere presente è che la fluidità percepita dell’animazione può variare. Nella simulazione 2D, l’avanzamento è molto rapido e in genere vengono generati meno fotogrammi, quindi, quando si scorre l’animazione, l’evoluzione potrebbe apparire leggermente a scatti, semplicemente perché tra un istante temporale e il successivo vengono registrati meno fotogrammi. Se si desidera seguire la propagazione dell’onda con maggiore dettaglio temporale, aumentare la quantità di dati salvati su disco.Un aspetto da tenere presente è che la fluidità percepita dell’animazione può variare. Nella simulazione 2D, l’avanzamento è molto rapido e in genere vengono generati meno fotogrammi, quindi, quando si scorre l’animazione, l’evoluzione potrebbe apparire leggermente a scatti, semplicemente perché tra un istante temporale e il successivo vengono registrati meno fotogrammi. Se si desidera seguire la propagazione dell’onda con maggiore dettaglio temporale, aumentare la quantità di dati salvati su disco.

Per farlo, tornate alla scheda «Ottica», cliccate sul pulsante «Simulazione FDTD» per aprire la finestra di configurazione FDTD e modificate l’impostazione «Livello di dettaglio dell’output su disco» da «Salva tutto su disco ogni 8 passaggi» a «Salva tutto su disco (??)». In questo modo, verrà salvato un’immagine ad ogni singolo passo temporale. Quando riaprirete la finestra di visualizzazione delle immagini, potrete seguire con grande precisione la propagazione dell’onda nel tempo, con una risoluzione temporale molto più elevata durante la riproduzione e la navigazione.Per farlo, tornate alla scheda «Ottica», cliccate sul pulsante «Simulazione FDTD» per aprire la finestra di configurazione FDTD e modificate l’impostazione «Livello di dettaglio dell’output su disco» da «Salva tutto su disco ogni 8 passaggi» a «Salva tutto su disco (??)». In questo modo, verrà salvato un’immagine ad ogni singolo passo temporale. Quando riaprirete la finestra di visualizzazione delle immagini, potrete seguire con grande precisione la propagazione dell’onda nel tempo, con una risoluzione temporale molto più elevata durante la riproduzione e la navigazione.