Sei sulla pagina 1di 6

11/10/18 09:17 PM C:\Users\Thomas\Documents...\porticoama.

m 1 of 6

clc
%datos iniciales
nnd=4;
nel=3;
nsec=2;
nmat=1;
ndesp=0;
nap=2; %número de apoyos
nFext=0;
%matrices necesarias
Coor=zeros(nnd,2);
Sprop=zeros(nsec,2);
Mat=zeros(nmat,1);
Fext=zeros(nnd,3);
Elem=zeros(nel,4);
GLnd=zeros(nnd,3);
GLel=zeros(nel,6);
Rest=zeros(nnd,3);
Asent=zeros(nnd,3);
kel=cell();
T=cell();
keg=cell();
ffijas=cell();
ffijasg=cell();
Uge=cell();
Fel=cell();
%ENTRADA DE DATOS
%coordenadas
for i=1:nnd
Coor(i,1)=input(['Coordenada x del nudo ' num2str(i) '\n']);
Coor(i,2)=input(['Coordenada z del nudo ' num2str(i) '\n']);
end
%materiales
for i=1:nmat
Mat(i,1)=input(['Módulo de elasticidad del material ' num2str(i) '\n']);
end
%secciones
for i=1:nsec
ba=input(['Base de la sección en metros ' num2str(i) '\n']);
alt=input(['Altura de la sección en metros ' num2str(i) '\n']);
Sprop(i,1)= ba*alt;
Sprop(i,2)=ba*(alt^3)/12;
end
%restricciones
nres=0;
for k=1:1:nap
i=input (['Nudo restringido' '\n']);
j=input (['Restringido en x (1), en y (2) en z(3) en xy (4) o en xyz (5)' '\n']);
if j<4
Rest(i,j)=1;
nres=nres + 1;

You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)
11/10/18 09:17 PM C:\Users\Thomas\Documents...\porticoama.m 2 of 6

elseif j==4
Rest(i,1)=1;
Rest(i,2)=1;
nres=nres + 2;
else
Rest(i,1)=1;
Rest(i,2)=1;
Rest(i,3)=1;
nres= nres + 3;
end
end
GL=nnd*3;
GIC=GL-nres;
% Matriz de rigidez total
KT=zeros(GL,GL);
% Vectores de desplazamiento
UA=zeros(nres,1);
%UN=zeros(GIC,1);
UT=zeros(GL,1);
FFT=zeros(GL,1);
FN=zeros(GIC,1);
FA=zeros(nres,1);
% Matriz de grados de libertad
il=1;
ir=GIC+1;
for i=1:nnd
for j=1:1:3
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 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 ' num2str(i) '\n']);
Elem(i,4)=input(['Tipo de 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 x(1) y(2) o z(3)' '\n']);
F=input(['Magnitud de la carga en el nudo' num2str(i) '\n']);
Fext(i,j)=F+Fext(i,j);
end
% Transformación del vector de fuerzas externas

You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)
11/10/18 09:17 PM C:\Users\Thomas\Documents...\porticoama.m 3 of 6

for i=1:1:nnd
for j=1:1:3
if GLnd(i,j)<=GIC
FN(GLnd(i,j),1)=Fext(i,j);
else
FA(GLnd(i,j)-GIC,1)=Fext(i,j);
end
end
end
%Definición de la matriz de rigidez para cada elemento
for i=1:1:nel
%Propiedades de cada elemento
xi=Coor(Elem(i,1),1);
yi=Coor(Elem(i,1),2);
xf=Coor(Elem(i,2),1);
yf=Coor(Elem(i,2),2);
dx=xf-xi;
dy=yf-yi;
L=sqrt((dx^2)+(dy^2));
C=dx/L;
S=dy/L;
%matriz de transformación
T{i}=[C,-S,0,0,0,0;
S,C,0,0,0,0;
0,0,1,0,0,0;
0,0,0,C,-S,0;
0,0,0,S,C,0;
0,0,0,0,0,1];
%coeficientes de rigidez
AE = Sprop(Elem(i,3),1)*Mat(Elem(i,4),1);
EI=Sprop(Elem(i,3),2)*Mat(Elem(i,4),1);
R1=AE/L;
R2=12*EI/(L^3);
R3=6*EI/(L^2);
R4=4*EI/L;
R5=2*EI/L;
%matriz de rigidez local
kel{i}=[R1,0,0,-R1,0,0;
0,R2,R3,0,-R2,R3;
0,R3,R4,0,-R3,R5;
-R1,0,0,R1,0,0;
0,-R2,-R3,0,R2,-R3;
0,R3,R5,0,-R3,R4];
%matriz de rigidez global
keg{i}=T{i}*kel{i}*T{i}';
%Identificacion de grados de libertad por elemento
for j=1:1:3
GLel(i,j)=GLnd(Elem(i,1),j);
GLel(i,j+3)=GLnd(Elem(i,2),j);
end
%Fuerzas fijas

You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)
11/10/18 09:17 PM C:\Users\Thomas\Documents...\porticoama.m 4 of 6

ffijas{i}=zeros(6,1);
cargaf = input (['el elemento ' num2str(i) ' tiene carga entre los nudos? si (1) no
(2)' '\n']);
if cargaf==1
numcargas=input (['cuántas cargas hay en el elemento ' num2str(i) '\n']);
for k=1:1:numcargas
tipoc=input(['la carga ' num2str(k) ' es distribuida en todo el elemento(1)
o puntual(2)' '\n']);
direccion=input(['la dirección de la carga es en x(1) en y(2) o z(3)'
'\n']);
if tipoc ==1
w=input(['cual es la magnitud de la carga distribuida ' '\n']);
if direccion==1
ffijas{i}(1,1)= -w*L/2 + ffijas{i}(1,1);
ffijas{i}(4,1)= -w*L/2 + ffijas{i}(4,1);
elseif direccion==2
ffijas{i}(2,1)= -(w*L/2) + ffijas{i}(2,1);
ffijas{i}(3,1)= -(w*(L^2)/12) + ffijas{i}(3,1);
ffijas{i}(5,1)= -(w*L/2) + ffijas{i}(5,1);
ffijas{i}(6,1)= (w*(L^2)/12) + ffijas{i}(6,1);
else
end
else
a=input(['a que distancia está la carga desde el apoyo i' '\n']);
P=input(['cual es la magnitud de la carga ' '\n']);
b=L-a;
if direccion==1
ffijas{i}(1,1)=-P*b/L + ffijas{i}(1,1);
ffijas{i}(4,1)=-P*a/L + ffijas{i}(4,1);
elseif direccion==2
ffijas{i}(2,1)= P*(((a^2)*b/(L^3))-(a*(b^2)/(L^3))+(a/L)-1) +
ffijas{i}(2,1);
ffijas{i}(3,1)= -P*a*(b^2)/(L^2) + ffijas{i}(3,1);
ffijas{i}(5,1)= -(P*a/L)*((a*b/(L^2))-((b^2)/(L^2))+1) + ffijas{i}
(5,1);
ffijas{i}(6,1)= P*(a^2)*b/(L^2) + ffijas{i}(6,1);
else
ffijas{i}(3,1)= P*(b/L)*(2-(3*b/L)) + ffijas{i}(3,1);
ffijas{i}(6,1)= P*(a/L)*(2-(3*a/L)) + ffijas{i}(6,1);
ffijas{i}(5,1)=-((P*(b/L)*(2-(3*b/L)))+(P*(a/L)*(2-(3*a/L)))+P)/L +
ffijas{i}(5,1);
ffijas{i}(2,1)=((P*(b/L)*(2-(3*b/L)))+(P*(a/L)*(2-(3*a/L)))+P)/L +
ffijas{i}(2,1);
end
end
end
else
end
ffijasg{i}=zeros(6,1);
ffijasg{i}=T{i}*ffijas{i};
%Ensamblaje de la matriz de rigidez y vector de fuerzas fijas

You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)
11/10/18 09:17 PM C:\Users\Thomas\Documents...\porticoama.m 5 of 6

for l=1:1:6
for m=1:1:6
KT(GLel(i,l),GLel(i,m))=KT(GLel(i,l),GLel(i,m))+keg{i}(l,m);
end
FFT(GLel(i,l),1)=FFT(GLel(i,l),1)+ffijasg{i}(l,1);
end
end
% obtener FNF y FAF del vector FFT
FNF=FFT(1:GIC,1);
FAF=FFT(GIC+1:GL,1);
%matriz de asentamientos o desplazamientos
if ndesp==0
else
for k=1:1:ndesp
i=input (['Nudo con desplazamiento' '\n']);
j=input (['Dirección del desplazamiento en x=1 y=2 o z=3 (giro) ' '\n']);
Asent(i,j)=input(['Magnitud del desplazamiento en el nodo ' num2str(i) '\n']);
end
end
%transformación del vector desplazamiento
for i=1:1:nnd
for j=1:1:3
if GLnd(i,j)<=GIC
else
UA((GLnd(i,j)-GIC),1)=Asent(i,j);
end
end
end
%Submatrices 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 del sistema general
UN=(KNN^-1)*(FN-FNF-(KNA*UA));
FA=FAF+(KAN*UN)+(KAA*UA)-FA;
%Fuerzas en cada elemento
for i=1:1:GL
if i<=GIC
UT(i,1)=UN(i,1);
else
UT(i,1)=UA(i-GIC,1);
end
end

for i=1:1:nel
for j=1:1:6
if j<=3
Uge{i}(j,1)=UT(GLnd(Elem(i,1),j),1);
else
Uge{i}(j,1)=UT(GLnd(Elem(i,2),j-3),1);

You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)
11/10/18 09:17 PM C:\Users\Thomas\Documents...\porticoama.m 6 of 6

end
end
Fel{i}=ffijas{i}+(kel{i}*((T{i}'*Uge{i})));
disp ('elemento')
disp (i)
disp(Fel{i})
end

You created this PDF from an application that is not licensed to print to novaPDF printer (http://www.novapdf.com)

Potrebbero piacerti anche