Anda di halaman 1dari 2

% ----------------------- Programa RespuestaSismica.

m -------------------
--%
% Programa sencillo para calcular la respuesta sísmica de un sistema con
% múltiples grados de libertad amortiguado sometido a cargas dinámicas.

clc; clear all; close all

% ------------- Propiedades dinámicas de la estructura ------------------


----

w1 = 6.7454;
w2 = 35.796;
phi1 = [12.014; 3.9196];
phi2 = [-5.2988; 8.8869];
gam1 = 0.11123;
gam2 = 0.063468;
zi1 = 0.05;
zi2 = 0.05;

% ------------ Datos del registro sismico (en fracciones de g) ----------


-----

nom = 'ImperialValley1940'; % nombre del archivo .txt con el


acelerograma
dt = 0.01; % intervalo de tiempo del acelerograma
g = 386.4; % aceler. de la gravedad (consistente con
los datos)
tf = 20; % tiempo final para el cálculo de la
respuesta

% --------- Lectura y escalamiento del acelerograma original ------------


-------

terr = load ([nom,'.txt']);


vec = reshape(terr',1,[]);
t = 0: dt: tf;
nt = length(t);
xg = vec(1:nt);

figure; plot( t,xg,'k' ); grid on;

% ------------- Cálculo de los desplazamientos modales ------------------


----

eta1 = Duhamel(w1,zi1,1,dt,nt,0,0,-gam1*g*xg); % despl. modal 1 con la


integral de Duhamel
eta2 = Duhamel(w2,zi2,1,dt,nt,0,0,-gam2*g*xg); % despl. modal 2 con la
integral de Duhamel

% ------------- Cálculo de los desplazamientos físicos ------------------


----

u1 = phi1(1) * eta1 + phi2(1) * eta2; % desplazamiento físico del


piso 1
u2 = phi1(2) * eta1 + phi2(2) * eta2; % desplazamiento físico del
piso 2

figure; set(gcf,'DefaultLineLineWidth',2)
plot( t,u1, t,u2 ); grid on;

% ------------- Cálculo de los máximos desplazamientos físicos ----------


------

[Um1,id1] = max( abs(u1) ); % calcula el máximo desplaz.


del piso 1
[Um2,id2] = max( abs(u2) ); % calcula el máximo desplaz.
del piso 2

disp(['*** Máximo desplazamiento de la masa 1 = ',num2str(Um1),' in'])


disp([' en el tiempo ',num2str(t(id1)),' seg']); disp(' ')

disp(['*** Máximo desplazamiento de la masa 2 = ',num2str(Um2),' in'])


disp([' en el tiempo ',num2str(t(id2)),' seg']); disp(' ')

Anda mungkin juga menyukai