COMSOL文献复现:仿真手性结构通用模型计算透射反射率分量
COMSOL 文献复现 COMSOL 仿真手性结构通用模型,计算透射反射率分量 Tlr,Trl,Trr,Tll。 Rlr,Rrl,Rrr,Rll。
在COMSOL里折腾手性结构的电磁仿真,最头疼的就是极化分量计算。今天咱们来聊聊怎么用内置变量搭积木,把透射反射的Tlr、Trl这些魔鬼参数全给揪出来。先甩个模型框架:在RF模块选频域,材料库调出手性介质本构方程,边界条件用散射场分离入射波和反射波——这是基本操作,不展开。
重点在结果处理环节。比如要算左旋圆极化波的透射率Tll,直接调用电场分量玩矢量合成:
// 圆极化分解 E_inc_L = (ewfd.Ex + 1i*ewfd.Ey)/sqrt(2); E_trans_L = (ewfd.Ex_tr + 1i*ewfd.Ey_tr)/sqrt(2); Tll = abs(E_trans_L)^2 / abs(E_inc_L)^2;这里的1i是关键,把线极化转成圆极化基矢。注意COMSOL的时谐因子是e^{-jωt},所以左旋对应Ex+iEy而不是减号。搞反了的话,数据直接扑街。
COMSOL 文献复现 COMSOL 仿真手性结构通用模型,计算透射反射率分量 Tlr,Trl,Trr,Tll。 Rlr,Rrl,Rrr,Rll。
交叉极化分量Trl更刺激,得用正交基底投影:
// 交叉极化透射 E_trans_R = (ewfd.Ex_tr - 1i*ewfd.Ey_tr)/sqrt(2); Trl = abs(E_trans_R)^2 / abs(E_inc_L)^2;这波操作相当于把透射场的右旋分量拎出来,看看入射左旋波被转化成右旋的比例。参数命名规律看下标顺序:Trl表示入射R出射L?不不,刚好相反,第一个字母是入射极化,第二个是接收极化。这点记混了,仿真结果能差出个数量级。
反射率计算有个坑——端口积分要区分正向反向波。用场分量ewfd.Ezrf1和ewfd.Ezrf2分别对应入射和反射端口,结合极化基矢做点积:
// 反射左旋分量 P_ref_L = abs(dot([ewfd.Ex_ref,ewfd.Ey_ref], [1,1i]/sqrt(2)))^2; Rll = integrate(P_ref_L, '边界选择反射端口') / 入射功率;这里integrate函数得选对积分边界,功率归一化别忘了除入射波强度。有个偷懒技巧:在端口设置里勾选"计算散射场",直接用scattered.E变量会更方便。
最后验证模型是否靠谱,做个能量守恒检查:
total_T = Tll + Trl + Tlr + Trr; total_R = Rll + Rrl + Rlr + Rrr; if abs(total_T + total_R -1) > 0.05 error('能量不守恒,检查材料损耗设置'); end这个验证比啥都有用,特别是手性材料的损耗各向异性参数容易填错。见过有人把gamma_tensor输成标量值,结果反射率飙到200%的灵异事件。模型调通后,记得存成.mph文件模板,下次换个结构尺寸直接改参数就能跑,效率拉满。
