平面波展开法计算二维准零刚度局域共振声子晶体带隙matlab程序
时间: 2023-08-01 17:15:21 浏览: 230
利用平面波展开法在matlab中计算二维光子晶体的带隙结构.pdf
5星 · 资源好评率100%
平面波展开法可以用来计算二维准零刚度局域共振声子晶体的带隙特性。这里提供一个简单的Matlab程序供参考:
```
% 定义晶格
a = 1; % 晶格常数
r = [0 0; 0.2 0.2; 0.4 0.4; 0.6 0.6; 0.8 0.8]; % 原子位置
crystal = Crystal({a*eye(2), r}, 'Pnma');
% 定义材料
freq = 1.2; % 共振频率
width = 0.05; % 共振带宽
h = @(x,y) exp(-(x-0.5).^2/width^2-(y-0.5).^2/width^2).*sin(2*pi*freq*x).*sin(2*pi*freq*y);
crystal = set(crystal, 'Density', h);
% 计算弹性常数矩阵
c = 1; % 声速
C = ElasticMatrix(crystal, 'c', c);
% 计算带隙
k = [0 0; 0.5 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`函数计算并绘制了能带结构图。需要注意的是,由于局域共振的存在,可能会出现一些不连续的能带,需要根据具体情况进行分析和解释。
阅读全文