Você está na página 1de 4

clc;

clear all;
%PROGRAMA DE ANALISIS DE ESTRUCTURAS PLANAS(2D)
disp('PROGRAMA DE ANALISIS DE ESTRUCTURAS PLANAS(2D)');
% I PARTE: MATRICES DE RIGIDEZ Y MATRIZ DE ENSAMBLAJE GLOBAL
%Solicitar numero de elementos
e= input('introduzca el numero de elementos:');
nn= input('introduzca el numero de nodos globales:');
% Solicitar coorenadas de nodos
for ii=1:e;
nx1(ii)= input('introduzca
ny1(ii)= input('introduzca
nx2(ii)= input('introduzca
ny2(ii)= input('introduzca

la
la
la
la

coordenada
coordenada
coordenada
coordenada

x
y
x
y

del
del
del
del

nodo
nodo
nodo
nodo

inicial:');
inicial:');
final:');
final:');

%PEDIR EL NODO GLOBAL POR ELEMENTO


ng(ii,1)=input('Ingrese la numeracion del nodo global de inicio
del elemento: ');
ng(ii,2)=input('Ingrese la numeracion del nodo global final del
elemento: ');
%Grados de libertad por elemento
nl(ii,1)=ng(ii,1)*2-1;
nl(ii,2)=ng(ii,1)*2;
nl(ii,3)=ng(ii,2)*2-1;
nl(ii,4)=ng(ii,2)*2;
%PARAMETROS DE LOS ELEMENTOS
a(ii)= input('introduzca el area de seccion transveral del
elemento:');
E(ii)= input('introduzca el modulo de elasticidad del elemento:');
%Definiendo longutud y angulos de elementos
deltax(ii)=nx2(ii)-nx1(ii);
deltay(ii)=ny2(ii)-ny1(ii);
l(ii)=sqrt((power(deltax(ii),2)+power(deltay(ii),2)));
alpha(ii)=atand(deltay(ii)/deltax(ii));
%primer cuadrante

if and(gt(deltax(ii),0),gt(deltay(ii),0))
alpha(ii)=alpha(ii)+0;
end
%segundo cuadrante
if and(lt(deltax(ii),0),gt(deltay(ii),0))
alpha(ii)=alpha(ii)+ 180;
end
%tercer cuadrante
if and(lt(deltax(ii),0),lt(deltay(ii),0))
alpha(ii)=alpha(ii)+180;
end
%cuarto cuadrante
if and(gt(deltax(ii),0),lt(deltay(ii),0))
alpha(ii)=alpha(ii)+360;
end
%Matriz de rigidez local
kl=((E(ii)*a(ii))/l(ii))*[1 0 -1 0; 0 0 0 0; -1 0 1 0; 0 0 0 0];
p=cosd(alpha(ii));
m=sind(alpha(ii));
T=[p m 0 0; -m p 0 0; 0 0 p m; 0 0 -m p];
%Matriz de rididez local con transformacion (de acuerdo al angulo)
aplicada
KL=transpose(T)*kl*T;
%Grados de libertad totales (de toda la estructura)
gl=2*nn;
%Matriz de ensamblaje
KG(gl,gl)=0;
%Ensamblaje
for i = 1:4
for j=1:4
KG(nl(ii,i),nl(ii,j))=KG(nl(ii,i),nl(ii,j))+KL(i,j);
end
end
end

%II PARTE: CONDICIONES DE FRONTERA Y DETERMINACION DE


DESPLAZAMIENTOS,
%FUERZAS Y ESFUERZO POR ELEMENTO
f = zeros(gl,1);
u = zeros(gl,1);
sigma = zeros(e,1);
%desplazamientos incognitas
ee= input('introduzca el numero total de desplazamientos
conocidos:');
for ii=1:ee;
nodesu(ii)= input('introduzca la componente de los desplazamientos
conocidos:');
end
unk = 1:gl;
unk(nodesu)=[];
%fuerza activa
em= input('introduzca el numero total de fuerzas no conocidas:');
for ii=1:em;
nodesf(ii)= input('introduzca la componente de las fuerzas no
conocidas:');
end
unkf1 = 1:gl;
unkf1(nodesf) = [];
disp('despliegue de fuerzas conocidas:')
disp(unkf1)
%para introducir las fuerzas conocidas en los nodos conocidos
for ii=1:length(unkf1);
tn(ii)=input('introducir la numeracion de la fuerza conocida, en
orden por columna:');
f(tn(ii))=input('introducir el valor de la fuerza a la componente
de la fuerza seleccionada:');
end
% desplazamientos desconocidos
u(unk)=inv(KG(unk,unk))*f(unk);
%fuerzas externas (globales)
f=KG*u;
% Esfuerzos
tt=[-p -m p m];

for ii=1:e;
sigma(ii)=(E(ii)/l(ii))*(tt)*u([nl(ii,1),nl(ii,2),nl(ii,3),nl(ii,4
)]);
end
disp('u')
disp(u)
disp('f')
disp(f)
disp('sigma')
disp(sigma)

Você também pode gostar