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.

Il formato di file OghmaIl formato di file Oghma

1. Cos'è JSON?1. Cos'è JSON?

OghmaNano sim.json file opened in the Firefox browser showing structured JSON parameters
Un esempio di file 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"
  }
}
Esempio di una struttura 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: ??.

Current top-level sections in sim.json
SezioneSezione ScopoScopo
simsimMetadati generali (ad esempio, versione, modalità di esecuzione, note)Metadati generali (ad esempio, versione, modalità di esecuzione, note)
simssimsTutte 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.)
epitaxyepitaxyStruttura del dispositivo: strati, contatti, geometria, materialiStruttura del dispositivo: strati, contatti, geometria, materiali
mathmathImpostazioni e tolleranze del risolutore numericoImpostazioni e tolleranze del risolutore numerico
opticalopticalModelli ottici, sorgenti, rivelatori, griglieModelli ottici, sorgenti, rivelatori, griglie
dumpdumpOpzioni 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.
serverserverTempo di esecuzione/parallelizzazione (thread, GPU, limiti di tempo)Tempo di esecuzione/parallelizzazione (thread, GPU, limiti di tempo)
Sono state individuate le principali sezioni di livello superiore in questo 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

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:

  1. Apri la tua simulazione nell’interfaccia utente di OghmaNano.Apri la tua simulazione nell’interfaccia utente di OghmaNano.
  2. 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.
  3. Confronta il nuovo file sim.json con la versione precedente utilizzando KDiff3 (o un altro strumento di confronto).Confronta il nuovo file sim.json con la versione precedente utilizzando KDiff3 (o un altro strumento di confronto).
  4. 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.