关于如何使用Zemax的RCWA工具进行EPE的仿真


Userlevel 5
Badge +3

如题,这是个介绍相关资料的集合。

23/03/27:

新增一个工具包,可以快速设定grating的参数

API (CS User Extension): Diffractive DLL Setup Assistant | Zemax Community

23/11/09:

新增高效优化2D光栅的文章

 Optimization of Exit Pupil Expander with 2D out-coupler – Knowledgebase (zemax.com)


22 replies

Userlevel 5
Badge +3

更正一下,应该是OpticStudio,不是Zemax.叫太顺口了。。

在RCWA推出之前,我们也可以仿真不同衍射级次,但是无法计算衍射效率。

相关的文章可以在这个路径找到。

HUD & AR – Knowledgebase (zemax.com)

请先服用本文章,然后再进入建模环节:

Simulating diffraction efficiency of surface-relief grating using the RCWA method – Knowledgebase (zemax.com)

建模比较长,有问题可以下方留言:

          第一篇主要是对衍射光波导做一个大致的介绍,引入了K空间的概念。

           文中提到的怎么根据波长以及折射率进行参数的计算值得一看。

           这篇讲解了基本的软件操作,使用一束平行光入射到第一个光栅,在波导中实现了全反射。

           梯形区设置转向光栅,用来对光线做90度的转向操作。第三个光栅则将光线耦出。探测器上             探测到的是出射的平行光的分布,人眼在不同位置处会观察到同一个像素点,但视网膜接收             的能量不同。在文章的最后给出了,除中心视场以外的其他视场的设置方法,注意查收。

          使用paraxial lens替代投影镜头和人眼,进行波导系统的图像仿真。

          系统MTF的计算(几何/相干)

你好,part 3的附件没有“step4_check footprint.zar”这个文件

Userlevel 5
Badge +3

你好,part 3的附件没有“step4_check footprint.zar”这个文件

感谢指出,我去找一下Michael大神问问。

Userlevel 5
Badge +3

你好,part 3的附件没有“step4_check footprint.zar”这个文件

搞定啦~

Userlevel 5
Badge +3

[网络研讨会] 使用Zemax OpticStudio与Lumerical RCWA动态连结来设计并优化光波导 | Zemax Community

[Webinar] AR waveguide design and optimization based on dynamic linking between Zemax OpticStudio and Lumerical RCWA [Q&A] | Zemax Community

Userlevel 5
Badge +3

关于RCWA dll的一些资料,更新(包括可视化工具)等

OpticStudio grating tools beta function update history | Zemax Community

选一些重点写:

2022-5-13:之前的版本Stochastic mode的power计算有误,如果选择该模式,建议升级软件版本。

2022-2-9:Stochastic mode 1和2被弃用,只有0跟3的区别

 2021-08-23:引入Fast Fourier Factorization来提升金属材料关于阶次的收敛速度

2021-01-06:srg_blaze_RCWA, srg_gridwirepolarizer_RCWA, srg_step_RCWA, srg_trapezoid_RCWA支持NIL layer

Userlevel 5
Badge +3

有两个使用点经常被问到,这里提示一下:

1.想要设置多个角度或者波长的话,点选对应的框之后按insert键进行添加

2.光线信息中包含衍射级次的功能还在跟产品团队协商当中,目前如果要优化多个衍射级次的效率,需要建立多重结构进行不同级次的光线追迹仿真。该方法的限制点在于,无法在单一的结构当中仿真出现多种级次交替生成的情况。

Userlevel 5
Badge +3

顺带写几个EPE文章注意点。有些词懒得去找中文翻译了,大家将就看一下。其实KBA里面都有提到,这边就当是提纲了,有些我觉得不用重点强调的,大家也可以去看看:

1.耦入的光栅:

参数在diffraction grating中设置,它的位置跟放在它之前的rectangular volume的表面1的位置是重合的。

该表面在光线追迹模型中假设是没有厚度的。微结构主要是用来计算衍射效率跟偏振用。

基体的表面0,也就是侧面,建议设置成吸收,这样提升光线追迹效率。

入射的光线应该是准直的。

2.转向光栅:用于扩瞳以及90度转向

光栅的建模依靠的是extruded object(使用UDA) 跟diffraction grating的布尔运算。不直接用UDA作用于diffraction grating,是因为这个物体类型不支持UDA。

贴心的Michael为了让大家操作起来更丝滑,加上以上模型不能正确处理光线的相位,创建了polygon grating。这个具体后面再讲。

因为要转向,grating的方向跟耦入是不一样的。通常我们可以通过旋转整个物体实现,但这样的话物体也会跟着转,所以Michael又加入了”Rotate grating”,这样就可以实现不转物体,只转方向了。

对照part2里面figure8的图,不难分析我们需要考虑+1和-1衍射级次的光线,所以这里我们在dll里面要设置+-1衍射级次。

到这里光线在波导中就可能会传播多次,为了结果的准确性,要增加Maximum Intersections Per Ray, Maximum Segments Per Ray,减少Minimum Relative Ray Intensity,避免光线因为这些设置提前终止,导致结果不准确。

3.耦出光栅:用于最终的扩瞳跟耦出

用的类型是User Defined Object (Object 7) with “DiffractionGrating.DLL” ,因为原生的DiffractionGrating只支持圆形的,而耦出区域是方形的。也可以使用user-defined object 来定义更加复杂的形状。

4.光源跟探测器的设置

如果想查看不同的入射角度,可以按照如下进行设置:

Z Position = 0
•    Object Property > Source > Pre-Propagation = -10

改变tilt X和tilt Y的数值来设定想要的角度。

第三部分提到了很多实用的便于观察的设置,主要是图示,这段我还是想保持文字描述,大家自行查阅吧:How to simulate exit pupil expander (EPE) with diffractive optics for augmented reality (AR) system in OpticStudio: part 3 – Knowledgebase (zemax.com)

5.图像仿真

物体10是方形朗伯光源,使用Lambertian_Overfill.DLL精准设置之后只有打到耦入光栅的光线会发射。

物体11是投影片,通过调整透过率生成想要的图案。

物体14的作用不止是为了仿真人眼,也是为了阻挡直接到detector的光线。如果你仿真的结果有很多不应该出来的背景信号,检查一下14的尺寸设置是不是合理。

6.MTF的生成:有两种,方形探测器自带的几何MTF跟参数设置生成的考虑衍射的惠更斯PSF二次加工

几何MTF,没太多要注意的,探测器尺寸设置一下,光源注意是点光源

惠更斯PSF/MTF:

系统需要进行的调整

   1.把原来的Paraxial Lens换成是NSC_Paraxial_Lens.dll,正确计算相位。使用这个dll有注意事项,具体参考文章,特别注意第二个grating 翻转了180度用来匹配其光线从-Z入射的需求。

    2.使用polygon.dll对于转向光栅进行定义。

参数设置:

方形探测器的PSF Wave#需要是非0值。只能够分析单波长,不用的时候记得关掉,很慢的。

MTF计算:

文章中自带MTF代码,直接跑也行,感兴趣的可以看看代码,记得有些参数要改。

 

 

 

 

 

Userlevel 5
Badge +3

补充一下,如果要设置dll为变量进行优化的话,一种方法是可以手动输入NPRO一系列参数,另外一个方法是在可视化工具中点击Create MCE.

 

Userlevel 5
Badge +3

补充几点:

dll的+1阶将光线弯向-x方向。

Rotate Grating值是0的时候,光栅跟物体的坐标是一致的。非0的情况下,光栅从+x转向+y方向。

 

zemax与fdtd传递参数问题

+zos

Userlevel 5
Badge +3

关于参数当中,Use coating file 之后, index 怎么填写的问题:postive是最常用的状况,就跟用Model Glass一样 (Vd=0)。零有时候跟substrate一样,有时候是跟superstrate一样,要看是哪个DLL以及相关说明。负数就是用定义好的资料。

 

 

Hi Yuan,

有两个问题请教一下:

  1. 在NSC模式下,如图所示detector统计了光源测入射的能量和另一侧元件反射回的能量,请问如何设置只统计光源入射的能量?
  2. 如下图设置,ray trace 和merit function中NSTR设置相同,但是detector viewer 统计total power和merit function中nsdd返回对应的detector数值不一样

     

Userlevel 5
Badge +3

对于表面类型的探测器,有一个参数叫做Front only,设置之后可以约束光线的入射方向。
根据探测器类型不同,这个Front only对应的参数位置不同,需要根据选择的表面探测器类型进行调整。
The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor > Non-sequential Detectors > Detector Rectangle Object
?name=image.png关于raytrace跟NSTR的设置,有一种可能是因为勾选了随机偏振。

这部分在SRG那篇文章中有提到。

Simulating diffraction efficiency of surface-relief grating using the RCWA method – Knowledgebase (zemax.com)



 

Hi Yuan,

有两个问题请教一下:

  1. 在NSC模式下,如图所示detector统计了光源测入射的能量和另一侧元件反射回的能量,请问如何设置只统计光源入射的能量?
  2. 如下图设置,ray trace 和merit function中NSTR设置相同,但是detector viewer 统计total power和merit function中nsdd返回对应的detector数值不一样

     

 

 +test file

Userlevel 5
Badge +3

关于Zemax-Lumerical Dynamic Link的内容更新到:

Lumerical RCWA和Zemax OpticStudio的动态链接 | Zemax Community

Userlevel 5
Badge +3

还是关于Zemax-Lumerical Dynamic Link,,更新到:

Lumerical RCWA和Zemax OpticStudio的动态链接 | Zemax Community

Userlevel 5
Badge +3

对于表面类型的探测器,有一个参数叫做Front only,设置之后可以约束光线的入射方向。
根据探测器类型不同,这个Front only对应的参数位置不同,需要根据选择的表面探测器类型进行调整。
The Setup Tab > Editors Group (Setup Tab) > Non-sequential Component Editor > Non-sequential Detectors > Detector Rectangle Object
?name=image.png关于raytrace跟NSTR的设置,有一种可能是因为勾选了随机偏振。

这部分在SRG那篇文章中有提到。

Simulating diffraction efficiency of surface-relief grating using the RCWA method – Knowledgebase (zemax.com)



 

Hi Yuan,

有两个问题请教一下:

  1. 在NSC模式下,如图所示detector统计了光源测入射的能量和另一侧元件反射回的能量,请问如何设置只统计光源入射的能量?
  2. 如下图设置,ray trace 和merit function中NSTR设置相同,但是detector viewer 统计total power和merit function中nsdd返回对应的detector数值不一样

     

 

最近更了一个新帖子,关于随机数的,感兴趣的可以当成引申材料去看。

聊一聊关于随机数的生成 | Zemax Community

 +test file

ROUND

testimage

polarization test

Reply