表面浮雕光栅(SRG)广泛应用于各种传统光学系统,如光谱仪、分束器、三维扫描系统、衍射透镜和脉冲放大系统等。近年来,表面浮雕光栅在平视显示器(HUD)、增强现实(AR)、虚拟现实(VR)头戴显示器(HMD)等现代设备中得到广泛应用。它们能够以任意角度衍射光线,综合其波长和角度选择性,使得光学系统比传统设计更紧凑、更轻,而传统设计通常需要使用棱镜和自由曲面来达到同样的性能,会导致系统更复杂,体积更庞大。 OpticStudio一直可以模拟光栅,但没有考虑衍射效率。为了准确地反映衍射光线的衍射效率和偏振态,就必须在模拟时考虑光栅的微观结构等特性。 本文将讨论两个用来模拟梯形和阶梯光栅的DLL。承接上周的内容,下篇将包含DLL参数等。
DLL 参数
在OpticStudio 20.3中,共有5个RCWA DL用于模拟不同形状的1D光栅:
srg_trapezoid_RCWA.dll
srg_step_RCWA.dll
srg_blaze_RCWA.dll
srg_GridWirePolarizer_RCWA.dll
srg_user_defined_RCWA.dll
本节描述了这些DLL的参数,从所有DLL相同的参数开始,然后解释每个DLL的特定参数。
相同的参数
以下参数在所有 RCWA DLL 中具有相同的含义。 +周期/频率(µm)和深度(µm) 这些凹槽周期单位为µm,光栅的剖面深度单位为µm。
当“+周期/-频率(µm)”是正值,它对应于凹槽周期(µm);
当它是负值,对应于凹槽频率(1 /µm)。周期和频率是互为倒数的。图10显示了光栅的凹槽周期和深度。
图10. 梯形和阶梯光栅的槽深和凹槽周期。 建议周期不要太大,例如波长的100 倍。这意味着所需的?ZUI大级次非常大,以至于不能有一个准确的结果。有关ZUI大级次初始值的建议,请参阅"谐波(级次)的概念"部分。 ZUI大级次 请参阅"谐波(级次)的概念"部分。 这目前限制为10(共 21 个谐波)。当数字大于10时,在DLL中将其修改为 10。联系支持团队以增加限制。 旋转光栅(°) 此参数允许用户旋转光栅线的方向。
当它设置为零时,光栅线沿着Y方向,这意味着光线在X方向弯曲。
当它设置为非零时,正值则光栅线以逆时针方向旋转(+X +Y),负值则顺时针向旋转。请注意,此处描述的X和Y方向基于对象的本地坐标系统。
图11. 光栅旋转 135 度。 使用镀膜文件 此参数是一个标志。如果是非零正整数,则表示分散数据(指数与波长)在文本文件中定义。文本文件必须保存在 {Zemax}CoatingsCOATING_xx.dat中,其中 xx 是"使用涂料文件"参数中指定的正整数。 例如,如果将"使用涂层文件"设置为 7,则将COATING_7.dat读取分散数据。 在COATING_xx.dat文件中,散射数据的定义可用参考“The Libraries Tab > Coatings Group > Defining Coatings > The MATE Data Section"下的帮助文件。材料名称应始终从RCWAxx开始,其中xx是两位数的整数。所有文本依次排布。 例如,我们可以定义RCWA01TIO2。DLL将读取 RCWA 材料1,并将忽略随后的TIO2文本。图12显示了一个涂层文件与几个材料散射数据的例子。
图12. 如何在COATING_xx.dat中定义分散数据的示例。 材料编号可以指定光栅折射率(R)、环境折射率(R)或膜层折射率(R)。使用等于材料数乘以-1的负整数。 例如,如果我们要将RCWA02设置为Grate区域的索引数据,则只需将光栅折射率(R)设置为 -2。 查看”光栅折射率(R)、光栅折射率(I)、环境折射率(R)、环境折射率(I)“和”膜层折射率(R)、膜层折射率(I)、膜层顶部厚度(µm)、膜层侧面厚度(µm)“小节获取更多信息 插值 这个参数需是一个整数。
如果为零,DLL 将不使用插值模式。
如果设置为非零值,DLL将在插值模式下工作,这意味着DLL在计算时将在RAM中缓存RCWA数据。然后,这些数据用于插值以进行进一步的光线追迹。这可以显著提高系统中许多光线追迹的速度,例如,跟踪超过一百万条光线。
当插值设置为1时,将使用201*201采样网格。
当它大于1时,它代表采样网格的大小。换句话说,用户可以通过将插值设置为大于1的数字来定义采样网格的大小。但请注意,ZUI低采样网格大小为21。
当插值设置为负整数时,DLL将采取绝对值来查找采样网格,但会使用不同的方法进行插值。这种插值方法更准确,但速度较慢。
设置插值参数是为了速度和精度之间的正确平衡。
图13. 当参数插值为非零整数时,插值模式将打开。当它是负数的时,使用不同的插值方法。这种方法较慢,但更准确。 插值模式(Interpolation Mode)是如何工作的? 首先,在LM空间中定义一个采样网格。当光线入射到光栅上时,光线的方向可以用单位矢量(L,M,N)表示。LMN也被称为光线的方向余弦。当光线击中光栅时,它在x和y方向上的方向余弦L和M被映射到LM空间。然后检查ZUI近的四个采样点,如果在这四个点中没有任何一个点已经计算出RCWA数据,则计算这些点的数据并将其保存在RAM中。然后用这四个点对入射光的RCWA数据进行线性插值。注意,插值不仅是为了提高衍射效率,也是为了实现电场。换句话说,在缓存数据和插值的过程中,要充分考虑相位、偏振态和振幅的变化。 如果光栅数据或光的波长发生变化,DLL将创建另一个采样网格来保存RCWA数据。因此,将光栅参数或波长设置为变量时,用户不应在优化过程中打开插值功能。这意味着追踪许多光线(>1000)时,插值会起到加速优化的作用。但是,如果在优化过程中仅通过光栅跟踪几条光线(如<10),建议关闭插值。 关于进一步的讨论,请参阅“优化(Optimization)”一节。
图14. 在插值模式下,衍射数据的计算如图所示。 仅这些级次(Only these order) 当参数"仅这些级次"为0或负时,DLL将照常工作。所有级次都将追踪。当该参数为正整数时,允许用户指定用户想要跟踪的传输和反射中的衍射级次。 "仅这些级次"只是一个整数,所以下表是它的定义。下表将级次映射为唯一的正整数。
"仅这些级次"是2的幂级数的总和。 举个例子,如果用户想要追迹0级反射光线(R0)和+1级透射光线(T+1)。”仅这些级次“参数应该被设置为2^0 + 2^5 = 1 + 32 = 33。
图.15 ”仅这些级次“ 允许用户指定用户想要跟踪的传输和反射中的衍射级次 注意在使用这个参数的时候,开始级次和结束级次需要包含指定的追迹级次。 此参数也可以使用可视化工具设置。这是一种更容易的方法,因为不需要计算。
图.16 可视化工具中可用直接设置该参数。 随机模式
这也可以称为蒙特卡罗方法或者概率分裂
当参数设置为0时,DLL正常工作
当设置为1,2或3时,随机模式将会生效。当随机模式工作时,DLL会让光线随机衍射,如图17所示。跟踪每个衍射级次的概率基于衍射级次之间的能量比。
图17. 随机模式下,任意入射光线会随机衍射,产生衍射的级次的概率取决于每个级次的能量比。这张图片显示了只有1条光线随机衍射的情况。
对于每条入射光线,可能有任意数量的出射光。要衍射的光线数量由计算决定(截至级次-初始级次+1)。换句话说,用户可以设置参数"初始级次"和"截至级次"来定义出射的光线数量。同样,在光线追迹过程中,随机决定每一条光线的衍射级次。每个出射光线都携带Pi/n的功率,其中Pi是入射光线功率,n是出射线的数量。
图18. 在随机模式下,一条入射光线可用对应多条衍射出射光线。 注意,如果”仅这些级次“不为零,则随机模式按照如下规则运行。
当随机模式为1时,”仅这些级次“被忽略。
当随机模式为2时,随机模式先于”仅这些级次“生效,一条光线可能由随机模式随机化,但被"仅限这些命令"设置的规则阻止。
当随机模式为3时,”仅这些级次“先于随机模式生效,光栅仍然以随机方式衍射光线,但衍射光线始终在"仅这些级次"指定的一组级次中随机化。
错误日志 如果这个参数不为0,则会生成一个报告计算错误的txt文件。该日志文件会保存在{Zemax}DLLDiffractive中,并且与指定的衍射DLL同名。这一参数通常应该设置为0,除非出现了未知的错误。 查看”几何错误“小节获取更多相关信息。
梯形光栅参数(Trapezoid parameters)
以下是梯形光栅 (srg_trapezoid_RCWA.dll) 的参数: 深度,Alpha (度),Beta (度)和填充因子。 这四个参数按照如下规则控制光栅的形状:
深度决定了光栅的高度,如图19所示。
从-z旋转到+x方向时,Alpha和Beta是正的,从+x旋转到-z方向时,Alpha和Beta是负的。例如,在图19中Alpha是正的,Beta是负的。
填充因子是0到1之间的数字,表示底面与凹槽周期的比值。
图19. 梯形光栅的4个参数定义了光栅形状。 膜层折射率(R)、膜层折射率(I)、膜层顶部厚度(µm)、膜层侧面厚度(µm) 这4个参数用于模拟光栅的膜层。DLL可以使用户定义顶部厚度(膜层顶部厚度(µm))和侧面厚度(膜层侧面厚度(µm))。 注意,膜层的厚度不包括在深度参数中。例如,如果深度是5 µm,膜层顶部厚度为200 nm,则光栅的总厚度为5.2µm。
图11. 梯形光栅膜层的顶部厚度。 由于膜层材料可以是金属,DLL提供了另外两个参数来定义膜层材料的复折射率;实部为膜层折射率(R),虚部为膜层折射率(I)。在OpticStudio中,对于吸收材料来说,折射率的虚部通常是负的。例如,铝的复折射率为0.7-7.0i。 膜层折射率(R)不能为零,但可以是负整数。当它是负整数时,意味着它由文本文件中的数据单独定义。有关详细信息,请参阅"使用镀膜文件"部分。 光栅折射率(R)、光栅折射率(I)、环境折射率(R)、环境折射率(I) 光栅结构可分为两个部分,如图 21所示:由”Grate”和“Env“指示的2个不同区域,表示光栅及其环境。光栅被外部区域(Outside)和基板区域(Substrate)包围。基板和外部区域的折射率由光学系统定义。光栅和环境的折射率由DLL中的参数定义。 DLL中包含了4个参数来定义光栅和环境的折射率。
光栅和环境的折射率均由复数定义。
对于光栅区域,折射率的实数部分和虚数部分由光栅折射率(R)和光栅折射率(I)指定。
对于环境区域,折射率的实数部分和虚数部分由环境折射率(R)和环境折射率(I)指定。
当光栅和环境的折射率的实数部分被设为0时,有一项特殊的定义。如果光栅折射率设为0,则表示光栅的折射率与基板的折射率一致。基板折射率由光学系统定义。同样的,如果环境折射率设为0,则表示环境的折射率和外部区域的折射率一致。
光栅和环境的折射率的实数部分(R)可以是负数,意味着它由文本文件中的数据单独定义
有关详细信息,请参阅"使用镀膜文件"部分。
图21. 梯形光栅可用分为两个区域,光栅(Grate)和环境(Env)。两个区域的折射率可用分别定义。
层数
这个参数是用来建模梯形形状的层数。有关更多信息,请查看“层的概念”一节。
锯齿光栅参数(Blaze parameters)
锯齿光栅的参数 (“srg_blze_RCWA.dll”) 与梯形光栅的参数(“srg_trapezoid_RCWA.dll”)一致,除了”深度“。 对于锯齿光栅,深度可以由给定的Alpha和Beta参数计算得来,如图22所示。
图22. 锯齿光栅的形状由三个参数定义:Alpha,Beta和填充因子。
阶梯光栅参数(Step parameters)
以下参数用于定义阶梯光栅(“srg_step_RCWA.dll”)。 深度,阶梯数和Alpha (度)。
深度决定了光栅的高度或厚度,如图23所示。
阶梯数定义了每个周期中阶梯形状的数量,如图23所示。实际上,这通常与制造过程有关。请注意,光栅的形状正在"向下"朝+x方向移动,如下图所示。要反转方向,用户应将光栅绕z轴旋转180度。
图23.参数 “阶梯数”定义了每个周期中阶梯形状的数量。
参数Alpha定义另一侧的斜角,如下图所示。当从+z旋转到-x时,Alpha的符号是正的。图24显示了 Alpha为正的示例.
图24. 参数 Alpha 定义了另一侧的斜角。 每阶梯层数(Layers per step) 这个参数定义了每个阶梯中的层数,此参数只能在参数 Alpha 不为零的情况下使用。否则就是无效的,因为计算结果不会改变。下图显示了该参数如何影响斜面的采样。
图25. 参数Lays of 1 stp定义了每个阶梯中的层数。 膜层折射率(R)、膜层折射率(I)、膜层顶部厚度(µm)、膜层侧面厚度(µm) 这四个参数的定义与梯形光栅一致。参照梯形光栅中的解释。
图26. 阶梯光栅膜层的顶部和侧面的厚度。 光栅折射率(R)、光栅折射率(I)、环境折射率(R)、环境折射率(I) 这四个参数的定义与梯形光栅一致。参照梯形光栅中的解释。
图21. 阶梯型光栅可用分为两个区域,光栅(Grate)和环境(Env)。两个区域的折射率可用分别定义。
网格偏振线栅参数(Grid Wire Polarizer parameters)
以下是网格偏振线栅参数(“srg_GridWirePolarizer_RCWA.dll”)的参数。 这种光栅基本上是二进制光栅。此DLL可用于建模网格线偏振器。 深度 (µm) 和填充因数
深度时光栅的高度。
填充因子是0到1之间的数字,表示栅格区域的宽度与周期的比值。如图28所示。
折射率(R)和折射率(I) 与梯形光栅,锯齿光栅和阶梯光栅类似,网格偏振线栅可以分为四个区域,这两个参数用于定义光栅区域的折射率,如图28所示。 环境区域的折射率不能在DLL中定义,因为它总是与外部区域的数值保持一致。外部区域和基板区域的折射率都在OpticStudio中定义,它们不能在DLL中更改。
图28. 网格偏振线栅可以分为四个区域:外部区域,光栅区域,环境区域和基板区域。光栅形状由深度和填充因子决定。
用户自定义光栅参数(User Defined Grating parameters)
用户自定义光栅(“srg_user_defined_RCWA.dll”)只有一个参数。 文件编号 该参数必须是1-99内的正整数。DLL会从位于DocumentsemaxDLLDiffractive的名为“user_grating_data_xx.txt”的txt文件内读取光栅数据,其中xx就是”文件编号“参数。 DLL将仅读取用户自定义的光栅文本一次,并将数据保存在内存中。如果文本被修改并且需要重新载入,则将"文件编号"参数设置为负数。确保通过系统中的光栅跟踪至少一条光线以触发重新加载:更新布局图或使用射线跟踪控制运行射线跟踪。更新形状数据后,请记住将"文件编号"参数设置为正值,让DLL不会一直重新加载文本文件以更新光栅数据。
图29. 用户自定义的光栅数据写在文本文件"user_grating_data_xx.txt"中,其中 xx 是正整数,可以通过使用 DLL"srg_user_defined_RCWA.dll"进行读取。 用户自定义光栅的文件格式 光栅形状由多个层定义。每层由背景材料定义,并可选包含其他材料的几个部分。有关层的更多信息,请参阅"层的概念"部分。 用户定义的光栅文本文件包含3个关键字:"层数"、"层"和"节"。当 DLL 读取文件时,它会逐行扫描文本以查找这些关键字。找到关键字后,它会读取下一行上的数据。关键字行和以下行必须遵循下面所述的文件格式。其他部分可以添加任何文本使阅读更加方便。 层数 "层数"关键字下的行应包含一个表示文本中定义的层数的整数。 层 "层"关键字下的行包括 4 个数字:
本节中要添加的节数
层的厚度(微米)
折射率的实数部分
折射率的虚数部分。
这里的折射率是"背景材料折射率"。 节 "节"关键字下的行包括4个数字:
该节的移位量
该节的宽度
折射率的实数部分
折射率的虚数部分
请注意,移位和宽度都没有单位。它们表示与该光栅周期的比率。折射率是覆盖背景材料折射率的"节折射率"。位移参数定义了相对于单个周期框左边缘的中心位置。如图30的例子中,位移量=0.5,宽度=0.5,它们定义了一个从0.25开始到0.75结束的节。 用户自定义光栅数据的例子 图30展示了一个由用户自定义光栅文件定义的光栅,右侧是数据文件,左侧是光栅示意图。在这个例子中,所有的层都只有一个节,但是每一层可以包含0个或多个节。同时也请注意,同一层中包含两种不同材料时,其中一种需要被定义为”背景材料参数“,另一种则被定为节参数。哪一个作为背景材料取决于用户自身。
图30. 用户自定义光栅的一个例子。移位量相对于单个周期框的左边缘。宽度以位移量所定义的位置为中心。 编辑用户自定义光栅的工具 虽然用户定义的光栅数据可以在文本编辑器(如记事本)中直接编辑,但也可以在可视化工具中进行编辑,如图31所示。用户需要设置一个带有"srg_user_defined_RCWA.dll"DLL的虚拟系统来读取此文本文件。可视化工具还可以读取其他RCWA DLL定义的光栅数据。 当然,在编辑后,数据只能输出为用户自定义光栅数据。
图31. 可视化工具可以读取,编辑保存用户自定义光栅数据。
审核编辑:郭婷
-
显示器
+关注
关注
21文章
4978浏览量
139979 -
vr
+关注
关注
34文章
9639浏览量
150267 -
HMD
+关注
关注
0文章
99浏览量
21124
原文标题:ZEMAX软件技术应用专题:利用RCWA方法模拟表面浮雕光栅的衍射效率(下)
文章出处:【微信号:光电资讯,微信公众号:光电资讯】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论