Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CARACTRISTICAS BSICAS
INGRESO AL PROGRAMA
PROGRAMACION EN MATLAB
DIAGRAMA DE FLUJO
SEUDOCDIGOS
CODIGOFUENTE
INTRODUCCIN
En las ltimas dcadas los problemas que aquejan a los ingenieros han incrementado y son
ms difciles, porque requieren con mayor exactitud y aproximacin de los resultados. Que
ayuden a solucionar problemas y prevenir situaciones ms crticas como: derrumbes de
edificios, de puentes, etc. Pues los resultados numricos son ms crebles y pronostican el
futuro.
Los programas cada vez ms ayudan aliviar esos problemas, facilitan los clculos de forma
rpida y fcil, los programadores hacen que el programa trabaje y interacte de manera fcil
y rpida con el usuario, para ello innovan sus programas con capacidades cada vez superiores.
El objetivo de este trabajo es dar un programa con la capacidad de analizar el comportamiento
de las estructuras de un edificio ante una fuerza armnica externa, como tambin hallar
problemas de vibraciones mecnicas. Se har viendo primeramente las caractersticas bsicas
y luego se programara en el MATLAB, para el cual se realizara el seudocdigo y el cdigo
fuente para el mejor entendimiento del programa.
El programa aplicada a la ingeniera civil y siendo bsico, ayuda a comprender el
comportamiento del edificio cuando estara en movimiento, para ello se adapt los
conocimientos de la dinmica estructural y vibraciones mecnicas.
El usuario encontrara en este trabajo el uso del programa y las preguntas que desea hacer de
manera bsico al curso de estructuras.
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
CARACTERISTICAS BSICAS
El programa presenta dos subprogramas en su interior, cada cual se encarga de resolver
problemas en diferentes sistemas.
Los botones que se muestran abre ventanas en el sistema que deseamos trabajar, es decir, uno
puede escoger el sistema en donde trabajara, si es un sistema de movimiento de un grado de
liberta o n grados de libertad.
El programa no almacena datos en el workspace. Para limpiar los datos que anteriormente
INGRESO AL PROGRAMA
Pasos a seguir:
1. Abra el archivo del programa ANALISIS_SISMICO.fig
3. Para un PISO.
a. Ventana principal para el sistema de movimiento de un grado de libertad
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
4. Para N PISOS
a. Ventana principal para el sistema de movimiento de N grados de libertad.
Para UN PISO
1. Los datos se ingresan en los casilleros y son:
Masa (kg): m
Constante de rigidez (N/m):K
Posicin inicial (m):Uo
Velocidad inicial (m/s): U'o
Tiempo (s): t
Constante de amortiguamiento (N-s/m):C
Fuerza externa mxima (N):Fo
Frecuencia circular externa (rad/s):Wext
Para N PISOS
1. Primeramente para el ingreso de datos, designar con cuanto grados o nmero de pisos
trabajaremos, eso dimensionara las matrices.
PROGRAMACION EN MATLAB
OPERACIONES
if.
for
plot
else
str2num(get(handles.))
get(handles.)
axes (handles.)
DIAGRAMA DE FLUJO
Para UN PISO:
, , , ,
, , ,
2
= , =
1
= , =
= 2 , =
1
= = , = [(1 2 ) + (2 )2]2
2
= atan [ ], = 1 2
1 2
= , =
1 2
, , , , , , ,
, , , ,
=0
amortiguamiento
>0 supercrtico
amortiguamiento
sub-crtico
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
Para N PISOS
CALCULO:
[]{ } + [ ]{ } = 0
[]{ } + [ ]{ } + []{} = 0
:
[], [] , []
GRFICA DEL
[], [] , [] LTIMO PISO
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
SEUDOCDIGO
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
Para N PISOS
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
CODIGOFUENTE
Para UN PISO
masa=str2num(get(handles.MASA,'string'));
Kr=str2num(get(handles.CONST_RIG,'string'));
%-----------calculos----------
%calculo de Wn frecuencia natural
Wn=sqrt(Kr/masa)
%calculo deL PERIODO
T=2*pi/Wn
set(handles.PERIODO,'String',T);
%calculo de la frecuencia de la estructura
f=Wn/(2*pi)
%para t=0,
X0=str2num(get(handles.POSI_INIC,'string')); %PI=posicion
inicial
V0=str2num(get(handles.VEL_INIC,'string')); %VI=velocidad
inicial
t=str2num(get(handles.TIEMPO,'string')); %TIEMPO COMO
CONDICION INICIAL
A=X0
B=V0/Wn
u=A*cosd(Wn*t*180/pi)+ B*sind(Wn*t*180/pi)
set(handles.SALIDA,'string',u) % la posicin evaluada para
cierto t.
t1=0:0.1:t;
x=A*cosd(Wn*t1*180/pi)+ B*sind(Wn*t1*180/pi);
axes(handles.PLOT);
plot(t1,x,'--b','linewidth',3),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title('RESPUESTA','color','b'),grid on;
%-------------amortigudo--------------
x1=str2num(get(handles.POSI_INIC,'string'));
time=str2num(get(handles.TIEMPO,'string'));
t2=0:0.01:time;
m=str2num(get(handles.MASA,'string'));
k=str2num(get(handles.CONST_RIG,'string'));
v1=str2num(get(handles.VEL_INIC,'string'));
c=str2num(get(handles.CONST_AMOR,'string'));
%calculos
b=c/(2*m)
zz=b.^2-k/m
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
%------------------
cr=2*m*Wn
e=c/cr
Td=T/(sqrt(1-e.^2))
Wd=Wn*sqrt(1-e.^2)
%------------------
if (z==0)
%mov critico
c1=x1
c2=v1-c1*p1
tmax=(c1.*p1+c2)/(-c2.*p2);
x=(c1.*exp(p1.*t2))+(c2.*t2.*exp(p2.*t2)); % solucion
general
xmax=((c1.*exp(p1.*tmax))+(c2.*tmax*exp(p2.*tmax)))+1;
axes(handles.axes2);
if(xmax>0)
plot(t2,x,'--b','linewidth',3),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title('AMORTIGUAMIENTO CRTICO','color','b'),grid on;
else
plot(t2,x,'--b','linewidth',3),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title('AMORTIGUAMIENTO CRTICO','color','b'),grid on;
end
set(handles.edit17,'string','');
set(handles.edit14,'string','');
elseif (z>0)
%movimineto sobreamortiguado
c2=(v1-x1*p1)/(p2-p1)
c1=x1-c2
x=(c1.*exp(p1.*t2))+(c2.*exp(p2.*t2));
tmax=log((-c2.*p2)/(c1.*p1));
xmax=((c1.*exp(p1.*tmax))+(c2.*exp(p2.*tmax)))+1;
axes(handles.axes2);
plot(t2,x,'--c','linewidth',3),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title('AMORTIGUAMIENTO SUPERCRITICO','color','b'),grid
on;
set(handles.edit17,'string','');
set(handles.edit14,'string','');
elseif (z<0)
A1=x1
B1=(v1+x1.*e.*Wn)/Wd
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
x=((B1.*sin(Wd.*t2))+(A1.*cos(Wd.*t2))).*(exp(-b.*t2));
xmax=x./sin(Wd.*t2);
set(handles.edit17,'string',Td);
set(handles.edit14,'string',Wd);
if(x1>0);
axes(handles.axes2);
plot(t2,x,'--r','linewidth',3),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title('AMORTIGUAMIENTO SUBCRITICO','color','b'),grid on;
else
axes(handles.axes2);
plot(t2,x,'--r','linewidth',3),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title('AMORTIGUAMIENTO SUBCRITICO','color','b'),grid on;
end
end
%--------------AMORTIGUAMIENTO EXITADO---------------
x1=str2num(get(handles.POSI_INIC,'string'));
ti=str2num(get(handles.TIEMPO,'string'));
t3=0:0.01:ti;
m=str2num(get(handles.MASA,'string'));
k=str2num(get(handles.CONST_RIG,'string'));
P0=str2num(get(handles.FUERZA_P0,'string'));
v1=str2num(get(handles.VEL_INIC,'string'));
c=str2num(get(handles.CONST_AMOR,'string'));
Wext=str2num(get(handles.FREC_EXT,'string'));
Umax=d*(n.^2-s.^2).^(-1/2)
alf=atan(s/n)
U=Umax.*sin(Wext*t3-alf);
axes(handles.axes3);
plot(t3,U,'m','linewidth',1),xlabel('tiempo
s','color','r'),ylabel('Desplazamiento','color','r'),axis
auto,title(' DESPLAZAMIENTO INDUCIDO POR FUERZA
ARMNICA','color','b'),grid on;
% t==0
Uest=d %el desplazamiento esttico
Rd=(n.^2+s.^2).^(-1/2) % Rd =factor de magnificacin
dinmica
Umax1=Uest*Rd
U1=Umax1*sin(-alf) %
% resonancia
Wres=Wn*sqrt(1-2*e) %frecuencia de resonancia
Rd_res=1/(2*e) %amplificacin dinmica
%...........salida para vibracion libre..............
set(handles.edit26,'string',Wn);
%...........salida para vibracion amortiguada..............
set(handles.edit15,'string',e);
set(handles.edit16,'string',cr);
Para N pisos
Calculo de modos, periodo y frecuencias naturales
NP=str2double(get(handles.Npisos,'string'));
ms=str2double(get(handles.masas,'data'));
K=str2double(get(handles.CONST_RIG,'data'));
M=ms';
M12=sqrt(M);
for i=1:NP
M12(i)=1.0/M12(i);
end
MINV=zeros(NP,NP); MINV=diag(M12); Ko=MINV*K*MINV;
[V,D]=eig(Ko); Modos= MINV*V; Wn=sqrt(D); T=diag(Wn);
for i=1:NP
T(i)=2*pi/T(i);
end
T
Modos
set(handles.periodo,'data',T)
set(handles.modos,'data',Modos)
%calculo de la frecuencia
Masa=zeros(NP,NP);
%Matriz de masas
for i=1:NP
Masa(i,i)=ms(i);
end
Masa
NP=str2double(get(handles.Npisos,'string'));
ms=str2double(get(handles.masas,'data'));
K=str2double(get(handles.CONST_RIG,'data'));
C=str2double(get(handles.CONST_AMOR,'data'));
x=str2double(get(handles.posi_vel,'data'));
dt=0.02; n=100;
M=zeros(NP,NP);
%Matriz de masas
for i=1:NP
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
M(i,i)=ms(i);
end
M;
end
Xo
%matriz F
CERO= zeros(NP,NP); IDENT=eye(NP,NP); MIK=(-1)*inv(M)*K;
MIC=(-1)*inv(M)*C;
F=[CERO IDENT; MIK MIC];
% valores propios de F
[V,D]=eig(F);
%repuesta en el tiempo
for j=1:n
t=j*2*dt; E=expm(F*t); EE=real(E); q=EE*Xo;
tt(j)=t; des(j)=q(NP);
end
%dibujo para la respuesta en el tiempo del ltimo piso
axes(handles.axes1)
plot(tt,des,'--b','linewidth',3)
xlabel('Tiempo(s)','color','r'); ylabel('Desplazamiento del
ultimo piso','color','r');
title('Vibracion libre considerado
amortiguamiento','color','r');
EJEMPLOS
RESPUESTA DE UN SISTEMA AMORTIGUADO SOMETIDO A FUERZA
ARMNICA
PROBLEMA DE VIBRACIONES MECANICAS-
RAO, SINGIRESU S. Quinta edicin. Mxico, 2012
2. Picar en CALCULAR
3. RESPUESTA
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
1. Incorporar datos
2. Picar en CALCULAR
3. RESPUESTA
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
SOLUCIN.
CASO I.
0.01 0
[ 0 0] = [0.02 0]
0.03 0
1. Dimensionar el sistema
2. Incorporar DATOS
3. Picamos CALCULAR
= 29.6520 1 = 1.48260
Para
2 = 29.4267 = 1.633
= 96.10760 2 = 4.80538
Para
3 = 51.4775 = 1.633
PROGRAMACIN DIGITAL MANUAL DE ANALISIS SISMICO
= 168.1255 3 = 8.40628
La matriz de AMORTIGUAMIENTO ES:
6.38798 4.80538 0
C=[4.80538 13.21166 8.40628]
0 8.40628 8.40628
CASO II.
Se tiene:
0 0 6.38798 4.80538 0
[ 0 0] = [0.03 0] y C=[4.80538 13.21166 8.40628]
0 0 0 8.40628 8.40628
1. Seguimos los mispos pasos anteriores.
2. Incorporamos la matriz AMORTIGUAMINETO hallada anteriorme y
POSICIN-VELOCIDAD para este caso.
3. RESPUESTA