最近研究X切型绝缘体上铌酸锂薄膜(LNOI)的倍频(SHG)转化效率,COMSOL仿真前前后后跑了一个多月,越跑越觉得这东西比想象中有意思得多。LNOI这两年几乎是集成光子学里的“顶流”平台,几百纳米厚的单晶铌酸锂薄膜,配合氧化硅埋层形成高折射率差,光可以被死死压在亚波长截面的波导里。这个结构先天适合做非线性频率变换,尤其是倍频,因为模式体积小,光场强度高,波导色散又给了你调相位匹配的空间。今天就把我这阵子摸索出来的仿真思路、代码片段和踩坑记录整理出来,希望能让刚接触这个方向的朋友少走点弯路。
这篇内容我尽量用“工程化”的口吻写:不追求论文级别的严谨,但求每一步能落地。适合正在做LNOI波导倍频设计、准备用COMSOL做模式分析和效率预估、或者搞不清楚X切型材料方向怎么给的人。你不需要是COMSOL高手,但需要大概知道波动光学模块长什么样。下面从物理背景开始,一路讲到代码和后处理,最后是问题排查。
1. 为什么大家都在盯X切LNOI做倍频
1.1 材料底子好,薄膜平台更占便宜
铌酸锂在非线性光学材料里属于“全科生”:二阶非线性系数大,透光范围覆盖可见到中红外,还有很好的电光、声光效应。其中最常用的d33系数大约在27pm/V附近,这比磷酸钛氧钾、砷化镓这些常见非线性材料高出不少。但块状铌酸锂倍频有个尴尬的地方——相互作用长度够长,可光斑尺寸很难压下来,转换效率靠高泵浦功率硬堆。
到了LNOI薄膜时代,情况完全不同。薄膜厚度通常只有300到700nm,脊形波导的模场面积可以做到1μm²以下,微瓦量级的泵浦功率就能在波导里产生很高的功率密度。而且LNOI用的是单晶薄膜,材料损耗低,晶轴取向可以精确控制,这对需要具体判定非线性张量方向的仿真非常关键。
1.2 X切型到底切出了什么
铌酸锂是三方晶系,常说的切型由晶轴和薄膜法向的关系决定。X切型表示薄膜表面法线沿晶体的X轴,而光轴Z轴躺在薄膜平面内。Z切型则是表面法线沿Z轴,光轴垂直于薄膜平面。
这个区别在倍频仿真里非常重要。LNOI波导通常是在薄膜上刻出脊形结构,光沿着波导方向传播。对X切型来说,光轴Z在膜面内,你可以设计一个电场沿Z方向偏振的横电模式,正好激活最大非线性系数d33。而Z切型的TE模电场基本只在膜面内振荡,和光轴垂直,更多依赖d31这类较小的系数。所以在需要高效率倍频时,X切型是常见选择,这也是我做仿真时首选它的原因。
1.3 仿真到底要回答什么问题
做LNOI倍频仿真,核心不是“把COMSOL跑通”,而是回答几个具体问题:波导截面形状、薄膜厚度和刻蚀深度怎么选,才能让泵浦光和倍频光在有效折射率上满足相位匹配;模式场分布能产生多大重叠;在给定泵浦功率和波导长度下,倍频输出功率到底是多少。这些问题如果只靠实验盲调,成本极高。仿真能提前把可能参数区域扫出来,缩小实验范围。这也是我这段时间一直用COMSOL反复算的原因。
2. 仿真模型背后的物理
2.1 SHG的起点:二阶非线性极化
倍频过程本质上是由二阶非线性极化产生的。在频率域里,二次谐波极化强度可以写成:
P_i(2ω) = ε0 * χ_ijk(2)(-2ω; ω, ω) * E_j(ω) * E_k(ω)这里的χ(2)是二阶非线性磁化率张量,而工程上更习惯用非线性系数dijk,两者关系是χ(2) = 2d。铌酸锂的d张量有确定的空间取向,一旦材料坐标系和模型坐标系不对齐,计算结果就会完全错误。
仿真中我采用的思路是“泵浦不耗尽近似”:假设倍频效率不高,泵浦光在传播过程中基本不衰减。先求出泵浦模,再由泵浦场平方得到倍频频率的非线性极化,把它当作等效源去求解倍频场。这个近似在小信号转换效率低于百分之十几时非常可靠,而且计算量远小于全耦合的三波混频求解。
2.2 转化效率公式和有效模面积
在完美相位匹配且无损耗情况下,波导倍频转换效率可以用下面这个形式估计:
P_SHG = (2ω² d_eff² L²)/(ε0 c³ n_p² n_s A_eff) * P_pump²其中ω是泵浦角频率,d_eff是有效非线性系数,L是相互作用长度,n_p和n_s分别是泵浦光和倍频光的模式折射率,A_eff是有效模面积。这个公式告诉我们三件事:效率正比于泵浦功率的平方,正比于长度平方,反比于有效模面积。因此波导设计的目的就是把模场压缩到很小,同时保证两个频率的模场尽量重叠。
有效模面积由泵浦模和倍频模的场分布共同决定,不是简单拿波导截面几何面积来算。公式里还会出现模式重叠积分,所以在仿真后处理时不能用“一个矩形面积”代替。
2.3 相位匹配:从Δk到准相位匹配
倍频要高效,必须满足波矢匹配:
Δk = k_2ω - 2k_ω = 0换成有效折射率就是:
Δk = (2ω/c) * (n_eff(2ω) - n_eff(ω))LNOI波导的优势在于,泵浦光和倍频光在同一个几何结构里的模式色散可能刚好相等,也可能非常接近。只要合理调节波导宽度、薄膜厚度、刻蚀深度、上包层材料等,就有希望让n_eff(2ω)等于n_eff(ω),实现真正的“模式色散相位匹配”。
如果色散怎么调都不为零,还可以用周期性极化进行准相位匹配。周期Λ满足:
Λ = 2π / |Δk|仿真时,可以通过在非线性系数d_eff上引入周期性的符号反转来实现。手动建模周期极化有点麻烦,但用参数化几何或定义空间依赖的材料参数也能做。
2.4 COMSOL里怎么把非线性源“装”进去
COMSOL的波动光学模块默认是线性系统,不会自动算二阶极化。我的做法是:在倍频频率的电磁波频域研究中,添加外部电流密度作为源。因为时谐场里极化强度P和电流密度的关系是:
J = ∂P/∂t = iωP所以对倍频频率,外部电流密度为:
J(2ω) = i2ω * P_NL(2ω)在COMSOL域条件里,把Jx、Jy、Jz的表达式写成由泵浦模式场分量平方组合成的非线性源项。这样求解出来的就是倍频场。方法不算复杂,但要注意源项的表达式和材料坐标系的映射关系,写错了效率曲线会非常奇怪。
2.5 归一化效率怎么算才可靠
做参数扫描时,我会统一用“归一化倍频效率”来横向比较不同结构,单位通常写成%/(W·cm²)或者%/(W·cm)。仿真流程里先固定泵浦功率为1W,计算出倍频输出功率后,再除以1W和长度平方。但COMSOL模式分析解出来的场是任意归一化的,必须先把泵浦模场幅度缩放,使其携带的真实功率等于1W,再去平方构造非线性源。很多人结果离谱,往往就是漏了这一步。
3. COMSOL实操:从建几何到出效率
3.1 几何与材料参数设置
以X切LNOI脊形波导为例,我通常建二维截面模型,传播方向用有效折射率来描述。几何从上到下依次是空气/二氧化硅覆盖层、铌酸锂脊形区、薄膜残留层、二氧化硅埋层、硅衬底。空气和二氧化硅覆盖层在实际器件中常见,不能随手省略,因为上包层会直接影响模式色散。
常用起始参数:LNOI薄膜厚度500nm,脊宽800nm,脊刻蚀深度300nm,侧壁倾角稍微留几度模拟实际工艺,BOX层厚度2μm,PML吸收层放在最外侧。这些参数不是标准答案,但适合作为初值扫描的原点。
材料设置要非常小心。铌酸锂是单轴晶体,折射率需要区分寻常光和非常光,对应折射率no和ne。X切型意味着晶轴Z在膜面内,材料坐标和模型坐标存在旋转关系。最简单的方式是直接在COMSOL材料节点里定义各向异性介电常数张量,根据晶轴方向把主值转动到模型坐标系。SiO2、空气和Si在倍频波段吸收很小,折射率设为常数即可。
3.2 模式分析:要把两个频率的模式都找到
我习惯建立两个独立研究。第一个研究做模式分析,求解泵浦频率下的本征模;第二个研究做倍频频率的模式分析。也可以在同一模型里设置两个“电磁波,频域”接口,分别绑定不同频率,但物理上它们并不会自动耦合。
模式分析求解器用特征值求解器,搜索一个有效折射率范围。比如泵浦波长1550nm,薄膜波导有效折射率大概在1.8到2.1之间,就搜索这个范围。倍频波长775nm,有效折射率可能因为强色散掉到1.6到1.9,需要单独设置搜索起点。每个频率我都要求前几个模式都算出来,从中找重叠度最高且强度最集中的基模。
网格也是关键。波导截面小,场变化快,我通常用“极细”网格并加上边界层网格。膜面内至少要有6到8个网格单元跨过脊宽,否则有效折射率误差会直接影响相位匹配判断。
3.3 从泵浦模到倍频源的完整流程
求完泵浦模后,真正的SHG仿真才开始。流程是这样的:
第一步,把泵浦模场导出。用mphinterp或COMSOL后处理中的“表面最大值”确认场分布;第二步,对泵浦模做功率归一化。计算通过波导截面的平均功率,然后给模式场乘一个系数,让积分功率等于1W;第三步,根据归一化泵浦模场分量,在倍频频率的电磁波频域研究中设置外部电流密度。表达式形如:
Jx = 1i * 2 * omega * 2 * eps0 * (d31*Ey*Ez + d32*Ex*Ez + ...)这里省略号代表你需要根据有效非线性系数具体展开。COMSOL里还可以用变量定义把这一大串表达式封装起来,避免在多个边界和域里重复写。
第四步,求解倍频频率下的受迫波动方程。由于源项已经确定,这是一个线性求解问题,不需要迭代;第五步,积分倍频频率处通过截面或某个监视边界的坡印廷矢量,得到输出功率P_SHG。
3.4 参数扫描与相位匹配曲线
我通常把波导宽度、薄膜厚度、刻蚀深度设成参数化扫描变量。每个参数点都执行“模式分析两次+倍频求解一次”,最后把所有结果汇总。这里有个经验:不要只记录最终SHG功率,同时要把两个频率有效折射率随参数的变化导出来。画在一张图里,相位匹配点往往一目了然——就是n_eff(2ω)与n_eff(ω)交点附近,SHG功率出现尖峰。
扫描时还要注意模式追踪。有效折射率随宽度变化会发生模式阶次交替,某个宽度下你原本关注的基模可能排到第二或第三阶。所以我每次扫描都会输出几个模式的折射率曲线,等位后再判断哪条分支才是需要的模式,而不是盲目相信“第一阶就是基模”。
4. 核心脚本与代码分析
4.1 为什么要脚本化
COMSOL界面上手动点当然能跑,但LNOI倍频仿真有太多重复环节:改一个宽度尺寸、重新剖网格、算模式、提取场、设源、求倍频、出图。手动操作不仅慢,还容易漏同步。我选择用LiveLink for MATLAB把建模流程脚本化。这样每组参数都能自动跑,半夜挂着扫参数,第二天起来直接看结果。
下面这段代码是整理后的核心流程,不是完整工程文件,但展示了从新建模型、模式分析到导出泵浦场的关键命令。COMSOL版本不同,API略有差异,但整体逻辑一致。
import com.comsol.model.* import com.comsol.model.util.* model = ModelUtil.create('Model'); model.component.create('comp1', true); model.component('comp1').geom.create('geom1', 2); % 参数定义 model.param().set('w', '0.8[um]'); model.param().set('h_film', '0.5[um]'); model.param().set('h_etch', '0.3[um]'); model.param().set('lam0', '1.55[um]'); model.param().set('omega', '2*pi*c_const/lam0'); % 创建几何:脊形波导截面 % 这里只画一个示意,实际需要多个矩形合并 model.component('comp1').geom('geom1').create('r_air', 'Rectangle'); model.component('comp1').geom('geom1').create('r_ridge', 'Rectangle'); model.component('comp1').geom('geom1').create('r_slab', 'Rectangle'); model.component('comp1').geom('geom1').create('r_box', 'Rectangle'); model.component('comp1').geom('geom1').run; % 电磁波频域接口 model.component('comp1').physics.create('ewfd', 'ElectromagneticWaves', 'geom1'); % 材料设置略,主要是各向异性折射率张量 LNOI % 模式分析研究 model.study.create('std1'); model.study('std1').create('mode', 'Eigenfrequency'); model.study('std1').feature('mode').set('eigenfunctionSearch', 2.0); model.sol.create('sol1'); model.study('std1').feature('mode').attach('sol1'); model.sol('sol1').run; % 导出泵浦模场数据和有效折射率 coord = [0; 0.5e-6]; % 某个采样点或截面坐标 [Ex, Ey, Ez] = mphinterp(model, {'Ex','Ey','Ez'}, 'coord', coord, 'dataset', 'dset1'); neff_p = mphglobal(model, 'ewfd.neff', 'dataset', 'dset1'); % 后续需要把场归一化到1W,再作为非线性源这段代码里最关键的是mphinterp的返回值。COMSOL模式分析解出的电场是复数,有实部和虚部,实际取回后还需要做功率归一化。我不会直接在源项里用原始场,因为一旦归一化系数算错,效率会差好几个数量级。
4.2 功率归一化和非线性源计算
归一的思路是:先通过后处理得到泵浦模在波导截面上的时间平均功率,再算一个缩放系数。这里我通常写一小段MATLAB后处理:
% 假设之前已经提取了泵浦模的电场和磁场 P_int = int_surface_pooynting; % 从COMSOL积分得到 P0 = 1.0; % 目标泵浦功率,单位W scale = sqrt(P0 / P_int); Ex_norm = Ex * scale; Ey_norm = Ey * scale; Ez_norm = Ez * scale; % 构造非线性极化源(示例分量,实际要按张量展开) eps0 = 8.8541878128e-12; d33 = 27.0e-12; % 单位m/V Pz_nl = eps0 * 2 * d33 * Ez_norm .* Ez_norm; % 简化示意 Jz_src = 1i * 2 * omega * Pz_nl;然后把这个Jz_src通过变量或函数写回COMSOL倍频研究的外部电流密度节点。注意,这里的表达式是示意性的。真实X切LNOI中d33作用的偏振方向和模式场分量对应关系必须从张量旋转里推导,不能想当然复制这个公式。
4.3 倍频求解和结果提取
新研究不需要再算本征模,只需要“电磁波,频域”在倍频频率下,加上外部电流密度。求解完成后,我用mphinterp在输出边界上取坡印廷矢量的法向分量,再积分。
% 提取倍频场 model.param().set('omega2', '2*pi*c_const/(lam0/2)'); [Ex2, Ey2, Ez2, Hx2, Hy2, Hz2] = mphinterp(model, ... {'Ex','Ey','Ez','Hx','Hy','Hz'}, ... 'coord', coordOnSection, 'dataset', 'dset2'); % 计算坡印廷矢量并积分得到P_SHG P_SHG = real(0.5 * sum(Ex2 .* conj(Hy2) - Ey2 .* conj(Hx2))) * dA; % dA是积分微元的面积这里我用了一个简化近似求坡印廷矢量。实际COMSOL后处理有自动积分表面功率的算子,建议直接用它,避免手写积分出错。我写这段只是为了说明脚本思路。
4.4 脚本防御点
跑脚本时我吃过几个亏:一是忘了在求解前把网格更新,导致几何改了但网格没跟着变;二是模式搜索范围太窄,某些参数点模式漏掉;三是材料坐标系没有跟着参数化角度变化。这些都要在脚本里加入检查逻辑。比如扫描结束后立刻打印每个点的有效折射率,如果某个点突然跳变很大,赶紧回查模式阶数。
5. 常见问题与排查技巧
5.1 模式找不到或有效折射率对不上
很多人第一步就卡在模式分析。现象是特征值求解器返回很奇怪的折射率,或者找不到目标模式。这个问题九成出在网格和搜索范围上。LNOI薄膜波导阶数高,模式分布密集,网格太粗会把模式“磨”没。建议先用非常细的网格跑一个点,确认模式场分布合理,再放宽网格做扫描。搜索范围也可以设置大一点,比如1.5到2.5,等模式出来后再缩小范围追踪特定模式。
5.2 倍频效率高得离谱
如果算出的SHG功率比泵浦功率还高,肯定不是物理。常见原因有三种:一是泵浦模没有归一化到1W,导致源项强度失真;二是倍频频率的吸收或边界反射导致场叠加异常,PML没吸收干净;三是网格问题导致场奇点处平方项爆炸。我的检查顺序是先看泵浦模和倍频模的功率积分是否与预期一致,再加密PML区域网格,最后才怀疑公式写错。
5.3 材料方向和张量矩阵错乱
X切LNOI里最阴间的坑就是坐标旋转。COMSOL全局坐标是笛卡尔坐标,但铌酸锂的Z轴可能躺在模型平面任意方向。如果你只在材料节点填一个对角折射率张量,那默认主轴完全和全局坐标重合,很可能等于用了Z切或Y切。我的做法是先用一个极简单的平板波导做验证:让光传播方向沿Y轴,电场沿Z轴偏振,算出的模式折射率应该接近ne,如果接近no,说明坐标系旋转没设对。
5.4 相位匹配扫描看不到峰值
扫完宽度发现效率一片平坦,没有尖峰,别急着怀疑物理模型。先看看你画的是不是两个频率的有效折射率差。我遇到过扫描范围不够宽,根本没跨过零失配点的情况;也遇到过模式阶次跳变,前后跟踪的不是同一个模。建议先导出n_eff随参数变化,找到交点附近,再局部加密扫描。
5.5 和实验测量对不上
仿真里效率很高,实验测出来只有几分之一甚至一个数量级差距,这很正常。实验里还有波导侧壁粗糙度、刻蚀损伤、端面耦合损耗、实际泵浦功率标定误差等因素。仿真能尽力做到的,是把相位匹配位置、波导结构参数的相对趋势算准。如果实验中最佳结构宽度跟仿真差几十纳米,先检查是不是工艺侧壁角与仿真不一致,这个影响往往比折射率取值还大。
写在最后的一个实操习惯
跑LNOI倍频仿真给我最大的感受是:模型“接线”比求解器更费心思。材料张量方向、泵浦功率归一化、模式追踪,任何一个环节出问题,结果都能美得离谱或者丑得诡异。我现在每次开新模型前,都会先花半小时做一个平板波导验证,把X切晶轴方向、d张量作用路径这些基础设定验干净,然后再上脊形波导和周期极化。这步看起来慢,实际省下的排查时间远不止半小时。
再分享一个小技巧:参数扫描时别只盯SHG功率,把有效折射率和模式电场图一起导出。很多看似反常的现象,比如效率峰值偏移、谱线不对称、模式串扰,看折射率曲线马上就能解释。仿真做到最后,往往就是用一条简单的色散曲线说服自己下一步改哪里。希望这篇语无伦次但全是实操的分享,能给你的LNOI倍频仿真省下几天宝贵时间。