1. 复现对象与整体思路
超表面这几年已经是光学圈绕不开的大热点,而几乎所有做超表面的人,都会反复研究2016年Science上Capasso组发的那篇Metalens文章。严格地说,这篇工作的重要性不在于“超表面”这个概念本身,而在于它把超构透镜做到了可见光波段,并且用衍射极限的聚焦质量证明,一个几百纳米厚的平面结构完全可以和传统折射透镜正面竞争。文章的思路非常漂亮:用二氧化钛纳米柱阵列代替传统透镜的曲面,让每一根柱子对入射圆偏振光施加一个与旋转角直接相关的相位延迟,最终在平面上重建出球面波前。光线穿过一片厚度只有600nm左右的“玻璃片”,就能乖乖聚到一个焦点上。
我这次复现的目标非常明确:不做工艺,不做样品,只做电磁仿真层面的完整复现。具体要回答三个问题。第一,几何相位为什么能靠旋转柱子分配相位,而不是像常规超表面那样靠调节柱子尺寸来调相位;第二,单元结构的尺寸参数怎么扫描才能称得上是一个合格的半波片;第三,把成千上万根纳米柱拼成一个金属透镜之后,圆偏振光能不能真的聚焦成一个接近衍射极限的光斑。这三个问题做完,2016年那篇Science的核心物理就算是吃透了。
1.1 复现目标拆解:从单元到整镜的三层递进
这篇Science能发表,靠的不是某一次灵光乍现,而是完整的设计链条。我把它拆成三个层次来复现。
第一层是单元结构。一根纳米柱和一个完整透镜之间,隔着一套单元库。只有把二氧化钛纳米柱的两个正交主轴方向上的透射率和相位差摸清楚,才能确定它是否满足半波片条件。如果这一步不扎实,后面整镜仿真里出现任何问题都难以定位。
第二层是相位映射。透镜的相位分布由焦距和工作波长决定,但怎样从相位公式换算成每一根柱子的旋转角,这个映射里藏着符号约定和坐标系的坑。几何相位下的旋转角等于相位的一半,这是一个非常简洁的关系,但实际仿真中旋转方向的正负很容易搞反,需要专门验证。
第三层才是整镜的全波仿真。这个环节既考验建模技巧,也考验计算资源。把几万个单元放进FDTD仿真区域,网格、边界条件、光源设置、监视器位置,任何一步偷懒都可能得到错误结论。
这三层分别对应单元扫描、相位布局和聚焦验证,下面每一章会按这个顺序展开。
1.2 为什么选几何相位路线:三种相位调控机制对比
超表面调控相位的主流方案有三种:共振相位、传播相位和几何相位。共振相位依靠改变纳米结构本身的谐振状态来改变相位,对结构尺寸极其敏感,稍微偏移几个纳米,相位响应就可能大变。设计这种单元库时,往往要在目标波段上反复搜索,计算量很大,加工容差也小。
传播相位则是让不同尺寸的柱子表现出不同的等效折射率,从而累积出不同的波前相位。这种方案需要足够的结构高度才能攒出完整的0到2π覆盖,否则相位范围不够,透镜会缺一块。而且不同尺寸柱子之间的透射率往往不一致,也会影响效率。
几何相位走的是一条完全不同的路径。它的核心思想是:相位不由尺寸决定,而由柱子的旋转角度决定。只要每一根柱子都满足半波片条件,相位就能被旋转角精确控制,覆盖整个0到2π范围,甚至不需要逐根优化尺寸。这种“尺寸解耦”特性让超表面设计极大简化,也让加工容差大幅放宽。因为在加工过程中,只要角度控制准确,尺寸的微小偏差不会直接毁掉相位分布。我复现时选择几何相位路线,还有一个现实理由:单元扫描只需做一次,后续所有设计都变成纯粹的几何布局问题,这对仿真来说非常友好。
2. 几何相位与圆偏振聚焦的原理拆解
2.1 旋转角与相位之间的2倍关系
几何相位,也叫Pancharatnam-Berry相位,本质上是偏振态在演化路径中获得的拓扑相位。一个直观的描述是:圆偏振光经过一个双折射结构时,如果结构的主轴相对于入射坐标系旋转了θ角,那么出射光中旋性反转的那部分分量,就会携带一个2θ的附加相位,而且这个相位和波长没有直接关系。
为什么是2倍而不是1倍,可以用一个小推导来理解。圆偏振光在纳米柱的主轴坐标系里会被分解成两个正交线偏振分量,这两个分量分别沿主轴传播,感受到不同的有效折射率,积累了不同的相位延迟。结构旋转θ角后,圆偏振在主轴坐标系中的分解本身就带了θ角的相位因子。当两个分量通过结构再次合成出射圆偏振光时,旋转带来的相位因子会翻倍,最终多出2θ的相位延迟。
工程上记住一个结论就够了:结构旋转角覆盖0到180度,就能完整覆盖0到2π的相位。这意味着,一根同尺寸的柱子,只要转起来,就能充当一个连续可调的相位单元。这是几何相位最吸引人的地方,也是它在2016年之后迅速普及的主要原因。
2.2 半波片条件:几何相位成立的前提
几何相位虽然“不靠尺寸调相位”,但不代表随手拿一根柱子就能得到纯正的2θ相位。它有一个硬前提:这个纳米结构在两个正交主轴方向上,透射波的振幅要接近相等,相位差要接近π,也就是它必须等效为一个半波片。
如果主轴相位差不等于π,出射光中除了反旋分量外,还会残留相当比例的同旋分量。同旋分量没有接收到2θ相位,会作为背景光直接穿透透镜,能量进不了焦点,导致聚焦效率下降。如果两个主轴方向上的透射振幅差异过大,反旋分量的强度也会打折,即使相位关系对了,效率也上不去。
所以单元结构设计的所有工作,最后都归约为两个量化指标:第一,沿柱子两个主轴的透射相位差尽量接近180度;第二,两个主轴的透射率都尽量接近1。这两个指标同时满足,单元结构才算合格。这也是我在单元扫描阶段反复翻车的根本原因:一开始只顾着追求相位差,忽略了振幅匹配,结果整镜仿真效率非常难看。
2.3 圆偏振的旋性分裂:同一个透镜,聚焦还是反聚焦
几何相位还有一个标志性现象:相位符号和入射圆偏振的旋性绑定。同样是旋转角为θ的纳米柱,左旋圆偏振光获得的附加相位是+2θ,换成右旋圆偏振光则变成-2θ。换句话说,同一个透镜如果为左旋光设计时会聚焦,换成右旋光入射时,相位分布就会反转,原本的会聚波前会变成发散波前,或者产生空心光斑。
这个“旋性分裂”特性在器件设计里非常有用。它天然可以用来做偏振分束器、圆偏振敏感的探测器,以及增强现实显示中的光路分离元件。在仿真验证阶段,它也是一个特别干净的判据:一个真正的几何相位透镜,应该只对其中一种旋性聚焦,而对另一种旋性完全不聚焦。我后面专门做了一个对照仿真来验证这一点,现象极其明显。
3. 透镜相位公式与仿真环境准备
3.1 从球面波前到旋转角映射公式
超构透镜的本质是将入射平面波转换为会聚球面波。对于波长为λ、设计焦距为f的透镜,任意空间位置(x,y)需要补偿的相位就是该点到焦点位置的光程差对应的相位延迟:
φ(x,y) = -2π/λ × (√(x² + y² + f²) - f)
这里用的球面相位公式,不是傍轴近似下的抛物线相位。对数值孔径比较大的透镜,用抛物线近似会导致焦斑畸变和球差增加,所以复现时不要偷懒,直接用根号形式更稳妥。这个公式本身就是从“焦点到各点的光程相等”推导出来的,物理图像非常明确。
得到相位分布后,旋转角分布就很简单:
θ(x,y) = φ(x,y) / 2
由于θ的取值范围天然落在0到π之间,并不需要额外处理相位包裹。实际建模时只需要逐像素算出坐标(x,y),计算θ,然后把对应纳米柱以θ角摆进去,就完成了从相位到结构的转换。
我复现时使用的参数是:工作波长λ=633nm,透镜半径R=10μm,设计焦距f=20μm,对应数值孔径NA大约为0.447。这个口径不算大,但对原理验证已经完全足够,并且能在个人电脑上用有限的内存跑完仿真。单元周期取400nm,光学上远小于工作波长,能保证不出现高阶衍射通道。
3.2 仿真工具与材料参数选择
超表面仿真最常用的工具是Lumerical FDTD Solutions,它基于时域有限差分法,适合处理亚波长结构和宽光谱问题。单元结构扫描时,它可以方便地设置周期性边界条件;整镜仿真时,可以换成开放边界条件。缺点是商业软件授权费用不低,且投影到大尺寸结构时内存消耗比较大。
COMSOL Multiphysics的波光学模块也是常用选择。它基于有限元法,处理任意形状结构的精度高,尤其在研究模式场分布时非常直观。但COMSOL的整镜仿真通常比FDTD更耗内存,设计大尺寸透镜时需要更谨慎地控制网格量。
如果预算有限,开源的MEEP是一个很好的替代方案。它基于FDTD,支持Python接口,可以自动跑参数扫描,社区资料也越来越丰富。缺点是建模流程比商业软件繁琐,GUI调试不方便,更适合习惯脚本化操作的同学。
材料方面,2016年论文使用的是二氧化钛,在633nm附近折射率约为2.4,透明性好,工艺兼容性高。如果仿真环境里没有TiO2的实测数据,也可以用非晶硅代替。a-Si在可见光波段折射率更高,大约在3.5左右,同样的结构高度可以累积更大的相位差,柱高可以做得更矮;但633nm附近会有一定吸收损耗,聚焦效率会受影响。复现原理时,两种材料都能得到正确结论,区别只在于单元尺寸的优化空间不同。
3.3 单元结构FDTD扫描方法与判据
单元结构仿真我建议用FDTD工具完成,整体流程可以概括为:建立单根纳米柱模型,x和y方向设置周期性边界条件模拟无限周期阵列,z方向上下都用PML吸收边界;在衬底一侧加入平面波光源,另一侧放透射监视器;分别用沿柱子两个主轴方向的线偏振光入射,提取复透射系数。
提取数据是关键。用x偏振入射时,出射场的x偏振分量相位对应φu;用y偏振入射时,提取φv。然后计算相位差Δφ=|φu-φv|,同时记录两个主轴的透射振幅Tu和Tv。优化目标是让Δφ接近180度,Tu和Tv都接近1。
扫描规律也很有共性:柱子越长,两个主轴方向的等效折射率差异越大,相位差越大;柱子越高,相位差也越大,但透射率会随之下降。因此设计本质上是在相位差和透射率之间找平衡。我最终锁定的参数范围是:柱子长度310nm左右,宽度120nm左右,高度600nm,单元周期400nm。在这个组合附近,Δφ大约在175度到185度区间,Tu和Tv均大于0.9,满足半波片条件。
这里有一个非常容易忽略的细节:FDTD的网格尺寸直接决定相位提取的精度。网格太粗,相位值会在扫描过程中出现明显抖动,表面上看是扫描数据不连续,其实是数值噪声。把纳米柱内部的网格加密到5nm以下后,相位曲线才会变得平滑稳定。
4. 整镜建模与圆偏振聚焦仿真
4.1 用脚本批量铺设纳米柱
整镜仿真的第一步是把几千根柱子按照旋转角分布摆好。这一步建议用Python或MATLAB生成布局脚本,不要在GUI里手工画。下面是生成柱子位置和旋转角的Python示意代码:
import numpy as np P = 400e-9 # 单元周期 400 nm r_lens = 10e-6 # 透镜半径 10 μm f = 20e-6 # 设计焦距 20 μm wl = 633e-9 # 工作波长 633 nm num = int(round(2 * r_lens / P)) coords = [] for i in range(-num//2, num//2): for j in range(-num//2, num//2): x = (i + 0.5) * P y = (j + 0.5) * P if x*x + y*y > r_lens*r_lens: continue phi = -2*np.pi/wl * (np.sqrt(x*x + y*y + f*f) - f) theta = phi / 2 coords.append((x, y, theta))代码里有两个容易出错的地方。第一,圆形口径之外的位置直接跳过,不要保留成方形阵列,否则边缘结构会产生不必要散射。第二,柱子中心坐标要对齐在单元中心,上面用(i+0.5)*P就是为了避免把柱子放在网格节点上,导致与后续仿真区域定义不一致。
4.2 仿真区域、光源与边界条件设置
整镜仿真的仿真区域就是透镜口径加一圈PML,x和y边界不再用周期性边界,而是开放边界,z方向上下也都用PML吸收。光源使用圆偏振平面波,从衬底一侧入射,波长633nm。
这里有一个深坑必须提醒:圆偏振光LCP和RCP的定义在不同软件和文献里可能存在正负号差异,导致几何相位的符号约定跟你的公式对不上。如果符号搞反,透镜很可能完全不聚焦,或者聚焦位置和焦距完全错误。我在第一次整镜仿真时就是在这里栽了跟头,焦平面一片弥散,查了半天才发现是圆偏振定义和旋转角公式的正负号不匹配。
网格设置建议使用自定义网格覆盖区。柱子内部加密到3到5nm,周围介质区域用10nm左右。如果全局统一用2nm网格模拟一个20μm口径的透镜,内存需求会直接爆掉,仿真时间也难以接受。合理的网格策略是先粗后细:先用较大网格跑通流程,确认聚焦现象正确后,再加密网格得到可靠的定量数据。
4.3 焦平面场分析与判定指标
仿真结束后,在透镜上方位置z=f处放一个电场截面监视器,记录电场强度分布。如果设计正确,中心位置会出现一个明亮的焦点。
从截面数据要做三件事。第一,确认焦点位置是否真的在z=f附近。由于单元结构本身会引入一个与空间位置无关的常数相位,设计焦距和实际焦点位置之间可能有一个小的偏移,这是正常现象。第二,量取焦点的半高全宽FWHM,与衍射极限做对比。第三,以焦点为中心取一个孔径,计算聚焦效率。
衍射极限可以用艾里斑直径估算:D=1.22λ/NA。我设计的NA为0.447,理论上633nm的艾里斑直径约1.73μm,半高全宽大约在1.0到1.2μm量级。如果仿真得到的焦点FWHM明显大于这个值,说明相位分布或单元结构还有问题;如果接近这个值,基本上可以确认几何相位聚焦成立。
聚焦效率的计算口径需要固定。分子是焦平面中心某区域内的能量流,分母是入射到透镜口径上的总功率。这个比值会受到反旋分量占比、同旋分量背景、衬底反射等多重因素影响。我跑出来的复现结果效率在50%以上,对一个未做全局优化的模型来说已经说明设计正确性了。
4.4 旋性辨别:一个仿真验证圆偏振聚焦的标志性现象
这是整个复现里最有说服力的一步。把入射圆偏振的旋性切换成相反方向,其他仿真条件完全保持不变,再跑一轮。
如果之前的透镜对左旋圆偏振光聚焦,换成右旋圆偏振光后,焦平面中心不会出现聚焦光斑,而是呈现弥散分布或空心圆环。把两种旋性下的焦平面强度分布并排对比,效果非常直观:同一个透镜,同一批纳米柱,入射旋性一变,聚焦行为就完全反转。这正好对应前面讲的旋性分裂特性,也直接证明了器件确实工作在几何相位机制下,而不是靠偶然的尺寸巧合实现了聚焦。
5. 仿真中的常见问题与排查技巧
5.1 从单元到整镜:问题速查表
复现过程中我遇到过不少问题,有些现象看起来很复杂,但根因往往很基础。下面这张表按异常现象列了最可能的根因和解决方案,排查时可以直接对照:
| 异常现象 | 最可能的根因 | 处理办法 |
|---|---|---|
| 焦点不亮,焦平面只有背景光 | 单元不满足半波片条件,反旋分量太弱 | 回到单元扫描,检查相位差和振幅匹配 |
| 焦点位置偏离设计焦距 | 纳米柱引入额外常数相位,等效焦距偏移 | 提取常数相位并修正设计焦距,或在相位公式中加固定偏置 |
| 焦点亮但杂散光强 | 同旋分量未完全消除,或口径处理不当 | 检查主轴相位差,确认圆偏振定义,优化口径形状 |
| 相位分布出现不连续跳变 | 旋转角映射的符号或周期处理错误 | 检查θ=φ/2的映射关系,确认旋转方向符号 |
| 内存不足,整镜仿真跑不起来 | 口径太大或网格太细 | 先缩小透镜半径验证流程,再逐步扩大 |
| 远场出现高阶衍射斑 | 单元周期接近或超过波长 | 缩小单元周期,保证像素间距小于工作波长 |
5.2 圆偏振符号与主轴方向的坑
几何相位原理看似简单,但符号问题非常容易翻车。不同文献里,有的把θ的正方向定义为逆时针,有的把左旋圆偏振定义为相位超前,这些约定差异都会影响最终符号。
我的排查方法是:在整镜仿真之前,先用单个单元结构做一次微实验。固定柱子的长宽和高度,让旋转角从0度变到180度,分别用圆偏振光入射,提取透射场中反旋分量的相位。将相位随旋转角的变化画成一条线,如果它的斜率是2,且正负号与公式预期一致,说明符号约定没问题。再进入整镜环节,不然满透镜排查会非常痛苦。
5.3 实操心得:先小口径验证,再逐步放大
整个复现流程走下来,我最大的感触是,做超表面仿真不要一上来就追求大尺寸、高NA、精细网格。第一版最好用小口径透镜验证流程,比如半径5μm、NA约0.3,保证单次仿真能在合理时间内跑完。只要这个模型出现了清晰的焦点,并且旋性选择性正确,再逐步放大口径和加密网格,成功率高得多。
还有一点经验值得分享:单元扫描和整镜验证一定要分开做。不要为了省时间跳过单元扫描直接建整镜,因为整镜如果焦点出问题,很难分辨是相位公式错了、单元库不合格,还是光源设置有问题。单元扫描能快速锁定前两个因素,剩下的自然就只剩仿真设置问题了。
6. 复现结果评估与后续扩展
6.1 焦斑质量与效率评估
定量评估建议关注三个数字:焦点FWHM、实际焦距和聚焦效率。如果要做更严谨的像差分析,还可以计算Strehl比,即实际焦点峰值强度与理想无像差焦点的比值。不过Strehl比在仿真里需要找到理想参考点,稍显繁琐,复现阶段只看FWHM和效率也足够判断设计是否成功。
我复现的模型在左旋圆偏振入射下,焦点半高全宽大约为1.12μm,与理论值约1.03μm比较接近,说明波前质量已经很理想。聚焦效率没有做到论文量级,原因是单元结构没有做全局优化,一部分能量残留在同旋分量中。这个现象本身并不影响物理验证,它提醒我们:几何相位机制的理论上限很高,但工程实现处处要吃细节。
6.2 从聚焦透镜到更多功能器件
这套几何相位设计流程最大的优势在于可迁移性。把相位公式从球面改成螺旋相位φ=l·arctan(y/x),透镜就变成涡旋板,透射光会带上轨道角动量,焦点变成空心涡旋结构。这个特性在光通信、量子光学和超分辨成像中都有应用。
如果做偏转器,只需要把相位分布改成沿某个方向的线性梯度。如果要做消色差透镜,则需要在旋转角之外再引入一个额外的结构参数,比如让柱子的长宽比和旋转角协同变化。这个方向在2016年之后涌现了大量文献,底层依然是在超表面上直接控制相位分布。
6.3 一点个人体会
如果只给刚入坑的朋友一个建议,我会说:先把单元结构焊死,再谈透镜。几何相位超构透镜看上去是一个整体系统,但最核心的工作量其实集中在单元库的打磨上。单元库做到位了,后面所有公式映射和整镜仿真都是流程化的执行过程,每一步都有明确的量化指标,与其说是物理难题,不如说是流程控制问题。耐心把网格、边界条件、符号约定这些工程细节逐一确认,复现一篇Science级别的超表面工作,并没有想象中那么遥不可及。