
1. 亚波长结构为什么必须走“严格模拟”这条路1.1 传统近似工具失效的那个临界点我最早接触亚波长结构的严格模拟是好几年前做一个深紫外光栅项目。当时甲方给的指标很直接在193 nm工作波长下把某级次的衍射效率做到某个值以上同时把偏振相关差异压到最低。前期大家习惯性地用标量衍射理论估算了一版结构深度、占空比都算得漂漂亮亮结果一加工出来实测效率掉了将近一半偏振特性也和理论完全对不上。后面排查来排查去问题就出在一个地方光栅周期到了百纳米量级入射波长和结构特征尺寸已经基本同量级标量近似完全不成立。这里要先把概念理清楚。严格模拟对应的是物理光学里那些不做近似、直接从麦克斯韦方程组出发求出电磁场精确解的方法典型代表有严格耦合波分析RCWA、时域有限差分FDTD、有限元法FEM。一旦结构特征尺寸进入亚波长范围——通常指周期或线宽小于等于入射波长的量级——光与物质的作用就变得极其丰富高阶衍射波会变成倏逝波、局域场会强烈增强、相位突变可以做得异常陡峭甚至出现共振吸收、类EIT等效应。这些现象本质上都是电磁场边界条件的精细结果靠解析公式或标量近似根本没有办法刻画。所以“严格”二字的意思就是我们在仿真里不再做“入射角不大、结构缓变、衍射级次无限少”这类经典假设而是老老实实地把完整矢量电磁场解出来。前面传统设计那一次的失败案例其实就是所有做微纳光学的人迟早会遇到的那堵墙你以为自己在设计光栅实际上你设计的是一个强散射体周围还叠加着一堆共振模式。1.2 亚波长世界里到底藏着什么物理亚波长结构最典型的应用场景其实每个人都见过。手机摄像头的CMOS上有一层微透镜加滤光片阵列里面就有亚波长级别的抗反射结构激光雷达里用的衍射光学元件特征尺寸压到波长以下之后能在不增加系统体积的情况下完成光束整形再就是最近几年特别火的超表面用一个个亚波长柱状结构替代传统透镜的曲面把成像系统的厚度从厘米级压到百微米级。这些应用背后共享同一套物理逻辑。当结构周期小于或约等于入射波长时原本在常规光栅中会出现的多级衍射会被压缩掉很多只留下零级反射和透射其余能量都集中在结构内部的近场区域。这个“近场效应”恰恰是设计者可以利用的结构单元的相位延迟、偏振转换、透射率都可以通过调整形状尺寸来独立调控相当于给光场加了一个高自由度的高通滤波器。可是反过来说近场效应对加工误差、材料吸收、入射角度都异常敏感仿真模型稍微粗糙一点结果就完全失真。我还记得有一次在仿真一个金属-介质混合超表面时仅仅是把金属薄膜的介电常数从查到的参考数据换成了覆盖全波段的多项式拟合数据透射谱上就多出来一个原本不存在的吸收谷。后来翻文献才发现很多已发表论文里的金属材料参数是把厚膜测量值直接拿过来用的而亚波长金属结构里电子散射、表面氧化层的贡献根本无法忽略。这就是为什么仿真不能只搭几何模型材料色散和工艺偏差都得一并考虑进来。1.3 谁需要关心这套东西严格模拟不是只有科研人员才需要的工具。做工业光学设计的工程师会发现现在的衍射光栅、DOE、超表面光学系统越来越复杂客户要求出方案的速度也越来快光靠实验试错完全跟不上。做AR眼镜光波导的效率评估、做激光雷达光束扫描器、做光谱仪的衍射光栅设计、做半导体量测系统的光学模拟几乎都绕不开亚波长结构的严格仿真。这篇博文主要写给三类人第一类刚接手微纳光学仿真项目、对RCWA或FDTD还不熟的新人第二类用商业软件跑了好几个项目但始终没想清楚边界条件、网格尺寸怎么设才合理的光学工程师第三类自己写仿真代码做研究的学生和研究员。下面我会把方法原理、参数设定、实操流程和踩坑经历都过一遍争取让读者看完之后能直接上手少走几个月的弯路。2. 主流严格模拟方法的原理与选型2.1 RCWA周期性结构的频域利器严格耦合波分析是我个人最常用、也最推荐新手入门的严格模拟方法。它的根本思路是把一个周期性结构沿周期方向展开成一系列傅里叶谐波再在每个均匀层里写出麦克斯韦方程组的平面波解最后通过层与层之间的边界条件把整个结构的衍射场耦合出来。这个过程有一个很重要的前提就是结构必须有序——至少要有一个明确的周期方向而且周期边界要规则。RCWA的优势非常明显它是频域方法一次计算就能得到所有衍射级次的振幅和相位计算速度快对周期结构非常高效尤其适合光栅、超表面这类多层平面结构的常规扫描。缺点也很明确对任意形状、任意排布的结构处理比较吃力特别是那些没有固定周期、带随机性或大尺度渐变的结构RCWA就无能为力了。用RCWA计算时最需要用心的地方是谐波截断数。理论上谐波数越高结果越逼近真实解但实际上一方面计算量随谐波数的三次方甚至更高次增长另一方面当结构里有高折射率材料或金属时谐波数不足会导致严重的吉布斯振荡衍射效率可能直接出现荒谬的负值。我一般会先设一个较小的截断数快速算一遍然后指数增加直到结果变化小于0.1%才停下来。这个收敛性测试听上去很简单但恰恰是很多看似专业的仿真报告里缺失的一环。2.2 FDTD时间域上的一揽子方案时域有限差分方法走的是另一条路。它把空间离散成Yee氏网格在时间轴上一格一格地推进直到电磁场传播稳定再通过傅里叶变换提取宽谱响应。FDTD对结构的形状自由度放得很开不管是圆环、十字、还是任意多边形只要网格能够描述就能算。它一次宽谱计算可以得到很宽波长范围内的响应特别适合设计初期快速扫参、观察不同波段的响应趋势。但FDTD在亚波长结构上有一个必须重视的问题色散和材料模型的准确度。时间域计算要吃进材料的频域响应就必须用洛伦兹/德鲁德模型做拟合拟合精度不够会直接污染计算结果。此外金属结构需要的网格尺寸通常极小典型情况下至少是趋肤深度的几分之一这会让网格量急剧膨胀。一个表面粗糙到纳米级的小结构网格可能就要上亿个。计算缓存和GPU内存如果不够跑起来非常痛苦。如果只是一次性精确计算几个离散波长我更倾向用频域方法如果需要在较宽波段内连续扫描并且结构复杂度较高那FDTD更省事。这两类工具的适用范围有重叠但并不完全等价选型时先问自己两个问题结构有没有周期性需要的是宽谱还是单波长高精度2.3 FEM处理复杂几何的降维打法有限元法在电磁仿真里也很常见它的特点是用非结构化网格去逼近任意复杂边界曲面、斜边、圆角都能较好地处理。对于超表面里不规则形状的单元结构、波导里渐变耦合区这类RCWA难以处理的几何FEM有明显优势。另外FEM天然适合做模式分析比如波导本征模、光子晶体能带这些用起来很方便。但FEM计算资源消耗也很大三维模型的自由度动辄几十万甚至上千万内存和求解时间都很可观。在实际项目中我更习惯把FEM用于结构验证和局部精细化分析比如对一个RCWA初筛后的关键结构进行模式场分布分析、确认近场增强点附近的损耗机制。用它做全参数扫描的话性价比往往不如RCWA或FDTD。2.4 方法选型对照表方法适用场景核心优势核心局限典型工具RCWA规则周期光栅、多层膜、超表面单元扫描速度快、频域直接出衍射级次需严格周期、复杂形状难处理RSoft、GD-Calc、S4FDTD任意形状、宽谱响应、近场场分布几何自由度高、宽谱并行金属结构网格量大、色散拟合难Lumerical、MEEPFEM复杂三维结构、模式分析、波导边界贴合度高、能做本征模式资源消耗大、全参数扫描慢COMSOL、HFSS3. 仿真设置里的成败细节3.1 几何建模与离散的相辅相成很多新手拿到一个结构图第一反应就是赶紧建模、赋材料、跑仿真结果往往是被各种警告和错误打断。我的习惯是先花一小时在纸上画清楚结构的三视图、标清楚周期方向和入射面再动手建模。亚波长结构的尺寸通常在几百纳米到几个微米之间一个几何错误被放大到实际工艺里就是背上几万美元的返工费用。离散化这一步要视仿真方法和目标来决定。RCWA里一个非常重要的几何操作是“切片分层”。因为每层都假设材料均匀所以遇到倾斜侧壁或渐变截面时必须把结构切得足够多、足够薄。就拿浅刻蚀光栅来说如果只想看零级效率20层和50层的差异可能不大但如果要算高阶异常衍射层数少就会把每一次层间耦合效应抹掉。我自己通常让每层厚度小于波长的十分之一遇到共振波长附近还会继续细分。FDTD的网格设定就更直接了。首先要保证最小网格尺寸能描述结构最细的几何特征比如尖角、薄壁、小间隙其次要考虑数值色散问题。一般来说介质结构中网格尺寸取波长的1/10到1/20比较稳妥金属结构则需要更细。CFL条件在FDTD里不是可选条件而是必须满足的稳定性条件时间步长和空间步长必须匹配否则场值会出现指数式发散。很多新人在Lumerical里随便填一个网格尺寸就跑结果看场图发现乱成一团十有八九是这件事没做好。3.2 材料参数一个被低估的坑在亚波长结构仿真里材料参数的影响比我一开始预想的大得多。常规可见光和近红外波段的半导体材料如Si、GaAs、SiN等折射率数据相对可靠在光源谱宽内基本无吸收直接用参考常数问题不大。但金属材料就不一样了Au、Ag、Al在短波段都有强烈的色散和吸收折射率数据的细微差异都会直接改变表面等离激元的共振位置和品质因子。我的做法是优先使用结构制备方提供的、或者同批次工艺条件下实测的材料数据。如果只能从文献里取至少选两到三个独立来源的数据作对比看看共振峰位置漂移多少。用商业软件自带的材料库时也要留意因为库里某些数据来自不同年代、不同制备条件直接拿来做亚波长结构的定量分析很容易踩坑。还要特别提醒一个容易被忽略的点材料的表面粗糙度和氧化层。亚波长结构的表面积体积比很高表面几个纳米厚的自然氧化层或者刻蚀工艺残留的侧壁损伤层在仿真模型里虽然很薄却可能改变近场耦合行为。严格来说只有把这些工艺效应都纳进模型仿真预测才具备和实验比对的可信度。这是一个不断靠近现实、而永远无法完全等于现实的过程但越早意识到这一点设计实验和评审仿真结果时就越不容易被误导。3.3 边界条件、光源与监视器边界条件的选择其实和结构对称性、入射方式紧密相关。对周期结构最好的选择是Bloch周期边界条件因为只有当相位从一边传到另一边满足周期性时平面波入射的衍射级次才是物理上真实存在的。很多商业软件里的“周期性边界”其实默认带相位匹配这一点要确认不然斜入射时结果会非常奇怪。PML边界在RCWA中一般不涉及在FDTD和FEM中则是吸收边界的标配。使用时要注意PML层数和材料参数不能让反射率高于-60 dB否则寄生反射会以噪声形式藏在衍射谱里。有一次我算一个高Q谐振腔的透射峰无论怎么加密网格透射峰始终矮一截后来把PML层数从6加到12峰才慢慢挺起来。北方的设计师们把这个叫“边界在吸你的能量”很形象。光源设置方面RCWA直接设定入射平面波矢、偏振和圆偏振分量即可FDTD则要选择总场散射场光源或者直接激励源再在结构上下放置监视器。监视器要放在离结构足够远的位置确保近场衰减完毕同时又要避免被PML边界污染。实际操作里我的习惯是先放一个全包围监视器来记录散射总能量再在远场下方放一个近场探测器来导出透射谱两头对不上就说明边界或网格有问题。3.4 收敛性判断的标准化流程严格模拟最怕的其实不是算不动而是算完不知道结果对不对。我每次跑完都会执行一套固定的检查流程第一能量守恒检查把所有级次的反射和透射功率加起来加上材料的吸收损耗应该等于1减去数值误差第二收敛性检查以某个关键参数比如衍射效率、近场增强因子为对象观察随网格加密或谐波增加的收敛曲线第三对比参考解哪怕是用一维光栅的解析公式近似也能验证大致的趋势和量级。收敛曲线怎么判断标准是当相邻两次计算的核心结果相对变化小于0.5%同时继续加密网格只会让结果在很小的范围内振荡时就认为已经收敛。但要注意结果在振荡不一定就不收敛关键看在目标参数上是否足够稳定。如果一个结果在网格密度翻倍后还稳不下来那基本可以断定结构里存在强共振或材料参数设定有问题这时候不要再盲目加网格浪费算力先回头检查物理模型。4. 实操案例一套深紫外光栅的RCWA仿真全流程4.1 结构参数与工作条件定义下面用一个实际做过的项目来演示RCWA全流程。结构是熔石英衬底上的介质光栅设计工作波长193 nm周期为390 nm槽深260 nm占空比0.52。TE偏振和TM偏振都需要分析入射角先扫到30度看角度谱。这个场景用RCWA非常合适结构规则、周期明确、层数不多、要求频率高精度的单波长计算。首先把结构参数换算成仿真需要的内部变量。入射波长是193 nm结构周期390 nm这意味着在正入射条件下整数衍射级次中只有零级和±1级是传播的更高阶全是倏逝波。这一点我先在博文里写出来是想说明仿真不是黑盒提前用光栅理论预判哪些级次会出现后面看结果时就心里有数。RCWA内部需要设定的参数有周期方向上的谐波截断数、沿刻蚀深度方向的分层数、材料折射率、入射光波长和偏振。这套参数里谐波截断数直接决定傅里叶展开的精度我通常从11开始试分层数取决于刻蚀轮廓是矩形还是梯形我这个项目是矩形槽理论上每层都是均匀的所以分层数设为1即可。如果侧壁有倾斜角分层数就要增加仿真的计算量也会随之增大。4.2 折射率取值与吸收处理193 nm波段是一个比较特殊的波段大多数材料的吸收都不可忽视熔石英在大约185 nm以下开始出现明显吸收而193 nm正好处在吸收边附近这导致纯常数折射率模型会带来显著误差。我当时采用了实测的复折射率数据实部约1.56虚部约3.1e-4。虚部虽然数值不大但由于光在光栅里多次反射、耦合吸收累积效应还是可以在衍射效率上体现出来。因为要对比TE和TM偏振行为我在程序里同时计算了两个偏振的零级和1级效率并对整个入射角范围做了扫描。这里有个细节RCWA中入射角变化会改变Bloch波矢的横向分量结构里的倏逝波幅度和传播波分布都会跟着变所以角度扫描不能简单套用正入射的结果。扫描步长我设为0.5度从0度扫到30度共61个入射角每个角度重新组装矩阵求解整个计算大概花了几分钟就全部完成。4.3 偏振行为与衍射效率分析仿真结果出来后两个偏振的效率曲线差异非常大。TE偏振在正入射时的零级效率约45%1级效率约31%TM偏振同样条件下零级效率约52%1级效率约19%。这种偏振依赖来自于光栅槽形对电场方向的不对称响应电场平行于槽形时边界的连续性条件要求电场法向分量在介质边界处不连续容易激励起更强的近场耦合从而改变能量分配。这些数据合在一起带来的直接后果是如果系统中需要同时通过TE和TM光并保持能量平衡就必须对这个光栅做优化比如加入一层匹配膜或改变占空比。我把扫描结果和同结构的实验样片数据做了对比零级效率的最大偏差约2.5%这在很大程度上被归因于侧壁粗糙度和刻蚀深度的工艺偏差。仿真输出的近场电场分布图也揭示了一个局部热点TE偏振在槽底转角处形成约3.5倍的电场增强这是标量理论完全无法预示的信息也解释了为什么该位置在激光损伤测试中最先损坏。4.4 后处理与物理校验拿到衍射效率之后我并没有直接交差而是做了几步后处理验证。第一步是能量守恒把两个偏振的零级、正负1级效率和其他所有可传播级次加起来加上材料吸收结果与预期入射功率的偏差在0.3%以内。第二步是检查收敛性谐波截断数增加一倍后零级效率相对变化小于0.1%。第三步是用一个解析的一维光栅模型做粗略对照确认主要趋势和数值量级一致。这套流程走下来仿真结果的可信度就立住了。很多时候评审人或者客户不会去复算你的仿真但他们会问“你怎么知道这个结果是准的”如果没有做能量守恒和收敛性验证这个问题就很难回答。做了就能拿出数据有理有据地解释这就是严格模拟和随便跑跑仿真之间的分界线。5. 常见问题与排查技巧实录5.1 仿真时间暴涨和内存溢出用RCWA做参数扫描时最容易遇到的问题就是时间失控。谐波截断数从30提升到60计算量不是线性翻倍那么简单——矩阵尺寸、特征值求解时间的增长倍率非常吓人甚至可能直接从几分钟变成几小时。这时候优先级明确先做收敛性预扫只用少数几个关键参数点测收敛确认截断数需求然后再确定合适的扫描范围和步长。FDTD的内存溢出则主要来自网格尺度过小。加密一倍网格意味着空间三个方向的单元总数变为原来的8倍时间步长还得按CFL条件一起缩短总计算量增速可见一斑。遇到这种问题我一般先检查监视器区域是否包裹得过大或者PML层数是否过厚。再一个非常实用的做法是先用粗网格跑通整个流程确认结果规律正确后再针对关键入射角或关键波长细化网格而不是一上来就整体加细。很多商业软件支持自适应网格用起来相对省心但也要定期检查网格分布是否真的贴合了电磁场变化最剧烈的区域。5.2 结果和文献对不上这种现象经常出现在金属亚波长结构的仿真里。文献中一个等离激元共振峰在700 nm你用同样的几何结构仿真结果跑到650 nm。这时候别急着怀疑自己代码有bug先怀疑材料数据。不同来源的Au或Ag的介电常数差别非常大尤其是薄膜和块体材料之间的差异直接决定共振波长的偏移量。我踩过最狠的一次就是拿着块体金的折射率去算一个30 nm厚金膜的纳米盘阵列共振峰会整体偏移了约50 nm后来换成薄膜实测数据才和实验吻合。另外一项容易对不上的原因是衬底和覆盖介质。很多文献中的结构是自由悬挂的或者衬底材料厚度有限边界条件不同会改变模式分布。复现文献结果时一定要先把文献中的结构尺寸、层状顺序、衬底和超表面周围的介质都复现清楚再对照结果。如果还是对不上就尝试把文献中的结果当成一个远期的收敛目标先把结构周围的介质逐步换掉看结果往哪个方向走这样既能定位问题又能加深对物理的理解。5.3 边界条件导致的虚假模式用PML边界算高Q结构时出场次数最多的坑就是假模式。这类模式在仿真里表现为某个频率处出现一个尖锐的透射峰或反射谷但实验里怎么也找不到。PML反射率不够低、PML离结构太近、或者PML内部出现了数值不稳定性都可能导致这种现象。解决办法通常是三管齐下提高PML层数、把PML往远处挪、增加PML阻尼系数。做完之后再结合群延迟或Q值验证一下峰值是否为真实共振。Bloch周期边界下的虚警模式也很常见。如果你设定的周期和传播方向上的模不完全匹配本该是倏逝波的模式会被条件周期化变成人工的传播波然后混进衍射效率里。判断方法是观察模式的空间场分布真实的传播衍射级次应该是平面波型分布如果场图中出现强烈的局域热点或周期性妖气就要怀疑边界条件参数传错了。5.4 纠错经验死磕不如抽身分析做严格模拟这些年我最大的体会是不要死磕一个报错。如果一个仿真怎么调都出不了合理结果问题往往不在软件操作而在物理建模逻辑上。曾经有一周时间我一直盯着一个超表面结构的反射谱总觉得缺了一个共振谷后来才发现我把结构顶部覆盖层材料的损耗设成了零导致有损耗的共振模式完全无法体现。所有参数都是“正确”的但模型本身漏了一项关键物理。调试过程里最有效的工具是拆解法把复杂结构一层层打开先模拟每一层的简单响应再逐步叠加。这个过程看似麻烦但能快速定位是哪一层、哪个参数在捣乱。严格模拟的“严格”二字不仅指算法严格也指建模态度严格——每一个参数每一层边界都应该有意识地被审视过、解释过。6. 写在项目末尾的几句实在话做亚波长结构仿真越久我越觉得这是一个“物理直觉数值功底工程细节”三方博弈的活儿。数值功底决定了你能不能把软件用好物理直觉决定了你知道该算什么工程细节则决定了结果能不能加工出来、能不能在真实系统里工作。三者缺一个项目迟早要在某个环节卡住。我个人现在的习惯是拿到一个新结构的第一周不急着上大规模仿真先用较粗糙但物理完备的模型跑一个趋势图把关键参数空间的“地貌”摸一遍找到有趣的现象后再集中算力做精细扫描和实验验证。这样既省算力也更容易积累对不同材料、不同结构类型的直觉。这个过程里最快乐的一刻永远是仿真和实验结果几乎吻合的那一刻——那意味着你对这个物理世界的理解又靠近了一点点。接下来的扩展方向可能包括多层异质材料体系的严格仿真、非周期超表面的局部场计算、以及将严格模拟与逆设计优化算法深度耦合的设计流程。这些东西说起来又是另一篇长文了如果你们有兴趣我之后再专门整理。