首页/文章/ 详情

Zemax案例 | 基于Zemax设计全息耦合器的弯曲波导

1月前浏览827

随着AR/VR智能穿戴、车载AR-HUD设备规模化落地,传统平面光波导难以贴合曲面外观与车载弧形挡风玻璃安装需求,曲面全息波导成为下一代显示光学的主流方案。曲面波导轻薄美观、佩戴贴合度更高,但自身曲率会引入额外光焦度,造成光线传输偏移、成像像散、杂散光超标等问题。

体全息光栅(VHG)作为波导核心耦合器件,是补偿曲面光焦度、保障成像质量的关键。但光学研发普遍存在跨尺度仿真痛点:宏观整机光路需要完整光线追迹,微纳光栅需要高精度衍射计算,单一软件无法兼顾两者,多软件联用又存在数据割裂、仿真结果与实测偏差大的问题。依托Ansys光学仿真生态,Zemax OpticStudio+Lumerical RCWA联合仿真工作流,借助LSWM亚波长模型实现数据无缝互通,一站式完成曲面波导全息耦合器从系统设计、微纳光栅仿真到整机成像验证的全流程开发。本文基于Ansys官方案例完整拆解标准化仿真流程。

概述

本文分为以下三个主要步骤:

步骤1:在Ansys Zemax OpticStudio中建立系统模型

本节将介绍仅使用内置Zemax全息物体的光学系统。我们将展示如何利用全息耦合器上的额外光功率来补偿波导曲率。

步骤2:在Ansys Lumerical中进行VHG仿真

使用Ansys Lumerical软件中的RCWA求解器计算所需VHG物体的响应。通过利用体积内折射率调制的周期性来加速仿真。为了施加光功率,在RCWA运行过程中执行循环,以计算VHG元件表面上的响应。在每个空间位置,调整记录k矢量以匹配我们想要诱导的函数。

步骤3:在Ansys Zemax OpticStudio中进行光线模拟

将VHG的响应导出并加载到OpticStudio中,以替换理想对象。然后,我们可以在更接近实际的条件下,在弯曲波导内进行光线追踪仿真。

运行和结果

步骤1:在Ansys Zemax OpticStudio中建立系统模型

利用理想物体建立光学模型:

  1. 打开文件curve_waveguide.zar。在这一步中,我们研究的是第一种配置,其中全息耦合器使用理想对象“环形全息图”进行建模。

  2. 检查标记为“Hin Zemax”的对象2的参数“旋转R1”。

    2.1-将其设置为171.45mm,即波导的外曲率值,并观察通过波导传播的光线是否呈准直状态。

    2.2-将其设置为171.45*3=514.35mm,并观察曲率,使得从物体同一点发出的光线在波导内以相同的角度传播。

  3. 运行光线追踪并在探测器查看器中观察图像。

在波导设计中,图像通过透镜投射到第一个VHG元件上,光线以一定角度入射,使其在波导内发生全内反射。然后,当光线与其中一个输出VHG元件相互作用时,光线被提取出来。图像上的每个点都对应于光线在波导内的一个传播角度。

图1 平面波导模型图

对于弯曲波导,光线在波导曲面上反射时会引入光功率。由于波导两个曲面的曲率引入的光功率方向相反,因此存在某种补偿,但必须调整全息耦合器引起的初始衍射角,以考虑光功率的影响。

图2 未调整的弯曲波导模型图

在Zemax中,全息物体通过构造点来定义。然后,我们可以通过将构造点设置在较远的位置来定义准直记录光束,或者使用较近的构造点来定义球面记录光束。

然后,在初始光学设置中,利用“环形全息图”物体的曲率来模拟沿波导曲率方向(矢状方向)的光功率。通过这种方法,我们可以设计出能够正确通过波导传播并产生清晰图像的系统。

图3 无/有曲率补偿的传播

步骤2:在Ansys Lumerical中进行VHG仿真

在上一步中,我们通过人为改变VHG的曲率来调节全息图的光功率。然而,在实际应用中,全息图是层压在波导上的,其曲率分别与波导的内表面或外表面相同。为了获得更好的仿真效果,应该通过调整记录条件来控制光功率。这正是我们将在本步骤中使用RCWA求解器进行演示的内容。

耦合器设计:

  1. 打开文件Generate_JSON_VHG_Hin.lsf

    1.1-查看定义“VHG参数”的章节,其中设置了初始构造点。

    1.2-请查看VHG空间采样循环。对于每个位置,都会调整k向量,以使RCWA条件与所需函数相对应。

  2. 运行脚本并生成耦合器的.json文件

RCWA求解器可用于模拟全息耦合器的响应。该求解器包含一个层重复功能,可通过利用沿传播轴的折射率调制周期性来加速计算。有关如何设置简单VHG仿真的更多详细信息,请参阅文末[1]“体全息光栅-Ansys Optics”

在这种情况下,使用RCWA求解器执行循环,以模拟VHG在不同位置的响应,并调整记录k向量以考虑全息物体的曲率来产生所需的响应。

对于入射耦合器,我们希望垂直入射的输入光发生衍射,并以一定角度传播到波导中。θ对于VHG上的某个位置(x,y),记录角度调整如下

其中

图4 VHG在不同位置的响应

使用循环计算得到的RCWA响应集以JSON格式导出,并导入Lumerical亚波长模型(LSWM)。该格式支持空间信息,详情请参阅:Lumerical亚波长模型:如何模拟具有空间变化的光栅–Ansys Optics。在本例中,所有VHG的尺寸均为9mm×9mm,我们使用5x5点的网格对其进行采样。LSWM采用线性插值来估计网格内所有位置的响应。由于我们处理的主要是准直光束和缓慢的曲率变化,因此该方法能够提供可接受的结果。为了获得更高的精度或表示更快的轮廓变化,需要使用更精细的网格。

图5 采样网格示意图

请注意,在对VHG进行采样的网格上,具有相同y坐标的点提供的是相同的功能,因为我们只在矢状方向上施加功率。然后,将这些点集分组,并用从1到5的“索引图”进行标记,我们只运行5次不同的RCWA模拟,而不是25次独立的运行。

输出耦合器的设计:

输出耦合器的设计也采用了相同的策略,但针对的是传输型VHG。波导内部分的曲率符号也与输入耦合器的曲率符号相反。

  1. 打开文件Generate_JSON_VHG_Hout.lsf

  2. 运行脚本。它会执行与1D展开的3个输出耦合器VHG相对应的循环,并生成3个单独的.json文件。

图6 VHG在不同位置的响应

请注意,我们希望三个输出耦合器提供相同的输出方向。然而,三个VHG中心处的法线并不平行,它们之间存在±3.1°的偏差,这导致玻璃中的输出角度相差2.07°。因此,设计3个VHG输出角度θout分别设置为-2.07°、0°和2.07°。

对于入射耦合器,我们希望衍射效率尽可能高。对于出射耦合器,衍射效率应随着瞳孔扩张而逐渐提高,从而使光在三个VHG之间均衡地提取。理想情况下,三个出射耦合器的效率应分别为33%、50%和100%(在配置1中使用理想元件时,就是这样设置的)。为了实现这种效率变化,需要对三个输出VHG的折射率调制进行不同的调整。

图7 输出耦合器的中心响应

增加VHG的厚度可以提高衍射效率,但也会导致角度带宽变窄。因此,在系统预期角度带宽内,找到效率和响应均匀性之间的良好平衡点至关重要。

步骤3:在Ansys Zemax OpticStudio中进行光线模拟

在这一步中,我们将理想的Zemax对象替换为包含上一步使用RCWA求解器计算结果的.json文件。

  1. 打开文件curve_waveguide.zar,并切换到配置2。

    1.1-在“透镜阵列”对象的设置中,检查衍射选项卡中是否选择了正确的.json文件。

    1.2-检查“微透镜阵列”对象的曲率是否分别与波导的外曲率和内曲率相匹配。

  2. 运行光线追踪并在探测器查看器中观察生成的图像。

Zemax对象提供了一个选项,可以通过输入体全息图参数,使用Kogelnik方法计算体全息图的效率。然而,由于元件的曲率是人为设定的,因此计算结果无法准确描述全息元件的实际性能。因此,我们手动将衍射级次设置为理想值(入射耦合器为100%,出射耦合器分别为33%、50%和100%)。

.json文件包含使用RCWA求解器计算的VHG响应相关数据。与理想元件的情况相比,它在几何形状(元件的正确曲率)、角带宽和杂散光方面提供了更真实的系统行为表示。

8 Zemax中的实体模型图

图9 图像模拟结果对比

当然,理想图像看起来更好,尽管我们仍然可以看到由于系统柱面特性而残留的一些像散。然而,在第二种配置中,我们可以看到,得益于Lumerical亚波长模型,补偿波导曲率的正确光学函数可以直接集成到VHG的光学函数中。

对于弯曲波导系统的设计,使用RCWA计算的VHG进行仿真,可以更好地表示和可视化对整体系统优化至关重要的均匀性和杂散光。

注意

  • 要将.json文件导入Zemax,应将其放置在Zemax DLL Diffractive文件夹中。

  • 针对不同的VHG元件,设置了RCWA脚本,其中包含了每个VHG的特定记录条件和预期曲率。

  • RCWA模拟的背景材质设置为1.5,因此所有角度均为玻璃。

  • 在.json文件中,结构周期信息通过变量“reciprocal_lattice_vector”传递,该变量是一个二维向量,表示x和y方向的周期性。在本例中,我们忽略y方向的周期性。

参考案例

[1]https://optics.ansys.com/hc/en-us/articles/37118679173267-Volume-Holographic-Grating

[2]https://optics.ansys.com/hc/en-us/articles/34239784945299-Lumerical-Sub-Wavelength-Model-How-to-Simulate-a-Grating-with-Spatial-Variations

[3]https://optics.ansys.com/hc/en-us/articles/43789665327123-Curved-Waveguide-Design-with-Holographic-Couplers

来源:摩尔芯创
ACT电路半导体光学电力电子UMCSTLumerical控制曲面Zemax
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-06-29
最近编辑:1月前
摩尔芯创
光学仿真、光学培训、硅基光电子
获赞 14粉丝 33文章 111课程 0
点赞
收藏
作者推荐

Lumerical亚波长模型:如何模拟具有空间变化的光栅

引言单个.json文件可以包含多组光栅仿真数据。基本原理是定义一个网格点阵,并为每个点分配一个索引。当光线在特定空间位置与光栅相交时,Zemax和Speos等光线追迹软件会根据光线在表面上的位置匹配对应的衍射级次。该功能主要用于仿真平滑渐变的光栅。如果光线入射到多个网格点之间的位置,软件会根据邻近网格点的响应(如衍射级次的方向或效率)做线性插值(可关闭)。因此,对于线性变化(或完全无变化)的区域,只需定义该区域端点处的响应,而对于变化非常块的区域,则需要提供大量数据点以提高采样精度。每种光栅变体,都可以完全自定义其参数(周期、材料、高度、占空比等)。自2026 R1.1 版本起,软件新增脚本命令lmapexport(详见文末链接[1]),用于导出.lswm 与.lmap 文件。如何使用RCWA求解器生成.lswm和.lmap文件该工作流程中最复杂的环节是生成包含完整空间信息的.json文件,具体步骤如下:1.定义采样点网格2.定义索引映射3.定义倒格矢4.用RCWA求解器计算响应并生成.json文件定义采样点网格生成数据的第一步是定义空间变化的点阵映射。构建空间渐变映射有三种方式:直角坐标 (x,y)极坐标 (r,θ)自定义参数扫描:这种特殊情况允许直接调用索引编号而非空间坐标定义索引映射每个网格点都标注一个0至M的索引,M是小于等于空间映射中定义的网格点数的整数。如果多个点具有相同的索引,则表示这些位置使用相同的光栅。如果索引设置为0(或任何小于1的值),则表示该位置没有光栅,光线交互将遵循菲涅耳定律。注意,采样必须是规则的矩形点阵。若要定义非矩形区域,可将光栅区域外点的索引设为 0。定义倒格矢.json 文件不包含光栅的具体结构信息(如高度、占空比、倾斜角),它只包含由 RCWA 计算得到的一组响应。但需要指定光栅周期,以便进行数据读取的光线追迹软件(Ansys Zemax OpticStudio 或 Ansys Speos)得到给定衍射级次效率的同时,还能确定其传播方向。因此,除了索引之外,还需要为每个网格点提供定义光栅周期和方向的倒格矢。文件支持二维光栅,在每个点处可以提供两个倒格矢,并分别标记为1和2。对于一维光栅,第二个矢量可以简单地设为 0。使用RCWA求解器计算响应并生成.json文件对于无空间变化的简单情况,可以直接右键点击 RCWA 结果将其导出为.json文件。在定义了空间变化的情况下,RCWA求解器需多次运行,针对前述不同索引定义的每种光栅变体都进行一次求解。附件中提供了一些示例脚本,可用作模板。以下是脚本中需要设置的参数列表:空间映射spatial_variation_or_parameter_scan.pos_x # 大小为 1 x N1 的向量spatial_variation_or_parameter_scan.pos_y # 大小为 1 x N2 的向量spatial_variation_or_parameter_scan.pos_rad # 大小为 1 x N1 的向量spatial_variation_or_parameter_scan.pos_pol # 大小为 1 x N2 的向量spatial_variation_or_parameter_scan.par_1 # 大小为 1 x N1 的向量spatial_variation_or_parameter_scan.par_1_name # 字符串spatial_variation_or_parameter_scan.par_2 # 大小为 1 x N2 的向量spatial_variation_or_parameter_scan.par_2_name # 字符串索引映射patial_variation_or_parameter_scan.index_map # 大小为 N2 x N1 的矩阵倒格矢reciprocal_lattice_vector_1 # 大小为 M x 2 的矩阵reciprocal_lattice_vector_2 # 大小为 M x 2 的矩阵M是spatial_variation_or_parameter_scan.index_map中的最大索引编号。注意,即使光栅没有周期变化(仅其他参数渐变或无渐变),也必须将倒格矢复 制到矩阵中,使其保持M行。还需要注意,不同光栅变体在RCWA中的输出级次可能不同(例如,某种情况下存在+2级次,但另一种情况下不存在),但每种光栅的运行数据集应具有相同大小。下文示例的仿真脚本中,指定了读取级次列表,以确保所有数据集维度一致。在Ansys Zemax OpticStudio中的使用在OpticStudio中的使用方法与无空间渐变的情况类似,从下拉列表中选择.json文件即可。更多信息请参阅Lumerical亚波长模型在Zemax OpticStudio中的使用(详见文末链接[2])。具有空间变化的.json文件需要2024.R2.2及更高版本的DLL。相比旧版本,新的DLL增加了一些额外参数:随机模式(Stochastic Mode):以随机模式追迹光线,而非将光线分裂为多条光线。测试模式(Test Mode):此变量用于故障排除。可以设置为不同的值,以在日志文件中输出不同级别的信息。日志文件生成在 Zemax DLL 衍射文件夹中,.json文件也位于该文件夹。0:不记录+1:重大问题日志+16:每条光线的日志+32:DLL 导出详细日志文件(光线较多时文件可能很大)光栅旋转(Rotate Grating):启用后可将光栅旋转指定角度(单位为度)。检查环境折射率(Check Environment index):这是一个标志位,用于避免在与RCWA 表征环境不同的配置中使用光栅。如果设为 1,Zemax OpticStudio中定义的材料折射率将与.json文件中写入的材料折射率进行比较。如果两者不同,光线追迹将报错。参数扫描1和2(Parameter Scan 1 and 2):选择自定义方法定义时使用的参数。允许直接从.json文件中调用所需的索引。禁用插值(No Interpolation):此变量用于关闭插值功能。此时,将使用最近的定义点来确定任意给定位置的光栅参数。根据该参数的输入值,可以停用不同级别的插值:0:插值开启+1:禁用波长插值+2:禁用角度插值+4:禁用空间 (xy) 插值例如,如果设为6,则禁用角度和空间插值。设置为7表示完全禁用插值。注意,插值标志可以直接在文件中设置,但可能会被此参数覆盖。在Ansys Speos中的使用在Ansys Speos中,没有像Zemax OpticStudio中那样用于设置插值标志的额外参数。如果要在Speos中开启或关闭插值,应直接在文件中设置插值标志。以下是开启和关闭插值的标志列表。默认情况下,所有插值均开启。polarization_interpolate_over_theta_ux_kxpolarization_interpolate_over_phi_uy_kypolarization_interpolate_over_wavelengthpolarization_interpolate_over_spatial_paramete在文件中将polarization_interpolate_over_spatial_parameter设为False/0,可以关闭插值。更多信息请参阅Lumerical亚波长模型在Speos中的使用(详见文末链接[3])。注意,使用空间变化时,是在表面的指定空间区域内定义光栅,无法使用UV映射对其进行缩放或旋转,但可以通过手动旋转附着于表面的坐标系来改变光栅方向。如何使用RCWA求解器生成.lswm和.lmap文件生成.lswm文件按照以下步骤从RCWA求解器中,以.lswm格式导出扫描结果:常规设置RCWA仿真:在RCWA设置的General选项卡中,设置传播方向为双向(both)。在RCWA设置的Results选项卡中,启用报告光栅特征(report grating characterization)选项、。在扫描结果中添加report grating characterization和substrate。运行扫描。右键点击扫描,选择“Export to LSWM”。此时会弹出对话框。在对话框中,有若干选项需用户自行设置:- Lattice angle (degrees):RCWA 几何选项卡中所用的晶格角。- Backward definition:与RCWA General页定义一致。- Lossless:默认值为否。包层或者衬底无损耗时,启用该选项。- Interpolate over incident angle:默认值为否。启动该选项可启动入射角度的线性插值响应。- Interpolate over incident wavelength:默认值为否。启动该选项可启动波长点的线性插值响应。- Truncate order:默认值为否。启用此选项可启用光栅级次截断。设置为否时,所有衍射级次都会保留,如果启用则需要提供衍射级次的最大和最小值。- Polarization interpolation basis:在导入LSWM文件时,设置用于极化插值的基础信息,可选SP、XY和Auto。- Resampling parameter:选择要重采样的参数以及重采样的点数,重采样的点数必须是大于2的整数值。在所有的重采样选项中,只能选择一个参数进行。选择LSWM文件的生成路径和名称,可以编辑文本框或使用另存为按钮打开文件对话框来完成。点击OK以保存文件。此外,也可以使用lswmexport脚本命令(详见文末链接[4])。下面是使用脚本导入.lswm文件的示例:lswmFile="export_sweep.lswm";span = [getnamed("RCWA","x span"), getnamed("RCWA","y span"),getnamed("RCWA","z span")];latticeVectorAngle = getnamed("RCWA","lattice vector angle");grating_characterization = getsweepresult("sweep","grating_characterization");substrate = getsweepresult("sweep","substrate");lswmexport({"grating_characterization":grating_characterization, "substrate":substrate,"lattice_angle":latticeVectorAngle, "mirror_k_vector":1,"span":span},lswmFile,{"polarization_interpolation_basis":"AUTO","truncate_order":true,"truncate_order_min":-1, "truncate_order_max":1, "lossless":1});生成.lmap文件生成包含所有所需空间信息的.lmap文件的步骤如下:1. 定义采样点网格2. 定义索引指标3. 生成包含索引映射的LMAP文件定义采样点网格第一步是为空间变化定义一个点分布图,构建空间变化分布图有两种选择:笛卡尔坐标 (x,y)极坐标 (r,θ)定义索引映射每个网格点都标有从-1到M-1的索引,其中M为扫描点的数量。如果多个点拥有相同的索引,则说明这些点用了相同的光栅。如果某个索引设置为-1(或者任何小于0的值),则表示此位置没有光栅,光线的相互作用将应用菲尼尔定律。注意采样需要规则的矩形网格点,如要定义非矩形区域,需要将光栅外点的索引设置为-1。也可以使用嵌套扫描来改变多个参数,比如除了光栅的倾斜角之外还希望改变占空比,扫描应如下设置:如果占空比在0.2到0.8之间变化,倾斜角度在10°到60°之间变化,则嵌套参数列表如下图所示: 定义了索引图后,可以使用lmapexport命令(详见文末链接[1])来导出LMAP文件。下面为一个以极坐标形式导出LMAP的示例:map_type = "polar";lswmFile = "1D_slant_polar.lswm";cellTypeMap = [ 0,0,0,0,0,0,0,0,0;1,1,1,1,1,1,1,1,1;2,2,2,2,2,2,2,2,2;3,3,3,3,3,3,3,3,3]; #dim1: R from to size_R // dim2: phi from -180 to 180size_R = 2; #maximum radius sizeinterpolate_over_spatial_coordinate = true;spatialInfo = {"size_R":size_R};mapInfo = {"map_type":map_type, "spatial_info":spatialInfo, "cell_type_map":cellTypeMap};lmapexport(lswmFile,mapInfo,interpolate_over_spatial_coordinate);应用示例示例1:XY直角坐标系的简单映射使用Ansys Zemax OpticStudio该示例的json文件使用脚本文件生成。之后打开对应的Zemax工程文件仿真其在光线追踪环境下的表现。用4个点(正方形的4个角)定义一个2mm*2mm的光栅区域,在正方形的2个点上定义周期为5um的光栅,另外2个点上定义周期为9um的光栅。用于生成json文件的Lumerical脚本如下:脚本同样包括针对这两种情况运行RCWA并将结果写入json文件的部分。在Zemax OpticStudio中可以查看的结果如下所示:使用Ansys Speosjson文件同样可以被Speos读取。打开对应的Speos工程文件,在仿真选项卡中,确保在Surface_json属性中选中了.sop和.json文件,之后运行Direct_Normal_Source仿真。示例2:极坐标系的简单映射该示例的json文件使用脚本文件生成。之后打开对应的Zemax工程文件仿真其在光线追踪环境下的表现。该示例中,定义了沿径向2mm的渐变。由于只考虑一个角度,该变化将以类似的方式在所有极角上产生,即该渐变旋转对称。示例3:高级映射该示例的json文件使用脚本文件生成。之后打开对应的Zemax工程文件仿真其在光线追踪环境下的表现。该示例中,展示了如何使用XY直角坐标系网格定义非矩形的光栅区域,基本思路将所需光栅区域外的所有点的索引定义为0。示例4:使用RCWA中的LSWM和LMAP文件进行简单的地图导出该示例中使用了倾斜光栅,对光栅的倾斜角度在10°至60°范围内以1°的步长进行扫描。波导内的中心传播角度约为51°。预计倾斜角约为10°时,+1级次的Tss达到最大值。使用倾斜光栅作为耦入光栅,设置并运行后右键单击RCWA结果中的‘grating_characterization’并导出LSWM文件。在对话框中将插值设置为‘true’并截断数据只保留±1和0阶衍射结果。此时,光栅未考虑空间变化。对于耦出光栅,需要扫描其倾斜角度,因此文件要从扫描结果中导出。运行扫描后单击扫描对象,并将结果导出为LSWM文件。弹出对话框中的设置与前述相同。如要生成LMAP文件,则需与脚本配合。可以使用lmapexport脚本命令生成空间变化的映射。如下图,该映射在一个方向上定义了倾斜角度的变化,在另一个方向上则没有变化。在Zemax中的设置首先,将所有的.lswm和.lmap文件以及提供的 lumerical-sub-wavelength-2026R1.dll 复 制到 Zemax>>DLL>>diffractive 文件夹中。耦出光栅独立验证首先独立验证耦出光栅的表现,光栅设置如下:可以观察到光栅衍射效率的变化符合预期:注意,只需要选择.lswm文件。动态链接库(DLL)会自动查找同名的.lmap文件,如果未找到与.lswm文件同名的映射文件,则不存在空间变化。完整的系统验证在最后的系统中,我们有耦入光栅和耦出光栅。首先,如果我们对耦入和耦出光栅都不设置空间变化,此时的仿真结果如图:为了使输出更均匀,我们在耦出光栅上设置空间变化: 相关链接[1]lmapexport脚本命令https://optics.ansys.com/hc/en-us/articles/50997817911699-lmapexport-Script-command[2]Lumerical亚波长模型在Zemax OpticStudio中的使用https://optics.ansys.com/hc/en-us/articles/18427154870803-Lumerical-Sub-wavelength-Model-Usage-in-Zemax-OpticStudio[3]Lumerical亚波长模型在Speos中的使用https://optics.ansys.com/hc/en-us/articles/13240235894035-Lumerical-Sub-wavelength-Model-Usage-in-Speos[4]lswmexport脚本命令https://optics.ansys.com/hc/en-us/articles/13817263692563-lswmexport-Script-command来源:摩尔芯创

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈