平面波展开法计算二维弹簧薄膜局域共振声子晶体板带隙特性matlab程序
时间: 2023-08-01 20:15:21 浏览: 127
利用平面波展开法在matlab中计算二维光子晶体的带隙结构.zip
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');
% 定义材料
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);
% 定义弹簧和薄膜参数
kappa = 1; % 弹性常数
h0 = 0.2; % 薄膜厚度
h1 = 0.4; % 弹簧长度
crystal = set(crystal, 'SpringConstant', kappa, 'MembraneThickness', h0, 'SpringLength', h1);
% 计算弹性常数矩阵
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`函数计算并绘制了能带结构图。需要注意的是,由于弹簧和薄膜的存在,可能会出现一些不连续的能带,需要根据具体情况进行分析和解释。
阅读全文