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

S-Plane 教程(A 部分):Cooke triplet 的自动化参数扫描

1. 简介

通过优化透镜聚焦宽带光的多元件光学系统
多元件镜头系统通过平衡几何形状、间距和色散来最小化像差。 在本教程中,我们将探索自动化参数扫描和优化器如何在这一光学设计空间中进行搜索。

在本教程中,我们演示如何在 OghmaNano 中使用参数扫描工具完成 镜头优化光学设计的实用工作流程。以经典的 Cooke triplet 镜头系统为对象,我们系统地改变关键光学参数,例如 表面曲率和元件厚度,并分析它们对成像性能的影响。 通过大批量的光线追迹仿真来探索设计空间,并使用包括 RMS 光斑半径、光斑尺寸与质心、 光斑长轴与短轴半径、光斑椭圆率与方向角,以及包围能量半径(EE50、EE80、 EE90)等指标来量化性能,同时结合 3D 光线追迹视图中的光线路径进行可视化检查。该方法 为光学系统优化、灵敏度分析和公差研究提供了可复现的框架,并且可直接应用于镜头设计的早期阶段以及 现实光学权衡的快速评估。

2. 在 OghmaNano 中启动 Cooke triplet 仿真

在本教程中,我们将从启动一个预先配置好的 Cooke triplet 镜头仿真开始。 首先从 Windows 开始菜单启动 OghmaNano。在主窗口中,点击 New simulation 按钮以打开仿真库,如 图 2a–b 所示。 在器件类别列表中,双击 Ray tracing。当 S-plane 光学示例出现后,找到 Cooke triplet 示例并双击,将其作为一个可直接运行的镜头系统打开。

OghmaNano 新建仿真窗口,列出包括 optics 和 S-plane 示例在内的器件类别
New simulation 窗口提供了器件类别库。双击 Ray tracing 以访问 S-plane 光学示例。
OghmaNano S-plane 示例列表,包括 Cooke triplet 和其他光学演示
S-plane 光学演示列表。选择 Cooke triplet 以打开一个预先配置好的、 适合进行参数扫描和优化的镜头系统。

💡 提示: 为获得最佳性能,请将此仿真保存到本地磁盘,例如 C:\。在本教程中,我们将运行大规模参数扫描,并反复将 光线追迹数据和 3D 网格文件写入磁盘。这会产生大量小型读写操作, 在网络磁盘、USB 或云同步文件夹 (例如 OneDrive)中可能成为显著瓶颈, 从而导致仿真运行 明显更慢

3. 打开 Cooke triplet 仿真并在 S-plane 编辑器中检查

保存 Cooke triplet 仿真后,OghmaNano 主窗口将打开,其外观应类似于 ??。 在 3D 视图中,你可以看到经典的 triplet 布局:绿色光源、红色第一镜头元件、 蓝色光阑、橙色第二镜头元件、黄色第三镜头元件, 以及紫色探测器平面。

接下来,点击左侧工具栏中的 S-plane 按钮以打开 S-plane 编辑器,如 ?? 所示。 该表列出了镜头元件及其参数(材料、表面半径、厚度、直径等)。 与 OghmaNano 中的任何其他仿真一样,你可以通过按下 Run(播放)按钮(或 F9)来运行此模型, 并在 Output 选项卡中查看结果;不过,运行单个仿真并不是本教程的重点。接下来的步骤中, 你将使用此编辑器来选择要扫描的参数。

显示 3D Cooke triplet 元件的 OghmaNano 主光学界面
打开 Cooke triplet 示例后的 OghmaNano 主光学界面(3D 视图)。
S-plane 编辑器表格,列出 Cooke triplet 的镜头元件和参数
Cooke triplet 的 S-plane 编辑器,列出了各个镜头表面和参数。

4. 自动化

4.1 打开扫描窗口

在本教程中,我们将使用 Automation 工具来运行系统性的参数扫描。 这些工具可通过主窗口中的 Automation 功能区访问 (见 ??)。 点击 Parameter scan 按钮以打开参数扫描窗口 (见 ??)。 默认情况下,你会看到一个名为 new 的条目;双击它会打开一个单独的 参数扫描编辑器 (见 ??)。

参数扫描工具在手册中的 parameter scan 页面有更详细的说明。 就本教程而言,只需知道参数扫描窗口允许你使用 New 按钮定义和管理多个独立扫描, 每个扫描都对应于对参数空间的一种不同的自动化探索。

在最后一个图中,你可以看到已经配置好了一个扫描。 变量名 Splane.object.lens1 (b).thickness 表明我们正在扫描 第一个镜头元件后表面的厚度,扫描值以米为单位显式给出。

显示参数扫描工具的 Automation 功能区
Automation 功能区,用于访问参数扫描和批处理工具。
列出扫描配置的参数扫描窗口
列出可用扫描配置的参数扫描窗口。
显示扫描变量和数值的参数扫描编辑器
参数扫描编辑器,显示针对派生 S-plane 镜头厚度参数的扫描。

4.2 编辑扫描

在这个任务中,我们将添加一条额外的扫描行,以便对多个镜头元件的参数进行扫描。 点击参数扫描编辑器中的 plus 按钮来创建新的扫描行,如 ?? 所示。 这会在表格中新增一行,其中包含 Parameter to changeValuesOperation 列。 我们将使用第二行来定义一个附加扫描,从而在同一次自动化运行中改变多个镜头参数。

在编辑前,务必确认选中了正确的扫描行,这一点非常重要。 点击新行使其高亮,然后点击 three dots 按钮来选择参数。 这会打开参数选择对话框,如 ?? 所示。 依次展开 objectLens 2 (b),然后选择 Thickness,它对应于 第二个镜头元件后表面的厚度。选中后,点击 OK

完成两条扫描行的配置后,参数扫描窗口应类似于 ?? 中所示的最终配置。 此时,扫描已经设置为在自动化运行过程中同时改变两个不同镜头元件的厚度。

💡 提示: OghmaNano 中的对象作为三维光学世界的一部分存在。 S-plane 是该 3D 几何的一维、面向光学的表示。 在 ?? 中显示的参数树 提供了一种方便的方式来选择和扫描光学参数,但这些 S-plane 数值 是从顶层 data 树中定义的底层 3D 对象中 派生出来的。

参数扫描编辑器,新增的扫描行已高亮显示
使用 plus 按钮添加新的扫描行。
选择仿真参数对话框,突出显示 Lens 2 后表面的 Thickness
为第二个镜头选择后表面 Thickness 参数。
最终参数扫描窗口,已配置两个镜头厚度扫描
已完整配置的参数扫描,其中定义了两个镜头厚度参数。

当参数扫描已按 ?? 所示完成配置后, 点击 Run 按钮。这将执行扫描所定义的全部仿真。 在本例中,OghmaNano 将遍历扫描参数的所有组合:对于第一条扫描行中的每个取值, 都会执行第二条扫描行中定义的全部取值。结果是对该光学系统所有参数排列的完整探索。

当扫描完成后,切换到 Output 选项卡,如 ?? 所示。 输出以目录树形式组织,用于反映被扫描的参数。 在顶层,标记为 1.1e-21.2e-21.3e-21e-2 的文件夹对应于第一个被扫描参数的取值。 进入其中一个目录后,会看到对应于第二个扫描参数取值的子目录,如 ?? 所示。

每个叶子目录都代表一次单独的仿真运行,相当于一次手动执行的单个仿真。 在这些目录中,你将看到诸如 device.csv 之类的文件, 其中包含光学系统的三角剖分 3D 几何,以及 ray_trace 输出文件,其中保存了该特定参数组合下的追迹光线。 这些结果可以直接可视化,如 ???? 所示。 这使你能够检查和分析对应于扫描参数空间中特定点的单个仿真行为。

参数扫描输出目录,显示顶层参数文件夹
运行参数扫描会生成一个按扫描参数组织的目录树。
显示参数扫描结果的 Output 选项卡
扫描完成后的 Output 选项卡。
嵌套的参数扫描目录,显示第二个参数的取值
对应于第二个被扫描参数的子目录。
来自单个参数扫描仿真的 3D 器件几何
单个扫描点对应的 3D 器件几何可视化。
单个参数扫描仿真的光线追迹可视化
与相同参数组合对应的光线追迹输出。

4.3 Multiplot 文件

在主扫描输出目录中(??)你会注意到几个带有 multiple-curves 的彩色图标。 这些代表一种特殊类型的扫描生成文件:它们不是单个数据文件,而是指向整个参数扫描树中生成数据的链接集合。 例如,all_triangles.csv 链接到为所有扫描点生成的每个三角剖分网格, 而 ray_trace 则链接到扫描过程中生成的所有光线追迹输出。

如果你双击 all_triangles.csv,将打开网格查看器 (见 ??)。 使用窗口底部的滑块,你可以逐步浏览已生成的各个仿真。 当你移动滑块时,镜头几何会更新以反映当前的参数组合,活动仿真的路径会显示在窗口底部。 在所示示例中,该路径表示参数组合 1.2e-2 / 1.4e-2,对应于两个被扫描的镜头厚度值(单位为米)。

同样,双击 ray_trace 会打开光线追迹查看器 (见 ??)。 该查看器通常提供两个滑块:上方滑块用于在扫描树中的不同仿真之间切换, 下方滑块用于按波长切换。 这使得你可以同时检查光线路径在参数空间和波长上的演化。 第二个示例见 ??, 展示了在不同波长范围下查看同一扫描的结果。 如果一开始没有显示任何内容,你可能需要点击绘图表中的 plus 按钮 来添加要绘制的文件。

查看器显示参数扫描期间生成的所有三角剖分网格
查看 all_triangles.csv:逐步浏览整个参数扫描中生成的三角剖分网格。
光线追迹查看器按扫描点和波长逐步显示
光线追迹查看器使用两个滑块显示不同扫描点和波长下的光线。
光线追迹查看器显示同一扫描在不同波长范围下的结果
在不同波长范围下查看相同的光线追迹扫描。

作为这些扫描元文件的进一步示例,进入 detector0 输出文件夹并双击它 (见 ??)。 你会再次看到对应不同探测器输出的 multiple-curves 项。如果你双击 detector_efficiency0.csv,OghmaNano 将打开 ?? 中显示的图。 该图显示系统随波长变化所传输的光量(以百分比表示),每条曲线对应于 参数扫描中探索的一种镜头几何。 请注意,此示例仅使用了三个光学网格点,因此每条曲线只包含三个波长采样点。

探测器输出文件夹,显示不同探测器输出的扫描元文件
detector0 输出文件夹,包含探测器输出的扫描元文件(例如效率和输入)。
探测器效率随波长变化的图,显示不同扫描点的多条曲线
detector_efficiency0.csv 按波长绘图:扫描中每种镜头几何对应一条曲线。

在本节中,我们已经看到 OghmaNano 如何使用 multiplot 元文件来组织参数扫描结果,这为探索大规模仿真集合提供了一种结构化方法, 同时避免了数据重复。通过使用少量交互式查看器逐步浏览网格、光线追迹和探测器输出, 可以高效地检查几何、波长和光学性能如何在参数空间中演化。该方法使大规模扫描研究 变得可操作,从而能够对多种设计变体的光学行为进行定性检查和定量比较。

5. 优化器

在上一节中,我们使用参数扫描工具通过穷举方式生成了大量仿真, 并通过查看光线路径、几何结构和探测器输出对其进行直接检查。 这种方法对建立物理直觉非常有用,但它也会生成大量文件、 占用大量磁盘空间,并拖慢整体仿真工作流程。 在许多情况下,你实际上更需要的是在参数空间中进行快速扫描, 重点关注定量性能指标,而不是完整输出数据。

为此,我们使用优化器。返回参数扫描编辑器 (见 ??) 并点击 Fast optimizer 按钮。 该模式会禁止生成详细输出文件(光线追迹、网格等),同时仍然 运行底层仿真并收集统计指标。 重要的是,先前扫描生成的任何输出文件都不会被改动,仍可继续检查; 优化器只是避免创建新的这类文件。

启用快速优化器后,重新运行仿真。完成后,打开 Output 选项卡 (见 ??)。 你会看到一个名为 optimizer_output.csv 的新文件。 与完整扫描不同,不会创建新的目录树:优化器的主要结果就是这个 单一 CSV 文件,其中包含聚合后的性能数据。

参数扫描编辑器,Fast optimizer 按钮被高亮显示
在参数扫描编辑器中启用 Fast optimizer
Output 选项卡显示 optimizer_output.csv
由快速优化器生成的 optimizer_output.csv 文件。

双击 optimizer_output.csv,并在你偏好的电子表格程序中打开它 (Excel、LibreOffice,或任何能读取 CSV 文件的工具)。其内容如 ?? 所示。 前几列列出了被扫描的参数(在本例中为 S-plane 镜头厚度), 后面则是从每次仿真中提取的一系列定量性能指标。

这些指标包括光斑位置在 xy 方向上的标准差、 光斑半径的标准差(r_std)、光斑分布的长轴和短轴 (sigma_majorsigma_minor)、光斑方向角 (spot_theta)、包围能量半径(例如 EE50、EE80、EE90),以及相关优度指标。 这些量共同为扫描参数空间中每个点的光学性能提供了紧凑的定量摘要。

在电子表格中打开的 optimizer_output.csv,显示扫描参数和性能指标
optimizer_output.csv 的内容,显示扫描参数以及光斑和效率指标。

由于数据采用表格形式,你可以轻松地对其进行排序或筛选,以识别最优设计。 例如,在 ?? 中, 电子表格已按 r_std(光斑半径的标准差)排序。 从中我们可以立即看出哪一组镜头厚度组合产生了最小光斑: 在本例中,第一镜头厚度为 0.013,第二镜头厚度为 0.0106

按光斑半径标准差排序的 optimizer_output.csv
r_std 对优化器输出进行排序,以识别性能最好的镜头几何。

6. 检查优化器结果

现在我们已经运行了系统参数扫描和优化器,可以更详细地检查结果。 优化器使我们能够快速识别参数空间中有希望的区域, 而完整扫描则让我们能够以更具物理意义和更直观的方式检查对应的仿真。

作为第一步,我们可以返回光线追迹输出,并找到与优化器识别出的最小光斑解对应的仿真。 这如 ?? 所示。 使用光线追迹查看器中的选择条,你可以在仿真树中移动, 直到到达产生最小光斑的参数组合。

然后我们可以进一步深入仿真树,以比较不同参数选择下光学系统的行为。 例如, ?? 显示了一个相对较小、聚焦良好的光斑,对应于一个接近最优的设计;而 ?? 则显示了一个更大、较不理想的光斑,它由扫描参数空间中的另一个点产生。

对应于优化器找到的最小光斑解的光线追迹视图
优化器识别出的最小光斑解的光线追迹可视化。
探测器图像,显示最优镜头配置下较小且聚焦良好的光斑
一个较小、聚焦良好的光斑,对应于接近最优的镜头配置。
探测器图像,显示较不理想镜头配置下更大的光斑
扫描参数空间中一个较不理想点产生的更大光斑。

综合来看,这展示了一个典型工作流程:首先运行优化器以快速探索参数空间并识别有前景的区域, 然后关闭优化器并在感兴趣区域执行完整扫描。 这样你就可以生成详细输出——光线追迹、几何结构和探测器图像——并对其进行物理检查, 以确认该解的行为符合预期并满足你的设计目标。

7. 使用替代光束形状以加快仿真速度

在前几节中,我们使用了 square 光束来运行参数扫描和优化器。 虽然这是一个合理的默认选项,但方形光束包含大量光线,可能会显著 降低仿真速度。在许多情况下,你并不需要完整的方形光束分布来理解系统行为, 更简单的光束形状就已足够。

要更改光束形状,请在 3D 视图中右击光源,如 ?? 所示, 然后选择 Edit object。在光源编辑器中,切换到 Configure 选项卡 (见 ??), 并将 Beam shapeSquare 改为 Star。 得到的光线分布如 ?? 所示。

如果你现在重新运行优化器,会注意到仿真完成得更快。 这是因为星形光束使用的光线数量远少于完整的方形光束,同时仍能有效地 对光学系统进行采样。 还可以选择使用 Cross 光束形状,这对于沿两个主轴 独立检查像散非常有用,并且能进一步降低计算成本。 因此,这些替代光束形状是加快探索性扫描和 优化运行的实用方法。

光源上的右键菜单,显示 Edit object
右击光源并选择 Edit object
显示光束形状配置的光源编辑器
在光源 Configure 选项卡中更改光束形状。
光线追迹视图中的星形光束分布
星形光束使用更少的光线,同时仍能对光学系统进行采样。

8. 总结

在本教程中,我们探索了如何使用 OghmaNano 中的 S-plane 光学工作流程, 来系统地研究和优化经典的 Cooke triplet 镜头系统。 从一个预定义示例出发,我们了解了 S-plane 编辑器如何提供 完整三维光学系统的紧凑且适合光线光学的视图,并且 所有 S-plane 参数都从底层 3D 几何中一致地派生出来。

然后我们使用 parameter scan 工具,通过同时改变多个镜头参数并运行 所生成光学系统的所有排列组合,对镜头设计空间进行了穷举式探索。 这使我们能够详细检查单个仿真、可视化光线路径和几何结构,并建立关于 镜头厚度和间距变化如何影响系统性能的物理直觉。

为了实现更快的探索,我们引入了 fast optimizer,它在将定量性能指标汇总到单个 CSV 文件中的同时,禁用了重量级输出生成。 通过分析这些指标——例如 RMS 光斑尺寸、包围能量和光斑椭圆率—— 我们能够高效地识别最优参数组合,并将其与具体的镜头几何对应起来。

最后,我们展示了替代光束形状(star 和 cross)如何在仍然捕捉关键光学行为的同时, 显著降低计算成本,因此非常适合用于优化和探索性扫描。

总体而言,这些工具形成了一个实用且可复现的优化闭环:使用 optimizer 定位参数空间中有前景的区域,然后切换到具有详细输出的完整参数 扫描,以检查光线行为并验证物理性能。 该工作流程可自然扩展到从简单镜头系统到更复杂的光学设计, 并为 OghmaNano 中系统化的镜头优化提供了稳健基础。

💡 后续步骤: 完成本教程后,你可能希望进一步探索 OghmaNano 中的其他 光学系统工作流程,例如 Cooke triplet 镜头教程200 mm 定焦镜头示例, 或者 微透镜与光学滤波演示, 以了解相同的优化和分析工具如何应用于不同的光学系统。