COMSOL二维六边形光子晶体能带分析:三角晶格TE与TM模式的区分与结果,以及Y轴晶格周期a...

张开发
2026/6/4 12:38:55 15 分钟阅读
COMSOL二维六边形光子晶体能带分析:三角晶格TE与TM模式的区分与结果,以及Y轴晶格周期a...
comsol二维六边形光子晶体能带-三角晶格 区分TE和TM模 y轴数据差异来源于晶格周期a的选择不同不影响结果 comsol等离子体热流耦合玩过光子晶体的朋友应该都遇到过TE和TM模式区分的问题。最近在COMSOL里折腾二维六边形光子晶体能带计算时发现三角晶格的设置里藏着几个有意思的细节。今天就结合代码实操聊聊那些容易踩的坑。先来看六边形晶格的几何构建。用COMSOL的几何脚本功能创建正六边形阵列核心是掌握坐标变换规律。比如下面这段生成蜂窝状空气孔的代码a 1e-6; % 晶格常数 r 0.4*a; % 孔半径 for n -2:2 for m -2:2 x a*(n 0.5*mod(m,2)); y a*m*sqrt(3)/2; geom.create(circ, Circle, {x, x, y, y, r, r}); end end这里mod(m,2)的妙用实现了三角晶格的错位排列。注意晶格常数a的单位换算——当处理微米级结构时电磁波的频率响应会呈现出明显的带隙特征。comsol二维六边形光子晶体能带-三角晶格 区分TE和TM模 y轴数据差异来源于晶格周期a的选择不同不影响结果 comsol等离子体热流耦合在模式分析时TE和TM的边界条件设置是个分水岭。对于TM模磁场在面外需要在周期性条件中锁定Ez分量而TE模电场在面外则要固定Hz分量。实际操作时容易混淆的是端口激励方向// TM模式端口设置示例 emw.port1.set(Direction, Down); emw.port1.set(Ex, 0); emw.port1.set(Ey, 0); emw.port1.set(Ez, 1); // 激励面外电场有个有趣的现象当不同文献的能带图y轴数值相差2倍时别急着怀疑自己。这通常源于晶格常数a的定义差异——有的用最近邻间距有的用晶胞边长。只要归一化频率ωa/2πc一致物理本质是相同的。可以做个参数扫描验证a_values linspace(0.8e-6,1.2e-6,5); for a a_values model.param.set(a, a); model.study(std1).run; norm_freq results/(c0/a); % 频率归一化 % 绘图数据应重合 end当涉及等离子体与热流耦合时重点在于多物理场联姻。比如用Drude模型描述金属纳米颗粒material1.def.ns.setIndex(epsilon_r,1 - wp^2/(w*(wi*gamma)),... {wp,3e15,gamma,1e13});这时候热源项需要从电磁损耗导出heat.Q emw.Qh; % 电磁损耗转为热源 heat.F -k*T^3*ux; % 非线性热流项有个实战经验当计算发散时试试把电磁和热的时间尺度分离用分步耦合代替全耦合。毕竟等离子体振荡~fs级和热扩散~ns级根本不在一个时间维度上。最后给个忠告处理周期性结构时别忘了检查布里渊区路径设置是否正确。三角晶格对应的倒格子也是六边形kx从Γ到M再到K点的路径设置错误的话整个能带图会面目全非。这可比调参数重要多了——方向错了再努力也是白搭。

更多文章