Das Oghma-Dateiformat
1. Was ist JSON?
sim.json, die in Firefox geöffnet wurde und die zugrunde liegende JSON-Struktur einer OghmaNano-Simulation anzeigt.OghmaNano speichert seine Simulationsdaten in einer JSON-Datei. JSON (JavaScript Object Notation) ist ein sehr einfaches, textbasiertes Format zum Speichern und Übertragen strukturierter Daten. Es wird häufig in wissenschaftlicher Software verwendet, da es sowohl für Menschen lesbar als auch für Maschinen verarbeitbar ist. Allgemeine Beispiele für JSON-Strukturen finden Sie unter https://json.org/example.html.
Um zu veranschaulichen, wie JSON funktioniert, folgt hier ein einfaches Beispiel. Eine JSON-Datei besteht aus Abschnitten, die mit geschweiften Klammern beginnen und enden { }. Jeder Abschnitt enthält Token oder Bezeichnungen, wie z. B. "color_of_dog", "dog_age" oder "dogs_toys". Diese Token müssen immer in doppelten Anführungszeichen geschrieben werden, gefolgt von einem Doppelpunkt : und dann dem zugehörigen Datenwert. Textwerte werden in doppelten Anführungszeichen gesetzt, während Zahlen wie ganze Zahlen oder Dezimalzahlen ohne Anführungszeichen geschrieben werden. In OghmaNano werden boolesche Werte als die Zeichenketten "true" oder "false" gespeichert. Damit die Datei gültig ist, müssen alle öffnenden und schließenden Klammern korrekt angeordnet sein. Elemente innerhalb eines Abschnitts werden durch Kommas getrennt, mit Ausnahme des letzten Elements, das nicht mit einem Komma endet ??.
{
"color_of_dog": "brown",
"dog_age": 5,
"dogs_toys":
{
"rabbit": "true",
"stick": "false"
}
}
JSON-Struktur.OghmaNano verwendet die gleichen JSON-Prinzipien, um alle Simulationsdaten zu speichern. Diese Informationen sind in einer Datei mit dem Namen sim.json enthalten, die alle Geräteparameter, Simulationseinstellungen und Ausgabekonfigurationen enthält. Jede Simulation hat ihre eigene sim.json-Datei. Obwohl Sie diese Datei in jedem Texteditor öffnen können, ist es oft einfacher, einen speziellen JSON-Viewer zu verwenden, da dieser die Daten in einer leicht lesbaren Baumstruktur darstellt. Firefox verfügt über einen integrierten JSON-Viewer. Ein Beispiel für eine in Firefox angezeigte sim.json-Datei ist unten in ?? dargestellt.
Noch ein letzter Punkt: Obwohl sim.json die wichtigste Konfigurationsdatei ist, wird sie nicht immer separat gespeichert. Stattdessen packt OghmaNano sie oft in eine sim.oghma-Datei, die lediglich ein Standard-ZIP-Archiv ist – dies dient dazu, Speicherplatz zu sparen. Wenn Sie sim.oghma in sim.zip umbenennen, können Sie es mit dem Windows Explorer oder einem beliebigen ZIP-Programm öffnen und sim.json extrahieren. Wenn Sie eine Kopie von sim.json in dasselbe Simulationsverzeichnis legen und das Archiv wieder in sim.oghma umbenennen, ignoriert OghmaNano die archivierte Version von sim.json und verwendet stattdessen Ihre einfache Textdatei sim.json. Diese Funktion ist äußerst nützlich für die Automatisierung, da Sie sim.json direkt mit einer beliebigen Programmiersprache bearbeiten können, ohne ZIP-Dateien manipulieren zu müssen.
2. Das OghmaNano-Dateiformat
OghmaNano wendet genau diese Prinzipien in seiner Simulationskonfigurationsdatei an, die den Namen sim.json trägt. Diese Datei enthält alles, was zur Beschreibung einer Bauelementstruktur, zur Definition der durchzuführenden Simulationen und zur Konfiguration der Solver benötigt wird. Jedes Simulationsverzeichnis enthält ein eigenes sim.json. Obwohl Sie diese Datei in jedem Texteditor öffnen können, ist es oft praktischer, einen JSON-Viewer wie Firefox zu verwenden, der die Daten automatisch in einer formatierten Baumstruktur darstellt.
Auf der höchsten Ebene ist sim.json in eine kleine Anzahl von übergeordneten Abschnitten unterteilt. Diese Abschnitte verzweigen sich dann in detailliertere Unterabschnitte, wie z. B. JV-Messungen, EQE-Messungen oder Definitionen von Schichtstrukturen. Die wichtigsten übergeordneten Abschnitte im aktuellen Format sind in der folgenden Tabelle zusammengefasst: ??.
| Abschnitt | Zweck |
|---|---|
sim | Allgemeine Metadaten (z. B. Version, Ausführungsmodus, Anmerkungen) |
sims | Alle Simulationsdefinitionen (JV, Suns-Voc, EQE, PL, Zeitbereich, Strahlverfolgung, FDTD usw.) |
epitaxy | Aufbau des Bauelements: Schichten, Kontakte, Geometrie, Materialien |
math | Einstellungen und Toleranzen für den numerischen Solver |
optical | Optische Modelle, Lichtquellen, Detektoren, Gitter |
dump | Ausgabeoptionen: Ausführlichkeit, Testabfragen, Dateiformate |
server | Laufzeit/Parallelisierung (Threads, GPU, Zeitlimits) |
sim.json wurden wichtige übergeordnete Abschnitte erkannt.3. Eigenheiten des OghmaNano-JSON-Formats
-
Die OghmaNano-JSON-Datei unterstützt keine Standard-JSON-Listen, z. B. ["Rot", "Grün", "Blau"]. Wenn eine Liste von Elementen vorhanden ist, wird diese definiert, indem zunächst die Variablensegmente deklariert werden, wobei die Anzahl der Elemente in der Liste angegeben wird, z. B. "segments", 0. Jedes Element in der Liste wird dann unter "segment0", "segment1" usw. gespeichert. Dieses Format ermöglicht es OghmaNano, den Speicher für das Einlesen der Strukturen zuzuweisen, bevor das Einlesen tatsächlich erfolgt. Dies ist in Abbildung 14.1 zu sehen, wo eine Liste mit 1 Segment vorhanden ist.
-
Viele der Elemente in der JSON-Datei erhalten eine eindeutige ID-Nummer, die aus einem 16-stelligen Hexadezimalcode besteht. Diese ID-Nummer kann verwendet werden, um das jeweilige Element eindeutig zu identifizieren. Eine ID-Nummer ist auch in Abbildung 14.1 dargestellt. Diese ID-Nummern werden zufällig generiert, müssen aber jeweils eindeutig sein. Mithilfe von ID-Nummern können beispielsweise Epitaxieschichten eindeutig identifiziert werden, selbst wenn sie denselben Namen haben.
4. Kodierung
Die von OghmaNano gelesenen bzw. geschriebenen .json-Dateien werden immer im Format UTF-8 gespeichert. OghmaNano kann weder UTF-16 noch andere Textkodierungsstandards verarbeiten. Heutzutage verwenden Windows Notepad und die meisten anderen Anwendungen standardmäßig UTF-8. Wenn Sie also nicht wissen, was diese Textspeicherformate sind, spielt es wahrscheinlich keine Rolle. Dies wird erst dann zu einem Problem, wenn Sie beginnen, .oghma-Dateien programmatisch in einer Sprache wie C++ zu generieren und dabei eine Sprache wie Chinesisch oder Russisch mit nicht-lateinischen Zeichen in ihrem Alphabet verwenden.
5. Abwärts- und Aufwärtskompatibilität des Dateiformats
Es wird ein erheblicher Aufwand betrieben, um sicherzustellen, dass neue Versionen von OghmaNano Dateien lesen können, die in älteren Versionen erstellt wurden. Allerdings können ältere Versionen von OghmaNano möglicherweise keine Dateien lesen, die in neueren Versionen erstellt wurden. Jedes Mal, wenn der Benutzer eine „sim.oghma“-Datei über die grafische Benutzeroberfläche öffnet, wird das Dateiformat überprüft. Wenn es sich von dem in der aktuellen Version verwendeten Dateiformat unterscheidet, wird die Datei aktualisiert und wieder auf die Festplatte geschrieben. Wenn Sie OghmaNano in einer Konfiguration ohne grafische Benutzeroberfläche verwenden, indem Sie \(oghma\_core.exe\) direkt aufrufen, stellen Sie sicher, dass Sie vor der Ausführung von \(oghma\_core.exe\) die „sim.oghma“-Dateien aus älteren Versionen des Modells zuerst in der grafischen Benutzeroberfläche geöffnet haben, um sicherzustellen, dass die Datei das richtige Format hat.
6. Tipps
Wenn Sie nicht sicher sind, wo ein bestimmter Parameter in der OghmaNano-sim.json-Datei gespeichert ist, ist eine sehr effektive Methode, zwei Versionen der Datei zu vergleichen und zu prüfen, welche Änderungen vorgenommen wurden. Eine Möglichkeit, dies zu tun, ist die Verwendung eines Datei-Vergleichstools wie KDiff3.
Der Ablauf ist einfach:
- Öffnen Sie Ihre Simulation in der Benutzeroberfläche von OghmaNano.
- Passen Sie den gewünschten Parameter an (z. B. ändern Sie die Dicke der aktiven Schicht oder eine Spannungseinstellung) und speichern Sie die Simulation.
- Vergleichen Sie die neue Datei
sim.jsonmit der vorherigen Version mithilfe von KDiff3 (oder einem anderen Vergleichsprogramm). - Suchen Sie nach den Zeilen, die sich unterscheiden: Diese zeigen genau, wo in der JSON-Struktur dieser Parameter gespeichert ist.
Diese Methode ist eine schnelle und zuverlässige Möglichkeit, Parameter in einer JSON-Datei zu finden, wenn Sie sich über deren Speicherort in der Datei nicht sicher sind. Sie ist besonders nützlich für komplexe Simulationen mit vielen verschachtelten Abschnitten.
👉 Nächster Schritt: Nun geht es weiter zu der Parameter-Scan-Funktion, wo Sie lernen können, wie Sie Simulationsparameter systematisch variieren und die Ergebnisse analysieren.