平面波展开法计算二维准零刚度声子晶体带隙特性matlab程序
时间: 2023-08-01 16:15:21 浏览: 107
平面波展开法可以用来计算二维准零刚度声子晶体的带隙特性。这里提供一个简单的Matlab程序供参考:
```
% 定义晶格
a = 1; % 晶格常数
r = [0 0; 0.25 0.25; 0.5 0; 0.75 0.25; 0 0.5; 0.25 0.75; 0.5 0.5; 0.75 0.75]; % 原子位置
crystal = Crystal({a*eye(2), r}, 'Pnma');
% 定义材料
eps = 0.1; % 偏差程度
h = @(x,y) sin(2*pi*x/a).*sin(2*pi*y/a).*(1+eps*cos(2*pi*x/a).*cos(2*pi*y/a));
crystal = set(crystal, 'Density', h);
% 计算弹性常数矩阵
c = 1; % 声速
C = ElasticMatrix(crystal, 'c', c);
% 计算带隙
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`函数计算并绘制了能带结构图。需要注意的是,由于准零刚度的假设,可能会出现一些误差和限制,需要根据具体情况进行评估和调整。
阅读全文