平面波展开法计算二维弹簧质量声子晶体板带隙特性matlab程序
时间: 2023-08-02 18:05:10 浏览: 149
利用平面波展开法在matlab中计算二维光子晶体的带隙结构.pdf
5星 · 资源好评率100%
平面波展开法可以用来计算二维弹簧质量声子晶体板的带隙特性。这里提供一个简单的Matlab程序供参考:
```
% 定义晶格
a = 1; % 晶格常数
r = [0 0; 0.5 0; 0 0.5; 0.5 0.5]; % 原子位置
crystal = Crystal({a*eye(2), r}, 'Pnma');
% 定义材料
rho = 1; % 密度
c = 1; % 声速
crystal = set(crystal, 'Density', rho, 'SoundSpeed', c);
% 定义弹簧和质量参数
kappa = 1; % 弹性常数
m0 = 1; % 质量
m1 = 0.5; % 弹簧质量
crystal = set(crystal, 'SpringConstant', kappa, 'Mass', m0, 'SpringMass', m1);
% 计算弹性常数矩阵
C = ElasticMatrix(crystal);
% 计算带隙
k = [0 0; 0.5 0.5; 0 0.5; 0 0]; % 波矢路径
nk = 100; % 波矢路径离散化点数
[B, kx, ky] = BandStructure(crystal, C, k, nk, [-1 1]);
plot(B, 'k-', 'LineWidth', 2);
xlabel('Wave vector k');
ylabel('Phonon frequency \omega');
```
该程序先定义了一个晶格,然后定义了一个均匀的密度和声速,并将其设置为晶格的密度和声速。接着定义了弹簧和质量的参数,并将其设置为晶格的参数。然后计算了弹性常数矩阵,并使用`BandStructure`函数计算并绘制了能带结构图。需要注意的是,由于弹簧和质量的存在,可能会出现一些不连续的能带,需要根据具体情况进行分析和解释。
阅读全文