COMSOL弯曲波导模式分析:有效折射率与损耗精细计算指南
发布时间:2026/9/15 22:27:23 作者:尧图编辑部 阅读量:1,286

我最早被弯曲波导折磨是在做硅光子集成器件的时候。直波导算得好好的一换到弯曲结构有效折射率就开始飘损耗也怎么都算不对仿真结果看起来有鼻子有眼但跟实际测试对不上。后来沉下心把Comsol里弯曲波导模式分析这套流程重新捋了一遍才发现很多细节没吃透。这篇东西就是把我在这个过程中的思路、步骤、踩过的坑一次讲清楚重点围绕有效折射率和损耗的精细计算适合正在做集成光波导、微环谐振器、弯曲耦合器或者刚接触Comsol波导模块的朋友参考。1. 弯曲波导模式分析的整体思路拆解1.1 为什么弯曲波导比直波导麻烦这么多直波导的模式分析本质是求解一个沿传播方向平移不变的截面本征问题。你把波导截面画好设置好有效折射率搜索范围Comsol就能给出模式场分布和有效折射率。但弯曲波导不一样它多了一个几何曲率光在弯曲路径上传播时原本的正交模式会发生畸变相位波前不再是均匀平面波严格意义上甚至不存在完美的本征模只有泄漏模。这种物理上的复杂性直接反映在仿真设置里。直波导可以用二维截面加一个传播常数kz来简化弯曲波导则要么在三维里直接建弯折实体要么用二维模式分析加一个等效折射率近似。Comsol官方推荐的做法往深了挖其实是在二维轴对称或三维全波里做但很多案例都是近似的。我个人的建议是如果你只关心模式的有效折射率和弯曲损耗优先级最高的方案是用“电磁波频域”接口里三维全波模型弯曲段取一个圆弧扇区配合完美匹配层PML来吸收泄漏出去的辐射场。这样算出来的损耗才可信。很多人一上来就把整个微环谐振器建成三维完整结构然后开始扫频。这在COMSOL里不是不能跑但计算量非常大而且你很难分辨损耗里哪些是弯曲辐射损耗、哪些是模式失配损耗。更聪明的做法是先做单段弯曲波导的模式分析把单位长度的弯曲损耗算准再拿去评估整个环或者整个弯曲链路的性能。1.2 有效折射率与损耗一个实部一个虚部别搞混有效折射率是一个复数写成 (n_{eff} n_{real} i n_{imag})。实部决定光的相速度也就是光学上的等效折射率直接影响谐振波长、相位匹配条件。虚部则对应损耗虚部为正表示光在传播中衰减虚部与损耗系数 (\alpha) 的关系是[ \alpha \frac{4\pi}{\lambda} \mathrm{Im}(n_{eff}) ]单位一般是1/m如果习惯用dB/cm再做一次单位换算[ \alpha_{dB/cm} \frac{20}{\ln(10)} \times \frac{2\pi}{\lambda} \mathrm{Im}(n_{eff}) \times 100 ]这里 (\lambda) 是真空波长。算出来单位就是dB/cm。注意有些参考书里用的是 (\alpha 2k_0 \mathrm{Im}(n_{eff}))这里 (k_0 2\pi/\lambda)跟我前面写的是同一个东西别被不同的写法绕晕。所以所谓“损耗精细计算”核心就是要把复有效折射率的虚部算准。虚部数值通常比实部小好几个数量级比如实部2.6左右虚部可能是1e-5甚至1e-7这对网格精度、边界条件、求解器容差都提出很高的要求。1.3 仿真方案选型3D全波要精度2D等效要速度具体选什么方案取决于你的量化目标。我给自己定的选择标准是这样的只看模式场分布和粗略的有效折射率实部用二维截面模式分析就够了算得快方便调试模型。要做弯曲损耗定量分析必须上三维全波弯曲段两端用端口激励外侧加PML吸收辐射。如果弯曲半径特别大比如大于50微米导致损耗极低三维全波会因为网格量爆炸而变得很不划算这时候可以退回到保角变换近似的等效直波导模型但误差得自己心里有数。我试过三次用二维截面直接模拟弯曲波导把弯曲通过有效折射率近似映射成直波导的折射率分布理论上可行但实际操作里对模式边界的设定非常敏感稍不注意就会算出不正常的虚部。所以我后来做损耗都老老实实走三维全波只在需要快速扫描参数范围时用二维近似做预判。2. 几何建模与模式分析设置2.1 几何参数圆心角不要让末端影响到模式三维弯曲波导几何有一个容易被忽略的细节弯曲段两端的直通切线长度。为了能够激励出稳定的模式并让PML正常工作弯曲波导的前后两端最好各加一段直波导缓冲段。缓冲段的作用是让模式从端口激励处传播进入弯曲段时经历一个较自然的过渡而不是直接把一个直波导模式强行塞进弯曲结构里。我常用的几何是输入直波导长度10 μm弯曲段圆心角90°输出直波导长度10 μm。之所以用90°而不是一个完整的半圆或整圆是因为90°扇区足够展现弯曲模式特性而且占用的计算域小很多。整圆仿真适合验证周期性不适合做模式本征提取。弯曲内半径 (R_{in})外半径 (R_{out})波导宽度w R_out - R_in。硅波导典型宽度500 nm弯曲半径常见2 μm到20 μm之间。如果你仿真的是SOI平台建议把弯曲半径设为这个量级太小了损耗会急剧上升太接近直波导特性就没有研究价值了。建立几何时建议把弯曲段的圆心放在原点弯曲波导沿x-y平面展开光沿弯曲路径传播z方向是波导厚度方向仅当波导在z向有截面高度时或者用二维简化。我更习惯用三维模型做完整验证。2.2 材料定义与边界条件Material库别乱用折射率要自己核对Comsol材料库里的硅和二氧化硅折射率未必是你工艺对应的值。如果是标准SOI硅在1550 nm附近的折射率大约3.476二氧化硅1.444这个数据很多论文和软件都默认。但不同供应商的片子实际值会有细微差异。别小看这个差异有效折射率实部差到0.01谐振器FSR的计算就差不少。所以我的习惯是不在Comsol里选默认material而是手动定义空材料自己填折射率实部和虚部。硅在通信波段损耗极低虚部可以设为0或者1e-7级别氧化硅也类似。这样后面即使算出虚部也知道完全是几何和泄漏造成的而不是材料吸收。边界条件上模式分析里如果用了PML需要把PML的外边界设为散射边界条件或者默认连续边界都行PML区域本身会吸收向外传播的辐射场。这里的一个关键操作是PML必须紧贴计算域外边界且PML厚度至少是最大波长的1/4通常取1~2 μm就够。我遇到过PML太薄导致反射波重新进入波导区虚部出现周期性跳动的情况。2.3 端口与激励模式端口怎么选才不出错三维全波里最稳妥的激励方式是“端口”边界条件。在输入端选一个横截面指定为端口1在输出端选另一个横截面指定为端口2。每个端口模态阶数选1代表基模激励。但这里有个Comsol的坑端口模态求解默认是自动搜索该截面的模式它算出来的模式可能跟波导几何对应不上尤其当截面有对称性时容易把两个简并模都找出来。我们需要在端口设置的“模式搜索”里手动指定一个接近期望模式有效折射率的初始值让求解器锁定到那一个模式上。我一般会先用二维截面模式分析算出一个参考 (n_{eff})再填进端口设置里。如果端口前加了缓冲直波导弯曲段末端的模式会跟直波导模式有一定差异但只要差异不大损耗计算结果依然是可信的。因为整个结构的损耗主要发生在弯曲段直波导只是提供模式过渡。3. 有效折射率与损耗的精细计算方法3.1 从仿真结果中准确提取 (n_{eff}) 的实部和虚部求解完成之后结果里会给出“有效折射率”这个变量。这里的有效折射率是复数实部直接看就行。虚部则要注意符号和数量级。我经常看到有人直接拿“effective mode index”的实部当论文数据却忽略了它带有“全局模式编号”的含义。在三维全波里Comsol给出的是该端口模式下的传播常数 (\beta) 换算出的复有效折射率。如果端口模式设置的是“port 1”那么在结果里找到“beta_1”和“neff_1”其中neff_1就是该模式的复有效折射率。实际提取时我更信任从电场分布沿着传播方向做数值后处理得到的结果而不是直接读内建变量。具体方法是在弯曲波导的中心线上取一条采样线导出电场振幅或相位然后拟合幅度衰减曲线。因为弯曲波导的模式是泄漏模场沿着路径衰减幅度曲线是一条指数衰减拟合出衰减系数再除以 (2) 得到振幅衰减系数进一步换算成 (\alpha)再反推虚部。这种方法更“物理”可以避开端口模式定义里的某些数值假象。不过直接读内建neff虚部作为初值仍然有价值至少能帮你判断损耗量级是否合理。比如一个 (R5 \mu m) 的硅波导TE基模的虚部可能在1e-4上下换算成损耗是几十dB/cm这是合理量级。3.2 损耗分量拆解弯曲辐射、模式失配和数值假损耗弯曲波导里的损耗有三个来源仿真时要注意区分第一是纯弯曲辐射损耗这是几何曲率带来的光在弯曲路径上速度不匹配外侧会有能量以辐射模的形式逃逸。这个损耗随半径增大呈指数下降公式上可以参考 ( \alpha \propto \exp(-c \cdot R) ) 之类的趋势但精确值只能靠仿真。第二是模式失配损耗即弯曲段基模与两侧直波导基模不完全匹配光在接口处部分被反射或激发到其他模式。如果你在结果里看到0.99以下的透射率不一定全是弯曲损耗要检查接口处是否有多模激发。第三是最麻烦的数值假损耗这个不是真实物理损耗而是仿真数值造成的。网格太粗、PML吸收效果差、迭代求解容差不够都会造成虚部偏大。我判断假损耗的方法是做一个半径非常大的弯曲波导比如R 100 μm理论上损耗应该接近0但仿真出来的虚部若能到1e-7以下说明数值质量很好如果虚部停在1e-5级别那说明网格或PML还在造假所有小损耗的数据都不可信。3.3 网格细化策略损耗虚部对网格极其敏感弯曲波导仿真里网格是决定成败第一因素。截面方向至少需要保证波导宽度内有8个网格点以上500 nm宽度的波导最大网格尺寸设为50 nm比较稳。传播方向网格不用那么细可以放松到200 nm。PML区域的网格却要特殊处理。在PML里网格要各向异性拉伸Comsol默认的PML可以自动应用拉伸坐标但需要我们手动构建PML域并指定为PML类型。网格尺寸方面PML内网格不能太粗通常跟相邻波导外侧网格相近或者略粗一个两倍避免因为拉伸坐标而导致插值错误。网格细化验证是必须做的一步。我会固定物理条件只把网格从“较粗”改成“较细”对比有效折射率虚部的变化。如果虚部变化超过10%说明网格还没收敛要再加密。只有连续两次加密后虚部变化小于几个百分点我才认为这个数据可信。这一步很费时间但也是精细计算损耗绕不过去的路。3.4 参数化扫频提取不同半径下的损耗曲线弯曲波导损耗研究的核心不是算一个值而是得到损耗随半径变化的曲线。Comsol的参数化扫描可以直接把弯曲半径设为参数然后一键扫描多个半径。但要注意每次参数改变几何都需要重新构建网格也需要重新划分而且不同半径下同一个网格序列可能不是最优的因为弯曲更尖锐的地方需要更细的网格。我的处理方法是半径作为全局参数几何和网格尺寸都写成半径的函数。比如最大网格单元尺寸写成 ( \lambda / (20 \cdot n_{eff}) )靠近内半径处的网格可以略微加密表达式写成 ( \min(\lambda/30, 0.1 \cdot R) ) 之类的。这样可以保证每个半径点上的网格密度相对一致。扫描完成后把每个点的 ( \mathrm{Im}(n_{eff}) ) 通过前面那个公式换算成dB/cm再用半对数坐标画图就能很直观地看到弯曲损耗随半径指数下降的规律。那条曲线可以直接用于器件设计。4. 常见问题与排查技巧实录4.1 问题一模式分析结果里突然多出莫名其妙的模式端口模式自动求解时会输出了很多高阶模式甚至有些显然不是波导导模的伪模。这种伪模一般是因为搜索范围太宽或者截面网格不够细。解决办法是缩小有效折射率搜索区间比如我预期 (n_{eff}) 在3.4附近就把搜索范围设定为3.0到3.5不要从1到4。另一个技巧是手动指定需要的模式数比如只需要1个模式就只让它输出1个避免被高阶模式干扰。4.2 问题二损耗结果随仿真域大小共振式波动如果你的PML外边界离波导太近或者PML厚度不够泄漏辐射到达PML边界后会反射回来与导模重新干涉造成有效折射率虚部随着波长或半径出现周期性振荡。判断方法很简单把PML厚度增加一倍再看虚部如果变化很大就是PML没做好。我遇到最典型的情况是90°弯曲波导的外辐射主要在弯曲平面内向外传播PML必须重点包裹弯曲外半径那一侧。所以我通常把PML做成一个包围整个弯曲扇区的壳层而不是只在最外层加一个矩形框。PML形状要贴合波导的弯曲路径不然吸收效果很差。4.3 问题三损耗虚部是负的或者比直波导还小负虚部显然物理上不可能除非有增益一般是符号约定问题。Comsol的时谐因子用的是 (e^{-i\omega t}) 还是 (e^{i\omega t})不同版本可能不同导致虚部符号不同。如果你发现虚部是负的说明可能模式传播方向设置反了或者端口方向定义反了试着把端口方向反转再看。还有一种情况是虚部小到接近机器精度比如1e-9这种那说明该模式基本无损耗但要注意这也许是数值上“欠阻尼”的表现不能直接当成物理损耗。4.4 问题四算出来的弯曲损耗跟文献差一个数量级这时候别急着怀疑软件先检查两个地方。第一材料折射率是否跟文献一致第二波导截面尺寸是否完全一致。哪怕厚度差20 nm弯曲损耗可能差2倍以上。尤其是SOI脊波导的刻蚀深度不同文献之间差异很大。对比前一定要统一所有物理参数。另外文献里说的弯曲损耗有的写成每90°损耗dB有的是每厘米损耗dB单位不统一最容易造成“差一个数量级”的假象。换算时注意弯曲长度为 (L R \cdot \theta)弧长单位长度的损耗换算成整段损耗要乘以弧长。4.5 快查速记表检查项参考值/做法波导截面网格宽度方向至少8个点最大尺寸50nmPML厚度至少1μm建议2μm有效折射率搜索范围根据近似值±0.2别全范围扫虚部收敛判据两次细化网格虚部变化5%弯曲损耗单位换算dB/cm 20/ln(10) * (2π/λ) * Im(neff) * 100端口模式初始值用二维截面算出的neff填入我个人在实际操作中最深刻的体会是用Comsol算弯曲波导损耗90%的时间都花在判断“这个数字可不可信”上而不是点击运行。你得不断地人为设置一些“已知答案”的测试模型来校准模型。比如先用直波导验证虚部为0再用大半径弯曲验证损耗接近0最后才敢信小半径的损耗结果。这套校准逻辑比任何参数面板里的高级设置都管用。后面你如果想把微环谐振器的Q值算出来这套弯曲波导损耗数据直接就能用不然整环仿真误差会让你怀疑人生。