平面波展开法计算二维准零刚度弹簧质量局域共振超材料板能带结构MATLAB程序
时间: 2023-08-12 08:03:54 浏览: 57
由于您的问题非常具体,因此我无法提供特定的代码。但是,我可以为您提供一些关于计算二维准零刚度弹簧质量局域共振超材料板能带结构的MATLAB程序的一般指导。
首先,您需要使用平面波展开法(PWE)来计算您的超材料板的能带结构。PWE是一种可用于计算周期性结构的数值方法。它将周期性结构展开为平面波的叠加,并使用布拉格条件来确定允许的波矢量。
其次,您需要使用准零刚度弹簧质量模型来描述您的超材料板。这个模型假定板在垂直方向上是无限刚度的,但在水平方向上是柔软的。这种模型通常用于描述薄板的振动。
最后,您需要编写MATLAB程序来实现这些计算。这个程序应该包括以下步骤:
1. 定义超材料板的几何形状和材料属性。
2. 使用PWE计算能带结构。
3. 使用准零刚度弹簧质量模型计算局域共振模式和频率。
4. 绘制能带结构和局域共振模式。
这里是一个可能的MATLAB程序框架,可供您参考:
```matlab
% 定义超材料板的几何形状和材料属性
a = 1; % 单元格尺寸
h = 0.1; % 板厚
eps1 = 4; % 材料1介电常数
eps2 = 1; % 材料2介电常数
fill_ratio = 0.5; % 材料2填充比例
% 使用PWE计算能带结构
kx_max = pi/a; % 最大波矢量
num_kx = 100; % 波矢量采样点数
num_bands = 3; % 能带数量
[E, kx, ky] = pwe2d(a, h, eps1, eps2, fill_ratio, kx_max, num_kx, num_bands);
% 使用准零刚度弹簧质量模型计算局域共振模式和频率
k0 = 2*pi/a; % 布拉格波矢量
omega0 = sqrt(2/3)*k0^2*sqrt(eps1); % 基频
num_modes = 5; % 局域共振模式数量
[omega, mode_shapes] = local_resonance(a, h, eps1, eps2, fill_ratio, k0, omega0, num_modes);
% 绘制能带结构和局域共振模式
figure;
subplot(1,2,1);
plot(kx, E);
xlabel('k_x');
ylabel('E');
title('Energy band structure');
subplot(1,2,2);
plot(linspace(0,a,num_modes), mode_shapes);
xlabel('x');
ylabel('Mode shape');
title('Local resonance modes');
```
请注意,这只是一个框架,您需要根据您的具体问题进行修改和调整。