准零刚度超材料板的带隙计算MATLAB程序
时间: 2024-01-08 13:03:17 浏览: 150
复合材料刚度矩阵计算,计算单元刚度矩阵,matlab
5星 · 资源好评率100%
准零刚度超材料是一种特殊的材料,其带隙计算需要通过计算其色散关系来实现。下面是一个MATLAB程序,可以用于计算准零刚度超材料板的带隙:
```matlab
% 准零刚度超材料板的带隙计算
% 假设材料为Al2O3/PMMA,厚度为d = 200nm,周期为a = 500nm,填充率为f = 0.5
% 定义常数
c = 3e8; % 光速
a = 500e-9; % 周期
f = 0.5; % 填充率
d = 200e-9; % 厚度
e0 = 8.85e-12; % 真空介电常数
% 计算介电常数
e1 = 3.6^2; % Al2O3的介电常数(实部)
e2 = 0.001i; % Al2O3的介电常数(虚部)
e3 = 2.7^2; % PMMA的介电常数(实部)
e4 = 0.03i; % PMMA的介电常数(虚部)
e5 = e0; % 空气的介电常数
% 计算色散关系
kmax = pi/a; % 最大波矢
num_k = 1000; % 波矢的数量
k = linspace(0,kmax,num_k);
omega = c*k; % 角频率
% 计算元胞
d1 = d*f; % Al2O3层厚度
d2 = d*(1-f); % PMMA层厚度
N = 20; % 元胞中层数
cell = zeros(N,1);
for n = 1:N
if mod(n,2) == 1 % 奇数层为Al2O3
cell(n) = d1;
e_r = e1 + e2*(omega/c);
else % 偶数层为PMMA
cell(n) = d2;
e_r = e3 + e4*(omega/c);
end
k_z = sqrt(e_r - (k.^2));
if any(imag(k_z)~=0) % 判断是否有虚数波矢
disp('Warning: complex wave vector')
end
if n == 1 % 第一层,计算S矩阵
S12 = (1/2)*(1 + k_z(1)/k_z(2));
S21 = (1/2)*(1 - k_z(1)/k_z(2));
else % 后续层,计算T矩阵
T12 = (1/2)*(1 + k_z(n)/k_z(n-1))*exp(-1i*k_z(n-1)*cell(n-1));
T21 = (1/2)*(1 - k_z(n)/k_z(n-1))*exp(1i*k_z(n-1)*cell(n-1));
S12 = S12*T12 + S21*T21*k_z(n-1)/k_z(n);
S21 = S21*T12 + S12*T21*k_z(n)/k_z(n-1);
end
end
% 计算反射率和透射率
R = abs(S21/S12)^2;
T = 1/R;
% 绘制色散关系和反射率
figure
subplot(2,1,1)
plot(k,real(k_z),'k',k,imag(k_z),'r')
xlabel('k (m^{-1})')
ylabel('k_z (m^{-1})')
legend('Re(k_z)','Im(k_z)')
subplot(2,1,2)
plot(k,R,'k')
xlabel('k (m^{-1})')
ylabel('R')
```
需要注意的是,该程序只适用于Al2O3/PMMA材料,如果需要计算其他材料的带隙,需要修改程序中的介电常数。同时,该程序也只适用于准零刚度超材料板,如果需要计算其他类型的超材料,需要根据其具体结构进行修改。
阅读全文