EI-centro地震波
时间: 2024-08-23 18:00:33 浏览: 48
EI Centro地震发生在1940年7月16日,这是美国加利福尼亚州历史上最大的地震之一,震级达到8.5级,其震源位于埃尔卡洪特罗市附近,因此被称为"El Centro地震"。这次地震以其独特的双峰特征而闻名,即地震记录上显示了两个大小相近、间隔极短的主要震荡波。
第一个峰值是主震,紧接着是一个名为“双峰”(doublet)的现象,这是由于强烈的余震造成的。这种罕见的地震模式导致了极大的破坏,因为人们往往认为第一次震动已经过去,结果又被第二次更大的震动冲击。地震引发了大规模的地面破裂,摧毁了大量建筑物,并造成约360人死亡,对南加州地区的基础设施造成了严重损害。
相关问题
帮我用matlab编程,平面框架结构,层高3.3m,共八层,每榀横向宽度为5m,共两榀周期为1s,增加隔震支座后框架结构周期为3s,求解在el-centro波作用下的前200阶振型,并计算各振型对应周期
好的,我可以为您提供一些编程思路和代码。
首先,我们需要定义框架结构的几何参数:
```matlab
h = 3.3; % 层高
L = 5; % 横向宽度
N = 8; % 楼层数
a = 2*L; % 周期
T0 = 1; % 原周期
T = 3; % 隔震后周期
```
然后,我们需要定义材料参数和荷载:
```matlab
E = 2.1e11; % 弹性模量
I = L^4/12; % 惯性矩
rho = 7850; % 密度
q = 1; % 单位长度荷载
```
接下来,我们可以使用MATLAB中的pdepe函数求解前200阶振型:
```matlab
Nt = 200; % 求解的振型数
x = linspace(0, a, 101); % 离散化的x坐标
t = linspace(0, 10, 201); % 离散化的时间坐标
% 定义偏微分方程
function [c,f,s] = pdefun(x,t,u,DuDx)
c = E*I/rho/h^2;
f = DuDx;
s = -q/h;
end
% 定义边界条件
function [pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)
pl = ul(1);
ql = 0;
pr = ur(1);
qr = 0;
end
% 求解偏微分方程
sol = pdepe(0, @pdefun, @(x) [0;0], @bcfun, x, t);
% 取得前Nt个振型
modes = sol(:,1:Nt);
% 绘制前Nt个振型
plot(x, modes(end,:));
```
最后,我们可以计算各振型对应的周期:
```matlab
periods = 2*pi./sqrt(T0./sol(:,1:Nt));
```
matlab编程(1).计算在el centro波作用下,单自由度结构弹塑性位移响应和绝对加速度时程。 (2).该位移时程的振动周期 (3).在该结构质量对应的10%重力作为最大地震惯性力加载的时候屈服,此时刚度为零,求出位移响应
以下是针对你的三个问题的回答:
1. 计算在el centro波作用下,单自由度结构弹塑性位移响应和绝对加速度时程
在MATLAB中,可以使用ode45函数来求解单自由度结构的弹塑性位移响应和绝对加速度时程。具体步骤如下:
1)定义单自由度结构的初始条件和参数:
```matlab
m = 1; % 质量
k = 1; % 刚度
c = 0.1; % 阻尼系数
fy = 5; % 屈服力
u0 = 0; % 初始位移
v0 = 0; % 初始速度
tspan = [0 20]; % 时间范围
```
2)定义el centro波的输入函数:
```matlab
function f = elcentro(t)
% el centro波的输入函数
f = 0;
if t >= 0 && t <= 5
f = 0.2 * t;
elseif t > 5 && t <= 15
f = 1 - 0.05 * (t - 5);
elseif t > 15 && t <= 20
f = 0.5 - 0.1 * (t - 15);
end
end
```
3)定义单自由度结构的运动方程:
```matlab
function [udot, vdot] = eqm(t, u, v, m, k, c, fy, f)
% 单自由度结构的运动方程
udot = v;
if u > 0
udot = v;
if u < fy / k
udot = v + f / m - k / m * u;
else
udot = v + f / m - k / m * u - c / m * sign(v);
end
end
vdot = udot;
end
```
4)调用ode45函数求解:
```matlab
[t, y] = ode45(@(t, y) eqm(t, y(1), y(2), m, k, c, fy, elcentro(t)), tspan, [u0, v0]);
u = y(:, 1);
a = y(:, 2);
```
2. 该位移时程的振动周期
可以通过寻找位移时程的第一个峰值和第二个峰值之间的时间间隔来估算振动周期。具体实现代码如下:
```matlab
% 找到第一个峰值
[pks, locs] = findpeaks(u);
pk1 = pks(1);
loc1 = locs(1);
% 找到第二个峰值
[pks, locs] = findpeaks(u(loc1:end));
pk2 = pks(1);
loc2 = locs(1) + loc1 - 1;
% 计算振动周期
T = (loc2 - loc1) * (t(2) - t(1));
```
3. 在该结构质量对应的10%重力作为最大地震惯性力加载的时候屈服,此时刚度为零,求出位移响应
在该结构质量对应的10%重力作为最大地震惯性力加载的时候,最大地震惯性力为:
```matlab
F = m * 10 / 100;
```
此时刚度为零,因此运动方程变为:
```matlab
function [udot, vdot] = eqm(t, u, v, m, fy, f)
% 单自由度结构的运动方程
udot = v;
if u > 0
udot = v;
if u < fy / k
udot = v + f / m;
else
udot = v + f / m - c / m * sign(v);
end
end
vdot = udot;
end
```
然后可以使用与第一问相同的方法求解该结构的位移响应:
```matlab
k = 0; % 刚度
c = 0.1; % 阻尼系数
u0 = 0; % 初始位移
v0 = 0; % 初始速度
[t, y] = ode45(@(t, y) eqm(t, y(1), y(2), m, fy, F), tspan, [u0, v0]);
u = y(:, 1);
```