You are on page 1of 4

7/08/18 10:01 AM C:\Users\camil\Desktop\TAREA.

m 1 of 4

clear all

%Módulo de elasticidad
E=input('Ingrese el módulo de elasticidad:' );

%Área de la sección transversal


Ac=input('El área de la sección transversal es constante para todas las barras? No:0
y Si:1');
if Ac ==1
A=input('Ingrese el área:');
end

%Ubicación de los nodos


nodos=input('Ingrese el número de nodos:' );
for st=1:nodos

sta1='Ingrese las coordendas en x del nodo' ;


sta2=num2str(st);
sta3=' :';
men=strcat(sta1,sta2,sta3);
X(st,1)=input(men);

sta1='Ingrese las coordendas en y del nodo' ;


men=strcat(sta1,sta2,sta3);
Y(st,1)=input(men);

sta1='Ingrese las coordendas en Z del nodo' ;


men=strcat(sta1,sta2,sta3);
Z(st,1)=input(men);

end

%Asignación de los nodos a cada barra

barras=input('Ingrese el número de barras:' );

for st=1:barras
for fil=1:2
if fil==1
sta1='Ingrese uno de los nodos relacionado con la barra' ;
sta2=num2str(st);
sta3=' :';
men=strcat(sta1,sta2,sta3);
IJ(st,fil)=input(men);
end

if fil==2
sta1='Ingrese el otro nodo relacionado con la barra' ;
7/08/18 10:01 AM C:\Users\camil\Desktop\TAREA.m 2 of 4

men=strcat(sta1,sta2,sta3);
IJ(st,fil)=input(men);
end
end
end

%Longitudes de las barras


for st=1:barras
l(st)=sqrt((X(IJ(st,2))-X(IJ(st,1)))^2+(Y(IJ(st,2))-Y(IJ(st,1)))^2+(Z(IJ(st,2))-Z
(IJ(st,1)))^2);
end

%Área de la sección transversal en caso de que sea variable

if Ac ==0
for Acc=1:barras
sta1='Ingrese el área para la barra' ;
sta2=num2str(Acc);
sta3=' :';
men=strcat(sta1,sta2,sta3);
At(Acc,1)=input(men);
end
end

%Matriz de rigidez
gl=nodos*3;
K=zeros(gl,gl);

for st=1:barras
cx=(X(IJ(st,2))-X(IJ(st,1)))/l(st);
cy=(Y(IJ(st,2))-Y(IJ(st,1)))/l(st);
cz=(Z(IJ(st,2))-Z(IJ(st,1)))/l(st);

if Ac==0
K_e=E*At(st)/l(st)*[cx^2 cx*cy cx*cz -cx^2 -cx*cy -cx*cz; cx*cy cy^2 cy*cz -cx*cy
-cy^2 -cy*cz; cx*cz cy*cz cz^2 -cx*cz -cy*cz -cz^2; -cx^2 -cx*cy -cx*cz cx^2 cx*cy
cx*cz; -cx*cy -cy^2 -cy*cz cx*cy cy^2 cy*cz; -cx*cz -cy*cz -cz^2 cx*cz cy*cz cz^2]
elseif Ac==1
K_e=E*A/l(st)*[cx^2 cx*cy cx*cz -cx^2 -cx*cy -cx*cz; cx*cy cy^2 cy*cz -cx*cy -
cy^2 -cy*cz; cx*cz cy*cz cz^2 -cx*cz -cy*cz -cz^2; -cx^2 -cx*cy -cx*cz cx^2 cx*cy
cx*cz; -cx*cy -cy^2 -cy*cz cx*cy cy^2 cy*cz; -cx*cz -cy*cz -cz^2 cx*cz cy*cz cz^2]
end
g_e=[3*IJ(st,1)-2 3*IJ(st,1)-1 3*IJ(st,1) 3*IJ(st,2)-2 3*IJ(st,2)-1 3*IJ(st,2)];
deltaK_e=zeros(gl,gl);
deltaK_e(g_e,g_e)=K_e;
K=K+deltaK_e;
end

%Apoyos
7/08/18 10:01 AM C:\Users\camil\Desktop\TAREA.m 3 of 4

cont=1;
contas=1;
sinapo=1;
for st=1:nodos
%Clase de apoyo
sta1='¿Tiene apoyo el nodo';
sta2=num2str(st);
sta3='? Si:1 No:0';
men=strcat(sta1,sta2,sta3);

ap=input(men);
if ap==0

apsd(cont)=st*3-2; %en x
apsd(cont+1)=st*3-1; %en y
apsd(cont+2)=st*3; %en z
cont=cont+3;

elseif ap==1
sta1=input('¿Qué clase de apoyo es? Fijo:0 Esfera:1' );
if sta1==0
apss(contas)=st*3-2; %en x
apss(contas+1)=st*3-1; %en y
apss(contas+2)=st*3; %en z
contas=contas+3;
elseif sta1==1
apsd(cont)=st*3-2; %en x
apsd(cont+1)=st*3-1; %en y
cont=cont+2;
apss(contas)=st*3; %en z
contas=contas+1;

end
end
end

%Fuerzas aplicada

nF=input('¿En cuantos nodos se encuentran fuerzas aplicada? ' );


P=zeros(3*nodos,1);

for app=1:nF
F=input('¿En que nodo se encuentra la fuerza aplicada? ' );

coox=input('Introducir el valor de la fuerza en x: ' );


cooy=input('Introducir el valor de la fuerza en y: ' );
cooz=input('Introducir el valor de la fuerza en z: ' );
P(3*F-2)=coox;
7/08/18 10:01 AM C:\Users\camil\Desktop\TAREA.m 4 of 4

P(3*F-1)=cooy;
P(3*F)=cooz;
end
%Cálculo de desplazamientos y reacciones
a=apss'; b=apsd';
K_aa=K(a,a);
K_ab=K(a,b);
K_ba=K(b,a);
K_bb=K(b,b);

P_b=P(b);
D_b=K_bb\P_b;
P_a=K_ab*D_b
D=zeros(39,1);
D(b)=D_b;

P_b
display(D)

You might also like