案例链接:Metalens - Zemax Interoperability
注:该文纯翻译,无任何拓展。
案例下载链接:
链接:https://pan.baidu.com/s/1FgQGnfXy10wURWiFZf4ytA
提取码:4jsn
–来自百度网盘超级会员V5的分享
(上面这个案例应该是很全的了)
这个例子的目的是设计一个由圆柱形纳米棒组成的衍射超透镜。 纳米棒的半径和排列经过调整以在超透镜表面上产生所需的相位分布。 该设计通过近场和远场分析在 Ansys FDTD、RCWA(严格耦合波分析)和 OpticStudio 中得到验证。
Note: An OpticStudio version +12 is required for further analysis in Zemax.
一、概述
了解模拟工作流程和关键结果
超透镜由精心排列的具有亚波长结构的“晶胞”或“元原子”组成。 通过调整这些晶胞元件的几何形状,人们可以响应平面波来修改元件上方的相位。 借助几何参数方面的相位知识,可以通过将元原子放置在必要的位置来创建具有任意相位轮廓的元透镜。
第 1 步:目标相位定义
第一步是定义元透镜的目标相位分布。 对于最常见的透镜类型,例如球面或柱面元件,我们可以使用已知的解析解。 然而,对于更复杂的系统,分析解决方案不存在或难以计算,我们可以使用光线追踪和优化功能在 OpticStudio 中设计理想的相位掩模。
第 2 步:单位单元模拟 - 高度和半径扫描
在这一步中,我们扫描纳米棒的高度和半径,并获得透射、相位和近场。 选择给出所需传输和相位特性的高度。 然后保存相位和场与半径的结果以供后续步骤使用。 RCWA 求解器作为单胞模拟的推荐/补充工具引入,并与 FDTD 进行比较以进行验证。
第三步:全镜头设计
一旦从第 2 步构建了相位/场与半径的库,就有两种方法可用于设计和分析全元透镜:
直接模拟:根据上一步的目标相位轮廓和相位与半径数据,在 FDTD 中构建和模拟完整的超透镜。 虽然这种方法更直接,但它可能会在内存和仿真时间方面带来挑战,尤其是对于较大的超透镜。 模拟的近场可用于远场分析并导出为 .ZBF 文件,以便在 Ansys OpticStudio 中进一步传播。
全场重建:全场重建:全超透镜的近场/远场可以使用步骤 2 中的近场库通过脚本重建。这避免了全透镜的耗时模拟,因此比直接模拟方法更有效.这些方法的详细描述将在“运行和结果”部分的相应步骤中提供。
我们将使用一个小半径的球面超透镜来验证“间接”方法的准确性。然后,该方法将应用于基于 OpticStudio 中优化的目标相位的更大的元透镜。
第 4 步:在 OpticStudio 中传播导入的光束
一旦元透镜的近场从上一步导出到 .ZBF 文件,我们就可以使用 OpticStudio 中的物理光学传播 (POP) 工具将光束传播到整个系统,包括任何体光学元件。使用 POP,可以分析每个表面的相位和辐照度分布,并且可以评估系统性能。如有必要,可以根据传播结果在 OpticStudio 中重新优化光学设置。最后,可以在 OpticStudio 中将实际光束与通过目标相位掩模传播的理想光束进行比较,以验证超透镜模型。
第 5 步:GDS 导出
一旦完成整个镜头的物理形状和元元素位置的设计,通常会将图案导出为 GDS 格式进行制造。 但是,由于涉及的元素较多,GDS 导出通常需要较长时间。 在这一步中,我们展示了一种使用 polystencil 命令的非常快速且通用的 GDS 导出方法,该方法可以很好地处理由大量元元素组成的大型元透镜。
二、运行和结果
运行模型的说明和关键结果的讨论
第 1 步:在 OpticStudio 中设计目标相位
作为第一步,我们为元透镜设计目标相位分布。 对于具有如下已知形状的透镜,我们可以使用解析公式来定义相位分布。
在无法用公式描述精确形状(相位)的更一般情况下,将空间相位数据表示在直线网格上会很有用。 在这个例子中,我们正在设计一个超透镜来最好地聚焦准直入射光束和一个柱面透镜,它只在 Y 方向上具有功率。 没有元元素的柱面透镜将沿 X 轴产生线焦点,我们的目标是通过优化超表面的相位掩模来实现最小的 RMS 光斑半径。
优化目标相位轮廓后,我们将从 OpticStudio 导出相位图,并将其用作 Lumerical 中的输入,用于对亚波长晶胞的物理结构进行建模。
1.打开包含初始设置的 Zemax 模型 (phaseDesign_start.zar)。 恒定的零相位轮廓用作起点。
2.通过运行本地优化器优化目标相位配置文件(在优化…优化下!)。
目标相位轮廓
在这一步中,我们使用光线追踪为元透镜设计所需的相位轮廓。 在 OpticStudio 中,超表面可以通过衍射表面类型来描述,它在基本折射或反射表面的顶部应用附加相位。 相位分布对射线造成额外的弯曲。
对于这个示例情况,根据理论预期,我们使用 Binary 1 表面类型,它将相位描述为扩展的 X、Y 多项式:
其中
φ:元透镜表面上的相位
M:衍射级
N:系列中多项式系数的数量
x,y:关于元透镜半径的归一化空间坐标
出于对称性考虑,为了避免过于复杂的相位轮廓不会显着改善解,我们仅在优化过程中将 x2 项的系数设置为变量,并使用 RMS Spot Size 默认量化优化目标 品质函数。
基于优化,理想的相位分布由以下等式描述:
正如预期的那样,通过正交 X 方向上的这种圆柱形相位分布,准直输入聚焦到衍射极限点。
第 2 步:单位单元模拟 - 高度和半径扫描
在这一步中,我们正在构建一个作为纳米棒半径函数的相库,目标是相变2π在考虑的半径范围内。该库稍后将用作映射工具,以在超透镜的每个网格点放置具有所需相位的纳米棒。
我们还扫描了纳米棒的高度,以找出使透射率尽可能高的值。一旦找到所需的纳米棒高度,我们将运行单独的扫描以构建作为半径函数的近场库。然后,这将用于在步骤 3 中重建完整镜头的近场/远场。
我们为单位单元模拟提供了两个选项——FDTD 和 RCWA,并比较了它们的精度和计算时间。虽然 FDTD 以其在材料、几何形状和可以处理的波长范围方面的通用性和多功能性而闻名,但 RCWA 被认为是模拟周期性结构的非常有效的工具。什么是更好的选择可能取决于结构的形状、材料、源以及所需的频点数量。请参阅 RCWA 求解器说明页面了解更多信息。
选项 1:FDTD
1.打开 unit_cell.fsp,将“model”对象的“radius”设置为“50nm”并运行模拟。
2.从“field”监控结果中可视化“Ex”。 对 ‘100nm’ 的半径值重复相同的操作。
我们感兴趣的关键结果之一是纳米棒上方场响应平面波的相位。 在这个例子中,我们正在改变圆柱体的半径来引入必要的相变。 我们可以通过查看 xz 平面上的电场轻松检查这种行为。 以下是半径分别为 50 和 100 nm 的圆柱体的真实(Ex)结果。 由于圆柱体的折射率大于其周围的折射率,因此对于较大半径情况的传播场将经历比较短半径情况更高的有效折射率。 通过改变纳米棒半径来修改入射光的有效路径长度是本示例中使用的关键特性之一。
3.运行脚本 fdtd_unit_cell_plot_phase_T.lsf,从“height”扫描对象中检索结果,并将相位和传输绘制为纳米棒半径的函数。
下面是根据杆的高度和半径的相位和传输的 2D 图。 发现在给定半径范围 (0.05 – 0.15 um) 上的相位变化对于 1.3 um 或更高的高度值变得大于 2π。 在这个高度的透射率很高(超过 0.9),甚至在整个半径范围内,因此满足上述两个要求。
以下是上图在 1.3 um 高度处的折线图(虚线)。
4.运行脚本 fdtd_unit_cell_export_phase_field.lsf,从“radius”扫描对象中检索结果,并将相位和场绘制为纳米棒半径的函数。
下图显示了产生某个相位所需的半径,它是上述相位与半径图的转置图。 然后,我们在“phase”中使用更精细的数据点对数据进行插值,从而在“radius”中使用更精细的数据点。 这将允许目标相位与所选半径将产生的实际相位更好地匹配。
出于类似的原因,来自扫描的场数据也在更密集的“phase”数据点上进行插值,并与半径数据一起保存。 我们还对场数据进行了采样,以使数据量更小,并在下一步中更快地计算整个镜头的近场和远场。 下图显示了不同采样值下 50 nm 半径的近场。
选项 2:RCWA
使用 RCWA 进行元透镜单元模拟的工作原理与 FDTD 相同。 这里的重点是展示 RCWA 结果与 FDTD 结果在精度和仿真时间方面的比较,并最终为求解器的选择提供一些指导。
RCWA 求解器以单个脚本命令 rcwa 的形式实现,它将几何、源和仿真配置信息作为输入,然后返回传输/反射、幅度和场。
1.运行脚本 rcwa_unit_cell_plot_phase_T.lsf 以绘制相位和传输作为纳米棒半径的函数。
2D 相位和传输图以及它们在 1.3 um 高度处的线图表明 RCWA 结果与它们的 FDTD 对应物非常匹配。 通过一些收敛测试,可以进一步减少它们之间的差异。
2.运行脚本 rcwa_export_phase_field.lsf。 它将从“height”扫描对象中检索结果,插入“radius and field vs. phase”数据并将其保存为 EH_and_phase_vs_radius_interp_rcwa.ldf 用于下一步。
RCWA 的现场结果也显示出与 FDTD 的良好匹配:
使用步骤 1 中的目标相位和步骤 2 中的半径/场与相位库,我们现在准备好设计完整的超透镜。
超透镜的相位半径映射
无论目标相位可能是什么,完整的透镜设计都涉及将空间相位分布转换为空间半径(纳米棒)分布。 下面显示了一个球形相位分布的示例,但该原理适用于任意相位分布。
一旦知道了半径分布,我们就可以创建整个镜头并在 FDTD 中运行模拟。 这可能是最直接的方法,但不是最有效的方法,尤其是对于具有大半径(> 100 um)的超透镜。 与任何大型仿真一样,它可能需要非常大的内存和较长的仿真时间。 此外,大量的元元素会减慢它们在 FDTD 中的构建和 GUI 中的可视化。
1.打开并运行模拟文件 full_lens.fsp。
2.从“field”监视器可视化 Ex 的幅度和角度。
“metalens”结构组从步骤 2 加载相位与半径数据,进行相位到半径映射,并将纳米棒放置在具有正确半径的所需位置。
模拟注入平面波。 由 PEC(完美电导体)制成的圆形孔放置在源和元透镜之间,以限制注入区域。 “field”监视器的近场结果如下所示:
入射场大部分被 PEC(完美电导体)孔径阻挡。 但其中一些会被孔径边缘衍射,这可以看作是幅度和相位图中的小波纹。 与具有完美旋转对称性的理想双曲线透镜不同,由于透镜在直线网格上具有纳米棒阵列的离散化,因此模拟结果并未显示出这种对称效应。
3.运行脚本文件 fdtd_full_lens_plot_field.lsf 的“part 1”,沿 x 轴绘制相位(上述相位图中的虚线)。
测量的相位总体上与目标相位非常吻合。
可以使用电影监视器或时间监视器来可视化通过超透镜的入射场的演变。 由于电影监视器可以显着增加模拟时间,因此最好使用 2D 时间监视器并及时获取场的快照。 该场的 gif 动画如下所示。
传播场的波前清楚地显示向内弯曲,表明光的聚焦,正如具有球面相位轮廓的透镜所预期的那样。
4.运行脚本的“part 2”,fdtd_full_lens_plot_field.lsf。
沿传播轴 (z) 的远场投影表明,元透镜的焦距约为 81.4 um。 焦平面处光束的 FWHM(半高全宽)约为 2.4 um。 计算出的焦距与 100 um 的目标值有些偏离。 这主要归因于透镜尺寸小,因此用于映射透镜半径上的 2*pi 变化的纳米棒数量较少。 增加镜头尺寸可能有助于改善结果以及优化其他参数,例如周期。
场重建(小半径球面透镜)
作为耗时的直接全镜头模拟的替代方案,可以使用步骤 2 中的近场库重新构建整个镜头的近场和远场。我们将再次使用半径相对较小的球面透镜 ( 11 um)并将结果与直接模拟的结果进行比较,以验证该方法。
1.近场拼接和远场投影
在这种方法中,整个透镜的近场是通过拼接来自晶胞模拟的近场来构建的,该近场对应于目标相位分布的每个网格点处的相位。 由于所考虑的透镜的半径为 11 um,因此只有 11 um 半径内的区域被匹配场填充,外部场设置为零。
1.运行脚本的“part 1”, stitch_nearfield_11um_lens.lsf。
2.在 Visualizer 中可视化“Ex”分量的幅度和角度。
拼接近场的幅度看起来与直接 FDTD 模拟的幅度大不相同。 这可以归因于两种方法中使用的设置略有不同:
⋅ \cdot ⋅ 在 FDTD 中使用 PEC 孔径
⋅ \cdot ⋅ 在重建方法中假设局部周期性,而在 FDTD 中,相邻单元可以不同的相邻棒半径的突然变化。
也就是说,两个幅度都在同一个球场内,并且整体相位结果显示出良好的匹配。
3.运行脚本的“part 2”stitch_nearfield_11um_lens.lsf,绘制远场结果。
总体而言,拼接近场的远场结果与直接模拟结果在焦距、光斑大小和强度方面非常匹配。
这相当于近场拼接方法,但顺序相反。 在这里,我们首先从步骤 2 中构建的近场库构建远场库。然后,我们通过考虑其从原点的位置偏移产生的相移来总结每个纳米棒的远场的贡献。 该方法可以用数学形式描述如下:
1.运行脚本, sum_farfield_11um_lens.lsf.
直接模拟和求和重建的远场结果(在半径为 1m 的半球上)非常匹配。
场重建(在 OpticStudio 中优化相位轮廓的镜头,半径 = 100 um)
既然我们已经通过将其结果与直接模拟的结果进行比较验证了“场重建”方法在小透镜上的有效性,我们现在可以将其扩展到更大的超透镜设计——在 OpticStudio 中优化了 2D 相位轮廓的设计 (步骤1)。 我们将在这里使用近场拼接方法。
1.运行脚本stitch_nearfield_ZOS_R100um.lsf。
下图显示了拼接近场的相位,类似于步骤 1 中获得的理想相位轮廓。脚本将重建的近场导出到 .ZBF 文件中,以便在下一步中在 OpticStudio 中进一步传播和验证。
从第 3 步导出的 Enear_lens_extended.zbf 文件可以直接导入到 OpticStudio 中,以便在系统的其余部分进行传播,进一步分析和评估。为了确认超透镜的物理模型提供了所需相位掩模的真实表示,我们将 .ZBF 文件定义的实际光束与通过目标相位掩模传播的理想顶帽光束进行比较。
1.打开包含光束传播的最终模拟文件 (phaseDesign_ZBF.zar)。
2.比较理想和实际光束的传播结果。
光束传播结果
在这一步中,我们使用 OpticStudio 中的 POP 工具从上一步结果中分析导入光束的传播。首先,为了分析真实光束,我们使用基于 ZBF 文件的光束定义,该定义依赖于近场分布,并且我们将光束从元透镜后的虚拟表面通过整个系统传播到焦点。接下来,为了提供比较参考,我们还通过理想的相位分布传播礼帽光束,然后也向下穿过整个系统。
下面是焦点处两次传播后的辐照度分布。
结果非常一致,这验证了超透镜的纳米级模型。
第 5 步:GDS 导出
一旦完成整个镜头的物理形状和元元素位置的设计,最后一步是将设计导出为 GDS 格式进行制造。但是,由于涉及的元素数量众多,GDS 导出通常需要很长时间,除非小心谨慎。在这里,我们使用 polystencil 命令来提取特定 z 平面横截面的多边形顶点。这种方法适用于任意形状的元元素,并且可以解释单元格中的多个元素。
1.运行脚本 gds_export.lsf。
该脚本加载单位单元模拟文件并首先构建一个作为半径函数的顶点库。再次使用半径与相位数据和二维目标相位分布,然后将多边形添加到 GDS 文件中。
下图显示了上面使用的两个目标相位图的导出 GDS 图像。左边的一个是半径为 11 um 的球形元透镜,可转换为近 1900 个元素。这个导出只需要一小部分时间。在右侧,我们有一个用于半径为 100 um 的圆柱形相位掩模的 GDS。这个有大约 155k 元素,但只需 5 秒即可导出到 GDS。
这种 GDS 导出方法可以轻松处理数百万个元素,并且适用于较大的镜头,只需稍微修改脚本即可。
三、重要的模型设置
此模型中使用的重要对象和设置的描述
晶胞模拟 (FDTD)
“model”中的变量
该对象具有高度、半径和周期作为其变量。使用这些参数自动设置模拟区域、监视器和源的位置和跨度。
“S参数”分析组
超材料跨度和中心由“model”中的脚本自动设置,以匹配“pillar”的高度。
模拟时间
在单位单元模拟中,每个扫描点所需的模拟时间可能不同。为了安全起见,当前的模拟时间设置为 10,000。最好通过达到自动关闭级别来检查所有扫描是否已结束。这可以通过在扫描结果中包含来自“FDTD”的“status”结果来完成。
全镜头模拟
PEC孔径
为了阻止镜头外场的注入,在元透镜之前放置了一个由 PEC 材料制成的光圈。它的半径由“model”中的脚本自动设置。
“metalens”结构组
要可视化目标相位与位置和半径与位置,请在“metalens”结构组中将“make plot”设置为“1”,然后单击“Script”选项卡中的“Test”按钮。 Phase_vs_radius.ldf 还保存了材料数据和其他几何数据,以便更轻松地设置完整的镜头模拟。
渲染细节 (Rendering detail)
当有许多结构要绘制时,显示可能会很慢。对于大型超透镜尤其如此。为防止出现此类问题,您可以在“metalens”结构组中将结构的渲染细节设置为较低的值。
farfieldsettings 脚本命令
从大型频率监视器投影近场时,远场计算可能需要很长时间。要在不牺牲精度的情况下加快计算时间,您可以使用 farfieldsettings 脚本命令并对近场数据点进行下采样。
OpticStudio 中的传播
ZBF 文件的数组大小
为确保在 OpticStudio 的 POP 工具中传播期间对焦点附近和远离焦点的光束进行良好采样,请将阵列大小设置为 X=ω√(πn),其中 w 是腰围尺寸,n 是点数。
引导光束半径
为确保 ZBF 文件在 POP 中使用正确的传播方法,在 Surface Properties > Physical Optics 下将 Output Pilot Radius 更改为 User-defined X-Radius=-4.0671 和 Y-Radius=0。
四、使用您的参数更新模型
根据您的设备参数更新模型的说明
几何学
如果要修改超透镜的形状,请确保更新单位单元以及完整的透镜模拟文件。 “model”和“sweep”对象需要使用正确的参数进行更新。
周期和波长
在改变晶胞的波长或周期时,通常最好避免使用多个光栅阶数,这会使超透镜的设计更加复杂。
焦距
具有较大焦距的元透镜通常需要较大的透镜半径,这意味着较大的内存和模拟时间。在继续使用更大的设备之前,使用较小的设备进行一些初步测试以验证概念可能是一个好主意。
其他设计注意事项
如上所示,测量相位偏离目标相位是很常见的。这种差异可能有很多原因:
⋅ \cdot ⋅ 由 PEC 孔径引起的衍射。
⋅ \cdot ⋅ 相邻纳米棒的局部周期性断裂:我们在步骤 2 中获得的相位假设具有相同直径的无限周期纳米棒。当相邻纳米棒的半径发生非常小的变化时,我们可以假设结构是局部周期性的,因此从步骤 2 获得的相位与半径关系仍然有效。此示例使用相对较小的半径,相邻纳米棒的相位(因此是半径)的变化可能有点突然。
⋅ \cdot ⋅ 偏离亚波长操作:当纳米棒的半径变大时,相邻纳米棒之间会产生强烈的场相互作用。
⋅ \cdot ⋅ 网格细化:粗网格也可能导致精细特征的表现不佳。
为了改善结果,您可能想尝试:
⋅ \cdot ⋅ 修改晶胞的周期以确保您始终在亚波长范围内工作。
⋅ \cdot ⋅ 增加超透镜半径。
⋅ \cdot ⋅ 细化网格。
五、进一步研究模型
为想要进一步定制模型的用户提供的信息和提示
宽带模拟
当前示例基于单频仿真。但是,通过对模拟设置和相关脚本进行一些修改,它可以扩展到宽带模拟。这些主要与要添加到数据中的附加维度(频率)有关。
不同的镜片形状
这个例子可以很容易地适应不同形状(相位分布)的镜片。例如,如果您想设计一个平面超透镜对应体球面、柱面或轴锥透镜,您只需要使用与您感兴趣的透镜相对应的正确相位公式并生成 2D 目标相位图。建立相位/场与半径的库后,您可以重复使用该库并快速测试任意形状透镜的近场/远场属性。
“元原子”的排列
本例中使用矩形晶格来构建整个超透镜,使用方形晶胞作为构建块。计算每个网格点上纳米棒的半径,并将结构添加到每个网格。这种方法适用于少量元素。但是,对于较大的超透镜来说,这可能非常耗时,其中元素的数量可能会变得巨大。在这种情况下,您可以利用设计的对称性来加速图案生成,而不是逐个元素地生成图案。您还可以考虑使用单位单元的非周期性排列来更好地表示相位分布。
圆偏振光
具有手性特性的超透镜的模拟可能需要使用圆偏振光。访问这里了解更多信息。
六、其他资源
其他文档、示例和培训材料
参考文献:
1.P. Yeh, “Optical Waves in Layered Media”, Wiley-InterScience, chap. 3, 2005.
2.M. Khorasaninejad et al, “Visible Wavelength Planar Metalenses Based on Titanium Dioxide”, IEEE Journal of Selected Topics in Quantum Electronics, 4700216 (2017)
3.“Designing large, high-efficiency, high-numerical-aperture, transmissive meta-lenses for visible light,” Optics Express, Vol. 24, Issue 5, pp. 5110-5124 (2016)