Comsol金属开口环倍频SHG转换效率计算

📅 发布时间:2026/7/10 13:41:57 👁️ 浏览次数:
Comsol金属开口环倍频SHG转换效率计算
Comsol金属开口环倍频SHG转换效率计算。打开COMSOL时总有种开盲盒的刺激感——特别是做非线性光学仿真的时候。今天咱们来折腾金属开口环谐振器的二次谐波转换效率这玩意儿在超表面设计里可是个常客。先别急着点计算先把咖啡续上手把手带你躲开几个必踩的坑。建模第一步得把几何画明白。开口环这种结构手动建模绝对会疯直接上脚本批量生成才是正解for i 1:3 model.component(comp1).geom(geom1).feature().create(ringi, Ring); model.component(comp1).geom(geom1).feature(ringi).set(r, 100e-9*i); model.component(comp1).geom(geom1).feature(ringi).set(h, 30e-9); model.component(comp1).geom(geom1).feature(ringi).set(theta0, 10); model.component(comp1).geom(geom1).feature(ringi).set(dtheta, 340); end这段代码批量生成了三个不同尺寸的开口环。注意theta0和dtheta这两个参数控制着开口角度340度的环开口就像被咬了一口的甜甜圈。纳米级尺寸直接关系到谐振频率后面调参时会发现改个5nm都能让结果亲妈都不认识。材料属性设置是重头戏。金属部分用Drude模型比单纯选Gold靠谱得多model.component(comp1).material.create(mat1, Common Materials/Silver); model.component(comp1).material(mat1).propertyGroup(def).set(relpermeability, 1); model.component(comp1).material(mat1).propertyGroup(def).set(electricconductivity, 3e7);但别被界面上的默认值骗了实际做非线性仿真时得手动输入三阶非线性极化率χ²。这里有个骚操作——在材料属性里新建自定义变量把χ²表达式写成电场强度的函数后续耦合计算时才不会报错。边界条件设置时最容易翻车。记得在开口处添加端口边界with model.component(comp1).physics(emw) as emw: emw.feature().create(port1, Port, 2) emw.feature(port1).selection().set(3) emw.feature(port1).set(PortName, input_port) emw.feature(port1).set(PortType, Circuit)这个电路型端口设置能准确计算入射功率。但注意选择边界的序号容易出错建议先用鼠标点选边界查看状态栏的边界编号再写进代码。求解器设置才是真正的玄学环节。建议先跑频域扫描找谐振峰model.study(std1).feature(freq).set(plist, linspace(200e12,400e12,50)); model.study(std1).feature(freq).set(preusethreshold, off);找到基频和谐频对应的共振频率后切到瞬态求解器model.study.create(std2); model.study(std2).create(time, Transient); model.study(std2).feature(time).set(tlist, range(0,5e-15,100e-15));时间步长别超过光穿过结构时间的1/10否则结果会像打了马赛克。建议先用5e-15秒试试水收敛后再逐步缩短。Comsol金属开口环倍频SHG转换效率计算。后处理阶段要重点盯着转换效率公式η (P2ω / Pω²) * 100%在结果里新建积分算子计算输出端口的二次谐波功率emw.result().numerical().create(intop1, IntSurface); emw.result().numerical(intop1).selection().set(4); P_omega2 emw.result().numerical(intop1).getReal(emw.Poav);注意分母的P_ω是平方项曾经有哥们儿忘了平方直接除算出来200%的效率还以为发现了新物理定律...最后给个实用脚本自动扫描参数并导出效率曲线for (double gap 20e-9; gap 50e-9; gap 5e-9) { model.param().set(gap_size, gap[m]); model.geom(geom1).run(); model.study(std2).run(); double eta model.result().table().getReal(eta_table); System.out.println(gap*1e9 \t eta); }跑完数据直接扔进Origin里拟合会发现开口间隙与效率呈指数关系——但别急着发Nature先检查网格是否足够细特别是间隙边缘的网格质量。记住COMSOL就像女朋友得顺着它的脾气来。遇到不收敛就温柔地调整阻尼系数或者把非线性求解器的迭代次数调到50次以上。祝各位的仿真结果比实验室测出来的还漂亮