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.
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.
È 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.
Fare clic su «Optical mesh» per aprire l’editor della griglia.Fare clic su «Optical mesh» per aprire l’editor della griglia.
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.
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.
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.
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.
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.