Está en la página 1de 6

CODIGO DE MATLAB PARA RESOLVER ARMADURA EN 2D

close all

clear all

%Escritura de datos por parte del usuario.

n=input('Escribe el numero de nodos: ');

b=input('Introduzca el numero de barras: ');

r=input('Introduzca el numero de reacciones: ');

if b+r == 2*n

nnc=input('Escriba el numero de nodos con carga externa: ');

%Obtencin de coordendadas de nodos, uso de un ciclo for en base al %nmero

%de nodos. Se acomodan: nmero de nodos, coordenadas en x & en y en

%vectores fila separados.

for i=1:n

[nn(i)]= input('Introduzca el numero de nodo: ');

[xn(i)]= input('Coordenada en x de ese nodo: ');

[yn(i)]= input('Coordenada en y de ese nodo: ');

end

%Matriz de coordenadas de nodos, acomoda las

%coordenadas en vectores columna asociados al nmero de nodo

%correspondiente.

coor=[nn' xn' yn'];

%Matriz de coordenadas de nodos, separadas X & Y en diferentes %matrices o vectores columna.

[coor(:,1),i_nn]=sort(coor(:,1));
for ic=1:n

coor(ic,2)=xn(1,i_nn(ic));

coor(ic,3)=yn(1,i_nn(ic));

end

x=coor(:,2);

y=coor(:,3);

%Introduccin de datos de las barras. Nmero de barra, nodo inicial & %final acomodados por
separado en vectores fila.

for ibar=1:b

[kb(ibar)]=input('Introduzca el nmero de la barra: ');

[ib(ibar)]=input('Nodo inicial : ');

[jb(ibar)]=input('Nodo final : ');

end

%Introduccin de numero de nodo con reacciones y clasificacin de estas.

for ireac=1:r

[kn(ireac)]=input('Nmero de nodo con reaccion : ');

[kg(ireac)]=input('Direccion de la reaccion( 1 = X ; 2 = Y ) : ');

end

%Introduccin de las cargas externas, primero el nodo y las componentes %de la carga externa en
X & Y, estos datos tambien son guardados en %vectores fila.

for iload=1:nnc

[p(iload,1)]=1;

[p(iload,2)]=input('Numero de nodo con carga ');


[p(iload,3)]=input('Conponente de la carga en X: ');

[p(iload,4)]=input('Conponente de la carga en Y: ');

end

%Inicializacin de la matrz final, cuadrada, en base al nmero de barras y

%de reacciones (Ya que son las incgnitas a determinar).

c=zeros(b+r,b+r);

info=zeros(r,2);

% Matriz de coeficientes C: cosenos directores de las barras.

for icosdirec=1:b

k=kb(icosdirec);

i=ib(icosdirec);

j=jb(icosdirec);

L=(sqrt((x(j)-x(i))^2 + (y(j)-y(i))^2));

c(2*i-1,k)=(x(j)-x(i))/L;

c(2*i,k)=(y(j)-y(i))/L;

c(2*j-1,k)=-c(2*i-1,k);

c(2*j,k)=-c(2*i,k);

end

%Matriz de las reaccioness.

for ir=1:r

c(2*kn(ir)-2+kg(ir),ir+b)=1;

if kg(ir)==1

info(ir,1)=kn(ir);
else

info(ir,2)=kn(ir);

end

end

%Creacin de la matriz final, y resolucin.

q=zeros(2*n,1);

f=zeros(2*n,1);

cinv=inv(c);

for ic=1:size(p,1)

q(2*p(ic,2)-1)=-p(ic,3);

q(2*p(ic,2))= -p(ic,4);

end

%Con la siguente frmula se resuelve el sistema de ecuaciones de equilibro

%obtenido de los nodos.

f=cinv*q;

%Final, entrega de resultados al usuario.

disp('=========================')

disp('Resultados ')

disp('=========================')

disp(' Barra - Fuerza normal ')

disp('-------------------')

for iesf=1:b,
if f(iesf)>0

disp([num2str(iesf),' ', num2str(f(iesf)),' Carga en tensin'])

elseif f(iesf)<0

disp([num2str(iesf),' ', num2str(f(iesf)*(-1)),' Carga en compresin'])

end

if f(iesf) == 0

disp([num2str(iesf),' ', num2str(f(iesf))])

end

end

disp('-------------------')

disp(' Reacciones ')

disp('-------------------')

for i_reac=b+1:2*n,

if info(i_reac-b,1)~=0

nodo=info(i_reac-b,1);

disp(['Reaccin en X nodo ',num2str(nodo),' = ',num2str(f(i_reac))]);

elseif info(i_reac-b,2)~=0

nodo=info(i_reac-b,2);

disp(['Reaccin en Y nodo ',num2str(nodo),' = ',num2str(f(i_reac))]);

end

end

else

if b+r > 2*n


Gindeter= b+r-2*n;

disp([' Humano tu armadura es estticamente indeterminada de grado ', num2str(Gindeter) ,',


recomiendo aplicar el protocolo hazlo tu mismo ;) '])

else

disp(' Humano tu armadura es estticamente inestable, no me hagas perder el tiempo ;) ')

end

end

También podría gustarte