Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Marco Terico
Ya con estos insumos dispuestos en el programa se comienza con los distintos clculos.
Para este elemento supuesto se calculan las matrices de transformacin cinemtica (a) y la
matriz k.
Siendo
= f^1
Esta matriz es la matriz del elemento en coordenadas locales internas, es decir una matriz que
representa al elemento dispuesto en la configuracin que se muestra en la figura.
Para el clculo de esta matriz se requiere determinar la matriz H para los 6 grados de libertad.
Donde:
Mtodo de la penalizacin: Este mtodo le otorga una rigidez muy alta a los grados de
libertad que se encuentran restringidos por las condiciones de apoyo, como se muestra
en la siguiente figura.
Ejercicio
Se quiere programar el mtodo de rigidez automtico para determinar la matriz de rigidez para
la siguiente estructura:
Solucin
Cdigo de programacin
clc
clear all
format shortG
%% Definicin de cantidad de elementos y nudos
%% Definicin de nudos
i=1;
gdl=zeros(n.nudos,3);
while i<=n.nudos
answer = inputdlg({'Nmero de nudo','Posicin en X','Posicin en
Y'},'Posicin de nudo', [1 50]);
N.nudo(i)=str2double(answer(1));
X.nudo(i)=str2double(answer(2));
Y.nudo(i)=str2double(answer(3));
LabF = menu('Es este nudo un vnculo a tierra?','S','No');
switch LabF
case 1
EsApoyo(i)=1;
vinculo = inputdlg({'Restringe momento? Digite 1 si lo restringe
o "0" si no lo restringe','Restringe en X? Digite 1 si lo restringe o "0" si
no lo restringe','Restringe en Y? Digite 1 si lo restringe o "0" si no lo
restringe'},'Condicin de apoyo', [1 50]);
vin=str2double(vinculo);
if vin(1)==1
gdl(i,1)=gdl(i,1)+1;
end
if vin(2)==1
gdl(i,2)=gdl(i,2)+1;
end
if vin(3)==1
gdl(i,3)=gdl(i,3)+1;
end
case 2
EsApoyo(i)=0;
otherwise
disp('otra cosa')
end
i=i+1;
end
for i=1:n.nudos
MN(i,1)=N.nudo(i);
MN(i,2)=X.nudo(i);
MN(i,3)=Y.nudo(i);
end
%% Conexiones entre elementos
i=1;
while i<=n.elementos
answer = inputdlg({'Qu elemento se est tratando?','Primer
nudo','Segundo nudo'},'Conecciones entre elementos',[1 50]);
n2=str2double(answer);
Num.elemento(i)=n2(1);
Nudo1.elemento(i)=n2(2);
Nudo2.elemento(i)=n2(3);
dx(i)=X.nudo(Nudo2.elemento(i)) -X.nudo(Nudo1.elemento(i));
dy(i)=Y.nudo(Nudo2.elemento(i)) -Y.nudo(Nudo1.elemento(i));
if dx(i)==0;
if dy(i)<0
alpha(i)= -pi/2;
else
alpha(i)= pi/2;
end
else
alpha(i)= atan(dy/dx);
end
L(i)=(dx(i)^2+dy(i)^2)^0.5;
A(i)=h(i)*b(i);
I(i)=h(i)^3*b(i)/12;
i=i+1;
end
%% Matriz de Elementos
ME(1,1)={'Nmero de elemento'};
ME(1,2)={'Primer nudo del elemento'};
ME(1,3)={'Segundo nudo del elemento'};
ME(1,4)={'ngulo entre cordenadas globales y locales'};
ME(1,5)={'Longitud del elemento (m)'};
ME(1,6)={'rea del elemento (cm2)'};
ME(1,7)={'Inercia del elemento (cm4)'};
% Esta matriz es para impresin
for i=2:n.elementos+1
ME(i,1)={Num.elemento(i-1)};
ME(i,2)={Nudo1.elemento(i-1)};
ME(i,3)={Nudo2.elemento(i-1)};
ME(i,4)={alpha(i-1)};
ME(i,5)={L(i-1)};
ME(i,6)={A(i-1)};
ME(i,7)={I(i-1)};
end
% Esta matriz es para manejo del cdigo
for i=1:n.elementos
MEC(i,1)=Num.elemento(i);
MEC(i,2)=Nudo1.elemento(i);
MEC(i,3)=Nudo2.elemento(i);
MEC(i,4)=alpha(i);
MEC(i,5)=L(i);
MEC(i,6)=A(i);
MEC(i,7)=I(i);
if EsApoyo(Nudo1.elemento(i))==1
MEC(i,8)=gdl(Nudo1.elemento(i),1);
MEC(i,9)=gdl(Nudo1.elemento(i),2);
MEC(i,10)=gdl(Nudo1.elemento(i),3);
else
MEC(i,8)=0;
MEC(i,9)=0;
MEC(i,10)=0;
end
if EsApoyo(Nudo2.elemento(i))==1
MEC(i,11)=gdl(Nudo2.elemento(i),1);
MEC(i,12)=gdl(Nudo2.elemento(i),2);
MEC(i,13)=gdl(Nudo2.elemento(i),3);
else
MEC(i,11)=0;
MEC(i,12)=0;
MEC(i,13)=0;
end
end
%MEC;
%% Matriz de rigidez en coordenadas globals externas para los elementos
L=L*100;
% L
k=1;
% Matriz de rigidez en coordenadas globals externas para los elementos que no
son apoyos a tierra
for i=1:n.elementos
%Matriz en coordenadas locales externas
% Primera columna
if MEC(i,8)==1
KL(1,1,i)=A(i)*E/L(i)+A(i)*E/L(i)*10e5;
else
KL(1,1,i)=A(i)*E/L(i);
end
KL(2,1,i)=0;
KL(3,1,i)=0;
KL(4,1,i)=-A(i)*E/L(i);
KL(5,1,i)=0;
KL(6,1,i)=0;
% Segunda columna
KL(1,2,i)=0;
if MEC(i,9)==1
KL(2,2,i)=12*E*I(i)/(L(i)^3)+12*E*I(i)/(L(i)^3)*10e5;
else
KL(2,2,i)=12*E*I(i)/(L(i)^3);
end
KL(3,2,i)=6*E*I(i)/(L(i)^2);
KL(4,2,i)=0;
KL(5,2,i)=-12*E*I(i)/(L(i)^3);
KL(6,2,i)=6*E*I(i)/(L(i)^2);
% Tercera columna
KL(1,3,i)=0;
KL(2,3,i)=6*E*I(i)/(L(i)^2);
if MEC(i,10)==1
KL(3,3,i)=4*E*I(i)/(L(i))+4*E*I(i)/(L(i))*10e5;
else
KL(3,3,i)=4*E*I(i)/(L(i));
end
KL(4,3,i)=0;
KL(5,3,i)=6*E*I(i)/(L(i)^2);
KL(6,3,i)=2*E*I(i)/(L(i));
% Cuarta columna
KL(1,4,i)=-A(i)*E/L(i);
KL(2,4,i)=0;
KL(3,4,i)=0;
if MEC(i,11)==1
KL(4,4,i)=A(i)*E/L(i)+A(i)*E/L(i)*10e5;
else
KL(4,4,i)=A(i)*E/L(i);
end
KL(5,4,i)=0;
KL(6,4,i)=0;
% Quinta columna
KL(1,5,i)=0;
KL(2,5,i)=-12*E*I(i)/(L(i)^3);
KL(3,5,i)=6*E*I(i)/(L(i)^2);
KL(4,5,i)=0;
if MEC(i,12)==1
KL(5,5,i)=12*E*I(i)/(L(i)^3)+12*E*I(i)/(L(i)^3)*10e5;
else
KL(5,5,i)=12*E*I(i)/(L(i)^3);
end
KL(6,5,i)=-6*E*I(i)/(L(i)^2);
% Sexta columna
KL(1,6,i)=0;
KL(2,6,i)=6*E*I(i)/(L(i)^2);
KL(3,6,i)=2*E*I(i)/(L(i));
KL(4,6,i)=0;
KL(5,6,i)=-6*E*I(i)/(L(i)^2);
if MEC(i,13)==1
KL(6,6,i)=4*E*I(i)/(L(i))+4*E*I(i)/(L(i))*10e5;
else
KL(6,6,i)=4*E*I(i)/(L(i));
end
% Matriz H
% 1era columna
H(1,1,i)= cos(alpha(i));
H(2,1,i)= -sin(alpha(i));
H(3,1,i)= 0;
H(4,1,i)= 0;
H(5,1,i)= 0;
H(6,1,i)= 0;
% 2da columna
H(1,2,i)= sin(alpha(i));
H(2,2,i)= cos(alpha(i));
H(3,2,i)= 0;
H(4,2,i)= 0;
H(5,2,i)= 0;
H(6,2,i)= 0;
% 3ra columna
H(1,3,i)= 0;
H(2,3,i)= 0;
H(3,3,i)= 1;
H(4,3,i)= 0;
H(5,3,i)= 0;
H(6,3,i)= 0;
%4ta columna
H(1,4,i)= 0;
H(2,4,i)= 0;
H(3,4,i)= 0;
H(4,4,i)= cos(alpha(i));
H(5,4,i)= -sin(alpha(i));
H(6,4,i)= 0;
%5ta columna
H(1,5,i)= 0;
H(2,5,i)= 0;
H(3,5,i)= 0;
H(4,5,i)= sin(alpha(i));
H(5,5,i)= cos(alpha(i));
H(6,5,i)= 0;
%6ta columna
H(1,6,i)= 0;
H(2,6,i)= 0;
H(3,6,i)= 0;
H(4,6,i)= 0;
H(5,6,i)= 0;
H(6,6,i)= 1;
% Clculo de la matriz de rigidez en coordenadas globales externas
% para cada elemento
KG1(:,:,i)=(H(:,:,i).')*KL(:,:,i)*(H(:,:,i));
end
KE=zeros(3*n.nudos,3*n.nudos);
%% Ordenando matriz en coordenadas globales externas
for i=1:n.elementos
pn=MEC(i,2);
sn=MEC(i,3);
v1(1)=3*pn-2;
v1(2)=3*pn-1;
v1(3)=3*pn;
v1(4)=3*sn-2;
v1(5)=3*sn-1;
v1(6)=3*sn;
for j=1:6
for k=1:6
KE(v1(k),v1(j))=KE(v1(k),v1(j))+KG1(k,j,i);
end
end
end
nombre=inputdlg({'Digite el nombre deseado para el archivo'},'Nombre de
archivo .xlxs',[1 50],{'Resultados_Kauto.xlsx'});
nombre=char(nombre);
xlswrite(nombre,KE,'MATRIZ_KE','B2');
Bibliografa
Salas, Luis. (2015). Notas del curso de Mecnica Estructural II. Universidad de Costa Rica. San
Jos Costa Rica.