做超表面空间板的建模第一件事不是打开仿真软件画结构而是搞清楚这个“空间板”和常见的超表面透镜、超表面波片不是一回事。它要模拟的是一段自由空间的传播效应一束光经过一块只有几个微米厚的平板之后各个平面波分量获得的相位变化要尽可能等于它在真空中多走了几百微米甚至几毫米之后的效果。换句话说这块板子不是把光“汇聚”到某个位置而是让后续系统以为光路变长了。这种器件在光学设计里非常实用成像系统、光谱系统、干涉系统里经常需要几厘米的空气隙但整机尺寸又卡得很死如果把其中一段自由空间用超表面空间板替换掉光学系统就能做得更紧凑。建模的核心也不只是画单元、扫参数、看相位而是要准确描述“角度域”的响应并且要把这种响应换算成自由空间传播函数。下面把我从项目里踩坑、改模型、重新拟合的完整过程整理出来希望帮你少走几步。1. 超表面空间板建模先搞清楚“板”在模型里承担什么1.1 空间板不是相位板很多同学会把空间板理解成“一个相位板”这恰恰是建模中最大的坑。透镜、全息片这类器件给每个横向坐标上的单元设计一个相位入射光垂直入射时透过后相位按空间位置排布空间板恰恰相反它的单元是空间均匀的相位响应不是随x、y变化而是随入射角变化。它借助平面波角谱把不同传播方向的光分量加上不同相位从而等效成延长光程。所以建模的重点在角度域不在空间域。举个例子一束光从物体表面发出在到达探测器之前不同方向的光线走了不同距离。自由空间中传播距离d后一个以角度θ入射的平面波获得的相位是φ k0·d·cosθ其中k02π/λ。空间板需要做的就是在保持横向位置不变的前提下让每个方向的光获得一个接近k0·d·cosθ的附加相位。一块普通的均匀玻璃板当然也有角度响应但它的色散关系很固定物理厚度必须接近实际光程压缩比很低。超表面空间板的价值在于用亚波长结构去“设计”这种角度响应让几微米的板子产生几十倍甚至几百倍于自身厚度的等效传播距离。1.2 建模要交付哪些结果空间板建模的最终输出不能只是一张“相位随入射角变化”的曲线哪怕这条曲线看起来和目标曲线很像也不够。真正可用的建模结果应该包含三样东西一是单胞的S参数包括透射振幅和透射相位并且要在不同入射角、不同偏振下都能拿到二是根据S参数提取出的角度色散曲线通常需要先做相位解卷绕再和理想相位基准对比三是误差评估比如在目标角度范围内相位残差是多少、振幅损耗是多少、压缩比和带宽是多少。只有把这三样都完善了后面做系统级光学仿真的时候才有底。2. 建模前的参数体系材料、单元、压缩比2.1 从理想传递函数反推设计目标空间板的理想传递函数可以写成H(θ)exp(-i·k0·d·cosθ)这里的d就是我们要等效的自由空间距离。建模时一般先不直接仿真无限大的空间板而是设计一个能被周期性边界描述的单胞再去模拟不同斜入射角度下的响应。判断单胞好坏的标准很简单提取出的幅相响应能否在给定角度范围内逼近这个理想传递函数。设计目标要提前定好三个数中心波长λ0、最大入射角θmax、等效传播距离d_eff。θmax决定了系统的工作数值孔径d_eff决定目标相位曲线的斜率。这三个数不是拍脑袋定的而是来自整个光路的系统设计。举个例子如果系统里需要替代的空间距离是15 mm工作波长1550 nm最大入射角35°那目标相位曲线就是在0°到35°之间从k0·15mm变化到k0·15mm·cos35°。这里有个关键点目标相位不是“绝对相位”而是“相对随角度的变化量”。仿真得到的绝对相位会受到参考面位置影响所以建模中通常先拟合一个常数相位偏置再比较角度变化的部分。2.2 物理厚度和压缩比怎么定压缩比C的定义是等效自由空间距离d_eff除以空间板的物理厚度tCd_eff/t。这个参数直接反映空间板的价值普通玻璃板C≈1而超表面空间板通常要做到几十甚至几百。C越高设计难度越大因为要在更短的距离内凑出同样大的角度色散。我在建模时一般先从C30到C50起步先把流程跑通再逐步提高目标。如果一开始就盯着C500去做很容易陷入参数扫描死循环。物理厚度t的选取和材料平台有关系。介质超表面通常用几百纳米到一两个微米的柱状结构金属-介质混合结构可以更薄但欧姆损耗会影响透射效率。项目初期可以先不追求极限厚度选一个现有工艺能加工的结构厚度比如600 nm到1 μm然后把d_eff设成30到50倍厚度。这样做的好处是单元结构自由度足够多仿真迭代快结果也稳定。2.3 单元结构与参数化方案超表面空间板的单元结构不需要像超表面透镜那样在每个横向位置都不同它更常采用“全同周期单元”的建模方式。一个基本思路是在基板上做周期性排布的介质柱或介质孔阵列通过改变柱子的尺寸、间距、高度来调节角度色散。我常用的单元是矩形截面介质柱周期P取略小于工作波长比如1550 nm时P取1200 nm左右这样入射角到35°以内都不会出现高阶衍射。结构参数通常包括柱子的长L、宽W、高H、周期P。把这些参数化之后就可以用脚本做多参数扫描。需要注意单元周期越小等效介质描述越准确但加工难度也越高周期太接近波长斜入射时会产生高阶衍射效率会突然掉下去相位也会出现明显的跳变。3. 单元建模仿真把角度响应提出来3.1 单胞边界与斜入射端口设置单元仿真要用周期性边界模拟无限大阵列。x方向和y方向设置周期性边界z方向设置输入输出端口。斜入射时不能简单用普通周期边界需要在边界条件中带上Bloch相位因子也就是根据入射角度在周期边界上施加一个相位差。很多全波仿真软件提供了Floquet端口或周期性端口直接指定θ和φ角软件会自动处理斜入射下的边界条件。我习惯把入射面设在x-z平面这样极化可以用TE电场沿y方向和TM磁场沿y方向分开仿真。φ角固定为0°时θ从0°扫到θmax步长通常取2°或3°先看整体趋势确定候选结构后再在相位变化剧烈的地方加密到1°。倾角扫描越多仿真时间越长但没有必要一开始就用0.5°步长。端口到结构表面的距离也要统一。因为电磁仿真里的S参数包含端口处的一小段均匀空间传播不同频率下这段相位会变化。为了让相位参考面位于超表面表面建模仿真后需要做一次“去嵌入”。很多软件里的端口校准功能就是为了做这件事。如果忽略了这一步你提取的相位曲线会莫名其妙地带上一个跟入射角相关的线性项结果完全对不上理论曲线。3.2 从S参数里拿相位注意三个细节在单元仿真完成后能直接拿到S21的复数形式也就是透射系数。注意下面三个细节第一幅值不能只看某一个角度要整条曲线扫描。空间板若只在中心角效率高在应用里是没法用的因为实际光场总是包含一定角度带宽。第二相位要解卷绕。S21的相位是周期性往返的直接画图会看到-180°跳到180°不处理就没法跟理想曲线拟合作比较。第三步才是拟合目标相位曲线。相位拟合时可以先把模拟得到的arg(S21)解卷绕再减去一个常数偏置φ0然后和目标相位k0·d_eff·cosθ比较。φ0的选取一般用最小二乘拟合也就是让残差的平方和最小。不要直接拿仿真在0°角的相位当作φ0因为这样会浪费一个自由度。3.3 用相位拟合代替人工目测人工目测“挺像”在设计报告里没有说服力。我习惯写一个简单的后处理脚本把仿真相位和理想相位放在同一个坐标系里算出最大误差、均方根误差。下面是一段很朴素但够用的思路import numpy as np wavelength 1550e-9 k0 2 * np.pi / wavelength theta_deg np.array([...]) # 仿真采样的入射角 phase_sim np.array([...]) # 经过去嵌入和解卷绕后的 S21 相位 theta np.deg2rad(theta_deg) d_eff 5e-3 # 设计目标等效 5 mm phase_ideal -k0 * d_eff * np.cos(theta) # 注意符号和参考方向 # 拟合常数偏置 coeff np.polyfit(np.cos(theta), phase_sim - phase_ideal, deg0) phase_fit phase_ideal coeff[0] residual phase_sim - phase_fit max_err np.max(np.abs(residual)) rms_err np.sqrt(np.mean(residual**2)) print(max error:, max_err, rad) print(rms error:, rms_err, rad)这里把相位曲线写成cosθ的函数而不是θ的函数是因为自由空间传播的相位本来就随cosθ线性变化。拟合出来的残差曲线如果是一条平缓的曲线说明结构的角度色散和目标趋势一致如果残差在某个角度突然跳起来大概率是出现了高次模、瑞利异常或者相位解卷绕出错。4. 从单胞到整体阵列、口径与验证4.1 空间板不需要逐像素排布相位这一点和超表面透镜完全不同。透镜建模要生成一张二维相位图再把每个像素映射到不同尺寸的单元上空间板的响应是空间平移不变的所有单元基本相同不需要横向相位排布。因此单胞仿真得到的角度响应可以直接视为整块空间板的透射函数。这个特性大大简化了仿真。我们不需要在三维全波软件里把几百万个单元全部画出来而可以把目光集中在两个层面第一无限大周期结构的角度响应用单胞Floquet端口得到第二有限口径带来的边缘效应用光束传播法或者角谱法结合单胞响应去做系统级验证。4.2 阵列验证的两种可行做法有时还是要验证“有限尺寸”下的表现尤其是板和前后光学元件靠得很近时。第一种做法是建一个口径较小但包含足够多个单元的“超胞”比如10×10或20×20个周期四周仍然用周期性边界或PML边界。这种做法能反映单元之间的耦合但超胞太大时计算资源会不够我个人一般只用来验证结构设计的稳定性。第二种做法更实用把单胞仿真得到的幅相响应当作一个角度相关滤波器在角谱域直接对输入光场做处理。具体来说把输入光场做二维傅里叶变换得到角谱再乘上对应角度的S21再做逆傅里叶变换就得到透过空间板之后的光场。这种模型速度极快而且能直接放在光学系统里做成像分析特别适合做公差分析和前后面元匹配。4.3 误差指标与效率空间板设计完我至少会看四个指标透射效率、相位残差、压缩比、可用角度范围。透射效率一般用|S21|²在目标角范围内的平均值表示低于50%的设计要用起来很费劲相位残差是建模时最要命的指标因为它直接决定成像质量。经验上相位残差优于λ/20也就是约0.3 rad时对多数成像系统是够用的如果要做干涉测量最好控制在λ/40以内。这里要特别提醒相位误差和效率常常是矛盾的。为了在更大角度范围内凑出理想角度色散单元的谐振可能越做越强随之而来的是损耗变大。所以建模过程中不要只追求“相位完美”而是要在同一张图上同时看效率曲线把两个指标一起权衡。5. 常见问题与排查思路5.1 仿真相位和理想曲线总是差一个线性项这是最常见的坑。表现是你扫出来的相位曲线很平滑但和目标曲线相比总有一个随cosθ变化的固定偏差。通常原因就是端口参考面没有统一或者是斜入射端口校准没有做对。解决方法是先在0°入射角下做一组不同参考距离的仿真确认相位随端口距离的变化关系再去对目标曲线做常数偏置拟合。如果差的是一个“随cosθ线性项”而不是常数还要检查是否把入射角定义成了与法线的夹角还是与界面的夹角。5.2 斜入射时相位在某个角度突然跳变跳变点通常对应高阶衍射的出现。周期P太大或者工作波长太短会让某些高阶衍射波变成传播模式一旦出现这种模式能量会突然分走一部分透射相位也会出现不连续。遇到这种情况先检查P/λ是否满足避免高阶衍射的条件通常要求P小于λ/(1sinθmax)。如果确实是衍射模式导致的把单元周期缩小即可。5.3 TE和TM响应差异过大空间板在成像系统中通常需要同时工作在两个偏振或者至少对随机偏振有稳定的表现。如果TE和TM的相位曲线差得太多设计就不能算成功。排查时先看单元结构是否具有对称性。采用正方形截面柱子或者交叉对称结构可以让0°入射时两个偏振响应一致但斜入射时TE和TM天然会不同这是物理上的固有差异。建模时应该分别给TE和TM做误差评估必要时把某一项的权重降低但绝不能只仿真一个偏振就草草收场。5.4 全阵列仿真内存爆炸如果非要做几十微米级口径的全阵列三维仿真内存很容易爆。我踩过几次坑之后现在的方法是先用等效介质模型跑系统级设计确定关键参数再用单胞Floquet仿真提取精确S21最后用角谱法做系统级验证。除非要做边缘应力分析否则没有必要让三维全波仿真直接吞下整个阵列。6. 最后再分享一个建模习惯做超表面空间板的建模和做普通超表面透镜最大的区别在于你必须时刻记住“角度响应”而不是“空间相位分布”。很多刚开始做的朋友改了几十版结构就是因为在0°入射下相位很好但角度扫描一开就全崩了。所以我建议从第一个单元建模起就把角度扫描当成默认流程哪怕一开始只扫几个点也要保证设计目标曲线始终挂在模型旁边。另外模型文件里最好把目标相位曲线用注释或者后处理公式写清楚。这样别人拿到你的模型第一眼看到的就是“该器件在5 mm等效距离、35°入射范围内目标相位为k0·d_eff·cosθ”而不是一堆没有任何物理意义的几何尺寸。项目做到后期这种细节能省下大量沟通成本。实验测回来的S参数也别忘了和仿真放在一起解卷绕实测结构总有工艺偏差那才是建模真正要服务的对象。