做集成光子或者硅光这块,凡是涉及弯曲波导的仿真,最绕不开的一个环节就是用COMSOL做模式分析。环形谐振器、弯曲波导、S弯、微环调制器,这些结构在版图上看着就是一条弧线,但仿真的时候,麻烦程度比直波导高出一大截。问题集中在两个地方:一是弯曲波导的有效折射率不是我们习惯的单一实数,它变成复数了;二是损耗的精细计算,到底怎么从仿真结果里拿准,而不是拍脑袋估一个数。
这篇文章就围绕这两个核心问题展开。我会从弯曲波导的物理本质讲起,然后完整走一遍COMSOL的建模、设置、求解和参数提取流程,最后把我在实际项目里踩过的坑、验证过的方法整理出来。无论你是刚接触COMSOL的新手,还是已经做过一阵直波导模式分析、想往弯曲结构深入的老手,这篇文章应该都能给你一些参考。
1. 弯曲波导的分析难点:为什么直波导的经验在这里失灵
直波导的模式分析非常成熟,截面画好,材料给上,COMSOL的“模式分析”步骤一跑,有效折射率出来,场分布图画出来,一切都很直观。但换成弯曲波导之后,情况就不一样了。
1.1 弯曲波导的模式本质:从“纯导模”变成“漏模”
先回顾一下直波导的情况。对于一根直的矩形波导,如果芯层折射率高于包层,光被限制在芯层里传播,模式的有效折射率是实数,传播常数也是实数,理论上光可以无损地一直传下去。这是标准的“导模”。
但波导一弯曲,情况立刻改变。你可以把弯曲波导理解成一根被弯成弧形的波导,光在弧形路径上传播时,为了让波前保持同步,靠近弯曲外侧的光需要跑得比内侧更快。如果弯曲半径不够大,外侧某些区域的等效相速度就会超过材料中的光速,这部分光就再也“拉不住”了,会从波导外侧辐射出去。这就是弯曲损耗的物理根源。
也就是说,弯曲波导的模式天然就是“漏模”,能量在传播过程中会持续向外泄漏。这个特点反映在模式分析结果上,就是有效折射率从实数变成了复数。实部代表模式的相位传播特性,虚部则直接对应损耗的大小。这也是为什么很多新人第一次跑弯曲波导模式,看到有效折射率弹出一个虚部,会以为自己哪儿设置错了——其实这个虚部正是弯曲波导损耗的核心信息。
另外,弯曲会让模场分布发生明显偏移。直波导的模式场对称地集中在芯层中心,而弯曲波导的模式场会整体向弯曲外侧“挤”,弯曲半径越小、折射率差越大,偏移越明显。这个偏移不光影响损耗,还会影响模式与直波导或其它器件的耦合效率,所以在设计弯道过渡结构时,这个现象也必须纳入考虑。
1.2 有效折射率虚部与损耗的关系
COMSOL的模式分析求解得到的是模式的有效折射率:
neff = Re(neff) + i × Im(neff)
传播常数和 neff 的关系是:
β = k₀ × neff = (2π/λ) × (Re(neff) + i × Im(neff))
这里 k₀ 是真空中的波数,λ 是工作波长。光在弯曲波导中传播时,场振幅沿传播方向按 exp(-αz) 衰减,其中衰减系数α就是损耗系数。展开推导后可以得到:
α = (4π/λ) × Im(neff)
这个 α 是场振幅的衰减系数,单位是1/m。工程上更常用的是功率损耗,单位是dB/cm。功率衰减系数是 2α,换算成dB/cm就是:
功率损耗(dB/cm) = 2 × α × 10 × log10(e) / 100 = (8.686 × 2α) / 100
化简之后,可以直接从有效折射率虚部换算:
功率损耗(dB/cm) = 8.686 × (4π × Im(neff) / λ) × 0.01
举个例子,假设工作在1550nm波长,仿真得到的 Im(neff) = 1 × 10⁻⁵,那么:
α = (4 × π × 1e-5) / (1550e-9) ≈ 81.08 /m
换算成功率损耗:
损耗 = 8.686 × 2 × 81.08 / 100 ≈ 14.08 dB/cm
如果虚部是 1 × 10⁻⁴,损耗就变成大约 140 dB/cm。这个相当于每走一厘米光功率就衰减到原来的 10⁻¹⁴,已经是完全没法用的水平。所以做弯曲波导设计的时候,Im(neff) 这个数非常敏感,哪怕只差一个量级,器件的损耗表现就是天壤之别。
1.3 弯曲损耗的核心变量:半径与折射率差
弯曲损耗受两个参数影响最大。
第一个是弯曲半径 R。R 越小,光在弧形路径上的“离心”效应越强,模式偏移越严重,损耗也越大。而且这个关系不是线性的,而是接近指数关系。工程上有一个粗略的经验公式,是在弱导近似下推导出来的,用来估计弯曲损耗随半径的变化趋势,其中包含 exp(-const × R) 这样的因子。也就是说,半径稍微增大一点,损耗可能会下降好几个数量级。
第二个是芯层与包层的折射率差。折射率差越大,光被束缚在芯层里的能力越强,弯曲损耗越小。这也是为什么高折射率差平台(比如硅光,芯层折射率约3.45,包层是二氧化硅约1.44)可以做到非常小的弯曲半径,而低折射率差平台(比如普通聚合物波导,折射率差只有0.01级别)动辄需要毫米级甚至厘米级的弯曲半径,否则损耗会大到不能接受。
理解了这两个核心变量,再去看COMSOL的仿真结果,心里就有数了。下面进入实操环节。
2. COMSOL建模:弯曲波导模式分析的全流程
2.1 几何建模:用扇区还是用环形?
COMSOL里做弯曲波导模式分析,第一步是建几何。你不需要建一个完整的环形结构,因为模式分析是截面分析,本质上是在波导传播方向的一个“横向截面”上求解特征值问题。对于弯曲波导,有几种做法。
最直观也最常用的做法:在二维平面里画一个圆环的局部扇区,然后取它的截面。等效的做法是直接建立一个“弯曲波导截面”,这个截面实际上是一个环形扇区的横截面。但COMSOL的原生操作不太适合直接表达这种极坐标系下的截面,更常见的做法是直接在二维组件里画圆环,用角度很小的扇区,然后设置周期性边界条件来表示弯曲波导的圆周对称性。
具体到建模,我常用的方式是这样的:新建一个二维模型(不是三维),在几何节点里添加两个同心圆,半径分别对应弯曲内径和弯曲外径,用“差集”操作得到圆环。然后截取一个小角度扇区,比如1度或者更小。扇区的两条直边设为周期性边界条件,这样等效于无穷长的弯曲波导。
如果觉得这种极坐标几何方式处理起来麻烦,还有另一种思路:用“变形几何”或者直接在三维里建一个弯曲波导段,然后用模式分析求解。但三维会显著增加计算量,我建议还是用二维扇区方式,简单高效,物理上也更清晰。
扇区角度选多少合适?原则上只要网格分辨率够,角度越小越好。1度已经足够小,可以让弧长方向的变化被周期性边界条件完美处理。如果计算资源紧张,0.5度也可以。关键在于扇区两条边界的法线方向要严格沿着径向,这样周期边界才准确。
2.2 材料与波长设置
材料参数方面,以典型的SOI硅波导为例:
- 芯层:硅,折射率 n = 3.478(1550nm附近)
- 衬底层:二氧化硅,n = 1.444
- 包层:空气或二氧化硅,根据具体工艺决定
在COMSOL里,最简单的方式是直接用折射率定义,不用引入材料库的完整色散模型。波长扫描时注意折射率要跟着波长变化——如果只做单波长分析,那直接用常数就行。
波长参数化很有必要。我通常把波长设为全局参数,单位是nm,例如 lambda0 = 1550[nm]。频率求解时,COMSOL使用的是 f = c/lambda,也可以在“电磁波,频域”物理场的设置里直接指定。
2.3 物理场与边界条件:PML是关键
物理场直接选择“电磁波,频域”(Electromagnetic Waves, Frequency Domain, ewfd),求解类型设为“模式分析”,这是做波导模式计算的标准配置。
边界条件的处理是这个环节的重中之重。
如果是直波导模式分析,很多教程直接使用“散射边界条件”(SBC)包围整个计算域,因为导模基本不会触碰边界,计算结果对边界条件的依赖很小。
但弯曲波导完全不同。弯曲损耗产生的辐射场会持续向外传播,如果边界条件不吸收这些辐射,它们会在边界处反射,然后与模式场干涉,导致有效折射率虚部完全失实。所以弯曲波导模式分析的边界处理必须是“完美匹配层”(PML),才能把向外传播的辐射干净利落地吸收掉。
PML的设置在COMSOL里并不需要太多手动操作。在建模时,扇区的最外圈预留一层环带,把这个环带所在域的“PML”勾选上就可以。严格来说,PML区域还要设置合适的厚度和吸收方向,但COMSOL的物理场接口一般会根据几何自动判断。
PML要留多厚?经验值是一到两个波长。在1550nm工作波段,如果包层是二氧化硅,PML厚度取2到3微米就足够了。太薄吸收不干净,太厚又浪费计算资源和内存。另外要注意PML的外边界不再加其它边界条件,保持默认的“完美电导体”也没关系,因为PML已经把所有向外传播的波吸收掉了,外边界是什么条件已经不重要了。
2.4 网格划分:决定虚部精度
弯曲波导的模式分析,网格质量直接决定虚部算得准不准。实部往往还好说,粗网格也能给出大致正确的结果,但虚部小到1e-5甚至1e-6量级的情况下,网格不够细,结果很可能差好几个量级。
网格划分的经验有以下几条:
第一,芯层区域必须非常细。矩形波导芯层(比如450nm宽、220nm高的硅脊)内部至少要保证5到10层网格,这样才能解析模场在芯层内部的精细结构。强烈建议在芯层和靠近芯层的包层区域使用“映射网格”或者“扫掠网格”,人工控制网格尺寸。
第二,从芯层到PML的包层区域,网格尺寸可以逐渐放大,但不要放大得太快。默认的“物理场控制网格”往往在芯层和包层交界处做不太好,建议切成“用户控制网格”。
第三,PML区域内部,网格要分层。PML的网格应该有明确的扫描层数,一般5到10层就够。如果COMSOL的PML功能自动处理,那就不用管。
第四,网格尺寸最小值的判断标准是:再加密一倍,Im(neff)的变化不超过5%,就说明收敛了。这是数值仿真领域的通用收敛性判据,在实际项目中要严格执行。
3. 模式分析求解与参数提取的精细操作
3.1 模式分析求解器的设置细节
完成几何、材料、物理场、网格之后,进入求解环节。
在COMSOL的研究节点中,添加“模式分析”研究步骤,然后设置“所需模式数”(Desired number of modes)。这里要注意,并不是设多少就一定能求出多少,有效的模式数是有限的。弯曲波导结构本身可以支持的模式数量受芯层尺寸和截止条件约束,设置20个模式,往往只有两三个是有物理意义的束缚模或漏模,其余全是高阶辐射模或数值伪模式。
判断模式是否有物理意义,有两个依据:第一是看场分布是否集中在波导芯层附近,第二是看有效折射率实部是否大于包层折射率、小于芯层折射率。符合这两个条件的模式才是我们关心的模式。
模式搜索基准值(Search for modes around)的设置也很关键。以SOI波导为例,可以在neff实部1.5到3.4之间搜索。如果一开始不知道大概值,可以先设一个2.0,看求解结果,再根据结果调整。
求解器类型上用默认的“ARPACK”特征值求解器就可以。COMSOL在新版本中用SPOOLES或者MUMPS做线性求解器,对于二维模式分析问题,计算量不大,内存足够就可以稳定跑完。
3.2 有效折射率实部与虚部的读取
求解完成后,结果节点会自动生成有效折射率列表。每一行对应一个模式,显示实部和虚部。
这里有一个经验值判断:如果 Im(neff) 出现正的量级(比如1e-3量级甚至更大),且实部明显偏离预期束缚模的范围,多半不是你想要的模式;如果虚部是零或者负值,可能是数值噪声,需要通过网格加密进一步确认。
负虚部并代表增益,而是相位约定或数值误差的表现之一。很多初学者看到 Im(neff) 为负数就慌了,其实只要幅值小到1e-8以下,在数值上就是零,对应的物理图像是“该模式在这个精度下无损”,可以认为趋近于纯束缚模。
实部的读取比较直观。弯曲波导模式下 Re(neff) 会略低于同等截面直波导的模式折射率,因为模场在弯曲外侧的偏移会让部分能量进入折射率更低的包层区域。这个“等效折射率降低”的量与实际偏差和弯曲半径有关,在环形谐振器的自由谱范围设计中需要认真对待。
3.3 从介质损耗到弯曲损耗:有效折射率虚部到底包含了什么
在仿真中,虚部不仅包含弯曲辐射损耗,还包含材料的本征吸收损耗。如果你在材料设置里指定了硅和二氧化硅的复折射率(虚部不为零),那么仿真算出的 Im(neff) 就是材料吸收和弯曲辐射的叠加值。
实际操作中,为了单独研究弯曲损耗,我会先跑一个直波导的对照仿真,同样设置下只把几何换成直的,得到一个直波导虚部,这个值反映材料本征损耗。再用弯曲波导的总虚部减去直波导虚部,得到的才是纯粹的弯曲辐射损耗。
这个方法在低损耗、大弯曲半径的场景下尤其重要,因为弯曲损耗可能已经很小,比如几个dB/cm甚至0.1dB/cm级别,这时候材料吸收占主导,不扣除的话,弯曲损耗的数值会被材料损耗严重污染。
3.4 参数化扫描:一个批量计算半径-损耗曲线的方法
实际工程中,我们往往需要一条“弯曲半径——损耗”曲线,而不是单点数值。在COMSOL中,这可以通过参数化扫描实现。
把弯曲半径 R 设为全局参数,几何中两条圆的半径用参数表达式定义,比如:
内半径 = R - w/2 外半径 = R + w/2
然后右键点击“研究”,添加“参数化扫描”,扫R从5微米到50微米,步长可以按对数或指数取值。因为弯曲损耗随半径变化跨度可能达到几个数量级,线性取点很浪费,建议按R = 5, 7, 10, 15, 20, 30, 50微米这样的方式取点。
求解完成后,在结果节点里生成有效折射率列表,把数据导出成文本。用Python或者Excel处理时,按第1节的公式把虚部换算成dB/cm,画出曲线,整条“半径-损耗”曲线就出来了。
3.5 COMSOL安装环境与版本选择
做这类仿真之前,COMSOL软件的安装和版本选择也影响实际体验。不同版本的COMSOL(比如5.6、6.1、6.2)在模式分析、PML处理、求解器速度上都有差异,但核心操作流程一致。老版本的“电磁波,频域”接口在PML设置上更手动一些,新版本体验更友好。
如果你的机器内存小于16GB,建议优先用二维模型,三维弯曲波导仿真对内存消耗极大。另外,COMSOL的“案例库”里有一个Ridge Waveguide的例子,虽然是直波导,但它的模式分析设置几乎可以直接套用到弯曲波导,值得参考。
4. 常见问题与排查技巧实录
4.1 有效折射率虚部偏大,怎么排查
虚部偏大是最常遇到的问题。如果你仿真出的 Im(neff) 明显高于预期(比如大两个数量级),按以下顺序排查。
第一步,检查PML是否生效。最简单的方式是看一下辐射场的模分布图:如果PML吸收良好,模式场在到达PML之前应该已经衰减到非常小;如果场在PML内部仍然有驻波状干涉条纹,说明PML没起作用。这时检查PML域是否被物理场接口正确识别,以及PML厚度是否足够。
第二步,检查边界是否太近。扇区的外边界要离芯层足够远,我一般保证芯层外壁到PML内边界之间有至少3到5微米的包层空间。如果边界太近,即使有PML,也会人为提高辐射损耗。
第三步,检查网格。把芯层网格尺寸缩小一半,重新求解,看虚部变化。如果变化超过20%,说明网格没有收敛,虚部结果不可信。继续细化直到变化小于5%。
4.2 有效折射率虚部为负值或零
虚部出现负值或者严格为零的情况,通常有两种可能。
第一种,这个模式确实是无损的束缚模。在弯曲半径足够大时,弯曲损耗可能小到数值精度无法分辨,Im(neff) 就表现为0或负的10⁻⁹量级的噪声。这属于正常情况,说明这个半径下弯曲损耗已经可以忽略。
第二种,网格太粗,数值耗散不够,导致辐射损耗被数值误差掩盖了。这时加密网格,虚部会逐渐稳定在一个正值上。如果加密之后仍然是0,才说明模式是真正的束缚模。
4.3 模式列表里找不到目标模式
有时扫描设置的模式数足够多,但结果列表里就是找不到实部在预期范围内的模式。这种情况通常与搜索基准值(Search for modes around)有关。
把这个基准值改到包层折射率以下,比如1.0,COMSOL会从低值往上搜索,这样可以捕获宽范围内的模式。但要注意,这样会连带求出大量无物理意义的辐射模,需要在后处理里筛选。
另一种办法是先跑一个直波导模式分析,得到直波导neff,然后以此为基准搜索弯曲波导模式。弯曲波导模式与直波导模式的neff偏差不会太大,这个策略成功率很高。
4.4 弯曲损耗的规律性验证
仿真做好之后,不是直接把数据拿给下游去用就完事了。我建议做一次规律性验证,确认结果在物理上是自洽的。
一个有效的验证方法是:算一条“弯曲半径——损耗”曲线,然后用半对数坐标画出来。因为弯曲损耗的近似公式中含有exp(-const × R)因子,所以在半对数坐标下,损耗应该近似是一条单调下降的直线。如果你的曲线在这个坐标下出现非单调、抖动或台阶,那大概率是数值问题。
另一个验证方法是:把弯曲半径取得特别大,比如1毫米甚至更大,算出的虚部应该收敛到直波导的虚部。这个可以作为极限情况的对照实验。
4.5 环形谐振器设计中的实际经验
把弯曲波导模式分析落到实际器件里时,还有两个问题容易被忽略。
第一个是弯曲波导的有效折射率会随半径变化,所以环形谐振器不同半径下的共振波长不是简单的线性缩放。计算自由谱范围(FSR)时,用固定有效折射率会引入误差,准确做法是用弯曲模式下的neff实部数值。
第二个是弯曲波导与直波导连接处的模式失配损耗。弯曲模场整体外偏移,与直波导模场的重叠积分小于1,会额外引入一部分过渡损耗。要减小这种损耗,需要使用欧拉弯(Euler bend)或者偏移(offset)补偿,这些优化都可以基于COMSOL的模式场重叠积分结果来定量设计。
5. 从模式分析到器件设计的进阶应用
5.1 把模式分析结果用于环形波导结构设计
模式分析给出了每单位长度的损耗和有效折射率,在整环结构的设计中,这两项数据就可以直接纳入链路预算。
环形谐振器的插入损耗和Q值估算与直波导不同。直波导可以沿着传播路径累加损耗,环形结构则要考虑腔内往返损耗。每次绕行一圈,光场经历的相位变化是:
Δφ = β × 2πR = k₀ × Re(neff) × 2πR
如果2πR正好是波长的整数倍,发生谐振。这里的Re(neff) 一定得用弯曲模式下的折射率,用直波导的neff算出来的谐振波长与实际有偏差。偏差小的时候可能只有零点几个纳米,但对高Q谐振器来说,这个偏差已经足够致命。
每圈的功率衰减因子是 exp(-α × 2πR),α由Im(neff)换算而来。把这个值代入耦合模方程,就能算出谐振器的消光比、带宽和Q值。COMSOL模式分析提供的这两个数,是整个器件仿真的输入基础。
5.2 模式失配损耗与过渡区优化
弯道与直道连接处,模式场偏移会导致耦合损耗。要准确评估这个损耗,可以把同一个截面分别用直波导和弯曲波导跑模式分析,然后在同一个几何位置上计算两个模式的重叠积分。
重叠积分定义为:
η = |∫∫ E1 · E2*dA|² / (∫∫ |E1|²dA × ∫∫ |E2|²dA)
这项计算在COMSOL中不直接提供,但可以导出电场分量,在MATLAB或Python中计算。实际操作起来,这个值是评价S弯、欧拉弯过渡结构优劣的核心指标之一。
更高效的方法是做一个参数化扫描:计算不同弯曲半径下的模式场,然后与直波导模式场做重叠积分,可以得到“模式失配损耗——半径”的曲线,用于选择过渡弯的最小半径。
5.3 模式截止与大半径极限
弯曲波导存在一个有趣的现象:弯曲会让某些原本截止的高阶模变成一个“泄漏模”或“whispering-gallery模”,从而在特定带宽内被观察到。这在高阶模环形谐振器、生物传感、轨道角动量复用等器件中有专门应用。
不过这类应用对模式分析精度要求极高,虚部可能小到1e-7以下。这个量级下,网格收敛性非常重要,建议用比默认严格很多的网格设置,并且做严格的收敛性测试。匹配层厚度也要适当加厚,确保残余反射不会干扰虚部的计算。
5.4 向三维结构扩展时的策略建议
二维模式分析解决的是“截面模式”问题,但有些结构无法用截面近似。比如锥形弯曲波导(宽度沿弧长渐变)、弯曲布拉格光栅等,需要在三维里建模仿真。
三维仿真与二维模式分析的思路完全不同。如果器件沿传播方向变化缓慢,可以分段截取多个截面,每个截面单独做模式分析,把整段视为绝热变化,用耦合模理论近似。如果变化剧烈,只能老老实实做三维全波仿真。这时计算资源需求会急剧上升,做参数扫描之前,先用二维模式分析锁定大致参数区间,是比较理性的工作流。
在实际操作中的几点体会
把这一整套流程跑过一遍之后,我自己最深的体会是:弯曲波导模式分析,本质上不是在算一个“模式”,而是在算两个数——Re(neff) 决定相位,Im(neff) 决定损耗,两个数一个都不能偏。
Re(neff) 偏了,谐振波长的设计就是错的;Im(neff) 偏了,损耗预算全是空中楼阁。而这两个数恰恰都需要靠足够细致的网格、足够合理的边界条件才能拿准。COMSOL本身不会替你把关,它只会忠实地解你交给它的方程,你设置错了,它就给你一个精确的错误结果。
另外一个小建议:刚开始接触弯曲波导仿真时,先不要直接上复杂结构。拿一个最简单的SOI矩形波导,用50微米半径跑一个模式,再用100微米跑一个,看虚部是不是按预期下降。观察模场是不是往外偏。等你对这些基本规律有了直觉,再去做环形谐振器、做参数扫描,就会顺利得多。
希望这篇文章能帮你少走一些弯路。仿真这东西,前期多一点耐心,后面就能少一点返工。