Формат файлу Oghma.
1. Що таке JSON?
sim.json, відкритого в браузері Firefox, який демонструє базову структуру JSON для моделювання OghmaNano.OghmaNano зберігає інформацію про моделювання у файлі JSON. JSON (JavaScript Object Notation) — це дуже простий текстовий формат для зберігання та передавання структурованих даних. Він широко використовується в науковому програмному забезпеченні, оскільки його легко читати людині та обробляти комп’ютеру. Загальні приклади структур JSON можна переглянути за посиланням https://json.org/example.html.
Щоб проілюструвати, як працює JSON, наведено нижче простий приклад. Файл JSON складається з розділів, які починаються та закінчуються фігурними дужками { }. Кожен розділ містить маркери або позначки, наприклад "color_of_dog", "dog_age" або "dogs_toys". Ці маркери завжди мають бути записані в подвійних лапках, після них іде двокрапка :, а потім відповідне значення даних. Текстові значення розміщуються в подвійних лапках, тоді як числа, такі як цілі числа або дробові числа, записуються без лапок. У OghmaNano значення, подібні до булевих, зберігаються у вигляді рядків "true" або "false". Щоб файл був дійсним, усі відкриваючі та закриваючі дужки мають бути правильно розташовані. Елементи в межах розділу розділяються комами, за винятком останнього елемента, який не закінчується комою ??.
{
"color_of_dog": "brown",
"dog_age": 5,
"dogs_toys":
{
"rabbit": "true",
"stick": "false"
}
}
JSON.OghmaNano використовує ті самі принципи JSON для зберігання всіх даних моделювання. Ця інформація міститься у файлі під назвою sim.json, який містить усі параметри пристрою, налаштування моделювання та конфігурацію вихідних даних. Кожне моделювання матиме власний файл sim.json. Хоча ви можете відкрити цей файл у будь-якому текстовому редакторі, часто простіше використовувати спеціалізований переглядач JSON, оскільки він форматує дані у вигляді зручної для читання структури у вигляді дерева. У Firefox є вбудований зручний переглядач JSON. Приклад файлу sim.json, який переглядається у Firefox, показано нижче на ??.
Останній момент: хоча sim.json є основним файлом конфігурації, він не завжди зберігається окремо. Натомість, OghmaNano часто розміщує його всередині файлу sim.oghma, який є звичайним ZIP-архівом – це робиться для економії місця. Якщо ви перейменуєте sim.oghma на sim.zip, ви зможете відкрити його за допомогою провідника Windows або будь-якої програми для перегляду ZIP-архівів і витягти sim.json. Якщо ви розмістите копію sim.json в тій самій папці симуляції та перейменуєте архів назад на sim.oghma, OghmaNano ігноруватиме архівну версію sim.json і використовуватиме ваш звичайний текстовий файл sim.json. Ця функція надзвичайно корисна для автоматизації, оскільки ви можете безпосередньо редагувати sim.json, використовуючи будь-яку мову програмування, без необхідності маніпулювати ZIP-архівами.
2. Формат файлу OghmaNano.
OghmaNano застосовує саме ці принципи у файлі конфігурації для моделювання, який має назву sim.json. Цей файл містить усе необхідне для опису структури пристрою, визначення параметрів моделювання та налаштування алгоритмів розв’язання. У кожній папці моделювання буде свій файл sim.json. Хоча цей файл можна відкрити в будь-якому текстовому редакторі, часто зручніше використовувати переглядач JSON, наприклад, Firefox, який автоматично відображає дані у вигляді структурованого дерева.
На найвищому рівні sim.json організовано у вигляді невеликої кількості основних розділів. Ці розділи, у свою чергу, розгалужуються на детальні підрозділи, наприклад, розділи, що містять дані про сканування з’єднань, результати вимірювань ефективності квантових пристроїв або визначення шарів пристрою. Основні розділи, які представлені в поточній версії, узагальнено в таблиці нижче: ??.
| Розділ | Мета |
|---|---|
sim | Загальні метадані (наприклад, версія, режим роботи, примітки). |
sims | Усі визначення для моделювання (JV, Suns-Voc, EQE, PL, часова область, променева модель, FDTD тощо). |
epitaxy | Конструкція пристрою: шари, контакти, геометрія, матеріали. |
math | Налаштування та допустимі значення для чисельного розв’язувача |
optical | Оптичні моделі, джерела, детектори, сітки |
dump | Параметри керування виводом: рівень деталізації, способи перевірки, формати файлів. |
server | Час виконання/паралелізація (потоки, графічний процесор, обмеження часу). |
sim.json.3. Особливості формату JSON, що використовується в OghmaNano.
-
Файл OghmaNano у форматі JSON не підтримує стандартні списки JSON, наприклад, ["Червоний", "Зелений", "Синій"]. Якщо є список елементів, він визначається шляхом спочатку оголошення змінних сегментів, із зазначенням кількості елементів у списку, наприклад, "segments", 0. Кожен елемент у списку потім зберігається під назвами "segment0", "segment1" тощо. Цей формат дозволяє OghmaNano виділяти пам’ять для читання структур перед початком читання. Це можна побачити на рисунку 14.1, де є список з 1 сегментом.
-
Багатьом елементам у файлі JSON буде присвоєно ідентифікаційний номер, який являє собою шістнадцятизначний шістнадцятковий код. Його можна використовувати для унікальної ідентифікації елемента. Ідентифікаційний номер також можна побачити на рисунку 14.1. Ці ідентифікаційні номери генеруються випадковим чином, але кожен ідентифікаційний номер має бути унікальним. Ідентифікаційні номери дають змогу унікально ідентифікувати об’єкти, наприклад, епітаксійні шари, навіть якщо вони мають однакову назву.
4. Кодування
Файли у форматі .json, які зчитує та записує OghmaNano, завжди зберігаються у форматі UTF-8. OghmaNano не підтримує UTF-16 або будь-які інші стандарти кодування тексту. Сьогодні текстовий редактор Windows і більшість інших програм за замовчуванням використовують UTF-8, тому, якщо ви не знаєте, що це за формати зберігання тексту, це, ймовірно, не матиме значення. Проблема виникне лише тоді, коли ви почнете програмно генерувати файли .oghma мовою, наприклад, C++, і використовуватимете мову, наприклад, китайську чи російську, в якій алфавіт містить символи, відмінні від латинських.
5. Зворотна сумісність файлового формату, тобто можливість відкриття та використання файлів, створених у попередніх версіях.
Докладаються значні зусилля, щоб забезпечити сумісність нових версій OghmaNano з файлами, створеними в попередніх версіях. Однак, старі версії OghmaNano можуть не підтримувати файли, створені в новіших версіях. Щоразу, коли користувач відкриває файл sim.oghma за допомогою графічного інтерфейсу, перевіряється формат файлу, і якщо він відрізняється від формату, який використовується в поточній версії, файл оновлюється та перезаписується на диску. Якщо ви використовуєте OghmaNano у конфігурації без графічного інтерфейсу, викликаючи \(oghma\_core.exe\) безпосередньо, то перед запуском \(oghma\_core.exe\) переконайтеся, що файли sim.oghma зі старих версій моделі спочатку були відкриті в графічному інтерфейсі, щоб перевірити, чи файл має правильний формат.
6. Поради
Якщо ви не впевнені, де саме в файлі OghmaNano sim.json зберігається певний параметр, дуже ефективним способом буде порівняння двох версій файлу, щоб побачити, які зміни були внесені. Один із способів зробити це – використати інструмент для порівняння файлів, наприклад KDiff3.
Процес досить простий:
- Відкрийте свою симуляцію в користувацькому інтерфейсі OghmaNano.
- Відрегулюйте потрібний параметр (наприклад, змініть товщину активного шару або встановіть інше значення напруги) та збережіть результати моделювання.
- Порівняйте новий файл
sim.jsonз попередньою версією за допомогою KDiff3 (або іншого інструменту для порівняння файлів). - Знайдіть рядки, які відрізняються: вони покажуть, де саме в структурі JSON зберігається цей параметр.
Ця методика є швидким і надійним способом знайти параметри в JSON, якщо ви не впевнені в їхньому розташуванні у файлі. Вона особливо корисна для складних симуляцій із великою кількістю вкладених розділів.
👉 Наступний крок: тепер перейдіть до інструменту «Параметричне сканування», де ви зможете дізнатися, як систематично змінювати параметри моделювання та аналізувати результати.