Comsol 复现光子晶体平带合并 BIC 的奇妙之旅
comsol计算光子晶体平带合并BIC复现包含二维能带三维能带品质因子和远场偏振计算在光子学领域光子晶体的研究一直是热点尤其是与平带合并 BICBound States in the Continuum连续域中的束缚态相关的现象。今天咱们就来唠唠如何用 Comsol 复现这一系列有趣的计算包括二维能带、三维能带、品质因子以及远场偏振计算。二维能带计算首先咱们看看二维能带的计算。在 Comsol 中我们得先搭建起光子晶体的二维模型。假设我们有一个简单的正方晶格光子晶体结构晶格常数为a。// 定义几何参数 a 1e-6; // 晶格常数设为1微米接着在模型设置中我们要选择合适的物理场对于光子晶体能带计算电磁波频域emw物理场是个不错的选择。在边界条件设置上周期性边界条件是关键。我们沿着晶格的两个方向设置周期性边界这样才能模拟出无限周期结构的特性。// 设置周期性边界条件 // 在 x 方向 model.physics(emw).bc(bc1).set(type, periodic); model.physics(emw).bc(bc1).set(periodicPair, bc2); // 在 y 方向 model.physics(emw).bc(bc3).set(type, periodic); model.physics(emw).bc(bc3).set(periodicPair, bc4);完成这些设置后我们就要进行参数扫描来获取能带信息啦。我们以波矢k作为扫描参数在布里渊区内进行扫描。// 定义波矢扫描范围 k_start 0; k_end 1/a; k_points 50; k_vec linspace(k_start, k_end, k_points); // 进行参数扫描 sweep model.study(std1).create(parametric); sweep.set(parameterName, k); sweep.set(parameterValues, k_vec);通过上述步骤运行计算后我们就能得到光子晶体的二维能带图啦。这能带图能直观地告诉我们光子在这个二维周期结构中的允许能量状态分布。三维能带计算从二维迈向三维模型搭建会稍微复杂一些但思路是类似的。假设我们现在有一个体心立方晶格的光子晶体。// 定义三维晶格常数 a_3d 1.5e-6;同样选择电磁波频域物理场不过在边界条件设置上我们要在三个方向都设置周期性边界条件。// 在 x 方向设置周期性边界 model.physics(emw).bc(bcx1).set(type, periodic); model.physics(emw).bc(bcx1).set(periodicPair, bcx2); // 在 y 方向 model.physics(emw).bc(bcy1).set(type, periodic); model.physics(emw).bc(bcy1).set(periodicPair, bcy2); // 在 z 方向 model.physics(emw).bc(bcz1).set(type, periodic); model.physics(emw).bc(bcz1).set(periodicPair, bcz2);参数扫描部分这次我们需要在三维的布里渊区内对波矢k进行扫描这就涉及到三个方向的波矢分量kx,ky,kz。// 定义三维波矢扫描范围 kx_start 0; kx_end 1/a_3d; kx_points 30; kx_vec linspace(kx_start, kx_end, kx_points); ky_start 0; ky_end 1/a_3d; ky_points 30; ky_vec linspace(ky_start, ky_end, ky_points); kz_start 0; kz_end 1/a_3d; kz_points 30; kz_vec linspace(kz_start, kz_end, kz_points); // 进行参数扫描 sweep_3d model.study(std2).create(parametric); sweep_3d.set(parameterNames, {kx, ky, kz}); sweep_3d.set(parameterValues, {kx_vec, ky_vec, kz_vec});运行计算后我们就能获得三维能带信息通过可视化我们能从不同角度观察光子在三维周期结构中的能量分布。品质因子计算品质因子Q是衡量光子晶体共振特性的重要参数。在 Comsol 中计算品质因子的方法依赖于对共振模式的分析。假设我们已经找到了某个共振模式通过模拟得到了该模式下的电场分布E和能量损耗P_loss。品质因子Q可以通过以下公式计算comsol计算光子晶体平带合并BIC复现包含二维能带三维能带品质因子和远场偏振计算\[ Q \frac{\omega0 U}{P{loss}} \]其中\(\omega_0\) 是共振频率\(U\) 是存储的总能量。在 Comsol 中我们可以通过后处理操作来提取这些数据。// 提取共振频率 omega_0 model.result(sol1).get(emw.freq); // 计算存储的总能量 U model.result(sol1).evaluate(intop1(0.5*emw.Dr*conj(emw.E)0.5*emw.Br*conj(emw.H))); // 计算能量损耗 P_loss model.result(sol1).evaluate(intop1(0.5*real(emw.Je*conj(emw.E)))); // 计算品质因子 Q omega_0 * U / P_loss;远场偏振计算对于远场偏振计算我们需要先在近场得到电场强度分布。然后通过 Comsol 提供的远场计算模块将近场数据外推到远场。// 选择远场计算模块 model.add(farfield, emw); // 设置远场计算参数 model.physics(farfield).set(evaluationType, farfield); model.physics(farfield).set(coordinateSystem, cartesian); // 运行远场计算 model.study(std3).run(); // 提取远场电场分量 Ex_far model.result(sol3).get(farfield.Ex); Ey_far model.result(sol3).get(farfield.Ey); Ez_far model.result(sol3).get(farfield.Ez); // 计算偏振方向 polarization_angle atan2(Ey_far, Ex_far);通过上述一系列操作我们就能复现光子晶体平带合并 BIC 相关的二维能带、三维能带、品质因子和远场偏振计算啦。希望这篇博文能对正在研究光子晶体的小伙伴们有所帮助
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419896.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!