Il formato di file OghmaIl formato di file Oghma
1. Cos'è JSON?1. Cos'è JSON?
sim.json aperto in Firefox, che mostra la struttura JSON sottostante di una simulazione OghmaNano.Un esempio di file sim.json aperto in Firefox, che mostra la struttura JSON sottostante di una simulazione OghmaNano.OghmaNano memorizza le informazioni relative alle simulazioni in un file JSON. JSON (JavaScript Object Notation) è un formato molto semplice, basato su testo, utilizzato per archiviare e trasmettere dati strutturati. È ampiamente utilizzato nei software scientifici perché è facilmente leggibile sia dagli utenti che dalle macchine. È possibile consultare esempi generali di strutture JSON all'indirizzo https://json.org/example.html.OghmaNano memorizza le informazioni relative alle simulazioni in un file JSON. JSON (JavaScript Object Notation) è un formato molto semplice, basato su testo, utilizzato per archiviare e trasmettere dati strutturati. È ampiamente utilizzato nei software scientifici perché è facilmente leggibile sia dagli utenti che dalle macchine. È possibile consultare esempi generali di strutture JSON all'indirizzo https://json.org/example.html.
Per illustrare il funzionamento di JSON, di seguito è riportato un esempio semplice. Un file JSON è composto da sezioni che iniziano e terminano con parentesi graffe { }. Ogni sezione contiene elementi, o etichette, come "color_of_dog", "dog_age" o "dogs_toys". Questi elementi devono essere sempre scritti tra virgolette doppie e sono seguiti da due punti : e quindi dal valore dei dati corrispondente. I valori di testo sono racchiusi tra virgolette doppie, mentre i numeri, come interi o decimali, sono scritti senza virgolette. In OghmaNano, i valori simili a valori booleani sono memorizzati come stringhe "true" o "false". Affinché il file sia valido, tutte le parentesi di apertura e chiusura devono essere correttamente allineate. Gli elementi all'interno di una sezione sono separati da virgole, ad eccezione dell'ultimo elemento, che non termina con una virgola. ??.Per illustrare il funzionamento di JSON, di seguito è riportato un esempio semplice. Un file JSON è composto da sezioni che iniziano e terminano con parentesi graffe { }. Ogni sezione contiene elementi, o etichette, come "color_of_dog", "dog_age" o "dogs_toys". Questi elementi devono essere sempre scritti tra virgolette doppie e sono seguiti da due punti : e quindi dal valore dei dati corrispondente. I valori di testo sono racchiusi tra virgolette doppie, mentre i numeri, come interi o decimali, sono scritti senza virgolette. In OghmaNano, i valori simili a valori booleani sono memorizzati come stringhe "true" o "false". Affinché il file sia valido, tutte le parentesi di apertura e chiusura devono essere correttamente allineate. Gli elementi all'interno di una sezione sono separati da virgole, ad eccezione dell'ultimo elemento, che non termina con una virgola. ??.
{
"color_of_dog": "brown",
"dog_age": 5,
"dogs_toys":
{
"rabbit": "true",
"stick": "false"
}
}
JSON semplice.Esempio di una struttura JSON semplice.OghmaNano utilizza gli stessi principi JSON per archiviare tutti i dati relativi alle simulazioni. Queste informazioni sono contenute in un file denominato sim.json, che include tutti i parametri del dispositivo, le impostazioni della simulazione e la configurazione dell’output. Ogni simulazione avrà il proprio file sim.json. Sebbene sia possibile aprire questo file in qualsiasi editor di testo, spesso è più semplice utilizzare un visualizzatore JSON dedicato, in quanto formatta i dati in una struttura ad albero di facile lettura. Firefox dispone di un pratico visualizzatore JSON integrato. Un esempio di un file sim.json visualizzato in Firefox è mostrato di seguito in ??.OghmaNano utilizza gli stessi principi JSON per archiviare tutti i dati relativi alle simulazioni. Queste informazioni sono contenute in un file denominato sim.json, che include tutti i parametri del dispositivo, le impostazioni della simulazione e la configurazione dell’output. Ogni simulazione avrà il proprio file sim.json. Sebbene sia possibile aprire questo file in qualsiasi editor di testo, spesso è più semplice utilizzare un visualizzatore JSON dedicato, in quanto formatta i dati in una struttura ad albero di facile lettura. Firefox dispone di un pratico visualizzatore JSON integrato. Un esempio di un file sim.json visualizzato in Firefox è mostrato di seguito in ??.
Un ultimo punto: sebbene sim.json sia il file di configurazione principale, non viene sempre memorizzato separatamente. Invece, OghmaNano lo include spesso all’interno di un file sim.oghma, che è semplicemente un archivio ZIP standard; questo serve a risparmiare spazio. Se si rinomina sim.oghma in sim.zip, è possibile aprirlo con Esplora risorse di Windows o con qualsiasi programma per la visualizzazione di file ZIP ed estrarre sim.json. Se si inserisce una copia di sim.json nella stessa directory di simulazione e si rinomina l’archivio riportandolo a sim.oghma, OghmaNano ignorerà la versione archiviata di sim.json e utilizzerà invece il file di testo semplice sim.json. Questa funzionalità è estremamente utile per l’automazione, poiché è possibile modificare direttamente sim.json utilizzando qualsiasi linguaggio di programmazione, senza dover manipolare i file ZIP.Un ultimo punto: sebbene sim.json sia il file di configurazione principale, non viene sempre memorizzato separatamente. Invece, OghmaNano lo include spesso all’interno di un file sim.oghma, che è semplicemente un archivio ZIP standard; questo serve a risparmiare spazio. Se si rinomina sim.oghma in sim.zip, è possibile aprirlo con Esplora risorse di Windows o con qualsiasi programma per la visualizzazione di file ZIP ed estrarre sim.json. Se si inserisce una copia di sim.json nella stessa directory di simulazione e si rinomina l’archivio riportandolo a sim.oghma, OghmaNano ignorerà la versione archiviata di sim.json e utilizzerà invece il file di testo semplice sim.json. Questa funzionalità è estremamente utile per l’automazione, poiché è possibile modificare direttamente sim.json utilizzando qualsiasi linguaggio di programmazione, senza dover manipolare i file ZIP.
2. Il formato file OghmaNano2. Il formato file OghmaNano
OghmaNano applica esattamente questi principi nel file di configurazione delle simulazioni, denominato sim.json. Questo file contiene tutte le informazioni necessarie per descrivere la struttura di un dispositivo, definire le simulazioni da eseguire e configurare i risolutori. Ogni directory di simulazione conterrà il proprio file sim.json. Sebbene sia possibile aprire questo file in qualsiasi editor di testo, spesso è più comodo utilizzare un visualizzatore JSON come Firefox, che presenta automaticamente i dati in una struttura ad albero formattata.OghmaNano applica esattamente questi principi nel file di configurazione delle simulazioni, denominato sim.json. Questo file contiene tutte le informazioni necessarie per descrivere la struttura di un dispositivo, definire le simulazioni da eseguire e configurare i risolutori. Ogni directory di simulazione conterrà il proprio file sim.json. Sebbene sia possibile aprire questo file in qualsiasi editor di testo, spesso è più comodo utilizzare un visualizzatore JSON come Firefox, che presenta automaticamente i dati in una struttura ad albero formattata.
A livello più generale, sim.json è strutturato in un numero limitato di sezioni principali. Queste sezioni si suddividono poi in sottosezioni più dettagliate, come le analisi di tipo JV, le esecuzioni di EQE o le definizioni degli strati del dispositivo. Le principali sezioni di livello superiore presenti nel formato attuale sono riassunte nella tabella seguente: ??.A livello più generale, sim.json è strutturato in un numero limitato di sezioni principali. Queste sezioni si suddividono poi in sottosezioni più dettagliate, come le analisi di tipo JV, le esecuzioni di EQE o le definizioni degli strati del dispositivo. Le principali sezioni di livello superiore presenti nel formato attuale sono riassunte nella tabella seguente: ??.
| SezioneSezione | ScopoScopo |
|---|---|
simsim | Metadati generali (ad esempio, versione, modalità di esecuzione, note)Metadati generali (ad esempio, versione, modalità di esecuzione, note) |
simssims | Tutte le definizioni di simulazione (JV, Suns-Voc, EQE, PL, dominio del tempo, raggio, FDTD, ecc.)Tutte le definizioni di simulazione (JV, Suns-Voc, EQE, PL, dominio del tempo, raggio, FDTD, ecc.) |
epitaxyepitaxy | Struttura del dispositivo: strati, contatti, geometria, materialiStruttura del dispositivo: strati, contatti, geometria, materiali |
mathmath | Impostazioni e tolleranze del risolutore numericoImpostazioni e tolleranze del risolutore numerico |
opticaloptical | Modelli ottici, sorgenti, rivelatori, griglieModelli ottici, sorgenti, rivelatori, griglie |
dumpdump | Opzioni di configurazione dell’output: livello di dettaglio, tipi di dati, formati di file.Opzioni di configurazione dell’output: livello di dettaglio, tipi di dati, formati di file. |
serverserver | Tempo di esecuzione/parallelizzazione (thread, GPU, limiti di tempo)Tempo di esecuzione/parallelizzazione (thread, GPU, limiti di tempo) |
sim.json.Sono state individuate le principali sezioni di livello superiore in questo sim.json.3. Peculiarità del formato JSON di OghmaNano3. Peculiarità del formato JSON di OghmaNano
-
Il file JSON di OghmaNano non supporta le liste JSON standard, ad esempio ["Rosso", "Verde", "Blu"]. Se è presente una lista di elementi, questa viene definita innanzitutto dichiarando i segmenti di variabile, indicando il numero di elementi nella lista, ad esempio "segmenti", 0. Ogni elemento della lista viene quindi memorizzato sotto le voci "segmento0", "segmento1", ecc. Questo formato consente a OghmaNano di allocare la memoria per la lettura delle strutture prima di effettuarla. Questo è visibile nella figura 14.1, dove è presente una lista con 1 segmento.Il file JSON di OghmaNano non supporta le liste JSON standard, ad esempio ["Rosso", "Verde", "Blu"]. Se è presente una lista di elementi, questa viene definita innanzitutto dichiarando i segmenti di variabile, indicando il numero di elementi nella lista, ad esempio "segmenti", 0. Ogni elemento della lista viene quindi memorizzato sotto le voci "segmento0", "segmento1", ecc. Questo formato consente a OghmaNano di allocare la memoria per la lettura delle strutture prima di effettuarla. Questo è visibile nella figura 14.1, dove è presente una lista con 1 segmento.
-
Molti degli elementi presenti nel file JSON saranno contrassegnati da un numero di identificazione, ovvero un codice esadecimale di 16 cifre, che può essere utilizzato per identificare in modo univoco l’elemento. Un numero di identificazione è visibile anche nella figura 14.1. Questi numeri di identificazione vengono generati in modo casuale, ma ogni numero di identificazione deve essere univoco. I numeri di identificazione consentono di identificare in modo univoco gli oggetti, ad esempio gli strati epitassiali, anche se hanno lo stesso nome.Molti degli elementi presenti nel file JSON saranno contrassegnati da un numero di identificazione, ovvero un codice esadecimale di 16 cifre, che può essere utilizzato per identificare in modo univoco l’elemento. Un numero di identificazione è visibile anche nella figura 14.1. Questi numeri di identificazione vengono generati in modo casuale, ma ogni numero di identificazione deve essere univoco. I numeri di identificazione consentono di identificare in modo univoco gli oggetti, ad esempio gli strati epitassiali, anche se hanno lo stesso nome.
4. Codifica4. Codifica
I file .json letti/scritti da OghmaNano vengono sempre salvati in formato UTF-8. OghmaNano non è in grado di gestire UTF-16 o altri standard di codifica del testo. Attualmente, il Blocco note di Windows e la maggior parte delle altre applicazioni utilizzano UTF-8 come impostazione predefinita, quindi, se non si conoscono i diversi formati di memorizzazione del testo, probabilmente non è un problema. Questo aspetto diventerà rilevante solo se si inizia a generare programmaticamente file .oghma in un linguaggio come C++ e si utilizza un linguaggio come il cinese o il russo, che includono caratteri non latini nel loro alfabeto.I file .json letti/scritti da OghmaNano vengono sempre salvati in formato UTF-8. OghmaNano non è in grado di gestire UTF-16 o altri standard di codifica del testo. Attualmente, il Blocco note di Windows e la maggior parte delle altre applicazioni utilizzano UTF-8 come impostazione predefinita, quindi, se non si conoscono i diversi formati di memorizzazione del testo, probabilmente non è un problema. Questo aspetto diventerà rilevante solo se si inizia a generare programmaticamente file .oghma in un linguaggio come C++ e si utilizza un linguaggio come il cinese o il russo, che includono caratteri non latini nel loro alfabeto.
5. Compatibilità del formato file con versioni precedenti e successive.5. Compatibilità del formato file con versioni precedenti e successive.
Si compie un notevole sforzo per garantire che le nuove versioni di OghmaNano possano leggere i file generati nelle versioni precedenti. Tuttavia, le versioni precedenti di OghmaNano potrebbero non essere in grado di leggere i file generati nelle versioni più recenti. Ogni volta che l’utente apre un file «sim.oghma» tramite l’interfaccia grafica, il formato del file viene controllato e, se differisce da quello utilizzato nella versione corrente, il file viene aggiornato e riscritto sul disco. Se si utilizza OghmaNano in una configurazione senza interfaccia grafica, chiamando direttamente \(oghma\_core.exe\), allora, prima di eseguire \(oghma\_core.exe\), assicurarsi di aver aperto i file «sim.oghma» provenienti dalle versioni precedenti del modello tramite l’interfaccia grafica, per verificare che il file sia nel formato corretto.Si compie un notevole sforzo per garantire che le nuove versioni di OghmaNano possano leggere i file generati nelle versioni precedenti. Tuttavia, le versioni precedenti di OghmaNano potrebbero non essere in grado di leggere i file generati nelle versioni più recenti. Ogni volta che l’utente apre un file «sim.oghma» tramite l’interfaccia grafica, il formato del file viene controllato e, se differisce da quello utilizzato nella versione corrente, il file viene aggiornato e riscritto sul disco. Se si utilizza OghmaNano in una configurazione senza interfaccia grafica, chiamando direttamente \(oghma\_core.exe\), allora, prima di eseguire \(oghma\_core.exe\), assicurarsi di aver aperto i file «sim.oghma» provenienti dalle versioni precedenti del modello tramite l’interfaccia grafica, per verificare che il file sia nel formato corretto.
6. Consigli6. Consigli
Se non siete sicuri di dove sia memorizzato un determinato parametro nel file OghmaNano sim.json, un metodo molto efficace consiste nel confrontare due versioni del file e osservare quali modifiche sono state apportate. Un modo per farlo è utilizzare uno strumento di confronto file come KDiff3.Se non siete sicuri di dove sia memorizzato un determinato parametro nel file OghmaNano sim.json, un metodo molto efficace consiste nel confrontare due versioni del file e osservare quali modifiche sono state apportate. Un modo per farlo è utilizzare uno strumento di confronto file come KDiff3.
La procedura è semplice:La procedura è semplice:
- Apri la tua simulazione nell’interfaccia utente di OghmaNano.Apri la tua simulazione nell’interfaccia utente di OghmaNano.
- Modificare il parametro desiderato (ad esempio, cambiare lo spessore dello strato attivo o un valore di tensione) e salvare la simulazione.Modificare il parametro desiderato (ad esempio, cambiare lo spessore dello strato attivo o un valore di tensione) e salvare la simulazione.
- Confronta il nuovo file
sim.jsoncon la versione precedente utilizzando KDiff3 (o un altro strumento di confronto).Confronta il nuovo filesim.jsoncon la versione precedente utilizzando KDiff3 (o un altro strumento di confronto). - Individua le righe che presentano delle differenze: queste indicheranno con precisione in quale parte della struttura JSON è memorizzato quel parametro.Individua le righe che presentano delle differenze: queste indicheranno con precisione in quale parte della struttura JSON è memorizzato quel parametro.
Questa tecnica rappresenta un metodo rapido e affidabile per individuare i parametri all’interno di un file JSON, soprattutto quando non si è sicuri del percorso in cui si trovano. È particolarmente utile per simulazioni complesse con numerose sezioni nidificate.Questa tecnica rappresenta un metodo rapido e affidabile per individuare i parametri all’interno di un file JSON, soprattutto quando non si è sicuri del percorso in cui si trovano. È particolarmente utile per simulazioni complesse con numerose sezioni nidificate.
👉 Passaggio successivo: ora proseguite con l’esplorazione dello strumento Parameter Scan, dove potrete scoprire come modificare in modo sistematico i parametri di simulazione e analizzare i risultati.👉 Passaggio successivo: ora proseguite con l’esplorazione dello strumento Parameter Scan, dove potrete scoprire come modificare in modo sistematico i parametri di simulazione e analizzare i risultati.