
开头做光学设计的同行应该都有体会在微光学系统里碰到衍射光学元件DOE和超透镜metalens是迟早的事。DOE能把一束光拆成阵列、整形、匀化Metalens则用纳米柱阵列替代曲面折射两者都是把相位控制做到极致的手段。而Ansys Zemax作为序列和非序列光学的通用平台恰恰是完成这类元件从相位设计到系统验证的桥梁。这篇文章我不打算讲太多空泛的原理而是直接用一套实战流程带你把一个DOE从指标定义做到仿真验证再附上我做metalens时踩过的一堆坑希望帮你少走弯路。这套流程适合谁如果你的项目里需要分束、整形、匀化或者正在评估超透镜方案的可行性这篇内容可以直接当作操作手册。我会从设计逻辑、五步操作、仿真细节到问题排查逐一展开所有步骤都基于Ansys Zemax OpticStudio的实际界面版本以2022 R2及以上为准。有一点先说清楚metalens的电磁仿真本质需要RCWA或FDTDZemax并不负责原子级仿真它的优势在于把metalens的相位响应转化为系统级光线追迹——这个边界搞清楚了后面很多坑都可以避开。1. 开始之前把DOE和metalens的建模逻辑理清楚1.1 DOE不是简单的衍射光栅它是相位雕刻很多人一上来就把DOE当成普通光栅只盯周期和衍射角结果分束均匀性做不好或者杂散光严重根本原因是没抓住相位分布这个核心。DOE的本质是在基底表面或者内部刻蚀出微米级台阶结构每一处对入射光产生不同的相位延迟从而对波面进行重新雕刻。换句话说给定目标光场分布反推出一个相位函数这就是DOE设计的核心思路。Zemax里有两类表征方式一种是Binary Optic表面或相位面直接把相位函数写成多项式或Zernike系数适合概念验证。另一种是导入实际加工的高度轮廓文件如台阶高度和刻蚀深度适合评估真实制造偏差的影响。我见过不少新手把二进制表面当成真实结构其实Binary Optic只是一个相位近似它不包含衍射级次的能量分配细节。如果你评估的是系统级像差用Binary足够如果你要评估衍射效率或杂散光就必须使用光栅面型或者导入加工结构。搞清楚这个边界后面五步才能走稳。1.2 Metalens在Zemax里到底是什么角色Metalens的每个纳米柱相当于一个微型波导通过对柱高、直径、间距的调整在亚波长尺度内改变相位。严格电磁仿真通常用RCWA严格耦合波分析或FDTD时域有限差分计算单元结构的透射相位和振幅Zemax本身并不做这种电磁场逐点求解。那Zemax在metalens设计中扮演什么角色两个核心任务一是把RCWA/FDTD计算出来的单元结构数据库相位 vs. 直径导入Zemax用光栅面如Grating对来建立宏观透镜模型做系统级像差和成像性能评估。二是在设计初期用理想透镜/相位面对比不同口径、焦距、波段的系统性能判断这个metalens方案是否值得继续优化。所以姿态要对不能指望Zemax直接生成metalens纳米柱的电场分布那是FDTD的活但Zemax可以快速告诉你如果每个像素的相位都对整个系统能否达标。1.3 用哪个模块序列模式还是POPDOE和metalens的仿真在Zemax OpticStudio里主要涉及两个模块序列模式的像差分析以及物理光学传播Physical Optics Propagation, POP。POP是整个流程里最关键的技术点。当你把DOE当成一个相位元件时普通光线追迹只能给出光线方向和位置但衍射、干涉、光强分布得靠传播计算。POP基于傅里叶光学能给出观察面上的振幅和相位这才是我们判断DOE性能的核心依据。如果只是做几何光线追迹那你只能看到光线打到哪个像素看不到衍射图案的光强均匀性更不能评估零级残留。所以我的建议是凡涉及DOE和metalens的仿真一定要从序列模式转到POP流程不要只盯着Spot Diagram和MTF曲线。2. DOE设计五步走从目标到可加工文件2.1 第一步定义设计指标与衍射级次DOE设计的第一步其实不是打开软件而是先坐下来把指标写清楚。你需要明确这几点入射波长和偏振态若为偏振无关设计需要双折射或轴对称结构目标光场分束数量、分束角度、均匀性要求衍射效率目标一级能量占比基底材料与加工方式决定了最小特征尺寸和台阶数量工作距离和入射孔径拿分束器举例假设你需要把一束光分成 5×5 阵列衍射角间隔 θ0.5°波长λ632.8nm。那么DOE的基本周期d可以粗略由光栅方程估算d λ / sinθ ≈ 632.8nm / sin(0.5°) ≈ 72.5μm这个数字很关键因为它决定了最小特征尺寸和相位量化的粒度。如果加工条件是4台阶最小线宽一般是周期/分束数×台阶数你可以据此判断当前工艺能不能实现。这个阶段很多人会犯的毛病是分束数目和衍射角都定了却没有对零级残留提出要求。实际上制作过程中刻蚀深度的偏差会引起零级能量升高导致中心亮斑明显。建议在指标表里明确写零级光强不超过单点平均强度的1.5倍同时对均匀性的容差给出正负5%的区间。2.2 第二步设计相位分布并量化在Zemax里做DOE相位设计常用思路是标量衍射理论下的迭代算法GS算法或者解析相位。举个例子如果你要做平顶光束整形目标光场是矩形均匀分布那么可以通过傅里叶变换迭代法Gerchberg-Saxton求解相位。如果做分束器可以解方程得到周期性相位分布再用量化台阶去近似连续相位。量化是一个绕不开的话题。连续相位需要加工成离散台阶常见的是2台阶、4台阶、8台阶、16台阶。2台阶衍射效率约40.5%只适合低成本快速验证4台阶衍射效率约81%8台阶衍射效率约95%16台阶衍射效率约98.7%台阶数越高效率越好但加工难度和成本陡增。实际工程中8台阶是常用的折中方案。量化本身的相位误差会引入高级衍射杂散光这一点在Zemax里可以通过设置衍射级次范围来观察。实操层面可以用Matlab或Python计算出相位矩阵然后转化为Zemax的相位面数据文件。像素尺寸与DOE周期要匹配比如72.5μm的周期分80个像素每个像素0.9μm这个数据要记录清楚后面导入Zemax时不能错。2.3 第三步在Zemax中建立DOE模型在OpticStudio里把DOE放进光路我用得比较多的是以下两种方式Binary Optic 2表面适合用多项式描述相位快速评估。相位数据文件导入适合任意分布的DOE结构直接用自定义DLL或数据面。建议使用相位数据文件的方式因为它和你的仿真相位矩阵一一对应后续检查起来方便。具体做法是准备一个三列或两列文本文件第一列为像素频率坐标第二列为相应位置相位值弧度或波数单位然后在面型属性里选择Phase载入。这里有个容易出错的细节相位文件必须遵循Zemax的格式约定。默认情况下数据按顺序呈Zemax内部约定排列必须手动确认x/y顺序与你的坐标系统一致。我刚开始搞的时候没注意行列方向加载出来的相位分布直接转置仿真结果一片混乱。这个坑大家一定要留意。在系统参数里波长设置为632.8nm入瞳直径按实际光斑设置孔径类型选择Entrance Pupil Diameter。DOE放在光阑位置或者紧靠光阑可以减少离轴像差对衍射图样的影响这一点对后续均匀性判断很重要。2.4 第四步用POP仿真验证衍射效果模型建好以后切换到物理光学传播POP窗口来验证结果。POP的计算关键参数有采样点数一般取256×256以上我常用512×512起始面光源所在的平面结束面目标观察面焦平面或者指定工作距离光束定义采用高斯光束或者自定义光场如果在DOE之后的距离很长需要使用自动口径调整以保证采样窗口覆盖足够范围。POP功能还需要设置合适的参考直径Beam Size尽量不要让它出现边缘截断。POP计算完成后查看观察面的辐照度分布。对于5×5分束器应该看到规则的25个亮点各点峰值接近均匀。Zemax可以直接输出Post-Processing里的Cross Section查看一维均匀性。如果某个方向出现强度波动优先怀疑相位文件的行列顺序其次检查采样密度是否足够。衍射效率的计算方式是在POP结果里把目标区域能量除以入射总能量。如果8台阶理想效率95%算出效率在80%~90%之间属于正常的加工容差范围如果低于80%建议先查量化台阶分布是否正确再看是不是零级混入导致能量重新分配。2.5 第五步公差分析与加工反馈很多设计在理想情况下很漂亮但一到加工就翻车原因就是没做公差分析。DOE加工中的主要误差有三个台阶深度误差、套刻对准误差、线宽误差。在Zemax里可以这样处理建立多重结构设置台阶深度为名义值的±5%观察衍射效率和均匀性变化。若效率下降超过5%说明工艺容差太紧需要考虑降低量化台阶或者更换加工方式。另外一个关键点是刻蚀深度的计算公式h λ / (2π(n-1)) × Δφ其中Δφ是单个台阶对应的相位步距比如8台阶就是2π/8。如果材料折射率 n1.5波长633nm则每个台阶深度约为79nm。这个数值直接告诉加工方刻蚀深度的容差一般应控制在±10nm以内否则零级亮斑会显著增强。Zemax自带的公差分析功能Tolerance也可以用来评估DOE的倾斜、偏心等装配误差。DOE对离轴和倾斜相对不敏感但对轴向间隔变化比较敏感间隔误差会导致工作距离偏离焦点变模糊。如果做的是多波长系统还要留意色散——衍射元件的色散方向和折射元件相反两者组合可以消色差但单独用DOE时色散会比较大。3. Metalens避坑指南纳米结构建模与仿真边界3.1 坑1把metalens当纯相位面忽略了偏振响应很多人拿到metalens的相位分布直接在Zemax里建一个相位面然后开始跑点列图。这个做法在初期快速验证时没问题但项目落地时会被打脸因为metalens的纳米柱对两个正交偏振态通常有不同的响应。金属纳米柱的超表面大多基于几何相位或传播相位几何相位只对圆偏振光有效传播相位则要求柱的尺寸半径优化同时保证振幅透射率接近一致。如果你设计的系统是偏振无关的那需要对方形柱或十字柱做偏振平均。如果只当成理想相位面容易高估系统的Strehl Ratio和成像质量。我的建议是在导入Zemax前先用RCWA软件如Lumerical、RSoft或免费的开源RCWA脚本计算单元结构库。例如一个圆柱形a-Si纳米柱周期P400nm柱高H600nm直径从100nm扫描到320nm步长10nm。对每个直径记录TE/TM偏振下的透射振幅和相位。如果TE和TM相位差超过20°且振幅差异超过10%这种结构就不适合直接当标量相位用需要重新设计结构或改用其他材料体系。3.2 坑2RCWA扫描库的边界条件没有校准有了单元结构数据库之后下一步是把直径→相位的对应关系导入Zemax。这个对应表看起来简单但坑不少。首先是参考相位的位置。计算单元结构时RCWA通常报告的是某个参考面处的透射相位但不同软件对参考面的定义可能不同。有的以结构底表面为参考有的以基底顶部为参考。如果你导入Zemax时把参考面位置搞错整个metalens的焦距会偏移严重时直接变成强离焦。我踩过的一次情况是数据库的相位参考面在基底顶部而Zemax模型里我把相位放在透镜的前表面结果周期大的结构相位偏小、周期小的偏大整体焦距长了5%。排查了很久才发现是参考面不一致。所以在建立数据库时一定要在表格里额外标注参考面高度。自己写个Python脚本处理RCWA结果时也记得把这个信息写进文件头别等两个月后再翻原始数据。其次是相位包裹的问题。圆柱纳米柱的相位范围一般能达到0到2π但如果扫描的直径范围不足相位覆盖不到2π就需要改变柱高或引入更多结构类型。Zemax不需要你把相位解包裹只要相邻径向位置之间的相位差不要超过π否则会出现局部相位突变导致波前不连续。3.3 坑3仿真资源爆炸采样和内存怎么权衡Metalens在Zemax里的系统级仿真通常把每个纳米柱等效为一个局部相位延迟点不需要对每一根柱子做逐点电磁仿真但如果用序列模式的光线追迹一束光经过整个系统数据量可能非常大。问题常出在POP仿真上。金属透镜的口径如果是 5mm半径方向上纳米柱数量可能达到几千根POP内部需要把波前采样成网格如果需要捕捉每个纳米柱级别的相位变化采样点数可能直接拉满导致内存溢出。这一块我的经验是先在Zemax里用 Binary/相位面 建立理想metalens模型跑系统性能。然后再把理想面替换为带单元结构数据库的光栅面Grating Surface观察多级衍射效率和偏振响应。不做全柱逐点电磁仿真那是FDTD的活。用Zemax的目的不是精确计算每个纳米柱的近场而是在宏观尺度快速评估系统的聚焦、成像、色差。如果你的设计阶段就指望Zemax输出严格的衍射效率建议改用FDTD做小区域严格验证再用Zemax做整系统验证两者配合而不是互替。3.4 坑4边界条件、反射和不想要的衍射级次金属透镜由于是周期性结构阵列天然存在反射。虽然单个纳米柱的透射率可能高于90%但整个阵列的反射光可能形成杂散鬼影。Zemax里默认的光线追迹是理想化的不自动计算界面反射除非你在表面属性里加了镀膜或开启了非序列模式。如果在序列模式里建了metalens我建议把主要表面加上反射涂层的设置通过Coating定义这样至少能大致评估能量损失。如果你要做严格的杂散光分析那还得切换到非序列模式把纳米柱阵列简化为周期性的微结构表面结合BSDF散射模型。没有严格BSDF数据时可以先拿RCWA扫描得到的0级和高级次衍射效率作为近似。另外一个容易被忽略的是高级衍射级。Metalens的相位离散化会产生相邻衍射级虽然级次能量占比通常几个百分点但会造成成像对比度下降。在Zemax里可以用衍射级次分析看这些杂散光的位置如果刚好落在探测器中心附近就需要在设计相位时引入一些优化权重。3.5 坑5材料色散和宽波段问题Metalens的色散特性比传统折射透镜复杂得多。单个纳米柱在不同波长下的相位响应不同而且一个柱子的相位延迟往往不是线性的。如果你做的是宽波段成像系统只用单波长设计metalens出来的彩色鬼影会相当严重。在设计开始之前就要确认波段范围。若覆盖可见光全波段400~700nm需要额外做消色差设计通常做法是用多组不同高度的纳米柱联合优化。Zemax里要实现多波长联合优化可以在多重结构里定义不同波长下的相位分布评估但设计变量仍然是纳米柱的物理尺寸。我的实操经验是先用Zemax做一个理想的消色差相位面比如Fresnel透镜加色差校正确认系统层面能接受多少色差再回到RCWA做多波长数据库最后把数据库代入Zemax合并评估。这样分工明确不会陷在细枝末节里。4. 常见问题与排查技巧实录4.1 高频问题速查表这张表格是我自己反复用到的问题排查清单按出现频率排序问题现象可能原因排查方向POP结果出现明显条纹采样不足提高采样到512×512或1024×1024分束均匀性差相位文件坐标转置检查x/y方向加载顺序衍射效率远低于理论值台阶深度误差或材料折射率不准确核对刻蚀高度和折射率数据零级亮斑过高刻蚀深度系统性偏差调整台阶深度重新仿真Metalens焦距偏移单元结构相位参考面不一致检查RCWA数据中的参考面高度出现非预期的旁瓣或鬼像高级衍射级次或反射在序列模式中查看级次分布宽波段颜色明显单波长数据库导入多波长系统为每个波长分别建立数据库POP程序运行非常慢采样数过大或自动口径计算过于精细适当降低采样逐步加密4.2 三个亲历的排查案例第一个案例是关于分束均匀性的。当时做8台阶分束器仿真出来边缘四角的光强明显偏暗中心四角偏亮一开始怀疑是相位文件的随机量化误差查了很久发现是我生成相位数据时坐标间隔不均匀导致的。用等间隔坐标重新生成后均匀性从正负12%降到正负4%。第二个案例是POP结果出现高频条纹看起来像干涉条纹但间距不稳定。排查后发现是因为采样点不够光束边缘被截断产生的衍射振铃。把采样数从256提到768之后振铃消失均匀性也稳定了。第三个案例是metalens的焦点位置出现双焦点。排查下来是纳米柱数据库中相邻径向位置的相位差超过π导致波前局部缠绕形成分裂焦斑。后来把直径扫描步长从20nm加密到5nm相位差控制在0.3π以内双焦点现象消失。这个教训让我意识到数据库的相位连续性比绝对精度更重要。4.3 Zemax版本和硬件配置建议关于Zemax做DOE和metalens的硬件配置我给一个实际参考。POP仿真在256×256采样时可以流畅跑普通电脑但做方案比选、多组设计对比时建议使用32GB以上内存CPU核心数不低于8核。如果跑公差分析或者多波长优化64GB内存比较稳妥。OpticStudio版本差异不小。2021版及之前的POP界面的操作路径和2022 R2之后的略有不同如果你使用的是老版本在找Physical Optics Propagation时注意看菜单路径新版一般位于Analysis标签页的Physical Optics下。如果你用的是Zemax 13或更早版本界面差异更大建议优先考虑升级。5. 从设计到交付的几个心得最后分享几个我在实际项目中反复被验证的经验不算什么高深理论但能省掉不少试错成本。DOE和metalens这类微光学元件和传统透镜的思维方式有本质区别。传统透镜追求面型精度微光学元件追求相位误差和表面轮廓精度之间的转换关系。设计时不要太执着于某一个指标的绝对最优比如把均匀性从正负4%优化到正负3%如果工艺误差本身就有正负2%的波动这种过度优化意义不大。更好的做法是在仿真阶段把工艺容差一并评估确定名义设计在工艺窗口内是否稳健。另一个体会是文件管理。DOE设计会生成大量中间文件相位矩阵、量化台阶数据、RCWA扫描库、POP结果这些文件名如果不用固定的前缀和版本号一周之后自己都分不清楚哪个是最新的。我现在的习惯是一个项目一个文件夹子文件夹按设计阶段命名01_Requirements、02_PhaseDesign、03_ZemaxModel、04_RCWA_DB、05_Verification。每个文件头部写清楚生成日期、波长、材料、参考面位置。这个习惯救了我好几次。再有就是仿真和实验的闭环。Zemax仿真做得好不代表加工出来就万事大吉。如果项目允许建议在打样阶段做一片小口径的测试片用CGH或者干涉仪测一下波前对比Zemax仿真结果。通常第一次对比会有系统性偏差但这些偏差往往是查找工艺问题的最佳线索。比如整体焦距偏移可能是折射率不准确零级过强可能是刻蚀深度不够高频波前误差可能是线宽控制问题。写这篇的时候我翻到自己早期做DOE分束器时的第一次仿真结果那会儿连相位文件的方向都没搞对看到一个斜着的分束图案还以为是设计公式写错了。后来把转置修正过来看到规则阵列出来的瞬间那种感觉特别有成就感。这类元件设计的门道不少但工具链已经很成熟只要把相位这个核心概念吃透大部分项目都可以用上面这套方法走通。