CST 二氧化钒 Drude MATLAB程序 以复现为例详细介绍如何利用Matlab计算二氧化钒(VO2)介电常数并导入CST中创建Drude模型 还需要在CST中直接设置二氧化钒Drude模型方法或源文件

二氧化钒(VO2)在相变时会呈现显著的电导率变化,这种特性在可调谐超材料设计中非常吃香。今天咱们直接上干货,用Matlab撸个Drude模型计算VO2介电常数,再教你怎么塞进CST里用。别慌,代码部分我会拆开揉碎了讲。

先整明白Drude模型公式:ε(ω)=ε∞ - ωp²/(ω²+iγω),其中ωp是等离子体频率,γ是碰撞频率。找篇靠谱论文扒参数,比如某文献给的数据:ε∞=12,ω_p=1.5×10^15 rad/s,γ=5.75×10^13 rad/s(金属态参数)。

打开Matlab新建脚本,先定义参数:

epsilon_inf = 12;       % 高频介电常数
omega_p = 1.5e15;       % 等离子体频率(rad/s)
gamma = 5.75e13;        % 碰撞频率
f = linspace(0.1e12, 30e12, 500); % 0.1THz到30THz
omega = 2*pi*f;         % 角频率转换

接着上核心计算:

epsilon = epsilon_inf - (omega_p^2)./(omega.^2 + 1i*gamma.*omega);

注意这里用点除操作符(./)处理数组运算,1i表示复数单位。画个图验证下:

figure;
yyaxis left;
plot(f/1e12, real(epsilon), 'b');
ylabel('Real(ε)');
yyaxis right;
plot(f/1e12, imag(epsilon), 'r');
ylabel('Imag(ε)');
xlabel('Frequency (THz)');

跑完应该能看到介电常数实部随频率下降、虚部先升后降的趋势,和典型Drude特征吻合就对了。

接下来是关键操作——导出数据给CST用。建议保存为txt:

data = [f.'/1e9, real(epsilon).', imag(epsilon).']; % 转GHz单位
dlmwrite('VO2_Drude.txt', data, 'delimiter', '\t', 'precision', '%.6e');

这里有个坑要注意:CST的频域材料导入要求频率按升序排列,单位GHz。用dlmwrite写数据时设置科学计数法保证精度。

切到CST操作台:

  1. 右键Materials→Add Material from File
  2. 文件类型选Tabular(txt)
  3. 勾选"Frequency(Hz)"列,设置列为:1st列频率(GHz单位),2nd列实部,3rd列虚部
  4. 重命名为VO2_Drude,颜色建议选个醒目的红色

懒人可以直接在CST里硬编码参数:

With Material 
    .Reset 
    .Name "VO2_Drude" 
    .Type "Normal" 
    .Epsilon "12" 
    .AddDrudePole "1", "1.5e15", "5.75e13" 
    .Colour 1 0 0 
End With

这段代码其实是CST VBA宏命令,直接复制到宏编辑器运行就能创建材料。重点在AddDrudePole的三个参数:权重系数、等离子频率、碰撞频率。注意单位是rad/s,别和GHz搞混了。

测试时建议两种方法都试试,对比S参数是否吻合。遇到过有人导数据时单位没统一,结果在30GHz处出现诡异谐振峰,后来发现是txt里频率单位错写成了THz。

最后提醒:做时域仿真时优先用解析式Drude模型,表格导入方式可能引起收敛问题。但做频域扫参的话,实测两种方法误差在0.3%以内,可以放心用。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐