首页/文章/ 详情

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

3月前浏览979

引言

单个.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的值),则表示该位置没有光栅,光线交互将遵循菲涅耳定律。


figure1.png


注意,采样必须是规则的矩形点阵。若要定义非矩形区域,可将光栅区域外点的索引设为 0。


定义倒格矢

.json 文件不包含光栅的具体结构信息(如高度、占空比、倾斜角),它只包含由 RCWA 计算得到的一组响应。但需要指定光栅周期,以便进行数据读取的光线追迹软件(Ansys Zemax OpticStudio 或 Ansys Speos)得到给定衍射级次效率的同时,还能确定其传播方向。因此,除了索引之外,还需要为每个网格点提供定义光栅周期和方向的倒格矢。文件支持二维光栅,在每个点处可以提供两个倒格矢,并分别标记为1和2。对于一维光栅,第二个矢量可以简单地设为 0。


Picture2.png


使用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增加了一些额外参数:


Picture3.png


随机模式(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_kx

  • polarization_interpolate_over_phi_uy_ky

  • polarization_interpolate_over_wavelength

  • polarization_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。


Picture1.png


  • 运行扫描。

  • 右键点击扫描,选择“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的值),则表示此位置没有光栅,光线的相互作用将应用菲尼尔定律。


Picture2.png


注意采样需要规则的矩形网格点,如要定义非矩形区域,需要将光栅外点的索引设置为-1。也可以使用嵌套扫描来改变多个参数,比如除了光栅的倾斜角之外还希望改变占空比,扫描应如下设置:


Picture3.png


如果占空比在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 180

size_R = 2; #maximum radius size

interpolate_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中可以查看的结果如下所示:


Picture5.png


使用Ansys Speos

json文件同样可以被Speos读取。打开对应的Speos工程文件,在仿真选项卡中,确保在Surface_json属性中选中了.sop和.json文件,之后运行Direct_Normal_Source仿真。


Picture8.png


示例2:极坐标系的简单映射

该示例的json文件使用脚本文件生成。之后打开对应的Zemax工程文件仿真其在光线追踪环境下的表现。


该示例中,定义了沿径向2mm的渐变。由于只考虑一个角度,该变化将以类似的方式在所有极角上产生,即该渐变旋转对称。


Picture6.png


示例3:高级映射

该示例的json文件使用脚本文件生成。之后打开对应的Zemax工程文件仿真其在光线追踪环境下的表现。


该示例中,展示了如何使用XY直角坐标系网格定义非矩形的光栅区域,基本思路将所需光栅区域外的所有点的索引定义为0。


Picture7.png


示例4:使用RCWA中的LSWM和LMAP文件进行简单的地图导出

该示例中使用了倾斜光栅,对光栅的倾斜角度在10°至60°范围内以1°的步长进行扫描。波导内的中心传播角度约为51°。


预计倾斜角约为10°时,+1级次的Tss达到最大值。


Picture4.png


使用倾斜光栅作为耦入光栅,设置并运行后右键单击RCWA结果中的‘grating_characterization’并导出LSWM文件。在对话框中将插值设置为‘true’并截断数据只保留±1和0阶衍射结果。此时,光栅未考虑空间变化。


Picture5.png


对于耦出光栅,需要扫描其倾斜角度,因此文件要从扫描结果中导出。运行扫描后单击扫描对象,并将结果导出为LSWM文件。弹出对话框中的设置与前述相同。


Picture6.png


如要生成LMAP文件,则需与脚本配合。可以使用lmapexport脚本命令生成空间变化的映射。如下图,该映射在一个方向上定义了倾斜角度的变化,在另一个方向上则没有变化。


Picture7.png


在Zemax中的设置

首先,将所有的.lswm和.lmap文件以及提供的 lumerical-sub-wavelength-2026R1.dll 复 制到 Zemax>>DLL>>diffractive 文件夹中。


耦出光栅独立验证

首先独立验证耦出光栅的表现,光栅设置如下:


Picture8.png


可以观察到光栅衍射效率的变化符合预期:


Picture9.png


注意,只需要选择.lswm文件。动态链接库(DLL)会自动查找同名的.lmap文件,如果未找到与.lswm文件同名的映射文件,则不存在空间变化。


完整的系统验证

在最后的系统中,我们有耦入光栅和耦出光栅。


首先,如果我们对耦入和耦出光栅都不设置空间变化,此时的仿真结果如图:


Picture10.png


为了使输出更均匀,我们在耦出光栅上设置空间变化:

Picture11.png


相关链接


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

Lumerical案例 | OLED显示中的反射式偏振片

引言反射式偏振片是一种应用于现代电视的光学层,用于提升亮度和能效。其工作原理是将未被利用的光线偏振态反射回背光单元,在那里这些光可以被回收,并以正确的偏振态重新投射到显示屏上。这一过程提高了整体光利用率,使显示屏看起来更亮,同时又不增加功耗。概述在此示例中,我们将仿真一种多层双折射聚合物反射偏振片,并将结果导出为JSON文件,该文件可用于Ansys Speos中的Lumerical Sub-Wavelength Model(LSWM)插件进行光学仿真。下图所示为仿真的反射型偏振片。它由各向同性材料和双折射材料交替堆叠而成。折射率根据以下公式呈现色散:中𝐴1,2,𝐵1,2和𝐶1,2是拟合参数。材料1和2的厚度𝑑1和𝑑2可由以下公式推导得出:在这个例子中我们考虑:和步骤1. 对具有均匀层的反射式偏振片运行仿真并导出计算结果在此步骤中,通过扫描入射角(θ和φ)来评估反射偏振片的反射特性。结果将导出为JSON文件,以便在Speos中使用。步骤2. 对具有不同厚度分布的反射式偏振片运行仿真并导出计算结果为了获得宽带反射,可以使用厚度不同的层。在本步骤中,我们以上一步的层厚度为起点,并按照以下公式进行线性变化:不同入射角(theta和phi)的计算结果将导出为JSON文件,以便在Speos中使用。步骤3. 在Speos中验证和可视化结果在这个步骤中,导出的JSON文件被导入到Speos中,并与使用Lumerical Sub-Wavelength Plugin定义的表面进行链接。然后使用不同波长的光源在指定入射角下进行一系列模拟,以量化反射偏振器引入的反射和透射能量。此外,还进行了一项包含背反射器的仿真,展示了显示屏内部的能量回收行为。运行和结果步骤1. 对具有均匀层的反射式偏光器运行仿真并导出结果1.打开并运行reflective_polarizer.lsf脚本文件。该脚本将针对所有入射θ角和φ角的组合以及所有指定的频率点运行STACK求解器。注意:脚本运行时间可能需要几分钟,具体取决于波长数量和入射角。以下是p偏振和s偏振正入射的反射结果。步骤2. 对具有不同厚度分布的反射式偏光器运行仿真并导出结果1.打开并运行reflective_polarizer_varying_thickness.lsf脚本文件。该脚本将针对所有入射θ角和φ角的组合以及所有指定的频率点运行STACK求解器。上述公式将用于改变各层的厚度。注意:脚本运行时间可能需要几分钟,具体取决于波长数量和入射角。下图展示了在垂直入射条件下,采用梯度厚度分布时p偏振光和s偏振光的反射率:通过改变层厚度,对于正入射,p偏振的反射覆盖了大约430nm–860nm的波长范围。步骤3. 在Speos中验证和可视化结果1.打开项目reflective_polarizer.scdocx,并检查“reflective_polarizer”的材料定义设置。关于在Speos中使用LSWM插件的方法,也可参见参阅文末链接[1]。在提供的项目中,定义了三个准直面光源,其入射角分别为0°、30°和60°。2.加载脚本Speos validation.py。3.请修改第7行,根据STACK中计算的入射角选择合适的源(例如,在使用本文提供的JSON文件时,对于垂直入射应使用0°)。如有必要,请调整第9行以选择STACK中计算的采样数据。4.执行脚本。该脚本会输出反射偏振片在指定入射角下的反射率和透射率随波长变化的曲线。当使用reflective_polarizer.json作为反射偏振器表面时,反射率结果应与Lumerical STACK 求解器的行为一致:在使用均匀层时,520–580nm波长范围内的反射率应接近100%。如果将JSON文件更改为reflective_polarizer_gradient.json,总反射范围将扩展至400–700nm,这与Lumerical STACK 求解器得出的结果也一致。从仿真中移除垂直偏振片表面并添加一个背反射器,或者直接使用名为“System”的预配置仿真。更新后的配置包括一个反射型偏振片、一个表面背光源以及一个定义为理想完美镜面的反射器。在此配置中,一种偏振态会通过反射偏振片,而正交的偏振态则被反射。随后,被反射的光分量与背反射器发生相互作用,并被进一步重新导向至反射偏振片,从而实现系统内的能量回收。请核对仿真设置,确保“最大表面相互作用次数”设置为10,000,因为光会在反射偏振片与反射器之间发生多次反射。最后,检查系统的总透射能量。它应为约99.9%,确认能量循环机制按预期工作。重要模型设置1. Lumerical模型设置——介电常数旋转STACK求解器假设入射平面始终为xz平面(即φ=0)。要获得各向异性层对具有给定方位角φ的入射光的响应,必须将相应材料的光轴(即介电常数张量)旋转-φ度。2. Speos模型设置——传感器色度和光谱采样选择与STACK中仿真匹配的采样非常重要。更新模型1. 定制材料在该模型中,色散材料是通过预定义的拟合参数实现的。用户可以定义其他色散或非色散材料。材料也可添加到材料数据库中,该数据库仅支持对角介电常数张量。更多信息请参阅文末链接[2]。2. 定制层厚度用户可以在反射偏振器模型中指定每层的厚度。厚度分布可以是均匀的,也可以按照线性或指数分布变化。附加资源相关出版物1.Y. Li, T. X. Wu and S. -T. Wu, "Design Optimization of Reflective Polarizers for LCD Backlight Recycling," in Journal of Display Technology, vol. 5, no. 8, pp. 335-340, Aug. 2009, doi: 10.1109/JDT.2009.2027033另见[1]articlehttps://optics.ansys.com/hc/en-us/articles/13240235894035-Lumerical-Sub-Wavelength-Model-plugin-Usage-in-Speos[2]Creating anisotropic optical materials in FDTD and MODE – Ansys Opticshttps://optics.ansys.com/hc/en-us/articles/360034394694-Creating-anisotropic-optical-materials-in-FDTD-and-MODE[3]Antireflective circular polarizers in OLED displayhttps://optics.ansys.com/hc/en-us/articles/5845197523731-Antireflective-circular-polarizers-in-OLED-display[4]STACK Optical Solver Overviewhttps://optics.ansys.com/hc/en-us/articles/360034914653-STACK-Optical-Solver-Overview[5]stackrt - Script commandhttps://optics.ansys.com/hc/en-us/articles/360034406254-stackrt-Script-command[6]Lumerical Sub-Wavelength Model plugin: Introduction and Data Generationhttps://optics.ansys.com/hc/en-us/articles/8597760630163-Lumerical-Sub-Wavelength-Model-plugin-Introduction-and-Data-Generation[7]High-Resolution OLED Modeling with 2D Spatially Varying RGB Intensityhttps://optics.ansys.com/hc/en-us/articles/42149437466643-High-Resolution-OLED-Modeling-with-2D-Spatially-Varying-RGB-Intensity来源:摩尔芯创

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