Comsol超材料吸收器时域耦合模理论。 辐射损耗和欧姆损耗提取 适用于任何超表面体吸收器
先搞个最简单的金属-介质结构练手。在COMSOL里画完几何模型后,重点来了:边界条件设置藏着损耗的密码。散射边界别随便设,得用完美匹配层包裹整个结构,就像用保鲜膜包住西瓜——既不让能量泄漏到外部,又能准确计算内部损耗。
% COMSOL边界条件设置技巧 model.physics('emw').feature.create('pml1', 'PerfectlyMatchedLayer', 3); model.physics('emw').feature('pml1').set('layerType', 'cartesian'); model.physics('emw').feature('pml1').set('thickness', 0.1*lambda); % 厚度取波长十分之一跑完频域仿真别急着关窗口,时域耦合模分析才是重头戏。在结果里新建个探针,盯着电场分布随时间的变化。这时候能看到能量像退潮一样逐渐衰减——这就是损耗在"显形"。重点看两个衰减通道:辐射损耗像水蒸气蒸发,欧姆损耗像水流进沙地。
Comsol超材料吸收器时域耦合模理论。 辐射损耗和欧姆损耗提取 适用于任何超表面体吸收器
提取损耗参数的关键是玩转参数扫描。举个例子,改变金属层的电导率做参数化扫描:
// COMSOL参数扫描脚本片段 for (double sigma : new double[]{5e7, 1e8, 2e8}) { model.param.set("sigma_metal", sigma+"[S/m]"); model.study("std1").run(); // 提取Q值存入数组 Q_ohm[i] = getQValue("Ohm_loss"); }看到没?电导率变化时欧姆损耗的Q值跟着跳,辐射损耗却稳如老狗。这招特别适合验证设计——想单独控制哪种损耗,就调对应的材料参数。
网格划分是个技术活,特别是金属-介质界面。建议用边界层网格配曲率适应,像给精密零件做3D扫描:
# 非结构网格控制代码 mesh.feature('size').set('customizeOn', True) mesh.feature('size').set('hcurve', 0.1) # 曲率敏感度调至0.1 mesh.feature('size').set('hmin', 1e-9) # 最小网格尺寸1纳米最后来个实战技巧:用全局矩阵法同时提取两种损耗。在频域结果里写个积分表达式,把坡印廷矢量的散度拆成辐射项和损耗项。这相当于给能量流动装了个双通道流量计:
% 损耗分量分离公式 Ohm_loss = 0.5*real(emw.Sx*emw.Ex + emw.Sy*emw.Ey + emw.Sz*emw.Ez); Rad_loss = 0.5*imag(emw.Sx*conj(emw.Hy) - emw.Sy*conj(emw.Hx));记住,验证结果时别迷信单一方法。用三种不同边界条件跑同一模型,损耗值偏差超过5%就得回头查网格。玩转这些套路后,设计超材料吸收器就像调鸡尾酒——想要什么吸收谱线,就按比例调配两种损耗成分。