首页 示例 截图 用户手册 Bluesky logo YouTube
OghmaNano 模拟有机/钙钛矿太阳能电池、OFET 和 OLED 下载

oghma 文件格式

1. 什么是 JSON?

OghmaNano sim.json file opened in the Firefox browser showing structured JSON parameters
在 Firefox 中打开的 sim.json 文件示例,显示了 OghmaNano 仿真的底层 JSON 结构。

OghmaNano 将其仿真信息存储在 JSON 文件中。JSON(JavaScript Object Notation)是一种非常简单的、基于文本的格式,用于存储和传输结构化数据。它在科学软件中被广泛使用,因为它既便于人类阅读,也便于机器解析。您可以在 https://json.org/example.html 查看 JSON 结构的一般示例。

为了说明 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 查看器。下方 ?? 展示了在 Firefox 中查看 sim.json 文件的示例。

最后一点:尽管 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 被组织为少量顶层部分。 这些部分随后分支为更详细的子部分,例如 JV 扫描、EQE 运行或器件层定义。 当前格式中存在的主要顶层部分汇总在下表中: ??

sim.json 中当前的顶层部分
部分 用途
sim通用元数据(例如版本、运行模式、备注)
sims所有仿真定义(JV、Suns-Voc、EQE、PL、时域、ray、FDTD 等)
epitaxy器件结构:层、接触、几何形状、材料
math数值求解器设置和容差
optical光学模型、光源、探测器、网格
dump输出控制:详细程度、探针、文件格式
server运行时/并行化(线程、GPU、时间限制)
在此 sim.json 中检测到的主要顶层部分。

3. OghmaNano json 格式的特殊之处

4. 编码

OghmaNano 读取/写入的 .json 文件始终以 UTF-8 格式存储。OghmaNano 不能处理 UTF-16 或任何其他文本编码 标准。如今 Windows 记事本和大多数其他应用默认都使用 UTF-8,因此如果您不了解这些文本 存储格式,可能也无关紧要。只有当您开始用 C++ 等语言以编程方式 生成 .oghma 文件,并使用中文或俄文等带有非拉丁字符字母表的语言时, 这个问题才可能显现出来。

5. 文件格式的前向/后向兼容性

我们投入了大量工作,以确保新版 OghmaNano 能够读取旧版本生成的文件。 但是,旧版本 OghmaNano 可能无法读取较新版本生成的文件。每次用户 使用 GUI 打开 sim.oghma 文件时,都会检查文件格式;如果其与当前 版本所使用的格式不同,文件将被更新并重新写回磁盘。如果您在无头配置中通过 直接调用 \(oghma\_core.exe\) 使用 OghmaNano,那么当您使用来自旧版本 模型的 sim.oghma 文件时,在运行 \(oghma\_core.exe\) 之前,请确保先在 GUI 中打开它,以确保文件处于正确格式。

6. 提示

如果您不确定某个特定参数在 OghmaNano sim.json 文件中存储在哪里, 一个非常有效的方法是比较该文件的两个版本,看看发生了什么变化。 实现这一点的一种方式是使用文件比较工具,例如 KDiff3

过程很简单:

  1. 在 OghmaNano 用户界面中打开您的仿真。
  2. 调整您感兴趣的参数(例如,更改有源层厚度或某个电压设置)并保存仿真。
  3. 使用 KDiff3(或其他 diff 工具)将新的 sim.json 文件与旧版本进行比较。
  4. 查看不同的行:这些将准确显示该参数在 JSON 结构中的存储位置。

如果您不确定参数在文件中的路径,这种技术是一种快速而可靠的方法来定位 JSON 中的参数。 对于具有许多嵌套部分的复杂仿真,它尤其有用。

👉 下一步: 现在继续 探索参数扫描工具, 在那里您可以学习如何系统地改变仿真参数并分析结果。