利用Comsol软件分析槽波导中有效模式折射率与电场分布图的关系

comsol 槽波导 有效模式折射率 电场分布图

槽波导这玩意儿在集成光学里算是常客了,特别是需要强场限制的场景。今天咱们直接用COMSOL搞个真·手把手操作,看看怎么揪出有效模式折射率和电场分布。先说重点——有效折射率决定了光怎么在波导里散步,而电场分布直接暴露了模式耦合的秘密。

打开COMSOL先别急着建模,咱得把物理场选对。直接上波动光学模块里的电磁波频域(ewfd)。接着在几何里画个经典的三明治结构:中间是低折射率的槽层,上下夹着高折射率材料。用代码创建几何更利索:

% 创建槽波导核心层
model.component("comp1").geom("geom1").create("r1", "Rectangle");
model.component("comp1").geom("geom1").feature("r1").set("size", {"5e-6" "0.2e-6"});
model.component("comp1").geom("geom1").create("r2", "Rectangle");
model.component("comp1").geom("geom1").feature("r2").set("size", {"5e-6" "0.5e-6"});

这段代码直接生成两个矩形,注意第二个参数是尺寸设置,单位默认是米。槽高0.2微米,上下包层各0.5微米,这个尺寸对1550nm波长刚好能激发准TM模式。

材料设置有个坑要注意:折射率得用复数形式。比如硅材料别直接填3.45,得写成3.45+0.001i,虚部对应损耗。用代码批量赋值更稳:

% 材料属性设置
model.component("comp1").material.create("mat1");
model.component("comp1").material("mat1").propertyGroup("def").set("relpermeability", {"1" "0" "0" "0" "1" "0" "0" "0" "1"});
model.component("comp1").material("mat1").propertyGroup("def").set("relpermittivity", {"(3.45+0.001i)^2" "0" "0" "0" "(3.45+0.001i)^2" "0" "0" "0" "(3.45+0.001i)^2"});

这里relpermittivity用的是平方操作,因为COMSOL需要直接输入介电常数而不是折射率。注意三维各向同性设置,对角线元素相同。

边界条件搞不好会出鬼故事——完美匹配层(PML)必须安排到位。手动操作容易漏掉边缘,用代码生成PML层更靠谱:

% 自动生成PML
model.component("comp1").physics("ewfd").feature("pml1").set("pmlType", "cartesian");
model.component("comp1").physics("ewfd").feature("pml1").set("pmlThickness", "2e-6");
model.component("comp1").physics("ewfd").feature("pml1").set("pmlCoordinates", {"-3e-6" "3e-6" "-3e-6" "3e-6"});

PML厚度设2微米足够吸收反射波,注意坐标范围要比实际结构大,否则会截断物理场。

网格划分是重头戏,用自由四面体网格的话算到天亮都出不来结果。必须用扫掠网格+边界层:

% 扫掠网格设置
model.component("comp1").mesh("mesh1").feature("sweep1").set("numelements", "15");
model.component("comp1").mesh("mesh1").feature("size").set("customize", "on");
model.component("comp1").mesh("mesh1").feature("size").set("maxedge", "0.1e-6");

边界层设3层,最大单元尺寸压到0.1微米。别小看这步,网格质量直接决定有效折射率小数点后第三位准不准。

求解器参数要微调,特别是当模式接近截止条件时:

% 特征频率求解配置
model.study("std1").feature("eig").set("neigs", 5);
model.study("std1").feature("eig").set("shift", 1.2e15);

这里找前5个模式,频率偏移设在1.2e15Hz附近(对应1550nm)。有时候需要手动调整shift值才能捕获到想要的模式。

跑完仿真别急着截图,有效折射率藏在结果表的实部里:

% 提取有效折射率
neff = real(model.result().numerical("global1").getReal());
disp(['有效折射率: ',num2str(neff)]);

注意要取实部,虚部对应传播损耗。当看到neff在2.8~3.2之间波动,说明模式被正确限制在槽区。

电场分布图最容易暴露问题,用切片图配合流线图展示:

% 电场模绘制
model.result("pg1").set("data", "dset1");
model.result("pg1").feature("surf1").set("expr", "ewfd.nE");
model.result("pg1").feature("arw1").set("expr", {"ewfd.Ex" "ewfd.Ey"});

nE显示电场强度,箭头图展示矢量场。槽区电场出现明显增强,且边缘呈现指数衰减才是正常现象。如果电场在包层里乱窜,赶紧回去检查材料参数是不是设反了。

最后来个骚操作——参数化扫描槽宽观察模式演化:

% 参数扫描
for width = 0.1e-6:0.05e-6:0.3e-6
    model.param.set("slot_width", width);
    model.study("std1").run;
    neff_values(end+1) = real(model.result().numerical("global1").getReal());
end

当槽宽从100nm增加到300nm时,有效折射率应该呈现先增后减的趋势,在某个临界宽度出现模式跳变——这说明高阶模式开始被激发。这个现象用传统Marcatili近似可解释不通,必须全波仿真才能捕获。

折腾完这些,记得把电场分布动画导出gif,配合neff变化曲线发到组会PPT里,保准让老板眼前一亮。下次遇到模式耦合异常,先别怀疑人生,翻出这篇仿真流程查查是不是PML漏气或者网格划劈叉了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值