Lumerical RCWA 与 Zemax OpticStudio 之间的动态工作流
2026年7月16日 10:11引言
通过 Ansys Zemax OpticStudio 与Lumerical RCWA 之间的动态链接,可实现宏观光学系统与微观光栅结构的协同仿真与优化。该工作流突破了传统方法的局限,为复杂衍射光学元件的设计与分析提供了高效、精准的解决方案。
在此工作流中,设计者在 Zemax OpticStudio 中构建宏观光学系统,并在 Lumerical 中构建光栅的微结构。两个软件中的模拟无缝连接。在 Zemax OpticStudio 的追迹过程中,如果光线打到光栅,将自动调用 Lumerical RCWA 来求解场响应并提供返回数据。本文介绍该工作流中 RCWA 建模部分,使用 Lumerical RCWA 具有以下几个优点:
1. 复杂1D/2D光栅建模:借助强大的几何编辑器,用户可以轻松构建和模拟任意1D或2D光栅。
2. 快速原型设计:Lumerical 中的参数在 OpticStudio 中暴露。在 OpticStudio 中进行的任何更改都可以自动触发 Lumerical 为新的光栅形状计算更新后的数据并返回新数据,无需导入和导出数据。
3. 优化:用户可以在 Lumerical 中轻松定义自定义参数化模型,并综合考虑整个系统的性能来优化光栅形状。
4. 导入/导出光栅形状:该工作流支持以 STEP、STL 和 GDS II 文件格式标准导入和导出光栅几何形状。
5. 空间变化:用户可以定义光栅参数在光栅不同位置如何变化。
静态工作流与动态工作流
值得一提的是,现有两种在 Lumerical 和 OpticStudio 之间交换数据的工作流。一种是本文将介绍的动态工作流。另一种是静态工作流,其工作方式不同。两种工作流具有不同的灵活性,没有优劣之分。用户应根据自己的设计案例考虑使用哪一种。
系统要求:
Lumerical 必须具有FDTD许可证,且版本必须是2023 R1.0或更高版本。
建模步骤
如果用户遵循以下规则,也可以自定义自己的参数化模型。
1. topcell
必须在 .fsp 文件中定义一个名为 topcell 的结构组,建议fsp名称的长度小于50个字符。
结构组是 Lumerical 中对象组的一种类型。结构组可以被认为是由许多基本结构(如多边形和矩形)构建的复合对象。当两个结构重叠时,优先级由对象的网格顺序决定。更多信息可以在 Lumerical 知识库中找到。
结构组 - 仿真对象
理解重叠对象的网格顺序
在 Lumerical 的结构组中,我们可以定义“属性”和“脚本”。属性就像对象的参数。我们可以编写脚本,使其读取属性值并更新组中的基本结构。脚本非常灵活,甚至可以在其中添加/删除结构。这使得结构组本身就像一个通过属性设置形状和材料的新对象。
2. topcell 中的结构
在 Lumeric 在 topcell 组中,除了光栅结构外,我们必须定义两个矩形对象来表示正负侧的材料。它们应以 (x=0,y=0) 为中心,其x和y尺寸应大于 period_x 和 period_y。它们应位于“模拟区域”外部的顶部 (+z) 和底部 (-z),如下图所示。这两个矩形对象的名称可以是任意的。为了使阅读更容易和中性,在我们提供的示例中,我们使用 “negative_z_material”和 “positive_z_material”。
注意,“模拟区域”是指由 RCWA 对象设置中的最顶层和最底层界面定义的区域。这是我们考虑 RCWA 计算中结构的地方。了解实际的 RCWA 对象大小必须略大于模拟区域很重要。在动态链接中,RCWA 对象区域将始终比模拟区域大0.1 µm。因此,我们建议将 positive_z_material 和 negative_z_material 的z尺寸设置为0.2 µm。
下图显示了 positive_z_material、negative_z_material 和 RCWA 对象区域的3D视图。模拟区域应位于 positive_z_material 和 negative_z_material 之间。RCWA 对象区域应始终略大于模拟区域。
3. topcell 的属性
我们必须定义如下红色框出的4个用户属性。这些用户属性将由动态链接设置。在脚本中,我们将读取它们的值以修改组中的结构。要使用的4个属性如下:
* period_x, period_y:x和y方向的周期
* n_neg, n_pos:基板 (n_neg) 和覆盖层 (n_pos) 的折射率
可以有更多属性。如果我们以 p#_*** 的形式命名它们,其中#是数字,***是任何字符串,那么这些参数将被动态链接读取并显示在 OpticStudio UI中。
4. topcell 的脚本
我们可以在 topcell 中定义脚本,如下所示。
定义脚本不是可选的,我们必须编写一些必需的脚本。我们建议用户打开本文提供的示例文件,并使用该脚本作为模板。
以下是必需的脚本:
● 我们必须使用变量 n_pos 和 n_neg 设置 positive_z_material 和 negative_z_material 的折射率。请注意,这是用户自定义光栅时最容易忘记的设置,是问题的第一大原因。
● 如果光栅在z方向的尺寸发生变化,即模拟区域发生变化,我们还需要修改 positive_z_material 和 negative_z_material 的位置。这两个对象的厚度(z方向的尺寸)必须大于200 nm。
● 脚本必须确保在 x = -period_x/2 ~ period_x/2 和 y = -period_y/2 ~ period_y/2 范围内生成完整的光栅几何形状。请注意,这有时意味着我们需要重复相同结构两次或更多次,以便在周期范围内拥有完整的几何形状。
● 最后,可选地,用户可以定义更多用户属性,这些属性由脚本使用,以根据相应的值动态改变光栅几何形状。如下所示,我们也在附件中提供了一个示例。
5. RCWA对象
这里只解释 RCWA 对象中必需的设置。此fsp文件的最终要求是必须定义一个 RCWA 区域。这可以通过单击“模拟 > 添加 RCWA 来添加。
用户必须仔细检查的唯一设置是界面。此设置与z方向的网格数量有关。如果用户未正确设置此值,模拟结果可能不准确。可以通过右键单击对象并选择“编辑对象”来访问 RCWA 的设置。
在编辑界面之前,请确保已打开模拟区域的网格视图。
有两种设置界面的方法。用户可以直接定义绝对位置,但这意味着光栅的最高和最低位置不能改变。另一种方法是使用参考位置。这样,当您从 OpticStudio UI 编辑光栅参数时,界面位置将在光栅形状改变时自动更新。
用户可以尝试设置界面的值,界面值越大也意味着网格数量越多。
6. 可忽略的参数
以下是由动态链接自动控制的参数列表,用户无需在 .fsp 文件中更改它们的值。
1.topcell 结构中的 p#_**** 参数。
2.topcell 结构中的 period_x、period_y、n_neg、n_pos。period_x 和 period_y 遵循OpticStudio UI中的设置。n_neg 和 n_pos 由OpticStudio中的材料设置决定。
3.RCWA对象的x、y、z尺寸。尺寸x和y遵循OpticStudio UI中的 period_x 和 period_y 设置。尺寸z由在RCWA对象的最顶层和最底层界面设置的基础上增加0.1 µm边距决定。
4.RCWA对象中激励(入射光线)的所有设置。这些将基于OpticStudio中入射光线的数据。
5.RCWA对象中的k空间离散化设置。请参见下文的“Max Order”说明。
7. 如何更改 x/y 网格
我们无法直接编辑它们,通常,没有必要更改x/y方向的网格。但如果用户想更改网格大小,这些值由k向量域的数量自动确定。如果用户增加k的数量,网格数量也会增加。
8. 如何在光栅中支持色散(折射率与波长的关系)
如下所示,官网提供的示例 .fsp 文件(例如 lswm_2D_hex_cylinder_221210.fsp)设计用于让用户精确指定柱体的折射率,该折射率与波长无关。
但是,用户可以修改这些 .fsp,使折射率可以根据波长自动变化。下面提供了进行此更改的简短指南。
1.首先,我们需要移除 topcell 对象中的相应属性,例如 p4_pillar_index。
2.然后,我们需要移除 topcell 脚本中的相关代码。例如,如果我们从 topcell 中移除了属性 p4_pillar_index,我们也需要从 topcell 脚本中移除以下行:
setnamed("circle_"+lbls{j},"index",p4_pillar_index);
3.最后,topcell 组中的相关对象应修改为使用正确的材料,如下所示。
9. 如何考虑切向矢量场
为了使 .fsp 文件支持晶格向量角,需要在 topcell 对象中添加一个名为 lattice_vector_angle 的参数。
脚本还应正确考虑角度变化并修改光栅结构。以下仅是部分代码的示例,其中我们更改了上下块。这只是一个示例。设计者也可以将上下块做得大2~3倍,以覆盖大多数可能的晶格向量角设置。
设计者需要注意的一件事是,当在 RCWA 设置中更改晶格向量角时,RCWA 区域将以左下角为锚点倾斜。这使得 RCWA 区域看起来像是有一个x方向偏移。
为方便起见,当动态链接插件更改RCWA设置的晶格向量角时,它还将对RCWA区域设置如下x方向偏移,使其始终在x方向“居中”:
setnamed('RCWA', 'x', -tan((90-latticeVectorAngle)/180*pi) * period_y / 2);
换句话说,如果晶格向量由动态链接插件设置,RCWA区域将如下图所示。
结语
本文介绍了 Lumerical RCWA 与 Zemax OpticStudio 之间的动态工作流,文章重点阐述了 RCWA 建模部分的规范:必须定义 topcell 结构组及其属性(周期和折射率);设置正负侧矩形体属性;脚本编写要求以及 RCWA 对象的界面配置,最后涉及色散材料与切向矢量场处理等进阶内容。
工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP




















