Академический Документы
Профессиональный Документы
Культура Документы
UNIVERSIDAD TCNICA
FEDERICO SANTA MARA
Apuntes de MatLab para Dinmica de Estructuras
USM Campus Santiago
II Semestre 2012
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
NOCIONES BSICAS
NOMENCLATURAS Y COMANDOS
GRFICOS
PROGRAMACIN
DECLARACIN DE FUNCIN
DECLARACIN DE FOR SIMPLE
DECLARACIN DE FOR ANIDADA
DECLARACIN DE WHILE
DECLARACIN DE IF
DECLARACIONES INTERACTUANDO
3
11
15
15
15
16
16
17
17
ANLISIS ESTRUCTURAL
18
CASO DE ANLISIS
MATRIZ DE RIGIDEZ
VIGAS
COLUMNAS
MATRIZ DE RIGIDEZ GLOBAL
CONDENSACIN ESTTICA
18
18
19
20
20
26
DINMICA ESTRUCTURAL
28
SUBRUTINA ODE45
FACTORES DE AMPLIFICACIN DINMICA (FAD)
RESPUESTA ANTE CARGA RAMPA-ESCALN
RESPUESTAS A PARTIR DE UN REGISTRO DE ACELERACIONES
ESPECTRO LINEAL DE ACELERACIN
ESPECTRO NO LINEAL DE ACELERACIN
SUPERPOSICIN MODAL
28
31
37
39
43
54
65
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Nociones bsicas
Nomenclaturas y comandos
La interfaz al ejecutar MatLab es la que se detalla a continuacin.
Se aprecia que aparece el indicador de comandos >>, el cual indica que el programa est listo para
recibir instrucciones.
MATLAB trabaja esencialmente con matrices numricas rectangulares. La manera ms fcil de
entrar matrices pequeas es enumerando los elementos de sta de tal manera que:
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Entonces un ejemplo sera ingresar una matriz de dimensiones 3x3, con nmeros correlativos,
como: [ 1 2 3; 4 5 6; 7 8 9 ]. El resultado, como lo entrega el programa, se indica a continuacin:
ans =
1
4
7
2
5
8
3
6
9
Ahora bien, se puede guardar esta matriz bajo un nombre. Para ello se tiene que ingresar el
nombre de la variable seguida por una igualdad. As, la matriz queda como: A=[ 1 2 3; 4 5 6; 7 8 9 ].
El resultado que entrega el programa es
A =
1
4
7
2
5
8
3
6
9
Usualmente no se requiere que el programa entregue los resultados. Para no presentar el valor de
la variable que se cre, se debe agregar un punto y coma (;) al final del comando.
Como alternativa se puede crear la matriz sin la necesidad de puntos y comas como separadores.
As, la matriz A tambin se puede generar como:
A =
[1 2 3
4 5 6
7 8 9];
Si se requiere una fila o columna de la matriz A, o tal vez un valor particular de la matriz o aadir
una fila adicional, se realiza lo siguiente:
se requiere aadir una fila con los valores b=[ 10 11 12], redefiniendo A: A=[A;b]:
A =
1
4
7
10
2
5
8
11
3
6
9
12
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Tambin se pueden generar vectores con instrucciones. Para ello, una alternativa es definir
x=[1:5]. Esta instruccin permite generar un vector fila de 5 columnas. Tambin se puede omitir
los parntesis cuadrados para simplificar el proceso. As, se obtiene:
x =
1 2 3 4 5
Se pueden crear vectores generando una secuencia, con un punto de inicio y uno de trmino. Un
ejemplo es definir un vector cuyo valor inicial sea 5 y que disminuya su valor en una unidad hasta
llegar a 1. De esta manera, x=5:-1:1
x =
5 4 3 2 1
Ahora bien, un ndice tambin puede ser un vector. Si x y v son vectores, entonces x(v) es
[x(v(1)),x(v(2)), ...,x(v(n))]. Para matrices, los ndices de vectores permiten acceso a submatrices
contiguas y no contiguas.
Por ejemplo, suponga que B es una matriz 12 por 12. Entonces B(1:5, 2) especifica la submatriz 5 x
1, vector columna, que consiste de los primeros cinco elementos en la segunda columna de B.
De igual manera, B(1:5, 9:12) es la submatriz 5 x 4 de las primeras cinco filas y las ltimas cuatro
columnas.
Las operaciones suma (+) y resta (-) son definidas para las matrices siempre y cuando stas tengan
la misma dimensin. El resultado de la operacin es por defecto almacenado en la variable ans, la
cual se puede almacenar en otra variable. As, definiendo A=[1 2 3;4 5 6]; y B=[6 5 4; 3 2 1]; se
puede originar C=A+B.
C =
7
7
7
7
7
7
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
La operacin de multiplicacin de matrices (*) est definida siempre que el nmero de columnas
de la primera matriz sea igual al nmero de filas de la segunda matriz. De esta manera, D=A*B slo
es posible si D=A*B.
D =
18
27
36
13
20
27
8
13
18
>> A = [3,4,7;5,2,-9;-1,13,3]
A =
3
5
-1
4
2
13
7
-9
3
>> B = [6;1;8]
B =
6
1
8
>> x=A\B
x =
0.5123
0.5848
0.3034
>> x=inv(A)*B
x =
0.5123
0.5848
0.3034
Notar que A\B es definido cuando B tiene la misma cantidad de filas que A. Si A es cuadrada, el
mtodo usado para su resolucin es la Eliminacin Gaussiana. El resultado es una matriz con las
mismas dimensiones que B. Ahora bien, si A no es cuadrada, el procedimiento se factoriza
utilizando la ortogonalizacin de Householder con pivoteo de columnas.
Para dividir los valores de una matriz por un escalar se requiere utilizar un operador que le indique
al arreglo que el denominador debe dividir cada valor. As, si A=[1 2;3 4] y se requiere dividir cada
valor por 2, la operacin es: A=[1 2;3 4]./2
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
A =
0.5000
1.5000
1.0000
2.0000
Para generar matrices o arreglos con valores aleatorios existe un comando llamado rand(). Los
valores estn entre cero y uno. De esta manera se tiene:
0.9502
0.0344
0.4387
0.3816
0.7655
0.7952
>> A=zeros(4)
A =
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
>> B=zeros(3,4)
B =
0
0
0
>> size(A)
ans =
4
>> size(B)
ans =
>> [m,n]=size(B)
m =
3
n =
4
>> C=ones(4)
C =
1
1
1
1
1
1
1
1
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
1
1
1
1
1
1
1
1
>> D=ones(3,4)
D =
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
>> E=eye(4)
E =
>> F=eye(3,4)
F =
1
0
0
0
1
0
0
0
1
0
0
0
>> A=rand(3)
A =
0.8147
0.9058
0.1270
0.9134
0.6324
0.0975
0.2785
0.5469
0.9575
0.8147
0.9134
0.2785
0.9058
0.6324
0.5469
0.1270
0.0975
0.9575
>> B=transpose(A)
B =
>> det(A)
ans =
-0.2767
>> inv(A)
ans =
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
-1.9958
2.8839
-0.0291
3.0630
-2.6919
-0.1320
-1.1690
0.6987
1.1282
>> eig(A)
ans =
-0.1879
1.7527
0.8399
>> [V,D]=eig(A)
V =
0.6752
-0.7375
-0.0120
-0.7134
-0.6727
-0.1964
-0.5420
-0.2587
0.7996
D =
-0.1879
0
0
0
1.7527
0
0
0
0.8399
>> diag(D)
ans =
-0.1879
1.7527
0.8399
>> x=rand(5,1)
x =
0.6948
0.3171
0.9502
0.0344
0.4387
>> v=sort(x)
v =
0.0344
0.3171
0.4387
0.6948
0.9502
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
w=sum(x)
w =
2.4353
y=max(x)
y =
0.9502
>> y=min(x)
y =
0.0344
menor que
menor o igual a
mayor que
mayor o igual a
igual a
no igual a
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Grficos
La estructura bsica del grfico se compone por un comando que crea una grfica de vectores o
columnas de matrices a travs de plot. Una vez ingresado el comando y los vectores a
representar grficamente es posible agregar descripciones al grfico, a travs de ttulos,
encabezamientos de ejes, lneas segmentadas o texto mediante etiquetas. De igual manera se
puede asignar un color especfico al trazado y/o con algn estilo. Cabe destacar que por defecto el
grfico tiene una lnea continua y de color azul.
Para ello se enumeran las opciones disponibles:
Colores
y
amarillo
magenta
cyan
rojo
verde
azul
blanco
negro
Tipologa lnea
.
punto
circulo
cruz
signo '+'
estrella
cuadrado
diamante
triangulo
lnea solida
segmentado
-.
lnea - punto
--
lnea - lnea
Se considerar el siguiente ejemplo para ilustrar el uso de la funcin plot y sus etiquetas. Sea
x=1:8;
y=2.^x;
plot(x)
plot(y)
Si x es un vector, plot(x) produce una grfica lineal de los elementos de x versus el ndice de estos.
Si especifica dos vectores como argumentos, plot(x, y) produce una grfica de y versus x como se
indica en la figura.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Para introducir las etiquetas es necesario colocar (,) despus del vector y abrir una llamado a la
etiqueta, ingresando el llamado entre ()
plot(y,m)
plot(y,mx)
plot(y,k--)
El grfico de la izquierda grafica el vector y, indicando slo los valores del vector con un smbolo
de diamante. El grfico de la derecha segmenta el grfico y le cambia el color a negro.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
De manera adicional se puede agregar cambios en los espesores de lnea. Algunas de las etiquetas
son:
,'LineWidth',2,
espesor de linea en 2
,'MarkerEdgeColor','r',
,'MarkerSize',30,
tamao dato
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Para graficar de manera simultnea dos grficos se puede utilizar un comando que permita
agregar tantas funciones cmo se requiera. Para ello se definir lo siguiente:
>>
>>
>>
>>
>>
>>
>>
>>
x=0:6;
y1=x.^2;
y2=sqrt(x);
y3=x;
plot(y1); hold on
plot(y2);
plot(y3);
hold off
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Programacin
Declaracin de funcin
La idea de es utilizar funciones predeterminadas y de uso recurrente agregando slo una lnea.
Para los casos que se vern en Dinmica de Estructuras se implementarn para:
De esta manera se define una matriz de rigidez elemental para una viga horizontal de propiedades
EA, EI y largo L. Para hacer uso de ella se debe llamar por el nombre Kviga, agregando las
propiedades requeridas en su definicin. Definiendo EA, EI & L, se obtiene:
>> EA=10000; %EA de la viga
>> EI=500000; %EI de la viga
>> L=500; %L de la viga
>> Kviga(EA,EI,L)
Kviga =
1.0e+003 *
0.0200
0
0
0
0.0000
0.0120
0
0.0120
4.0000
-0.0200
0
0
0
-0.0000
-0.0120
0
0.0120
2.0000
-0.0200
0
0
0.0200
0
0
0
-0.0000
-0.0120
0
0.0000
-0.0120
0
0.0120
2.0000
0
-0.0120
4.0000
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
0.5000
0.3333
0.2500
0.2000
0.3333
0.2500
0.2000
0.1667
0.2500
0.2000
0.1667
0.1429
0.2000
0.1667
0.1429
0.1250
Declaracin de WHILE
Este comando permite a una o ms instrucciones repetirse un nmero indefinido de veces, bajo el
control de una condicin lgica. La ventaja radica en que WHILE tiene una condicin de parada
definida, mientras que otros comandos, como IF, pueden no tener la condicin de parada, lo que
implica que nunca deja de buscar. Como ejemplo, suponer se desea iterar para encontrar un
nmero tal satisfaga una suma. As,
>> e=1.0;
while (1.0+e)>1.0001
e=e/2.0;
end
>> e
e=
6.1035e-005
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Declaracin de IF
Permite establecer casos particulares en los cuales si se cumple una afirmacin se proceda a
generar una rutina con el valor al caso que se cumple.
if i==j
rho=1;
else
rho=-1
end
Declaraciones interactuando
Supongamos que se tienen las frecuencias de un marco de 5 pisos ordenadas como un vector
columna llamado w, tal que
w=
31.4159
100.5183
183.8185
276.7465
360.8302
Si se requiere realizar un anlisis CQC (Complete Quadratic Combination, para combinar los
resultados modales por la tcnica de Combinacin Cuadrtica Completa descrita por Wilson, Der
Kiureghian, y Bayo (1981)), se debe determinar el coeficiente de acoplamiento modal, cuya es
expresin corresponde a
ij
8 2 i j i 3 j 3
j 2 4 2i j i j
2
La expresin obliga a ocupar los comandos anteriormente vistos para generar los coeficientes de
acoplamiento modal.
for i=1:5
for j=1:5
if i==j
rho=1;
else
rho=(8*bi^2*(w(i)+w(j))*(w(i)^3*w(j)^3)^0.5)/((w(i)^2w(j)^2)^2+4*bi^2*w(i)*w(j)*(w(i)+w(j))^2);
end
end
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Anlisis estructural
Caso de anlisis
Suponga que deben calcular el desplazamiento de un edificio de 5 pisos. Ese edificio tiene ciertas
cualidades que se detallan abajo. Lo importante es que deben conocer el desplazamiento de techo
y los desplazamientos de entrepiso (drifts), por lo cual les interesa saber los desplazamientos
desde 1 a 5. Pero qu sucede? Hay ms grados de libertad que contribuyen a la rigidez del
edificio. Detallando los grados de libertad del marco de 5 pisos, donde las vigas son axialmente
indeformables, los grados de libertad a considerar son:
Esa rigidez del edificio se puede expresar como una rigidez lateral (que es la que nos interesa
porque es la que mueve toda la masa), una rigidez al giro y una rigidez a la deformacin vertical.
Pues de esta forma se entiende que el problema a resolver no son los 25 grados de libertad, sino
que los 5 que relacionan el problema que debo solucionar.
As, sabiendo que tengo una matriz de grandes dimensiones, ordeno convenientemente los grados
de libertad para luego aplicar condensacin a los grados de libertad requeridos. Qu significa
eso? Que la matriz de 25x25 se reducir a 5x5, de los cuales se har una equivalencia en
comportamiento dada su condicin esttica.
Matriz de Rigidez
Se requiere obtener la matriz de rigidez de un edificio de 5 pisos compuesto por columnas y vigas.
Las vigas se considerarn flexurablemente deformables y las columnas axial-flexurablemente
deformables.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Para mayor facilidad en el desarrollo se consideraran primero los grados de libertad que
representan el desplazamiento lateral de cada piso, para luego considerar el resto. De esta forma
los primero cinco trminos de la matriz de rigidez resultante sern los que se usarn para
determinar la respuesta a nivel de piso debido al registro.
La siguiente figura indica los grados de libertad globales considerados para el edificio de 5 pisos.
Vigas
La matriz de rigidez elemental de la viga considera slo los grados de libertad axiales, por lo que el
elemento queda como lo indica la figura:
Considerando la matriz elemental para una viga horizontal y tomando en cuenta slo los 4 grados
de libertad locales indicados, la matriz de rigidez local del elemento viga se expresa como
6 3L
6 3L
3L 2 L2 3L L2
EI
kv 2 c 3 v
6 3L
L 6 3L
2
3L 2 L2
3L L
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Columnas
En relacin a la matriz de rigidez de la columna, se consideran todos los grados de libertad de la
matriz de rigidez elemental. De esta forma, se tiene que el elemento columna se expresa en
coordenadas locales como:
Considerando los grados de libertad locales de la columna, la matriz de rigidez local del elemento
columna se expresa como
Ec I c
12 h 3
i
Ec I c
6 2
hi
kc
Ec I c
12 3
hi
EI
6 c 2c
hi
Ec I c
hi 2
Ec Ac
hi
Ec Ac
hi
Ec I c
hi 2
Ec I c
hi 2
12
Ec I c
hi 3
0
2
Ec Ac
hi
Ec I c
hi 3
Ec I c
hi
12
Ec I c
hi
Ec I c
hi 2
Ec Ac
hi
0
Ec I c
hi 2
EI
2 c c
hi
Ec I c
6 2
hi
Ec I c
4
hi
6
Se debe hacer la diferencia sobre la altura del primer piso con la del resto de los pisos, para lo cual
se generarn matrices de rigidez para el primer piso y para el resto. Todas las vigas tienen las
mismas propiedades, por lo cual no se har diferencia con las matrices de rigidez de stas.
Los valores a utilizar son
tonf
Ec 2038.902 2
cm
29000 ksi
I v 12250 cm4
Lv 750 cm
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
conectividad que permitan ensamblar la matriz de rigidez del sistema. La figura que se indica a
continuacin establece la numeracin de los elementos. Se requieren 5 vectores de conectividad
para las 5 vigas y 10 vectores de conectividad para las 10 columnas.
Utilizando lo visto en el captulo 1, se definirn 2 funciones para llamar las matrices de rigidez de la
viga y de la columna. As, creando un nuevo archivo de extensin .m, se tiene
Matriz de rigidez elemental viga 4x4
function kviga4x4 = kviga4x4(Ec,Iv,L)
kviga_ad4x4=Ec*Iv/L^3*[12
6*L
-12
6*L;
6*L 4*L^2 -6*L 2*L^2;
-12
-6*L
12
-6*L;
6*L 2*L^2 -6*L 4*L^2];
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Notar que se consideran los parmetros Ec, Iv & L como los datos de entrada cuando se llame a la
matriz de rigidez de la viga, mientras que para la columna los datos de entrada son EI, EA & h.
La idea ser generar que la matriz de rigidez global de la estructura se armar con las matrices de
rigidez de cada elemento (mtodo de rigidez directa). Esto se implementar mediante vectores
que relacionarn el grado de libertad de cada elemento con una ubicacin dentro de la matriz de
rigidez global, de dimensiones 25x25.
Si la viga 1 tiene los grados de libertad 6, 7, 8 & 9, el vector ser p=[6:9]' y lo que har ser
vincular, en el orden especfico en el cual se ingresan los valores en el vector, la matriz de 4x4 de la
viga del primer piso y ubicarla dentro de la matriz de dimensiones 25x25 entre las filas 6 y 9, y las
columnas 6 y 9.
Para las columnas se procede de la misma forma, salvo las columnas del primer piso, que
requieren que se aadan grados de libertad adicionales. Esto sucede porque la matriz a la cual se
llama tiene dimensiones de 6x6 y el vector p=[0;0;0;1;6;7] tendra slo 3 grados de libertad, lo que
genera un problema de dimensiones al generar la matriz. De esta forma, la manera ms simple de
generar una solucin es aadiendo 5 grados de libertad en la base. De esta forma, se tienen 30
grados de libertad.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
As,
Kg=zeros(30); %definicin de una matriz de 25x25 para ir completando
%Para el primer piso
p=[6:9]'; %posicion de los GL de la viga
Kg(p,p)=Kv+Kg(p,p); %aporte de la primer piso
p=[26;27;28;1;6;7]; %posicin de la columna izquierda
Kg(p,p)=Kcp1+Kg(p,p); %aporte de la columna izquierda
p=[26;29;30;1;8;9]; %posicin de la columna derecha
Kg(p,p)=Kcp1+Kg(p,p); %aporte de la columna derecha
%Para el segundo piso
p=[10:13]'; %posicion de los GL de la viga
Kg(p,p)=Kv+Kg(p,p); %aporte del segundo piso
p=[1;6;7;2;10;11]; %posicin de la columna izquierda
Kg(p,p)=Kcp2+Kg(p,p); %aporte de la columna izquierda
p=[1;8;9;2;12;13]; %posicin de la columna derecha
Kg(p,p)=Kcp2+Kg(p,p); %aporte de la columna derecha
%Para el tercer piso
p=[14:17]'; %posicion de los GL de la viga
Kg(p,p)=Kv+Kg(p,p); %aporte del tercer piso
p=[2;10;11;3;14;15]; %posicin de la columna izquierda
Kg(p,p)=Kcp2+Kg(p,p); %aporte de la columna izquierda
p=[2;12;13;3;16;17]; %posicin de la columna derecha
Kg(p,p)=Kcp2+Kg(p,p); %aporte de la columna derecha
%Para el cuarto piso
p=[18:21]'; %posicion de los GL de la viga
Kg(p,p)=Kv+Kg(p,p); %aporte del cuarto piso
p=[3;14;15;4;18;19]; %posicin de la columna izquierda
Kg(p,p)=Kcp2+Kg(p,p); %aporte de la columna izquierda
p=[3;16;17;4;20;21]; %posicin de la columna derecha
Kg(p,p)=Kcp2+Kg(p,p); %aporte de la columna derecha
%Para el quinto piso
p=[22:25]'; %posicion de los GL de la viga
Kg(p,p)=Kv+Kg(p,p); %aporte del quinto piso
p=[4;18;19;5;22;23]; %posicin de la columna izquierda
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Condensacin esttica
Ahora bien, mediante condensacin estticamente se debe reducir la matriz a los grados de
libertad asociados al desplazamiento horizontal del marco. En este caso se condensarn los
asociados al desplazamiento lateral del marco.
K aa
K
ba
K ab u F
Kbb 0
Con u=grados de libertad activos (desplazamientos laterales) y el resto de los grados de libertad.
De esta manera,
Kaa u K ab F
Kba u Kbb 0
Finalmente la rigidez lateral queda expresada como
Se condensar para la submatriz de dimensiones 25x25, considerando que slo se agregaron estos
trminos para determinar un procedimientos de ensamble de la matriz de rigidez global eficiente.
Truncado los ltimos 5 GL, se tiene
a=[1:5]; % GL activos
b=[6:25]; % GL pasivos
K=Kg(a,a)-Kg(a,b)*inv(Kg(b,b))*Kg(b,a) %condensacion a GL laterales
K=
14.7948 -9.8816
-9.8816 15.4632
2.6659 -10.0323
-0.4655 2.6500
0.0756 -0.3583
2.6659 -0.4655
-10.0323 2.6500
15.4597 -9.8125
-9.8125 14.1538
2.0987 -6.5904
0.0756
-0.3583
2.0987
-6.5904
4.7790
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
% vigas
Kv=kviga4x4(Es,Iv,L);
% columnas
EA=Es*Ac;
EI=Es*Ic;
Kcp1=kcol(EI,EA,hp1);
Kcp2=kcol(EI,EA,hp2);
% Matrices de compatibilidad para cada barra
% vigas
a1=zeros(4,25); a1(1,6)=1; a1(2,7)=1; a1(3,8)=1; a1(4,9)=1;
a2=zeros(4,25); a2(1,10)=1; a2(2,11)=1; a2(3,12)=1; a2(4,13)=1;
a3=zeros(4,25); a3(1,14)=1; a3(2,15)=1; a3(3,16)=1; a3(4,17)=1;
a4=zeros(4,25); a4(1,18)=1; a4(2,19)=1; a4(3,20)=1; a4(4,21)=1;
a5=zeros(4,25); a5(1,22)=1; a5(2,23)=1; a5(3,24)=1; a5(4,25)=1;
% columnas
a6=zeros(6,25); a6(4,1)=-1; a6(5,6)=1; a6(6,7)=1;
a7=zeros(6,25); a7(4,1)=-1; a7(5,8)=1; a7(6,9)=1;
a8=zeros(6,25); a8(1,1)=-1; a8(2,6)=1; a8(3,7)=1; a8(4,2)=-1; a8(5,10)=1; a8(6,11)=1;
a9=zeros(6,25); a9(1,1)=-1; a9(2,8)=1; a9(3,9)=1; a9(4,2)=-1; a9(5,12)=1; a9(6,13)=1;
a10=zeros(6,25); a10(1,2)=-1; a10(2,10)=1; a10(3,11)=1; a10(4,3)=-1; a10(5,14)=1; a10(6,15)=1;
a11=zeros(6,25); a11(1,2)=-1; a11(2,12)=1; a11(3,13)=1; a11(4,3)=-1; a11(5,16)=1; a11(6,17)=1;
a12=zeros(6,25); a12(1,3)=-1; a12(2,14)=1; a12(3,15)=1; a12(4,4)=-1; a12(5,18)=1; a12(6,19)=1;
a13=zeros(6,25); a13(1,3)=-1; a13(2,16)=1; a13(3,17)=1; a13(4,4)=-1; a13(5,20)=1; a13(6,21)=1;
a14=zeros(6,25); a14(1,4)=-1; a14(2,18)=1; a14(3,19)=1; a14(4,5)=-1; a14(5,22)=1; a14(6,23)=1;
a15=zeros(6,25); a15(1,4)=-1; a15(2,20)=1; a15(3,21)=1; a15(4,5)=-1; a15(5,24)=1; a15(6,25)=1;
% Matriz de rigidez
Kvigas=a1'*Kv*a1 + a2'*Kv*a2 + a3'*Kv*a3 + a4'*Kv*a4 + a5'*Kv*a5; %aporte de las vigas
Kcolumnas=a6'*Kcp1*a6 + a7'*Kcp1*a7 + a8'*Kcp2*a8 + a9'*Kcp2*a9 + a10'*Kcp2*a10 + a11'*Kcp2*a11 + a12'*Kcp2*a12 +
a13'*Kcp2*a13 + a14'*Kcp2*a14 + a15'*Kcp2*a15; %aporte de las columnas
Kt=Kvigas+Kcolumnas; %matriz de rigidez completa
a=[1:5]; %grados de libertad horizontales
b=[6:25]; %resto de los grados de libertad del sistema
Kaa=Kt(a,a);
Kab=Kt(a,b);
Kba=Kt(b,a);
Kbb=Kt(b,b);
K=Kaa-Kab*inv(Kbb)*Kba; %matriz de rigidez condensada a grados de libertad laterales con masa asociada
Kt=Kv+Kc; %matriz de rigidez completa
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Dinmica estructural
Subrutina ode45
ode45 corresponde a un mtodo adaptativo; es una combinacin de un mtodo Runge-Kutta de
ordenes cuatro y cinco de cinco y seis evaluaciones respectivamente. La combinacin de estos
mtodos permite estimar el error en la aproximacin numrica en cada paso y as la subrutina
puede ajustar el largo de paso "h" en forma dinmica para mantener el error global menor de una
tolerancia especificada por el usuario. Requiere del nombre de la funcin f, los tiempos inicial y
final, la condicin inicial, la tolerancia para cada iteracin, y un indicador si la rutina imprime o no
los resultados calculados. Normalmente este indicador se toma como cero que es su valor por
omisin.
A continuacin se detalla un ejemplo que permite visualizar su uso. En especfico, se resolver la
ecuacin general de movimiento para un caso particular.
Sea la ecuacin del movimiento:
x(0) 0
x (0) 0
Para usar ode45 con ecuaciones de 2do orden, como es el caso de la ecuacin general de
movimiento:
mx cx kx F (t )
x(t 0 ) x0
x (t 0 ) x1
y '1 y 2
y1 c y 2 F (t )
y
2
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Con
y1 (t 0 ) x0
y 2 (t 0 ) x1
Luego se debe crear y guardar un archivo .m que retornar una funcin evaluada en cada t.
Para el caso del ejemplo, se procedera de la siguiente forma:
function dy = dfun(t,y)
Fo=5;
A=Fo*sin(pi*t);
c=0.05;
k=50;
m=10;
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=(A-c*y(2)-k*y(1))/m;
end
Notar que el sistema est descrito en las dos ltimas filas antes de end y lo anterior es para definir
los coeficientes del sistema.
Este archivo se guardar como dfun.m.
Finalmente, para obtener los resultados, se tiene que ingresar lo siguiente:
[t,x]=ode45(@nombre del archivo.m,[to tf],[x(0) x(0)]);
t0 y tf son el tiempo inicial y final del anlisis y x(0) y x(0) las condiciones iniciales.
Reemplazando en el caso ejemplo, queda:
[t,x]=ode45(@dfun,[0 10],[0 1]);
t ser el vector de los instantes de tiempo en que se efectu el clculo segn el criterio de error de
este proceso, x ser una matriz de dos columnas, de las cuales, la primera ir definiendo la
posicin y la segunda la velocidad segn el vector t.
Con lo cual, si se desea mostrar el resultado en un grfico, se implementar el siguiente cdigo:
hold on
plot(t,w(:,1),'b')
plot(t,w(:,2),'r')
xlabel('tiempo')
ylabel('Posicin y Velocidad')
title('Solucin EDO')
legend('Posicin','Velocidad',3)
grid on
hold off
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Posicin y Velocidad
1
0.5
0
-0.5
-1
-1.5
-2
Posicin
Velocidad
0
5
tiempo
10
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
u(t ) 2 u (t ) 2 u (t )
F0
sin p t
m
La solucin a esta ecuacin diferencial de segundo orden, esta dada por una parte homognea y
otra particular. Resolviendo, se obtiene la siguiente solucin para un sistema amortiguado de un
grado de libertad:
u (t )
F0
m 2
1
2
2
p 2
1 2 p
w
sin p t
2 p
tan 1
2
1 p
Donde:
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
FAD u
1
2
2
p 2
1 2 p
w
u (t )
F0
cos p t
m
2 2
2
1 p 2 p
w
FAD v
p
2
2
p 2
1 2 p
w
La aceleracin:
u(t )
F0
m
p
2
2
p 2
1 2 p
w
sin p t
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
FAD a
2
p 2
p
1 2
w
N
m
Se realiza un barrido de la frecuencia de la carga desde 0 hasta 100 [rad/s] y un barrido de la razn
de amortiguamiento crtico comenzando en 0.1 hasta 1.1. Implementando el siguiente cdigo en
MATLAB se obtiene la grfica que ilustra el FAD para desplazamiento, velocidad y aceleracin:
%FACTORES DE RESPUESTA DINMICA (FAD)
%Para una excitacin conocida de la forma: F(t)=Fo*sin(p*t)
tic
clear all
clc
%Para un oscilador de 1 Grado de Libertad con distintos niveles de
amortiguamiento...
%Sea
m=100;%[kg]
k=5.2*10^3;%[N/m]
w=(k/m)^(1/2);%[rad/s]
p=(0:.5:100);%Frecuencias de la carga aplicada al sistema.
beta=[0.1 0.2 0.4 0.5 0.7 0.9 1 1.1];%razones de amortiguamiento
aux1=size(p,2);
aux2=size(beta,2);
FADu=zeros(aux1,aux2);
FADv=zeros(aux1,aux2);
FADa=zeros(aux1,aux2);
for j=1:1:aux2
for i=1:1:aux1
aux3=((1-(p(i)/w)^2)^2+(2*beta(j)*(p(i)/w))^2)^(1/2);
FADu(i,j)=1/aux3;
FADv(i,j)=(p(i)/w)/aux3;
FADa(i,j)=((p(i)/w)^2)/aux3;
end
end
p_w=p/w;
figure(1)
hold on
plot(p_w,FADu(:,1),'-k')
plot(p_w,FADu(:,2),'-r')
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
plot(p_w,FADu(:,4),'-b')
plot(p_w,FADu(:,5),'-g')
plot(p_w,FADu(:,6),'-m')
plot(p_w,FADu(:,7),'-y')
legend('\beta=0.1','\beta=0.2','\beta=0.5','\beta=0.7','\beta=0.9','\beta
=1')
hold off
xlabel('p/\omega')
ylabel('FAD')
title('FAD DESPLAZAMIENTO OSCILADOR SIMPLE AMORTIGUADO-CARGA SINUSOIDAL')
grid on
figure(2)
hold on
plot(p_w,FADv(:,1),'-k')
plot(p_w,FADv(:,2),'-r')
plot(p_w,FADv(:,4),'-b')
plot(p_w,FADv(:,5),'-g')
plot(p_w,FADv(:,6),'-m')
plot(p_w,FADv(:,7),'-y')
legend('\beta=0.1','\beta=0.2','\beta=0.5','\beta=0.7','\beta=0.9','\beta
=1')
hold off
xlabel('p/\omega')
ylabel('FAD')
title('FAD VELOCIDAD OSCILADOR SIMPLE AMORTIGUADO-CARGA SINUSOIDAL')
grid on
figure(3)
hold on
plot(p_w,FADa(:,1),'-k')
plot(p_w,FADa(:,2),'-r')
plot(p_w,FADa(:,4),'-b')
plot(p_w,FADa(:,5),'-g')
plot(p_w,FADa(:,6),'-m')
plot(p_w,FADa(:,7),'-y')
legend('\beta=0.1','\beta=0.2','\beta=0.5','\beta=0.7','\beta=0.9','\beta
=1')
hold off
xlabel('p/\omega')
ylabel('FAD')
title('FAD ACELERACION OSCILADOR SIMPLE AMORTIGUADO-CARGA SINUSOIDAL')
grid on
toc
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
100
t para t t d s
mu(t ) cu (t ) ku(t ) t d
100 para t t d s
La respuesta por tanto debe separarse en 2 tramos.
i)
u
u (t ) st e wt
t d
ii)
2
2
2 2 1
sin d t
cos d t
u (t ) u (td ) ust
sin d t td ust
u (t ) e wt td u (t d ) ust cosd t td d
d
De esta manera, se obtiene la respuesta, que de manera grfica, permite apreciar que en la fase
de carga creciente la respuesta del sistema crece linealmente hasta la posicin de equilibrio
esttico, siendo igual para distintas razones de amortiguamiento. Luego, oscila en torno a ella
hasta mantenerse en dicha posicin.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
La EDM es
mu(t ) u g (t ) cu (t ) ku(t ) 0
mu(t ) cu (t ) ku(t ) mu g (t )
u(t ) 2 u (t ) 2 u (t ) u g (t )
Ahora bien, implementando Newmark con aceleracin lineal, se tiene
3
6
t
K t c t 2 m u F c 3 u (t ) 2 u(t ) m t u (t ) 3 u (t )
Con condiciones iniciales
u (0) 0
u (0) 0
u(0)
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
De esta forma, para un sistema de perodo T=0.1 (s) y razn de amortiguamiento de 0.02 , se
obtiene el grfico para el desplazamiento lateral u(t).
delta_F=(dato1(i+1)-dato1(i))+c*(3*vv+(dt*aa/2))+m*((6*vv/dt)+3*aa);
du=delta_F/K_eq;
dv=(3*du/dt)-3*vv-(dt*aa/2);
da=(6*du/(dt^2))-(6*vv/dt)-3*aa;
d(i+1)=dd+du;
v(i+1)=vv+dv;
a(i+1)=aa+da;
dd=d(i+1);
vv=v(i+1);
aa=a(i+1);
end
SD=max(abs(d*100));
SV=max(abs(v*100));
SA=max(abs(a))/9.81;
figure(1)
subplot(2,1,1);
plot(t,dato,'r');
title('Acelerograma');
xlabel('Tiempo [s]');
ylabel('Aceleracin [g]');
subplot(2,1,2);
plot(t,d*100,'b');
legend('T= 0.1 [s], \xi=0.02')
xlabel('Tiempo [s]');
ylabel('Deformacin u(t) [cm]');
S d u(t )
max
2
Sv
S d
T
2
Sa
Sd
T
2
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
T=(0.01:0.01:7)';
z=length(T);
Sd=zeros(z,1);
Sv=zeros(z,1);
Sa=zeros(z,1);
for j=1:1:z
wn=2*pi/T(j);
K=m*wn^2;%Rigidez del sistema en [N/m].
c=2*sqrt(m*K)*p;%Viscosidad en [N*s/m].
%Condiciones iniciales.
d(1)=0;%Desplazamiento inicial nulo.
v(1)=0;%Velocidad inicial nula.
a(1)=(dato1(1)-c*v(1)-K*d(1))/m;%Aceleracin inicial .
K_eq=K+(3*c/dt)+(6*m/(dt*dt));%Masa equivalente.
dd=d(1);
vv=v(1);
aa=a(1);
for i=1:1:(n-1)
delta_F=(dato1(i+1)-dato1(i))+c*(3*vv+(dt*aa/2))+m*((6*vv/dt)+3*aa);
du=delta_F/K_eq;
dv=(3*du/dt)-3*vv-(dt*aa/2);
da=(6*du/(dt^2))-(6*vv/dt)-3*aa;
d(i+1)=dd+du;
v(i+1)=vv+dv;
a(i+1)=aa+da;
dd=d(i+1);
vv=v(i+1);
aa=a(i+1);
end
Sd(j,1)=max(abs(d));
Sv(j,1)=(2*pi/T(j))*Sd(j,1);
Sa(j,1)=((2*pi/T(j))^2)*Sd(j,1);
end
figure(1)
plot(T,Sd*100)
title('Espectro de Respuesta SDOFS \beta=0.02')
xlabel('Periodo T_n [s]');
ylabel('Sa [cm]');
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
t [s]
N datos
Desplazamiento Inicial
Acelergrafo [cm]
Velocidad Inicial
Acelergrafo [cm/s]
Constitucin E-O
0,005
28.657
-0,011
-0,144
Concepcin N-S
0,005
28.338
-0,035
1,641
Angol E-O
0,01
18.001
-0,003
0,099
Curic E-O
0,01
18.001
0,011
0,036
mt ut ct ut K t ut F t
donde:
m: Masa del sistema en el tiempo t en [kg]
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
mt ut t ct ut t K t ut t F t t
Notar que se consideran las propiedades masa, viscosidad y rigidez, constantes durante el
intervalo t, tomndose para el anlisis, el valor de ellas en el tiempo t (principio del intervalo).
Y luego se resta la expresin anterior con la ecuacin para el tiempo t, donde:
ut ut t ut
ut ut t ut
ut ut t ut
F t F t t F t
La ecuacin de equilibrio incremental se obtiene para el intervalo de tiempo t:
mt ut ct ut K t ut F t
donde:
m(t): Masa del sistema al inicio del intervalo en [kg]
(t): Incremento de la aceleracin del sistema en el intervalo en [m/s2]
c(t): Viscosidad del sistema al inicio del intervalo en [Ns/m]
u (t): Incremento de la velocidad del sistema en el intervalo en [m/s]
K(t): Rigidez del sistema al inicio del intervalo en [N/m]
u(t): Incremento de la posicin del sistema en el intervalo en *m+
F(t): Incremento de la fuerza externa sobre el sistema en el intervalo en *N+
La anterior ecuacin ser la que se resolver para cada intervalo t, para ella se conocen los
siguientes datos provenientes de la resolucin del intervalo anterior: m(t), c(t), K(t), (t), u (t), u(t);
adems de ser dato F(t), ya que son datos F(t) y F(t + t). Quedando como incgnitas ( t ),
u (t) y u(t), o sea (t + t), u (t + t), u(t + t).
u t t u t
t t
u d
t
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
u t t u t
t t
u d
t
Dado que no se conoce como cambia la aceleracin ni la velocidad durante el intervalo, se supone
un tipo de variacin, usndose para este ejemplo, la de Aceleracin Lineal con = 1/6 del Mtodo
de Newmark:
ut ut t ut
ut ut t ut
ut ut t ut
Se obtiene:
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
3
t
ut 3 u t ut
t
2
6
6
ut 2 ut u t 3 ut
t
t
u t
6
t
6
mt 2 u t u t 3 ut ct ut 3 u t ut K t ut F t
t
2
t
Ordenando:
3
t
6
t 2 mt t ct K t u t F t t u t 3 ut mt 3 u t 2 ut ct
Con:
K t
6
3
mt ct K t como la rigidez efectiva
2
t
t
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
t
6
efectiva
Se obtiene el valor para u(t):
u t
F t
K t
u0
F 0 c0 u 0 K 0 u 0
m0
2) Una vez conocidas las condiciones iniciales del problema o los datos finales del intervalo
anterior: m(t), c(t), K(t), (t), u (t), u(t), F(t), se calculan K y F
K t
6
3
mt
ct K t
2
t
t
t
6
F t F t u t 3 ut mt 3 u t ut ct
2
t
u t
F t
K t
3
t
ut 3 u t ut
t
2
6
6
ut 2 ut u t 3 ut
t
t
u t
4) Calcular ( t + t ), u ( t + t ), u( t + t ):
ut t ut ut
ut t ut ut
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
ut t ut ut
5) 5) Repetir desde el paso 2, ocupando (t + t), u (t + t), u(t + t) como los (t), u (t), u(t)
del siguiente intervalo.
El mtodo de Newmark, tiene lmites de convergencia y estabilidad, segn el t y el periodo T de
la estructura:
Lmite de convergencia: t 0,39 T
Lmite de estabilidad: t 0,55 T
t
0,39
t
T
0,55
T
F t m ug t 9,81
Como el problema es un sistema lineal, las propiedades de ste son constantes en todo momento:
mt m
K t k
t
, luego asignar un paso ojal menor igual a 0,05 [s] en
0,39
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Registro
t [s]
Constitucin E-O
Concepcin N-S
Angol E-O
Curic E-O
0,005
0,005
0,01
0,01
T mnimo a
usar[s]
0,05 > 0,0128
0,05 > 0,0128
0,05 > 0,0256
0,05 > 0,0256
Desplazamiento Inicial
Acelergrafo [m]
-0,00011
-0,00035
-0,00003
0,00011
Velocidad Inicial
Acelergrafo [m/s]
-0,00144
0,01641
0,00099
0,00036
Ya que el dato a evaluar es el periodo, el sistema se puede definir con una masa cualquiera y la
rigidez del sistema quedar en funcin de m y T:
2
k m
=0
= 0.03
= 0.055
18
16
14
Sa (g)
12
10
8
6
4
2
0
0.5
1.5
Periodo (s)
2.5
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
=0
= 0.03
= 0.055
7
6
Sa (g)
5
4
3
2
1
0
0.5
1.5
Periodo (s)
2.5
=0
= 0.03
= 0.055
20
Sa (g)
15
10
0.5
1.5
Periodo (s)
2.5
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
=0
= 0.03
= 0.055
12
10
Sa (g)
0
0
0.5
1.5
Periodo (s)
2.5
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
fid=fopen('Concepcin N-S.txt');
registro=fscanf(fid,'%f',[18001,1])/981;
fclose(fid);
fid=fopen('Concepcin.txt','wt');
fprintf(fid,'%f\n',registro);
fclose(fid);
registro=load('Constitucin.txt');
x=length(registro);
color=['b','r','k'];
ddd=[0,(DF+5)/200,(DF+10)/200];
m=1000;
df=m*(registro(2:x,:)-registro(1:x-1))*9.81;
dt=0.005;
T=0.05:dT:3;
for j=1:length(ddd);
k=m*(2*pi./T).^2;
c=2*ddd(j)*(2*pi./T)*m;
K=k+3/dt*c+6/dt^2*m*ones(1,length(T));
d=zeros(length(registro),length(T));
v=d;
a=v;
d(1,:)=-0.011/100;
v(1,:)=-0.144/100;
a(1,:)=(m*registro(1)*ones(1,length(T))*9.81-c.*v(1,:)-k.*d(1,:))/m;
for i=1:x-1;
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
dF=df(i)*ones(1,length(T))+c.*(3*v(i,:)+dt/2*a(i,:))+m*(6/dt*v(i,:)
+3*a(i,:));
dd=dF./K;
dv=3/dt*dd-3*v(i,:)-dt/2*a(i,:);
da=6/dt^2*dd-6/dt*v(i,:)-3*a(i,:);
a(i+1,:)=a(i,:)+da;
v(i+1,:)=v(i,:)+dv;
d(i+1,:)=d(i,:)+dd;
end
Sa=max(abs(a));
figure(1)
hold on
plot(T,Sa/9.81,color(j))
end
ylabel('Sa (g)')
xlabel('Periodo (s)')
title('Espectro Registro Constitucin Direccin E-O')
legend('\xi = 0',char(['\xi = ',num2str(ddd(2))]),char(['\xi =
',num2str(ddd(3))]),1)
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
mt ut ct ut f s t F t
Donde:
m: Masa del sistema en el tiempo t en [kg]
( t ): Aceleracin del sistema en el tiempo t en [m/s2]
c: Viscosidad del sistema en el tiempo t en [Ns/m]
u ( t ): Velocidad del sistema en el tiempo t en [m/s]
fs( t ): Fuerza interna del sistema en el tiempo t en [N]
F( t ): Fuerza externa sobre el sistema en el tiempo t en [N]
La fuerza interna se define:
u t k
f s t f y
f
y
si u t k f y
si u t k f y
si u t k f y
donde:
k: Rigidez del sistema en [N/m]
fy: Tensin de fluencia en [N]
Si se evala el sistema en un tiempo t + t:
mt ut t ct ut t f s t t F t t
donde:
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
ut ut t ut
ut ut t ut
K t ut f s t t f s t
F t F t t F t
mt ut ct ut K t ut F t
con:
m(t): Masa del sistema al inicio del intervalo en [kg]
(t): Incremento de la aceleracin del sistema en el intervalo en *m/s2]
c(t): Viscosidad del sistema al inicio del intervalo en [Ns/m]
u (t): Incremento de la velocidad del sistema en el intervalo en [m/s]
K(t): Rigidez segn ley elastoplstica en el instante t en [N/m]
u(t): Incremento de la posicin del sistema en el intervalo en *m+
F(t): Incremento de la fuerza externa sobre el sistema en el intervalo en [N]
La anterior ecuacin ser la que se resolver para cada intervalo t, para ella se conocen los
siguientes datos provenientes de la resolucin del intervalo anterior: m(t), c(t), K(t), (t), u (t), u(t);
adems de ser dato F(t), ya que son datos F(t) y F(t + t). Quedando como incgnitas ( t ),
u (t) y u(t), o sea (t + t), u (t + t), u(t + t).
En cada paso t, la solucin realizando una integracin directa es:
u t t u t
t t
u d
t
u t t u t
t t
u d
t
Dado que no se conoce como cambia la aceleracin ni la velocidad durante el intervalo, se supone
un tipo de variacin, usndose para este ejemplo, la de Aceleracin Lineal con = 1/6 del Mtodo
de Newmark:
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
ut ut t ut
ut ut t ut
ut ut t ut
Se obtiene:
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
3
t
ut 3 u t ut
t
2
6
6
ut 2 ut u t 3 ut
t
t
u t
6
t
6
mt 2 u t u t 3 ut ct ut 3 u t ut K t ut F t
t
2
t
Ordenando:
3
t
6
t 2 mt t ct K t u t F t t u t 3 ut mt 3 u t 2 ut ct
Con:
K t
6
3
mt ct K t ; Rigidez efectiva
2
t
t
t
6
u t
F t
K t
u0
F 0 c0 u 0 K 0 u 0
m0
f s 0 K 0 u0
2) Una vez conocidas las condiciones iniciales del problema o los datos finales del intervalo
anterior: m( t ), c( t ), K( t ), ( t ), u ( t ), u( t ), F( t ), fs( t - t ), se calculan fs( t ), F , K en el
siguiente orden:
t
6
F t F t u t 3 ut mt 3 u t ut ct
2
t
k si
K t
0 si
f s t t u t t k f y
f s t t u t t k f y
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
f t t u t t k
f s t
fy
fy
K t
si
si
si
f s t t u t t k f y
f s t t u t t k f y
f s t t u t t k f y
6
3
mt
ct K t
2
t
t
u t
F t
K t
3
t
ut 3 u t ut
t
2
6
6
ut 2 ut u t 3 ut
t
t
u t
4) Calcular ( t + t ), u ( t + t ), u( t + t ):
ut t ut ut
ut t ut ut
ut t ut ut
5) Repetir desde el paso 2, ocupando (t + t), u (t + t), u(t + t), fs(t) como los (t), u (t), u(t),
fs(t - t) del siguiente intervalo.
El mtodo de Newmark, tiene lmites de convergencia y estabilidad, segn el t y el periodo T de
la estructura:
Lmite de convergencia: t 0,39 T
Lmite de estabilidad: t 0,55 T
t
0,39
t
T
0,55
T
F t m ug t 9,81
Al ser este un sistema elastoplstico, las propiedades del sistema son las siguientes:
mt m
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
k si
K t
0 si
f s t t u t t k f y
f s t t u t t k f y
ct 2 k m
f t t u t t k
f s t
fy
fy
si
si
si
f s t t u t t k f y
f s t t u t t k f y
f s t t u t t k f y
Dado que se pide el espectro no lineal de aceleracin, se debe realizar el Mtodo = 1/6 de
Newmark para cada periodo, luego se obtiene el mayor valor absoluto de aceleracin para cada
periodo, con estos datos, se construye el grfico Espectro v/s Periodo de la respuesta.
Los espectros de respuesta normalmente entregan el espectro en unidades de [g], por lo cual, se
debera dividir la mxima aceleracin absoluta, por 9,81.
Notar que el Mtodo = 1/6 de Newmark tiene criterio de convergencia, por lo cual, el mnimo
periodo a evaluar, debiese ser T
t
, luego asignar un paso ojal menor igual a 0,05 [s] en
0,39
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Registro
t [s]
Constitucin E-O
Concepcin N-S
Angol E-O
Curic E-O
0,005
0,005
0,01
0,01
T mnimo a
usar[s]
0,05 > 0,0128
0,05 > 0,0128
0,05 > 0,0256
0,05 > 0,0256
Desplazamiento Inicial
Acelergrafo [m]
-0,00011
-0,00035
-0,00003
0,00011
Velocidad Inicial
Acelergrafo [m/s]
-0,00144
0,01641
0,00099
0,00036
Ya que el dato a evaluar es el periodo, el sistema se puede definir con una masa cualquiera y la
rigidez del sistema quedar en funcin de m y T:
2
k m
La obtencin del espectro para el ejemplo se realiza para cada tensin de fluencia desde
fy = 0,2 * W, con un paso de B * W, hasta la tensin de fluencia con la que el sistema se comporte
en forma lineal, es decir, hasta que en todos los puntos evaluados fs < fy.
El resultado para el registro de Constitucin se presenta en el grfico adjunto. No se parte de
perodos bajos puesto que la respuesta para intervalos de mucha rigidez distorsiona la
visualizacin de la respuesta para el rango de anlisis usual.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
end
%Se obtiene el mximo valor de posicin en valor absoluto para cada
periodo
Sd=max(abs(d));
%Clculo del Pseudo Espectro de Aceleracin
PSa=Sd.*((2*pi)./T).^2;
%Grfica PSa v/s T para cada fluencia, de tal manera que cada curva,
quede con un
%color distinto y/o grosor de lnea distinto. Notar que los espectros
%se dividen por g, para que queden en unidades de [g]
figure(1)
if j<=6;
plot(T,PSa/9.81,color(j+1))% Curvas con lneas de colores
definidos en MATLAB y con grosor de lnea estndar = 1
elseif j>=14 && j<=20;
plot(T,PSa/9.81,color(j-13),'LineWidth',2)% Curvas con lneas de
colores definidos en MATLAB y con grosor de lnea = 2
elseif j>=7 && j<=13;
plot(T,PSa/9.81,'Color',colores(j-6,:))% Curvas con lneas de
colores definidos por usuario y con grosor de lnea estndar = 1
elseif j>=21 && j<=27;
plot(T,PSa/9.81,'Color',colores(j-20,:),'LineWidth',2)% Curvas
con lneas de colores definidos por usuario y con grosor de lnea = 2
elseif j>=28 && j<=34;
plot(T,PSa/9.81,color(j-27),'LineWidth',2.5)% Curvas con lneas
de colores definidos en MATLAB y con grosor de lnea = 2,5
elseif j>=35 && j<=41;
plot(T,PSa/9.81,'Color',colores(j-34,:),'LineWidth',2.5)% Curvas
con lneas de colores definidos por usuario y con grosor de lnea = 2,5
elseif j>=42 && j<=48;
plot(T,PSa/9.81,color(j-41),'LineWidth',3)% Curvas con lneas de
colores definidos en MATLAB y con grosor de lnea = 3
else
plot(T,PSa/9.81,'Color',colores(j-48,:),'LineWidth',3)% Curvas
con lneas de colores definidos por usuario y con grosor de lnea = 3
end
%Comando para que las grficas se superpongan en el mismo grfico y
no se borren cada vez que se grafica encima
hold on
end
% Se introduce resea para el eje y
ylabel('PSa (g)')
% Se introduce resea para el eje x
xlabel('Periodo (s)')
% Se introduce el ttulo, ac se pueden pasar variables numricas a
texto:
% Ej: char(['texto',num2str(variable numrica),'texto'])
title(char(['Pseudoespectro Constitucin Direccin E-O para distintas
tensiones de fluencia, con \xi = ',num2str(ddd*100),'%']))
%Leyenda que determina formato de lnea para cada fluencia
legend(char(['Fy/W = ',num2str(0.2)]),char(['Fy/W =
',num2str(0.2+1*dfy)]),char(['Fy/W = ',num2str(0.2+2*dfy)]),char(['Fy/W =
',num2str(0.2+3*dfy)]),char(['Fy/W = ',num2str(0.2+4*dfy)]),char(['Fy/W =
',num2str(0.2+5*dfy)]),char(['Fy/W = ',num2str(0.2+6*dfy)]),char(['Fy/W =
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
',num2str(0.2+7*dfy)]),char(['Fy/W = ',num2str(0.2+8*dfy)]),char(['Fy/W =
',num2str(0.2+9*dfy)]),char(['Fy/W = ',num2str(0.2+10*dfy)]),char(['Fy/W
= ',num2str(0.2+11*dfy)]),char(['Fy/W =
',num2str(0.2+12*dfy)]),char(['Fy/W = ',num2str(0.2+13*dfy)]),char(['Fy/W
= ',num2str(0.2+14*dfy)]),char(['Fy/W =
',num2str(0.2+15*dfy)]),char(['Fy/W = ',num2str(0.2+16*dfy)]),char(['Fy/W
= ',num2str(0.2+17*dfy)]),char(['Fy/W =
',num2str(0.2+18*dfy)]),char(['Fy/W = ',num2str(0.2+19*dfy)]),char(['Fy/W
= ',num2str(0.2+20*dfy)]),char(['Fy/W =
',num2str(0.2+21*dfy)]),char(['Fy/W = ',num2str(0.2+22*dfy)]),char(['Fy/W
= ',num2str(0.2+23*dfy)]),char(['Fy/W =
',num2str(0.2+24*dfy)]),char(['Fy/W = ',num2str(0.2+25*dfy)]),char(['Fy/W
= ',num2str(0.2+26*dfy)]),char(['Fy/W =
',num2str(0.2+27*dfy)]),char(['Fy/W = ',num2str(0.2+28*dfy)]),char(['Fy/W
= ',num2str(0.2+29*dfy)]),char(['Fy/W =
',num2str(0.2+30*dfy)]),char(['Fy/W = ',num2str(0.2+31*dfy)]),char(['Fy/W
= ',num2str(0.2+32*dfy)]),char(['Fy/W =
',num2str(0.2+33*dfy)]),char(['Fy/W = ',num2str(0.2+34*dfy)]),char(['Fy/W
= ',num2str(0.2+35*dfy)]),char(['Fy/W =
',num2str(0.2+36*dfy)]),char(['Fy/W = ',num2str(0.2+37*dfy)]),char(['Fy/W
= ',num2str(0.2+38*dfy)]),char(['Fy/W =
',num2str(0.2+39*dfy)]),char(['Fy/W = ',num2str(0.2+40*dfy)]),char(['Fy/W
= ',num2str(0.2+41*dfy)]),char(['Fy/W =
',num2str(0.2+42*dfy)]),char(['Fy/W = ',num2str(0.2+43*dfy)]),char(['Fy/W
= ',num2str(0.2+44*dfy)]),char(['Fy/W =
',num2str(0.2+45*dfy)]),char(['Fy/W = ',num2str(0.2+46*dfy)]),char(['Fy/W
= ',num2str(0.2+47*dfy)]),char(['Fy/W =
',num2str(0.2+48*dfy)]),char(['Fy/W = ',num2str(0.2+49*dfy)]),char(['Fy/W
= ',num2str(0.2+50*dfy)]),char(['Fy/W =
',num2str(0.2+51*dfy)]),char(['Fy/W = ',num2str(0.2+52*dfy)]),char(['Fy/W
= ',num2str(0.2+53*dfy)]),char(['Fy/W = ',num2str(0.2+54*dfy)]),1)
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Superposicin modal
Plantear las ecuaciones del movimiento del marco de acero de un vano y cinco pisos analizado en
clase, pero considerando las vigas flexuralmente deformables y columnas axial-flexuralmente
deformables; suponer que todas las columnas tienen el mismo momento de inercia I=9230cm4 y
rea 62cm2, y las vigas un momento de inercia I=12250cm4 mayor, que el primer piso es de 4m de
altura y los restantes de 3.5m de altura; y que el vano es de 7.5m de luz.
Las masas de los pisos, excepto el ltimo, son todas iguales, la del ltimo es solo el 65% de una de
ellas, y se supone que estn concentradas a nivel de cada piso.
Plantear la ecuacin condensando los grados de libertad no asociados a masas (los grados de
libertad inerciales son solamente los 5 desplazamientos laterales de los pisos).
a) Determinar las formas modales, y calibrar la razn entre rigidez y masas de modo que el
primer modo tenga un perodo 0.2s. Determinar la matriz de amortiguamiento de manera
que este sea clsico, con 5% de amortiguamiento en todos los modos.
b) Obtener la respuesta a la excitacin de la componente ux del registro de Melipilla del
terremoto de 1985 (obtenerla del archivo Melip.m)
a) integrando directamente con ode23
b) integrando directamente con aceleracin constante
c) mediante superposicin modal con 2, 3 y 5 modos (integrando cada modo
independientemente en la forma que quiera)
c) Determinar la estimacin CQC del mximo momento flector en la base de columna del
primer piso, el mximo del esfuerzo axial de la columna, y el mximo de una combinacin
lineal del momento y el esfuerzo axial (los mismos valores de los coeficientes de la
combinacin).
d) Integrar la ecuacin:
y 2 y 2 y ug
considerando u g como el ux del registro de Melipilla del terremoto de 1985 del archivo
rec_melip.mat, y para los 5 valores de correspondientes a las frecuencias modales del
marco de un vano y cinco pisos y obtener de esas respuestas los mximos que deberan
ser valores de las correspondientes ordenadas espectrales. Aplicar superposicin modal
espectral CQC para estimar los mximos de:
a) El desplazamiento del primer piso
b) El desplazamiento del quinto piso
c) El desplazamiento relativo de entrepiso del tercer piso
d) El corte basal
e) El corte del tercer entrepiso
Comparar con los resultados de usar las coordenadas modales obtenidas para calcular los
mximos exactos.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
a) Matriz de Rigidez
Se requiere obtener la matriz de rigidez de un edificio de 5 pisos compuesto por columnas y vigas.
Las vigas se considerarn flexurablemente deformables y las columnas axial-flexurablemente
deformables. De esta manera los grados axiales de las vigas no se consideraran, utilizando una
matriz de rigidez reducida para vigas en posicin horizontal que no incluye los trminos axiales,
mientras que la matriz de rigidez de cada columna contiene todos los trminos.
Para mayor facilidad en el desarrollo se consideraran primero los grados de libertad que
representan el desplazamiento lateral de cada piso, para luego considerar el resto. De esta forma
los primero cinco trminos de la matriz de rigidez resultante sern los que se usarn para
determinar la respuesta a nivel de piso debido al registro.
La siguiente figura indica los grados de libertad globales considerados para el edificio de 5 pisos.
Vigas
La matriz de rigidez local se obtiene no considera los grados de libertad axiales, por lo que el
elemento queda como lo indica la figura:
Considerando la matriz elemental para una viga horizontal y tomando en cuenta slo los 4 grados
de libertad locales indicados, la matriz de rigidez local del elemento viga se expresa como
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
6 3L
6 3L
3L 2 L2 3L L2
EI
kv 2 c 3 v
6
3L
L 6 3L
2
3L 2 L2
3L L
Columnas
En relacin a la matriz de rigidez de la columna, se consideran todos los grados de libertad de la
matriz de rigidez elemental. De esta forma, se tiene que el elemento columna se expresa en
coordenadas locales como:
Considerando los grados de libertad locales de la columna, la matriz de rigidez local del elemento
columna se expresa como
Ec I c
12 h 3
i
Ec I c
6 2
hi
kc
Ec I c
12 3
hi
EI
6 c 2c
hi
Ec I c
hi 2
Ec Ac
hi
Ec Ac
hi
Ec I c
hi 2
Ec I c
hi 2
12
Ec I c
hi 3
0
2
Ec Ac
hi
Ec I c
hi 3
Ec I c
hi
12
Ec I c
hi
0
6
Ec I c
hi 2
Ec Ac
hi
0
Ec I c
hi 2
EI
2 c c
hi
Ec I c
6 2
hi
EI
4 c c
hi
6
Se debe hacer la diferencia sobre la altura del primer piso con la del resto de los pisos, para lo cual
se generarn matrices de rigidez para el primer piso y para el resto. Todas las vigas tienen las
mismas propiedades, por lo cual no se har diferencia con las matrices de rigidez de stas.
Los valores a utilizar son
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
tonf
Ec 2038.902 2
cm
29000 ksi
I v 12250 cm4
Lv 750 cm
i 0.05
Una vez realizado lo anterior, es necesario establecer la relacin entre los grados de libertad
locales y globales. Para ello se enumeran los elementos, con la finalidad de establecer los vectores
de conectividad que permitan ensamblar la matriz de rigidez del sistema. La figura que se indica a
continuacin establece la numeracin de los elementos. Se requieren 5 vectores de conectividad
para las 5 vigas y 10 vectores de conectividad para las 10 columnas.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Ahora bien, se debe condensar estticamente la matriz para reducirla a los grados de libertad
asociados al desplazamiento horizontal del modelo. La idea es que los grados de libertad dentro
de la matriz de rigidez se pueden separar entre s. En este caso se aislarn los asociados al
desplazamiento lateral del modelo.
K aa
K
ba
K ab u F
Kbb 0
Kaa u K ab F
Kba u Kbb 0
La rigidez lateral queda expresada como
K=
14.7948 -9.8816
-9.8816 15.4632
2.6659 -10.0323
-0.4655 2.6500
0.0756 -0.3583
2.6659 -0.4655
-10.0323 2.6500
15.4597 -9.8125
-9.8125 14.1538
2.0987 -6.5904
0.0756
-0.3583
2.0987
-6.5904
4.7790
Matriz de Masa
Se requiere determinar la matriz de masa tal que el perodo fundamental sea igual a T 2 seg .
Las masas estn concentradas a nivel de piso y son iguales a m, salvo en el techo, en la cual es
igual a 0.65m. De esta forma la matriz de masa es
1
0
M m 0
0
0
0 0 0
1 0 0
0 1 0
0 0 1
0 0 0
0
0
0
0
0.65
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
M q K q 0 , con
q f (t ) v
..
M f (t ) v K f (t ) v 0
..
f (t )
M v K v 0
f (t )
m 2 G f (t ) y f (t ) K y 0
m 2 y G
K y
m al resolver la ecuacin m 2 y G
K y .
Se debe imponer que el periodo sea T 2 seg , lo que en trminos de la frecuencia equivale a
m.
Como se busca determinar la masa, se debe resolver para m=1 y reemplazar w1 resultante en la
expresin determinada con anterioridad.
2
w1
m
10
% Matriz M
G=eye(5);
G(5,5)=0.65;
[V,D]=eig(G\K);
w=sqrt(diag(D));
T=2*pi./w;
[T,p]=sortT(T);
V=V(:,p);
w=w(p);
m=(0.1*w(1)/pi)^2;
M=m*G;
G(5,5)=1/0.65;
invM=G/m;
-4
Lo anterior permite determinar la masa, con m 2.671110 tonf
s2
cm
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
M=
1.0e-003 *
0.2671
0
0
0
0
0 0.2671
0
0
0
0
0 0.2671
0
0
0
0
0 0.2671
0
0
0
0
0 0.1736
Matriz de Amortiguamiento
Se sabe que
C * V T C V
I V T M V
C M V C* V T M
Con
C* 2 i i
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
T=
0.2000
0.0625
0.0342
0.0227
0.0174
w=
31.4159
100.5183
183.8185
276.7465
360.8302
V=
9.2713
20.2458
29.7331
36.4124
39.9604
-25.8557
-37.3297
-19.7283
14.2420
40.9438
35.7330
13.1592
-32.5955
-16.9718
38.0930
-34.9753
25.0694
11.7072
-34.9833
28.5840
22.1162
-33.7443
35.6501
-26.5169
14.7720
Mm =
1.0e-003 *
0.6262
-0.0000
-0.0000
0.0000
0.0000
-0.0000
0.5965
0.0000
0.0000
-0.0000
-0.0000
0.0000
0.6891
0.0000
-0.0000
0.0000
0.0000
0.0000
0.8171
-0.0000
0.0000
-0.0000
-0.0000
-0.0000
0.7868
Km =
1.0e+005 *
0.0099
-0.0000
0. 0000
0.0000
0.0000
-0.0000
0.1010
0.0000
0.0000
-0.0000
-0.0000
0.0000
0.3379
0.0000
-0.0000
0.0000
0.0000
0.0000
0.7659
-0.0000
0.0000
-0.0000
-0.0000
-0.0000
1.3020
Masapormodo =
0.8499
0.1016
0.0333
0.0122
0.0029
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
x1 (t ) q(t )
q(t )
x
(
t
)
x(t )
tal que
x1 (t ) M C x1 (t ) M K x2 (t )
1
x(t ) A x b
M 1 C M 1 K
ug e
x
I
0
0
x(t )
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
M qi C qi K qi uig M e
Se puede re-escribir como
K q Q
Con
2
4
K K C 2 M
t
t
Q ug M e 2 M qi M 2 C q i
t
qi 1 qi q
qi 1
qi 1
2
q qi
t
4
2
q qi qi
2
t
t
[t_ac,x_ac,xd_ac,xdd_ac] = consacc(K,M,C,e1,S,DT,t2);
La funcin Consacc corresponde a:
function [t,q,qd,qdd] = consacc(K,M,C,e1,ug,dt,tt)
n = size(K,1); m = length(ug);
K = K + 2*C/dt + 4*M/dt^2; R = chol(K);
Cm = 2*C + 4*M/dt; Me = M*e1;
if tt>m*dt
m = tt/dt;
ug(m) = 0;
end
t = zeros(1,m);
q = zeros(n,m); qd = zeros(n,m); qdd = zeros(n,m);
for i=1:m-1
dQ =-(ug(i+1)-ug(i))*Me + 2*M*qdd(:,i) + Cm*qd(:,i);
z = R'\dQ; dq = R\z;
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
t(i+1) = dt + t(i);
q(:,i+1) = dq + q(:,i);
qd(:,i+1) = 2*dq/dt - qd(:,i);
qdd(:,i+1) = 4*dq/dt^2 -4*qd(:,i)/dt - qdd(:,i);
end
q(t ) y (t ) Vi
i 1
for i=1:5
[t_sm,y_sm(i,:),yd_sm(i,:),ydd_sm(i,:)] =consacc(Km(i,i),1,Cm(i,i),fi(:,i)'*M*e1,S,DT,t2);
end
x_sm_2modo=fi(:,1:2)*y_sm(1:2,:); % con 2 modos
x_sm_3modo=fi(:,1:3)*y_sm(1:3,:); % con 3 modos
x_sm_5modo=fi(:,1:5)*y_sm(1:5,:); % con 5 modos
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Por inspeccin se aprecia que no hay diferencia notable en la comparacin de los mtodos, por lo
que se puede aseverar que existen diferencias numricas muy menores entre los mtodos.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Se requiere determinar los desplazamientos modales que son los valores de entrada para realizar
el CQC. Los desplazamientos modales se definen como la multiplicacin entre la forma modal i,
expresada como vector, por el valor del mximo desplazamiento producto de un registro dado
para el perodo (o frecuencia) asociada a la forma modal, expresada como un escalar. De esta
forma se tienen que determinar los valores del espectro de desplazamiento asociados a las
frecuencias (perodos) de las formas modales.
El espectro de desplazamiento se obtiene a partir de un oscilador de un grado de libertad, del cual
se requerir el mximo desplazamiento para una frecuencia dada del oscilador. As, se tiene que
n
x (a,1) V (:, i) S
i 1
i 1
(i)
L(i)
abs( L(i ))
Donde
x(a,1) : desplazamiento modal mximo asociado a los grados de libertad activos a del modo i
V (:,1) : vector de vectores propios
Sd (i) : desplazamiento obtenido del espectro de desplazamiento asociado al modo i
L(i )
: inclusin del signo de las masas modales consideradas en la integracin de la respuesta
abs( L(i ))
Ahora bien, se hace alusin a los grados activos. Esto se refiere a que se debe condensar
estticamente la matriz para reducirla a los grados de libertad asociados de los desplazamientos
horizontales del modelo.
K aa
K
ba
K ab a F
Kbb b 0
Kaa a Kab b F
Kba a Kbb b 0
La rigidez asociada a los trminos no activos queda expresada como
Kb Kbb Kba
1
i 1
i 1
xi (b,1) Kbb
Kba xi (a,1)
De esta manera se pueden determinar los esfuerzos requeridos al multiplicar los trminos de la
matriz de rigidez local del elemento por los desplazamientos modales correspondientes. Basta con
asociar los desplazamientos de los grados de libertad al vector de desplazamientos modales.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
a=[1:5];
b=[6:25];
for i=1:5
x=zeros(25,1);
L(i)=V(:,i)'*M*e1;
Sd(i)= max(abs(y_sm(i,:)))*L(i)/abs(L(i));
x(a,1)=-V(:,i)*Sd(i); %desplaz. laterales maximos de cada forma modal
x(b,1)=inv(Kbb)*Kba*x(a,1); %desplaz. laterales maximos de cada forma modal
vi=[1;6;7];
Fzas_izq(:,i)=Kcp1*[zeros(3,1);x(vi,1)];
vd=[1;8;9];
Fzas_der(:,i)=Kcp1*[zeros(3,1);x(vd,1)];
end
Notar que hay un signo menos en los desplazamientos laterales mximos de cada forma modal
puesto que la definicin del elemento columna se defini en sentido contrario al supuesto para el
desplazamiento, por lo que los desplazamientos son en sentido contrario y requieren de un signo
menos.
Con lo anterior se debe aplicar la combinacin CQC. Esta se hace para un esfuerzo en particular, es
decir, si se requiere conocer el momento en la base de la columna izquierda se obtienen los
momentos de en la base de la columna izquierda asociados a cada modo i para luego aplicar el
operador ij , definido el coeficiente de acoplamiento modal, cuya es expresin corresponde a
ij
8 2 i j i 3 j 3
j 2 4 2i j i j
2
r 2 ij ri rj
i 1 j 1
Donde
ri : corresponde al valor del esfuerzo mediante CQC. Notar que se debe aplicar la raz cuadrada.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
if i==j
rho=1;
else
rho=(8*bi^2*(w(i)+w(j))*(w(i)^3*w(j)^3)^0.5)/((w(i)^2w(j)^2)^2+4*bi^2*w(i)*w(j)*(w(i)+w(j))^2);
end
Mizq_cqc=Mizq_cqc+rho*Fzas_izq(3,i)*Fzas_izq(3,j);% Momento en la base columna izquierda
primer piso
Mder_cqc=Mder_cqc+rho*Fzas_der(3,i)*Fzas_der(3,j);% Momento en la base columna derecha
primer piso
Nizq_cqc=Nizq_cqc+rho*Fzas_izq(2,i)*Fzas_izq(2,j);% Carga axial en la base columna izquierda
primer piso
Nder_cqc=Nder_cqc+rho*Fzas_der(2,i)*Fzas_der(2,j);% Carga axial en la base columna derecha
primer piso
N_Mizq_cqc=N_Mizq_cqc+rho*Fzas_izq(3,i)*Fzas_izq(2,j);% Interaccion N-M en la base columna
izquierda primer piso
N_Mder_cqc=N_Mder_cqc+rho*Fzas_der(3,i)*Fzas_der(2,j);% Interaccion N-M en la base columna
izquierda primer piso
end
end
Mizq_cqc=Mizq_cqc^0.5;
Mder_cqc=Mder_cqc^0.5;
Nizq_cqc=Nizq_cqc^0.5;
Nder_cqc=Nder_cqc^0.5;
M 247.3253Tf cm
N 2.3730 Tf
N M 580.8136 Tf 2cm
Columna derecha
M 247.3253Tf cm
N 2.3730 Tf
N M 580.8136 Tf 2cm
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
y 2 i i y i 2 y ug Li
Para obtener la respuesta completa se requiere la combinacin modal sumando todos los modos
i. De esta forma,
n
x(t ) y (t ) Vi
i 1
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
x_sm=x_modo1+x_modo2+x_modo3+x_modo4+x_modo5; % superposicion
d1_th=0;
d1_max=0;
d5_th=0;
d5_max=0;
drift3_th=0;
drift3_max=0;
Vb_th=0;
Vb_max=0;
V3_th=0;
V3_max=0;
a=[1:5];
b=[6:25];
fin_reg=size(x_sm,2);
for i=1:fin_reg
x_th=zeros(25,1);
x_th(a,1)=x_sm(:,i); %desplazamientos laterales maximos de cada forma modal
x_th(b,1)=-inv(Kbb)*Kba*x_th(a,1); %desplazamientos pasivos maximos de cada forma modal
Ftot=Kt*x_th;
d1_th=x_th(1,1);
if (abs(d1_max)<abs(d1_th))
d1_max=d1_th;
end
d5_th=x_th(5,1);
if (abs(d5_max)<abs(d5_th))
d5_max=d5_th;
end
drift3_th=x_th(3,1)-x_th(2,1);
if (abs(drift3_max)<abs(drift3_th))
drift3_max=drift3_th;
end
Fcp1=Kcp1*[0 0 0 -x_th(1,1) x_th(6,1) x_th(7,1)]';
Fcp2=Kcp1*[0 0 0 -x_th(1,1) x_th(8,1) x_th(9,1)]';
Vb_th=Fcp1(1,1)+Fcp2(1,1);
if (abs(Vb_max)<abs(Vb_th))
Vb_max=Vb_th;
end
Fcp3=Kcp2*[-x_th(2,1) x_th(10,1) x_th(11,1) -x_th(3,1) x_th(14,1) x_th(15,1)]';
Fcp4=Kcp2*[-x_th(2,1) x_th(12,1) x_th(13,1) -x_th(3,1) x_th(16,1) x_th(17,1)]';
V3_th=Fcp3(1,1)+Fcp4(1,1);
if (abs(V3_max)<abs(V3_th))
V3_max=V3_th;
end
end
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Notar que como no se consideraron los grados de libertad en la base de las columnas por saber
que son nulos, se tuvo que confeccionar el vector de desplazamientos de las columnas del primer
piso para luego multiplicarlo por la matriz de rigidez local de cada columna. Al realizar esto se
obtienen las fuerzas y momentos sobre el elemento.
Ahora bien, para estimar por CQC el desplazamiento del primer y quinto piso, el drift del piso 3 y
los cortes basales y del tercer piso se requiere hacer una estimacin mediante una combinacin.
Para esto se requiere determinar los desplazamientos modales que son los valores de entrada
para realizar el CQC. Los desplazamientos modales se definen como la multiplicacin entre la
forma modal i, expresada como vector, por el valor del mximo desplazamiento producto de un
registro dado para el perodo (o frecuencia) asociada a la forma modal, expresada como un
escalar. De esta forma se tienen que determinar los valores del espectro de desplazamiento
asociados a las frecuencias (perodos) de las formas modales.
El espectro de desplazamiento se obtiene a partir de un oscilador de un grado de libertad, del cual
se requerir el mximo desplazamiento para una frecuencia dada del oscilador. As, se tiene que
n
i 1
i 1
x(a,1) : desplazamiento modal mximo asociado a los grados de libertad activos a del modo i
V (:,1) : vector de vectores propios
Sd (i) : desplazamiento obtenido del espectro de desplazamiento asociado al modo i
L(i) : la masa modal considerada en la integracin de la respuesta
Ahora bien, se hace alusin a los grados activos. Esto se refiere a que se debe condensar
estticamente la matriz para reducirla a los grados de libertad asociados de los desplazamientos
horizontales del modelo.
K aa
K
ba
K ab a F
Kbb b 0
Kaa a Kab b F
Kba a Kbb b 0
La rigidez asociada a los trminos no activos queda expresada como
Kb Kbb Kba
1
x (b,1) K K x (a,1)
i 1
i 1
bb
ba
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
De esta manera se pueden determinar los esfuerzos requeridos al multiplicar los trminos de la
matriz de rigidez local del elemento por los desplazamientos modales correspondientes. Basta con
asociar los desplazamientos de los grados de libertad al vector de desplazamientos modales.
a=[1:5];
b=[6:25];
for i=1:5
x_cqc=zeros(25,1);
Sd(i)= max(abs(y_sm(i,:)));
x_cqc(a,1)=-V(:,i)*Sd(i)*L(i); %desp laterales maximos de cada forma modal
x_cqc(b,1)=inv(Kbb)*Kba*x_cqc(a,1); %desp pasivos maximos de cada forma modal
d1(i)=x_cqc(1,1);
d5(i)=x_cqc(5,1);
drift3(i)=x_cqc(3,1)-x_cqc(2,1);
Vb(i)=Sd(i)*(L(i)*w(i))^2;
Fcp1=Kcp2*[x_cqc(2,1) x_cqc(10,1) x_cqc(11,1) x_cqc(3,1) x_cqc(14,1) x_cqc(15,1)]';
Fcp2=Kcp2*[x_cqc(2,1) x_cqc(12,1) x_cqc(13,1) x_cqc(3,1) x_cqc(16,1) x_cqc(17,1)]';
V3(i)=Fcp1(1,1)+Fcp2(1,1);
end
d1_cqc=0;
d5_cqc=0;
drift3_cqc=0;
Vb_cqc=0;
V3_cqc=0;
for i=1:5
for j=1:5
if i==j
rho=1;
else
rho=(8*bi^2*(w(i)+w(j))*(w(i)^3*w(j)^3)^0.5)/((w(i)^2w(j)^2)^2+4*bi^2*w(i)*w(j)*(w(i)+w(j))^2);
end
d1_cqc=d1_cqc+rho*d1(i)*d1(j);% desplazamiento primer piso
d5_cqc=d5_cqc+rho*d5(i)*d5(j);% desplazamiento quinto piso
drift3_cqc=drift3_cqc+rho*drift3(i)*drift3(j);% drift tercer piso
Vb_cqc=Vb_cqc+rho*Vb(i)*Vb(j);% Carga axial en la base columna derecha primer piso
V3_cqc=V3_cqc+rho*V3(i)*V3(j);% Interaccion N-M en la base columna izquierda primer piso
end
end
d1_cqc=d1_cqc^0.5;
d5_cqc=d5_cqc^0.5;
drift3_cqc=drift3_cqc^0.5;
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Vb_cqc=Vb_cqc^0.5;
V3_cqc=V3_cqc^0.5;
Resultados
Para comparar los resultados, stos se presentan como pares ordenados
Desplazamiento primer piso
desplaz_primer_piso=[d1_cqc,d1_max]
0.5304 0.5532
Desplazamiento quinto piso
desplaz_quinto_piso=[d5_cqc,d5_max]
2.2773 2.2636
Desplazamiento relativo del tercer piso
drift_tercer_piso=[drift3_cqc,drift3_max]
0.5412 0.5409
Corte basal
corte_basal=[Vb_cqc,Vb_max]
1.8387 1.9415
Corte tercer piso
corte_tercer_piso=[V3_cqc,V3_max]
1.3868 1.3893
Para comparar la calidad de los resultados obtenidos se presentan los errores para cada par
ordenado
Error desplazamiento primer piso
error_desplaz_primer_piso=(d1_max-d1_cqc)/d1_max*100
4.1262
Error desplazamiento quinto piso
error_desplaz_quinto_piso=(d5_max-d5_cqc)/d5_max*100
-0.6074
Error desplazamiento relativo del tercer piso
error_drift_tercer_piso=(drift3_max-drift3_cqc)/drift3_max*100
-0.0660
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.
Apuntes de MatLab para Dinmica de Estructuras II Semestre 2012 USM Campus Santiago RevB // Ricardo Bustamante H.