☰
基于超表面的OAM涡旋光束产生:从几何相位到FDTD仿真全流程解析
2026/10/18 21:58:02 网站建设 项目流程

如果你做的课题里需要一个能稳定产生轨道角动量(OAM)涡旋光束的元件,第一反应多半是空间光调制器或者螺旋相位板。但等你真把它们放进系统里就会意识到两个问题:一是体积和光路调试成本都不小,二是它们对入射偏振态往往“无感”,没法把自旋角动量(SAM)这张牌打到极致。这阵子我把一套基于超表面的OAM产生方案完整走了一遍:从自旋-轨道角动量耦合的理论梳理,到纳米柱单元的参数扫描与排布,再到用FDTD仿真软件验证近场相位和远场甜甜圈分布。整个过程把电磁仿真、几何相位和拓扑荷判读串在一起,踩了不少坑,也整理出了一套可以照抄的流程。这篇文章想把这条链路讲透,适合正在做超表面设计、光子集成或者涡旋光应用的同学,也适合那些仿真入门后想真正用FDTD输出有物理意义结果的人。

1. 从相位板到超表面:为什么自旋-轨道耦合这条路非走不可

1.1 涡旋光束到底“旋”在什么地方

先对齐一个基本概念:OAM光束的相位波前不是平面,而是像螺旋楼梯一样围绕传播轴旋转。描述它只需要一个相位因子 exp(ilφ),其中φ是光束横截面的方位角,l就是拓扑荷。l取1、2、3时,光束分别携带1ħ、2ħ、3ħ的轨道角动量,每个光子都有。强度分布上,这类光束的中心一定是暗的,形成一个甜甜圈形状,拓扑荷绝对值越大,暗环半径越大。

这个暗心不是“遮”出来的,而是相位奇点导致的相消干涉,所以它非常稳。实际应用里,光通信可以把不同l值的OAM当作不同信道做模式复用,光镊靠轨道角动量把微粒推到环状轨迹上旋转,量子信息里OAM还能承载高维纠缠态。这些场景都要求发射端能灵活、稳定、小型化地产生目标拓扑荷的光束。

1.2 传统方案的体积、效率与偏振痛点

实验室常规做法是空间光调制器(SLM):在液晶屏上加载螺旋相位图,把反射光调制成涡旋光束。SLM的好处是拓扑荷随便改,坏处是像素尺寸按微米算,驱动电路加屏幕体积不小,而且液晶对偏振有选择性,利用率打折扣。螺旋相位板则是让不同方位角的光经过不同厚度,对加工精度要求高,做错了几乎没法修正。

这两类方案还有个共同的盲区:它们只处理空间相位,把入射光的偏振状态当作“空气”一样忽略。可圆偏振光本身就携带自旋角动量,左旋和右旋分别对应+ħ和-ħ,如果能让这部分角动量高效地“嫁接”到轨道角动量上,就等于在同一个元件里完成了偏振转换和波前重塑两件事。超表面恰恰是最擅长做这件事的载体。

1.3 超表面如何同时接管偏振与相位

超表面的核心是一层亚波长人工微结构,典型形式是二氧化钛、非晶硅或氮化镓纳米柱周期排列在基底上。每个纳米柱相当于一个微型波导,会在柱的两个正交主轴方向上引入不同的相位延迟。当入射光是圆偏振时,透射光里会出现一个正交圆偏振分量,它的相位等于纳米柱几何旋转角的两倍,这就是Pancharatnam-Berry相位,也叫几何相位。只要让纳米柱的旋转角随空间位置按α(x,y)=lφ(x,y)/2变化,出射的正交圆偏振分量就自然带上exp(ilφ)的相位分布,轨道角动量直接写进波前里。

换句话说,单个纳米柱同时扮演了半波片和相位调制器,自旋角动量在这种结构里被“翻译”成了轨道角动量。这正是近些年OAM超表面研究最核心的设计逻辑。理解这一层,后面所有的FDTD扫描和阵列排布都是顺水推舟的事。

2. 自旋-轨道角动量耦合的本质:几何相位不是“算出来”的,是旋转出来的

2.1 自旋角动量和圆偏振态的对应关系

一束圆偏振光的电场矢量端点在传播中画螺旋,这个螺旋的方向和螺距决定了自旋角动量的符号和大小。左旋圆偏振光子带+ħ,右旋带-ħ,这是光子自有的角动量,与光传播方向无关。它最直观的实验表现是:圆偏振光打在半波片上,出射还是圆偏振,但自旋方向反转,同时半波片会受到一个力矩,说明角动量守恒在这里是实实在在的力学定律。

超表面里的自旋-轨道耦合,本质上就是利用各向异性结构把“自旋反转”这件事和“波前相位变化”绑定。自旋反转发生在一个给定的位置,而不同位置的纳米柱旋转角不同,累积起来的相位差异就让波前发生了扭曲,于是自旋角动量的变化量被转化成了轨道角动量。整个过程满足角动量守恒:总的角动量变化等于零。

2.2 Pancharatnam-Berry相位的直观图像

提到PB相位,很多教程会直接抛公式:E_out = t(θ)(E_in·ê_d)ê_d + ...,推导过程看得人头晕。其实可以把它想成一个更日常的场景:你把一根筷子竖直插在桌面上,然后绕竖直轴转一个角度α。如果拿尺子量筷子的朝向,转动并没有改变它的长度或位置,但如果你事先给筷子赋予了一个“方向标签”,比如标签朝东,那转一圈之后标签的朝向就变了,累积了两倍角度的差异。

纳米柱就是这么根筷子。柱有两个主轴,分别对应两个正交线偏振的高折射率传播模式。当入射圆偏振分解到这两个主轴上时,两个分量各自获得不同的相位延迟。如果柱的几何尺寸恰好使得两个主轴之间的相位差等于π,也就是满足半波片条件,那么圆偏振入射后自旋反向,同时出射相位相对入射相位会多出2α,α就是柱绕中心轴的实际转角。所以设计问题被拆成了两半:先找一根“合格”的半波片柱,再按目标相位分布去旋转它。

2.3 拓扑荷与旋转角分布的一一对应关系

有了2α这个基本规则,产生任意拓扑荷OAM就变成一个简单的映射:想让出射光束带上exp(ilφ)的相位,就令2α(x,y)=lφ(x,y)+常数。对于拓扑荷l=1的涡旋,纳米柱的旋转角需要绕中心一圈从0转到180度,也就是半圆分布;l=2时就绕一圈完成360度旋转,视觉上会出现两对“旋转周期”。这也意味着旋转角分布的设计可以完全离线做,先算好每个像素点的φ角,再除以2赋给对应位置的纳米柱。

但这里有个容易被忽略的点:几何相位的拓扑荷由旋转角的旋向决定,如果你把整片阵列的旋转方向反过来,拓扑荷就从+l变成-l。仿真前先用matlab或者python画一下旋转角分布图,确认旋向和目标一致,再建模。我在第一个版本里就把旋向弄反了,结果是出射的涡旋拓扑荷符号全反,干涉条纹方向也跟着反,排查了一个晚上才意识到是α的正负号写错了。

3. 纳米柱单元设计:先找半波片条件,再谈阵列排布

3.1 材料、波长与基底选型:仿真里先定下来的几个常量

材料选型决定了扫描参数的大致范围。本案例以可见光波段632.8nm为工作波长,基底用熔融石英SiO2(折射率约1.457),纳米柱选TiO2。选择TiO2的原因很实在:可见光波段折射率在2.4-2.6之间,损耗很低,而且纳米柱工艺成熟,很多课题组都跑通过。

Fabry-Perot共振需要一个合适的柱高,太高会增加深宽比加工的难度,太低则两个主轴的相位差不够π。经验上,柱高在500到800nm之间,周期在350到500nm之间。周期太大会激发高阶衍射级,导致能量分配到不该去的地方,OAM纯度下降;周期太小会让相邻柱近场耦合严重,参数扫描结果和全阵列仿真偏差大。下表是我这套案例的初始参数:

参数项数值备注
工作波长632.8 nm氦氖激光典型波长
基底SiO2折射率1.457
纳米柱材料TiO2折射率约2.5,低损耗
柱高H600 nm初值,后续微调
单元周期P450 nm约0.71λ
柱宽W、长度L扫描范围100-300 nm步长10nm首轮
入射偏振左旋圆偏振目标出射右旋圆偏振带OAM

我选450nm周期的另一个考虑是,阵列尺寸按5μm×5μm算也能排到11×11个单元,涡旋形态已经能看出来,而且FDTD全结构仿真时间还能接受。如果直接上几十微米的大口径阵列,单次仿真可能跑十几个小时,前期调参阶段很不划算。

3.2 参数扫描的核心思路:同时盯住相位差和透过率

设计单元前我先建立一个仿真文件,仿真域只有单个周期单元,x和y方向都设周期边界条件(Bloch边界),z方向用完美匹配层PML吸收。光源用平面波,波长632.8nm,先分别用x偏振和y偏振入射,在纳米柱上方记录透射场的复振幅。这样对每个宽度W和长度L组合,都能拿到x偏振相位φx、y偏振相位φy、以及各自透过率Tx、Ty。

扫描时要盯两个指标:一个是相位差Δφ=φx-φy是否接近π,另一个是透过率是否接近。只有同时满足“半波片条件”和“高透过率”的柱子才值得用。我当时先用步长20nm做了粗扫,圈定了W=110-150nm、L=240-280nm附近的一小片区域,再以5nm步长细扫。细扫结果里一组典型数据如下:

W (nm)L (nm)φx (rad)φy (rad)Δφ (rad)TxTy
1202601.124.263.140.720.69
1252651.054.193.140.710.68
1302700.984.123.140.700.66

Δφ恰好等于3.14rad,说明在632.8nm处两个正交模式的反相条件完美满足。透过率都在0.7上下,意味着大约70%的入射光能被有效转换利用。实际案例不必贪图90%以上的透过率,因为效率还受阵列离散误差影响,单元能稳住60%以上就可以往下推进。

3.3 离散相位分布的生成:用脚本生成旋转角矩阵

确定单元尺寸后,接下来是把旋转角分布落到每个像素上。选定阵列排布为M×M(本案例取M=15),总尺寸6.75μm×6.75μm。以阵列中心为原点,第(i,j)个单元中心坐标(x_i,y_j),算出方位角φ_ij=atan2(y_j,x_i)。目标相位是lφ_ij,所以旋转角α_ij=lφ_ij/2,换算成度数为α_ij(°)=l·φ_ij(°)/2。

这一步建议直接用脚本生成一个矩阵,并顺手输出一份旋转角的可视化图,确认渐变趋势是连续的。如果使用l=1,旋转角范围应该在0到180度之间,图像显示为半圈渐变。如果出现跳变点,需要检查atan2的角度定义范围是否从-pi到pi,还是0到2pi,两种定义产生的旋转角分布只在常数偏移上不同,不影响物理结果,但会影响导入仿真前的可视化判断。

4. FDTD仿真建模:从单元扫描到全阵列验证的完整流程

4.1 构建纳米柱阵列:导入几何的正确姿势

当前主流的商业FDTD求解器都支持脚本化建模,我的习惯是先用脚本而不是CAD界面手工画柱体。因为15×15阵列有225根纳米柱,手工复制粘贴既慢又容易出错,脚本只需要循环旋转即可。

建模代码的核心思路大致是:定义基底为半无限SiO2;在基底表面用脚本放一个矩形TiO2柱体,位置由阵列索引决定,旋转角从旋转角矩阵里读取;设置材料折射率,柱体覆盖网格区域,其余为空气。这里要特别注意几何重叠问题:仿真域边界上如果有柱体穿过,周期性排列的相邻单元会自动拼接,但如果全阵列仿真时用PML边界,柱体不能越出仿真域边缘,否则结构被截断产生非物理散射。我的处理办法是在阵列四周留出至少一个周期的空白区域,再往外的网格区域填充基底。

4.2 光源与监视器的设置:圆偏振不是勾选一个按钮那么简单

FDTD软件里通常默认光源是线偏振平面波,直接选圆偏振需要自己合成。我的做法是放两个平面波光源,一个x偏振、一个y偏振,y偏振的相位相对x偏振延迟π/2,即90度。两个光源同时作用于同样的仿真域,就能叠加出左旋圆偏振入射。

这里有个容易踩的坑:两个平面波光源如果使用同一注入面,相位差关系要手动加,而且不同版本的脚本接口可能用phase或者amplitude参数表示初始相位。我在某个版本里把相位差设成了π而不是π/2,结果入射光变成了相反旋向的圆偏振,几何相位符号全反,仿真出来的涡旋拓扑荷符号和方法论预期完全相反。排查这类问题最直接的方法是放一个监视器紧贴光源下方,先看入射场的E_x和E_y相位差是否为±90度,确认无误后再跑全结构。

监视器方面我在近场放一个频域监视器,覆盖整个透射平面,记录Ex、Ey、Ez复振幅,用于后处理提取相位。远场则放一个远场投影监视器,把近场信息投影到某距离处的球面或平面,观察强度分布。如果只关心透射效率,可以在整个阵列上方加一个功率监视器,积分后与入射功率对比。

4.3 网格设置如何影响相位精度

对亚波长结构来说,网格就是仿真结果的地基。单元扫描时我的网格策略是:柱体内最大网格步长不超过10nm,空气区域可以让网格稀疏一些,但过渡区域要平滑,否则介电常量的突然跳变会引入数值反射。FDTD软件通常有自动网格功能,可以按波长细分,但自动网格对深宽比高的柱体往往过度细分,拖慢速度,所以我更习惯手动设置最大网格步长,再在柱体周围加一层网格细化的覆盖区域。

全阵列仿真时网格密度没法太奢侈,否则内存占用会爆炸。15×15阵列、450nm周期,把仿真域做大到7.65μm见方,10nm网格在三微米量级的高度范围内,网格总量动辄上亿,普通工作站内存接近极限。我的折中方案是柱体内保持10nm,衬底和空气区域用20nm甚至30nm,先跑出一个初步结果,确认相位图和强度图没有异常后,再局部加密验证关键区域的数值收敛性。同时建议开启仿真软件的“自动关机”功能,当电磁能量泄漏殆尽时自动停止,能节省不少时间。

4.4 全阵列与单单元仿真结果的一致性检验

花时间做全阵列仿真之前,我先跑了一个只有单元尺寸不变但旋转角均匀的“等效平板”模型,验证半波片条件在阵列环境中依然成立。结果是正交圆偏振转换效率基本一致,说明单元之间的耦合没有把半波片条件破坏掉。这一步很重要,它把“单元级设计有效”和“阵列级设计有效”解耦了,后面如果再出问题就能直接锁定在旋转角分布的相位逻辑上,而不是怀疑单元尺寸。

5. 仿真结果的判读:相位奇点、甜甜圈与拓扑荷的确认

5.1 近场相位图:看螺旋和奇点

全阵列仿真结束后,我导出透射监视器位置的复电场,取angle()函数得到相位分布。由于透射场同时包含未转换的共偏振分量和携带OAM的正交偏振分量,直接看总场相位往往是乱的。正确做法是先根据斯托克斯参数或直接投影提取正交偏振分量,再画这个分量的相位图。

一个健康的拓扑荷为1的涡旋,相位图应该是绕中心旋转一圈、颜色从-π连续过渡到π的单一螺旋,中心处存在相位奇点,所有颜色交汇在一个点。拓扑荷为2时,环绕中心一圈相位会经历两次完整的颜色循环,图像上能看到两个螺旋臂。我当时用l=2的旋转角分布出图,近场相位图里能看到清晰的双臂螺旋,中心奇点处相位数据出现噪声,呈发散状,这是网格采样在奇点处的正常表现,不必紧张。

5.2 远场强度分布:甜甜圈是“标配”

远场投影结果显示强度呈环形分布,中心光强接近零,甜甜圈形态清楚。拓扑荷越大,暗环半径越大,这一点和理论公式符合。细看远场图还能发现环的对称性:l=1时环的亮暗分布略不均匀,这是阵列离散化和有限口径衍射共同造成的,每个单元相当于一个子孔径,子孔径间干涉叠加产生小幅震荡。增大阵列规模后,环会变得更均匀。

这里提醒一下:远场结果对监视器尺寸很敏感,远场投影监视器必须覆盖透射平面的大部分能量,如果监视器比阵列尺寸小很多,投影时截断效应会在远场图上制造奇怪的条纹。我习惯让监视器的边长至少是阵列边长的1.5倍。

5.3 拓扑荷的定量验证:叉形干涉条纹与相位展开

只看强度图只能确认涡旋存在,不能确认拓扑荷的具体值。标准做法是把涡旋光束和一个高斯参考光束叠加,干涉图会出现叉形条纹,分叉的数量等于拓扑荷的绝对值。FDTD后处理里我构造了一个理想平面波作为参考光,与截取的涡旋场复数相加,再取模平方得到干涉图样。

用l=1的阵列做出来的干涉图在中心有一条清晰的叉形条纹,分叉方向朝上或朝下,取决于拓扑荷符号和参考光倾斜方向。l=2则出现双分叉。这个方法比数相位变化快得多,而且直观。更严格的验证是做相位展开:沿包围中心的圆环提取相位,解包裹后看相位增减量是不是2πl,差值落在设定误差范围内就算通过。实测我的l=1设计解包裹相位是6.29rad,l=2是12.57rad,分别对应一个和两个2π周期,完全吻合。

5.4 效率与OAM纯度的量化指标

效率通常定义为透射场中携带目标拓扑荷且偏振反转的那部分功率占入射总功率的比例。用监视器记录的功率积分可以直接算:入射功率减去共偏振透过功率和反射功率,再除以入射功率。我实测的单柱透过率约0.7,但全阵列偏振转换效率算下来只有0.41,这个折扣主要来自纳米柱离散相位对理想连续相位的逼近误差,以及相邻柱间耦合。

要评估OAM纯度,更严谨的方法是做螺旋谐波分解:把近场振幅和相位沿径向和方位角展开,计算每个拓扑荷分量占总能量的权重。FDTD后处理里可以写一个后处理脚本,先在近场平面上取一个固定半径的圆环,对场做傅里叶级数分解,目标l分量的平方占比就是该半径上的纯度。实测在最佳半径处,l=1分量的权重能到0.82左右,说明离散结构损失了大约18%的模式纯度,这个数值在可接受范围。

6. 我踩过的坑:从网格噪声到符号错误的排查链路

6.1 中心相位奇点处的噪声是不是网格的锅

第一次跑完l=1阵列,我看到的近场相位图中奇点周围有一圈放射状毛刺,像是相位在奇点处剧烈抖动。我当时以为是网格不够细,把柱体区域网格从10nm加密到5nm重跑,结果毛刺只减少了一点点,并没有消失。后来才想明白,真正的相位奇点处电场振幅趋于零,相位在数学上本就没有定义,FDTD的数值噪声叠加在接近零的振幅上,噪声被相位函数放大,就形成了放射状伪影。这是物理奇点的正常表现,不是仿真错误。

如果你观察点离奇点中心足够远,比如在涡旋环的中部半径处,相位分布会非常干净。所以判读相位图时,不要盯着奇点心子看,要看环绕它的螺旋结构是否连续。

6.2 拓扑荷符号两次都反了:旋转方向和相位延迟的约定问题

这个坑值得单独记一笔。第一次我用α=lφ/2生成旋转角矩阵,结果干涉图中叉形条纹方向与参考方向相反,说明拓扑荷实际是-l。问题出在我对“左旋圆偏振入射对应正几何相位还是负几何相位”的约定没理清,直接沿用了某个参考教程的公式,而那个教程用的是右旋入射。

这里的关键是几何相位的符号依赖于入射自旋方向:左旋圆偏振入射到旋转角为α的柱上,出射的右旋圆偏振分量带+2α相位;右旋入射则出射左旋分量带-2α相位。所以设计旋转角公式前,要先确认你的FDTD光源是哪种圆偏振,再决定α是lφ/2还是-lφ/2。我的做法是在脚本里用一个全局变量表示入射旋向,写公式时显式乘上这个符号,避免二次踩坑。

6.3 全阵列仿真速度慢到怀疑人生:分层网格和分步验证

15×15阵列加10nm网格,第一次全波仿真跑了将近20个小时才结束,中途还因为内存不足中断过一次。后来我总结出一个省时间的路线:先用5×5的小阵列加上近似的目标相位验证流程,确认近场相位结构和干涉结果正常,再扩大到15×15。小阵列仿真通常1到2小时就能完成,足够锁定设计逻辑问题。

网格方面,PML区域的网格需要合理过渡,最外侧可以放到100nm级别,只要保证PML吸收效果就行。光源平面波注入时z方向网格适当粗化到20nm,不会影响透射相位计算,因为结构都在柱体区域内被精细网格覆盖。有了这些调整,15×15阵列的仿真时间稳在6小时左右,基本可以接受。如果你要仿真几十微米的大口径阵列,建议先接受“近场验证用小阵列、远场趋势用大阵列”的策略,不必追求一次仿真到位。

6.4 多波长响应的隐藏问题:半波片条件会飘

最后提一个我差点忽略但实际影响巨大的问题:半波片条件只在设计波长附近成立。我把工作波长调到650nm和615nm各跑一次,结果发现偏振转换效率从632.8nm对应的0.41掉到0.3和0.34,近场干涉图的叉形条纹虽然还在,但对比度明显变差。原因是TiO2的折射率色散和Fabry-Perot共振随波长漂移,使Δφ偏离π。

所以如果你的应用要求波段稍微宽一点,就必须做多目标优化:扫描单元参数时同时看两个甚至三个波长的Δφ,找它们加权最小的尺寸组合。我后来把柱高600nm微调到620nm,让632.8nm附近的效率略微下降但650nm处回升一点,给出了一条相对平缓的效率曲线。这类多波长优化会让参数扫描的计算量成倍增加,建议先用单波长粗扫确定候选区间,再在候选区间内做多波长细扫。

就我个人体会而言,FDTD和OAM超表面的组合设计最花时间的地方其实不在仿真本身,而在解构每一个结果到底说明了什么。相位图里的噪声、干涉条纹的叉形数量、效率比理论值低的那几个百分点,背后都对应着具体的设计取舍。如果你也打算做类似结构,建议先把几何相位公式的符号约定钉死,再动手写旋转角脚本,这会替你省下后面一整晚的排查时间。下一步我会在这个基础上试级联两层超表面,看能不能同时调控自旋和轨道角动量到更复杂的目标态,到时候有了新结果再来分享。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询