0% encontró este documento útil (0 votos)
104 vistas7 páginas

Análisis de Cerchas en MATLAB

Este documento presenta el código para realizar un análisis estructural de un modelo bidimensional. Primero se define el número de nudos, elementos, secciones, materiales y fuerzas externas. Luego se dimensionan las matrices necesarias y se solicita la entrada de datos geométricos, materiales y cargas. Finalmente, se ensambla la matriz de rigidez global y se resuelve el sistema para obtener los desplazamientos y reacciones en los apoyos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
104 vistas7 páginas

Análisis de Cerchas en MATLAB

Este documento presenta el código para realizar un análisis estructural de un modelo bidimensional. Primero se define el número de nudos, elementos, secciones, materiales y fuerzas externas. Luego se dimensionan las matrices necesarias y se solicita la entrada de datos geométricos, materiales y cargas. Finalmente, se ensambla la matriz de rigidez global y se resuelve el sistema para obtener los desplazamientos y reacciones en los apoyos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

9/20/18 4:53 AM D:\M...\Cercha_2019.

m 1 of 7

% Datos iniciales de entrada


nnd=5;
nel=7;
nsec=3;
nmat=1;
nap=3; % numero de nudos restringidos
nFext=2;

% nAsen=0;
% nnd=input(['Número de nudos' '\n'])
% nel=input(['Número de elementos' '\n'])
% nsec=input(['Número de secciones' '\n'])
% nmat=input(['Número de materiales' '\n'])
% nrest=input(['Número de restricciones' '\n'])
% nFext=input(['Número de fuerzas externas' '\n'])
% nAsen=input(['Número de asentamientos' '\n'])

% Dimensionamiento de matrices

Coor=zeros(nnd,2);
Mprop=zeros(nsec,1);
Mat=zeros(nmat,1);
Fext=zeros(nnd,2);
Elem=zeros(nel,4);
GLnd=zeros(nnd,2); % Matriz de grados de libertad de los
nudos
GLel=zeros(nel,4); % Matriz de grados de libertad de los
elementos o de incidencia
Rest=zeros(nnd,2);

% Entrada de datos de los nudos


for i=1:1:nnd
9/20/18 4:53 AM D:\M...\Cercha_2019.m 2 of 7

Coor(i,1)=input(['Coordenada x del nudo ' num2str(i)


'\n'])
Coor(i,2)=input(['Coordenada y del nudo ' num2str(i)
'\n'])
end

% Secciones y materiales
for i=1:1:nmat
Mat(i,1)=input(['Módulo de elasticidad del material '
num2str(i) '\n'])
end

for i=1:1:nsec
Mprop(i,1)=input(['Area de la sección ' num2str(i)
'\n'])
end

% Entrada de datos de las restriccciones


nres=0;
for k=1:1:nap
i=input(['Nudo restringido' '\n'])
j=input(['Restringido en x[1],en y[2],en xy[3]'
'\n'])
if j<=2
Rest(i,j)=1;
nres=nres+1;
else
Rest(i,1)=1;
Rest(i,2)=1;
nres=nres+2;
end
end

GL=nnd*2;
9/20/18 4:53 AM D:\M...\Cercha_2019.m 3 of 7

GIC=GL-nres;

%Dimensionar desplazamientos y matriz de rigidez global


KT=zeros(GL,GL);
UT=zeros(GL,1);
UA=zeros(nres,1); % Desplazamientos de los apoyos
UN=zeros(GIC,1);
FA=zeros(nres,1); % Reacciones de los apoyos
FN=zeros(GIC,1);

% Matriz de grados de libertad


il=1;
ir=GIC+1;
for i=1:1:nnd
for j=1:1:2
if Rest(i,j)==0
GLnd(i,j)=il;
il=il+1;
else
GLnd(i,j)=ir;
ir=ir+1;
end
end
end

%Identificación de los elementos


for i=1:1:nel

Elem(i,1)=input(['Nudo inicial del elemento ' num2str


(i) '\n'])
Elem(i,2)=input(['Nudo final del elemento ' num2str
(i) '\n'])
Elem(i,3)=input(['Tipo de sección del elemento '
9/20/18 4:53 AM D:\M...\Cercha_2019.m 4 of 7

num2str(i) '\n'])
Elem(i,4)=input(['Tipo del material del elemento '
num2str(i) '\n'])

end

% Fuerzas externas
for k=1:1:nFext
i=input(['Nudo con carga''\n'])
j=input(['Dirección de la carga en y[1],y[2]''\n'])
F=input(['Magnitud de la carga en el nudo' num2str
(i) '\n'])
Fext(i,j)=F+Fext(i,j);
end

% Transformación de vector de fuerzas externas


for i=1:1:nnd
for j=1:1:2
if GLnd(i,j)<= GIC
FN(GLnd(i,j),1)=Fext(i,j);
else
FA(GLnd(i,j)-GIC,1)=Fext(i,j);
UA(GLnd(i,j)-GIC,1)=Asen(i,j);
end
end
end

% Determinación de la matriz de rigidez y de


transformacion de cada elemento

for i=1:1:nel
% Propiedades de cada elemento
xi= Coor(Elem(i,1),1);
9/20/18 4:53 AM D:\M...\Cercha_2019.m 5 of 7

yi= Coor(Elem(i,1),2);
xf= Coor(Elem(i,2),1);
yf= Coor(Elem(i,2),2);
Delx=xf-xi;
Dely=yf-yi;
Long=(Delx^2+Dely^2)^0.5;
Cs=Delx/Long;
Sn=Dely/Long;
T{i}=[Cs,-Sn,0,0;
Sn,Cs,0,0;
0,0,Cs,-Sn;
0,0,Sn,Cs];
r1=Mprop(Elem(i,3),1)*Mat(Elem(i,4),1)/Long;

% Matriz de rigidez local


kel=r1*[1,0,-1,0;
0,0,0,0;
-1,0,1,0;
0,0,0,0];

% Matriz de rigidez global


keg{i}=T{i}*kel*T{i}';

% Identificación de grados de libertad por elemento


for j=1:1:2
GLel(i,j)=GLnd(Elem(i,1),j);
GLel(i,j+2)=GLnd(Elem(i,2),j);
end

% Ensamblaje de la matriz de rigidez


for m=1:1:4
for n=1:1:4
KT(GLel(i,m),GLel(i,n))= KT(GLel(i,m),GLel(i,
n))+keg{i}(m,n);
9/20/18 4:53 AM D:\M...\Cercha_2019.m 6 of 7

end
end

end
% Extracción de la matriz de rigidez

KNN=KT(1:GIC,1:GIC);
KNA=KT(1:GIC,GIC+1:GL);
KAN=KT(GIC+1:GL,1:GIC);
KAA=KT(GIC+1:GL,GIC+1:GL);
% Solución de desplazamientos y reacciones
UN=KNN^-1*(FN-KNA*UA);
FA=-FA+KAN*UN+KAA*UA;

% Fuerzas en los extremos de los elementos


for i=1:1:nel

% Identificación de los deplazamientos del elemento


Uel=zeros(4,1);
for j=1:1:4
if GLel(i,j)<=GIC
Uel(j,1)=UN(GLel(i,j));
else
Uel(j,1)=UA(GLel(i,j)-GIC);
end
end
% Fuerzas en los extremos de los elementos
Fg{i}=keg{i}*Uel;

end
9/20/18 4:53 AM D:\M...\Cercha_2019.m 7 of 7

También podría gustarte