新闻动态

News Center

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

发布日期:
2026-05-26

浏览次数:

引言

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


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



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


定义倒格矢

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


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


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


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

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


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



  • 运行扫描。

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

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



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

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


如果占空比在0.2到0.8之间变化,倾斜角度在10°到60°之间变化,则嵌套参数列表如下图所示:


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

定义了索引图后,可以使用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脚本如下:


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


脚本同样包括针对这两种情况运行RCWA并将结果写入json文件的部分。在Zemax OpticStudio中可以查看的结果如下所示:


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



使用Ansys Speos

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


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



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

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


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


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



示例3:高级映射

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


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


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


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

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


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


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



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

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



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

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



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

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



在Zemax中的设置

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


耦出光栅独立验证

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

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

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

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



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


完整的系统验证

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


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

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



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

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


相关链接

  • [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


相关阅读

Lumerical案例 | 具有分布式电极的行波调制器

Lumerical | AR光波导:空间渐变光栅设计

Zemax案例 | 基于Zemax相机多自由度主动对准技术研究

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

Zemax案例 | 一种具有匀光变焦的激光切割光学系统设计

Lumerical案例 | INTERCONNECT和photonic Verilog-A紧凑模型的说明和应用



相关推荐

Speos案例 | 基于Speos的衍射波导AR风挡HUD系统仿真解决方案
引言随着智能汽车座舱技术快速迭代,增强现实抬头显示(AR HUD)已成为...
Lumerical亚波长模型:如何模拟具有空间变化的光栅
引言单个.json文件可以包含多组光栅仿真数据。基本原理是定义一个网格点...
Lumerical案例 | 具有分布式电极的行波调制器
引言采用集总电极结构的一般电光调制器面临着这样的局限:器件的带宽受RC常...
Lumerical | AR光波导:空间渐变光栅设计
1. 简介此前,OpticStudio 为一维光栅仿真提供了一维 RCW...