Está en la página 1de 18

CODIFICACIN DEL PROGRAMA EN MATLAB PARA LA SOLUCIN DE VIGAS DE N

TRAMOS POR EL MTODO DE LA RIGIDEZ:


function VIGARIGIDEZ
%%%%% ingreso de datos
clc
node=input ('INGRESE LAS COORDENADAS DE CADA NUDO [#n cx cy] =')
memb=input ('INGRESE MIEMBROS [#m ni nj prop(i)] =')
rest=input ('INGRESE RESTRICCIONES DE CADA NUDO [#n ry rz] =')
prop=input ('INGRESE PROPIEDADES DE CADA MIEMBRO [#m E I] =')
nlc=input ('INGRESE CARGAS CONCENTRADAS EN NUDOS [#n Fy Mz] =')
mlc=input ('INGRESE CARGAS CONCENTRADAS EN MIEMBROS [#m Fy Mz d1 d2] =')
mld=input ('INGRESE CARGAS DISTRIBUIDAS EN MIEMBROS [#m w1 w2 d1 d2] =')
%longitud
nn=size(node);
n=nn(1,1);
L=zeros(1,1,1);
for i=1:n-1
L(:,:,i)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L=L(:);
%restricciones
r=zeros(2*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(2*tp-1,1)=rest(i,2);
r(2*tp,1)=rest(i,3);%r:es la lista de restricciones
end
r;
t=0;
rc=zeros(1,1);
for i=1:2*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
%EI
EI=zeros(n-1,1);
for i=1:n-1
k=memb(i,4);
EI(i)=prop(k,2)*prop(k,3);
end
EI;
%matriz miembro
SM=zeros(4,4,1);
for i=1:n-1;
SM(:,:,i)=(EI(i)/L(i)^3)*[12
6*L(i)
6*L(i)
4*L(i)^2
-12
-6*L(i)
6*L(i)
2*L(i)^2
end
SM;
%matriz total de nudo
N=2*n-sum(r);
SJ=zeros(2*n,1);
for i=1:n-1;
j1=2*i-1;j2=2*i;k1=2*i+1;k2=2*i+2;
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);

-12
6*L(i);...
-6*L(i)
2*L(i)^2;...
12
-6*L(i);...
-6*L(i) 4*L(i)^2];

end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(2*i-1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SM(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SM(2,1,i);
SJ(k1,j1)=SM(3,1,i);
SJ(k2,j1)=SM(4,1,i);
end
if r(2*i,1)==0;
SJ(j1,j2)=SJ(j1,j2)+SM(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SM(2,2,i);
SJ(k1,j2)=SM(3,2,i);
SJ(k2,j2)=SM(4,2,i);
end
if r(2*i+1,1)==0;
SJ(j1,k1)=SM(1,3,i);
SJ(j2,k1)=SM(2,3,i);
SJ(k1,k1)=SJ(k1,k1)+SM(3,3,i);
SJ(k2,k1)=SJ(k2,k1)+SM(4,3,i);
end
if r(2*i+2,1)==0;
SJ(j1,k2)=SM(1,4,i);
SJ(j2,k2)=SM(2,4,i);
SJ(k1,k2)=SJ(k1,k2)+SM(3,4,i);
SJ(k2,k2)=SJ(k2,k2)+SM(4,4,i);
end
end
SJ;%matrizdenudototal
%cargas en los miembros
%(member load concenter)==%mlc
%AML1(cargaputual+momento);aplicable a cualquier # de carga por miembro
%[#m FY Fz d1 d2] ojoj
lc=size(mlc);
cl=lc(1,1);
AML1=zeros(n-1,4);
for i=1:cl;
temp=mlc(i,1);
p=mlc(i,2);ap=mlc(i,4);bp=L(temp)-ap;
map=p*ap*bp^2/L(temp)^2;mbp=-p*ap^2*bp/L(temp)^2;
rap=p*bp^2*(3*ap+bp)/L(temp)^3;rbp=p*ap^2*(ap+3*bp)/L(temp)^3;
M=mlc(i,3);am=mlc(i,4);bm=L(temp,1)-am;
mam=M*bm*(2*am-bm)/L(temp)^2;mbm=M*am*(2*bm-am)/L(temp)^2;
ram=6*M*am*bm/L(temp)^3;rbm=-ram;
AML1(temp,1)=AML1(temp,1)+rap+ram;

AML1(temp,2)=AML1(temp,2)+map+mam;
AML1(temp,3)=AML1(temp,3)+rbp+rbm;
AML1(temp,4)=AML1(temp,4)+mbp+mbm;
end
clear('lc','cl','temp','map','mbp','mam','mbm','rap','rbp','rap','ram');AML1;
%(member loadZ)==%mld
%AML2(carga distribuida);aplicable a cualquier # de carga dist por miembro
lc=size(mld);
cl=lc(1,1);
AML2=zeros(n-1,4);
for i=1:cl;
temp=mld(i,1);
w=mld(i,2);p=mld(i,5)-mld(i,4);
ma=w*p^2/12;mb=-ma;
ra=w*p/2;rb=w*p/2;
AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ma;
AML2(temp,3)=AML2(temp,3)+rb;
AML2(temp,4)=AML2(temp,4)+mb;
end
clear('lc','cl','temp','ma','mb');AML2;
%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%cargas en los nudos (nlc:nodal load concenter)
%[#n Fy Mz]
lc=size(nlc);
cl=lc(1,1);
A=zeros(2*n,1);
for i=1:cl;
temp=nlc(i,1);
A(2*temp-1,1)=nlc(i,2);
A(2*temp,1)=nlc(i,3);
end
clear('temp','lc','cl');A;
%matriz carga de nudo equivalente
AE=zeros(2*n,1);
for i=1:n-1;
AE(2*i-1,1)=AE(2*i-1,1)-AML(i,1);
AE(2*i,1)=AE(2*i,1)-AML(i,2);
AE(2*i+1,1)=AE(2*i+1,1)-AML(i,3);
AE(2*i+2,1)=AE(2*i+2,1)-AML(i,4);
end
AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:2*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%RESULTADOS%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:2*n,1);
S=SJ(1:N,1:N);SRD=SJ(N+1:2*n,1:N);
D=inv(S)*AD;%desplazamientos de nudos

AR=ARL+SRD*D;%reacciones en nudos
%%%%%%%%%Ordenando desplazamientos%%%%%%%%%
DJ=zeros(2*n,1);
j=0;kk=0;
for i=1:2*n;
j=j+1;
if r(i)==0;
kk=kk+1;
DJ(j)=D(kk);
end
end
DJ;
AM=zeros(1,4);
for i=1:n-1;
j1=2*i-1;j2=2*i;k1=2*i+1;k2=2*i+2;
kk1=4*EI(i)/L(i);kk2=1.5*kk1/L(i);kk3=2*kk2/L(i);
AM(i,1)=AML(i,1)+kk3*(DJ(j1)-DJ(k1))+kk2*(DJ(j2)+DJ(k2));
AM(i,2)=AML(i,2)+kk2*(DJ(j1)-DJ(k1))+kk1*(DJ(j2)+DJ(k2)/2);
AM(i,3)=AML(i,3)-kk3*(DJ(j1)-DJ(k1))-kk2*(DJ(j2)+DJ(k2));
AM(i,4)=AML(i,4)+kk2*(DJ(j1)-DJ(k1))+kk1*(DJ(j2)/2+DJ(k2));
end
clc
disp('---------------------------------------------------------------')
disp('--------PROGRAMA PARA LA SOLUCIN DE VIGAS DE N TRAMOS---------')
disp('---------------------------------------------------------------')
disp('-------UNIVERSIDAD NACIONAL DE SAN CRISTBAL DE HUAMANGA-------')
disp('------- FACULTAD DE INGENIERA DE MINAS GEOLOGA Y CIVIL-------')
disp('------ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA CIVIL-----')
disp('---------------CURSO: ANLISIS ESTRUCTURAL II ----------------')
disp('----------------------SIGLA: IC - 444 ------------------------')
disp('----------------ALUMNO: BOLVAR OR LUIS PAVEL-----------------')
disp('---------DOCENTE DEL CURSO: ING. RUBN YACHAPA CONDEA---------')
disp('')
disp('-------------------------RESULTADOS----------------------------')
disp('MATRIZ DE DESPLAZAMIENTOS:')
disp(DJ)
disp('MATRIZ DE REACCIONES:')
disp(AR)
disp('MATRIZ DE ACCIONES DE MIEMBRO:')
disp(AM)
%rptas en coordenadas globales

CODIFICACIN DEL PROGRAMA EN MATLAB PARA LA SOLUCIN DE ARMADURAS POR EL


MTODO DE LA RIGIDEZ:
function ARMADURA
disp('ingrese');
node=input('coordenadas:[#n cx cy]=');
disp('ingrese');
memb=input('miembros:[#n ni nj prop.]');
disp('ingrese');
rest=input('restricciones:[#n resX resY]');
disp('ingrese');
prop=input('propiedades:[#prop A E]');
disp('ingrese');
nlc=input('Cargas en Nudos:[#n Fx(+)> Fy(+)^]');
disp('ingrese');
mlc=input('Cargas Concentradas en miembro:[#m Fx< Fy! Mz d]');
disp('ingrese');
mld=input('cargas distribuidas en miembro:[#m w1 w2 d1 d2]');
%longitud
nn=size(node);
n=nn(1,1);
mm=size(memb);
m=mm(1,1);
L=zeros(1,1,1);
for i=1:m
L(:,:,i)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L=L(:);
%cosenos directores
cx=zeros(1,1);
cy=zeros(1,1);
for i=1:m;
cx(i,1)=(node(memb(i,3),2)-node(memb(i,2),2))/L(i);
cy(i,1)=(node(memb(i,3),3)-node(memb(i,2),3))/L(i);
end
cx;
cy;
%restricciones
r=zeros(2*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(2*tp-1,1)=rest(i,2);
r(2*tp,1)=rest(i,3);%r:es la lista de restricciones
end
r;
t=0;
rc=zeros(1,1);
for i=1:2*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
%EA
EA=zeros(n-1,1);
for i=1:m
k=memb(i,4);
EA(i)=prop(k,2)*prop(k,3);
end
EA;
%matriz miembro
SMD=zeros(4,4,1);

for i=1:m;
SMD(:,:,i)=(EA(i)/L(i))*[cx(i,1)^2
cx(i,1)*cy(i,1) -cx(i,1)^2
cx(i,1)*cy(i,1);...
cx(i,1)*cy(i,1) cy(i,1)^2
-cx(i,1)*cy(i,1) cy(i,1)^2;...
-cx(i,1)^2
-cx(i,1)*cy(i,1) cx(i,1)^2
cx(i,1)*cy(i,1);...
-cx(i,1)*cy(i,1) -cy(i,1)^2
cx(i,1)*cy(i,1)
cy(i,1)^2];
end
SMD
%matriz total de nudo
N=2*n-sum(r);
SJ=zeros(2*n,2*n);
for i=1:m;
j1=2*memb(i,2)-1;j2=2*memb(i,2);k1=2*memb(i,3)-1;k2=2*memb(i,3);
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(2*memb(i,2)-1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SMD(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SMD(2,1,i);
SJ(k1,j1)=SMD(3,1,i);
SJ(k2,j1)=SMD(4,1,i);
end
if r(2*memb(i,2),1)==0;
SJ(j1,j2)=SJ(j1,j2)+SMD(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SMD(2,2,i);
SJ(k1,j2)=SMD(3,2,i);
SJ(k2,j2)=SMD(4,2,i);
end
if r(2*memb(i,3)-1,1)==0;
SJ(j1,k1)=SMD(1,3,i);
SJ(j2,k1)=SMD(2,3,i);
SJ(k1,k1)=SJ(k1,k1)+SMD(3,3,i);
SJ(k2,k1)=SJ(k2,k1)+SMD(4,3,i);
end
if r(2*memb(i,3),1)==0;
SJ(j1,k2)=SMD(1,4,i);
SJ(j2,k2)=SMD(2,4,i);
SJ(k1,k2)=SJ(k1,k2)+SMD(3,4,i);
SJ(k2,k2)=SJ(k2,k2)+SMD(4,4,i);
end
end
SJ;%matrizdenudototal

lc=size(mlc);
cl=lc(1,1);
AML1=zeros(m,4);
if mlc==0*mlc
AML1=AML1;
else
for i=1:cl;
temp=mlc(i,1);
Ai=mlc(i,2:4)';
a=mlc(i,5);b=L(temp)-a;
TML=[b/L(temp) 0 0;0 b/L(temp) 1/L(temp);a/L(temp) 0 0;0 a/L(temp) -1/L(temp)];
AMi=TML*Ai;
AML1(temp,:)=AML1(temp,:)+AMi';
end
end
clear('lc','temp','map','mbp','mam','mbm','rap','rbp','rap','ram');AML1;
lc=size(mld);
cl=lc(1,1);
AML2=zeros(m,4);
if mld==0*mld
AML2=AML2
else
for i=1:cl;
temp=mld(i,1);
w1=mld(i,2);w2=mld(i,3);d1=mld(i,4);d2=mld(i,5);
c=d2-d1;xc=(d2-d1)*(2*w1+w2)/(3*(w1+w2));b=L(temp)-d1-c;
ra=(w1+w2)*c/2*(xc+b)/L(temp);rb=(w1+w2)*c/2-ra;
%AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ra;
%AML2(temp,3)=AML2(temp,3)+rb;
AML2(temp,4)=AML2(temp,4)+rb;
end
end
clear('lc','cl','temp','ma','mb');AML2;

%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%[#n Fx Fy]
lc=size(nlc);
cl=lc(1,1);
A=zeros(2*n,1);
for i=1:cl;
temp=nlc(i,1);
A(2*temp-1,1)=nlc(i,2);
A(2*temp,1)=nlc(i,3);
end
clear('temp','lc','cl');A;
%matriz carga de nudo equivalente;
AE=zeros(2*n,1);
for i=1:m;
j1=2*memb(i,2)-1;j2=2*memb(i,2);k1=2*memb(i,3)-1;k2=2*memb(i,3);
AE(j1,1)=AE(j1,1)-AML(i,1)*cx(i)+AML(i,2)*cy(i);
AE(j2,1)=AE(j2,1)-AML(i,1)*cy(i)-AML(i,2)*cx(i);
AE(k1,1)=AE(k1,1)-AML(i,3)*cx(i)+AML(i,4)*cy(i);
AE(k2,1)=AE(k2,1)-AML(i,3)*cy(i)-AML(i,4)*cx(i);
end

AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:2*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%%%%%%%%%%%%RESULTADOS%%%%%%%%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:2*n,1);
S=SJ(1:N,1:N);SRD=SJ(N+1:2*n,1:N);
D=inv(S)*AD;%desplazamientos de nudos
AR=ARL+SRD*D;%reacciones en nudos
%%%%%%%%%Ordenando desplazamientos%%%%%%%%%%%%%%%%%55
DJ=zeros(2*n,1);
j=0;kk=0;
for i=1:2*n;
j=j+1;
if r(i)==0;
kk=kk+1;
DJ(j)=D(kk);
end
end
DJ ;
%%%%%%ACCIONES DE MIEMBRO%%%%%%%%%%%%%%%%%%
AM=zeros(1,4);
for i=1:m
j1=2*memb(i,2)-1;j2=2*memb(i,2);k1=2*memb(i,3)-1;k2=2*memb(i,3);
kk=EA(i)/L(i);
AM(i,1)=AML(i,1)+kk*((DJ(j1)-DJ(k1))*cx(i)+(DJ(j2)-DJ(k2))*cy(i));
AM(i,2)=AML(i,2);
AM(i,3)=AML(i,3)-kk*((DJ(j1)-DJ(k1))*cx(i)+(DJ(j2)-DJ(k2))*cy(i));
AM(i,4)=AML(i,4);
end
AM;%rptas en coordenadas globales
clc
disp('------------------------------------------------------')
disp('----------------------RESULTADOS----------------------')
disp('------------------------------------------------------')
disp('Matriz desplazamientos')
disp(DJ)
disp('Matriz de Reacciones')
disp(AR)
disp('Matriz de Acciones de Miembro')
disp(AM)

CODIFICACIN DEL PROGRAMA EN MATLAB PARA LA SOLUCIN DE PRTICOS EN DOS


DIMENSIONES POR EL MTODO DE LA RIGIDEZ:
function PORTICO2D
disp('ingrese');
node=input('coordenadas:[#n cx cy]=');
disp('ingrese');
memb=input('miembros:[#n ni nj prop.]=');
disp('libre=0 retringido=1');
disp('ingrese');
rest=input('restricciones:[#n resX resY resZ]=');
disp('ingrese');
prop=input('propiedades:[#prop A E I]=');
disp('ingrese');
nlc=input('Cargas en Nudos:[#n Fx(+)> Fy(+)^ Fz]=');
disp('ingrese');
mlc=input('Cargas Concentradas en miembro:[#m Fx< Fy! Mz d]=');
disp('ingrese');
mld=input('cargas distribuidas en miembro:[#m w1 w2 d1 d2]=');
%longitud
nn=size(node);
n=nn(1,1);
mm=size(memb);
m=mm(1,1);
L=zeros(1,1);
for i=1:m
L(i,1)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L;
%cosenos directores
cx=zeros(1,1);
cy=zeros(1,1);
for i=1:m;
cx(i,1)=(node(memb(i,3),2)-node(memb(i,2),2))/L(i);
cy(i,1)=(node(memb(i,3),3)-node(memb(i,2),3))/L(i);
end
%matrices de rotacion de miembro
R=zeros(3,3,1);
for i=1:m
R(1,1,i)=cx(i);R(1,2,i)=cy(i);
R(2,1,i)=-cy(i);R(2,2,i)=cx(i);R(3,3,i)=1;
end
%restricciones
r=zeros(3*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(3*tp-2,1)=rest(i,2);
r(3*tp-1,1)=rest(i,3);%r:es la lista de restricciones
r(3*tp,1)=rest(i,4);
end
t=0;
rc=zeros(1,1);
for i=1:3*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
rc;
%EA
EA=zeros(m,1);
EI=zeros(m,1);
for i=1:m

k=memb(i,4);
EA(i)=prop(k,3)*prop(k,2);
EI(i)=prop(k,3)*prop(k,4);
end
EA
EI
%matriz miembro
SM=zeros(6,6,1);
for i=1:m;
SM(:,:,i)=[EA(i)/L(i) 0 0 -EA(i)/L(i) 0 0;...
0 12*EI(i)/L(i)^3 6*EI(i)/L(i)^2 0 -12*EI(i)/L(i)^3 6*EI(i)/L(i)^2;...
0 6*EI(i)/L(i)^2 4*EI(i)/L(i) 0 -6*EI(i)/L(i)^2 2*EI(i)/L(i);...
-EA(i)/L(i) 0 0 EA(i)/L(i) 0 0;...
0 -12*EI(i)/L(i)^3 -6*EI(i)/L(i)^2 0 12*EI(i)/L(i)^3 6*EI(i)/L(i)^2;...
0 6*EI(i)/L(i)^2 2*EI(i)/L(i) 0 -6*EI(i)/L(i)^2 4*EI(i)/L(i)];
end
SM;
%matriz miembro en coordendas globales
ze=zeros(3,3);
SMD=zeros(6,6,1);
for i=1:m
RT=R(:,:,i);
RT=[RT ze;ze RT];
SMD(:,:,i)=RT'*SM(:,:,i)*RT;
end
SMD;
%matriz total de nudo
N=3*n-sum(r);
SJ=zeros(3*n,3*n);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(j3,1)==0
j3=j3-rc(j3,1);
else
j3=N+rc(j3,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(k3,1)==0

k3=k3-rc(k3,1);
else
k3=N+rc(k3,1);
end
if r(j1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SMD(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SMD(2,1,i);
SJ(j3,j1)=SJ(j3,j1)+SMD(3,1,i);
SJ(k1,j1)=SMD(4,1,i);
SJ(k2,j1)=SMD(5,1,i);
SJ(k3,j1)=SMD(6,1,i);
end
if r(j2,1)==0;
SJ(j1,j2)=SJ(j1,j2)+SMD(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SMD(2,2,i);
SJ(j3,j2)=SJ(j3,j2)+SMD(3,2,i);
SJ(k1,j2)=SMD(4,2,i);
SJ(k2,j2)=SMD(5,2,i);
SJ(k3,j2)=SMD(6,2,i);
end
if r(j3,1)==0;
SJ(j1,j3)=SJ(j1,j3)+SMD(1,3,i);
SJ(j2,j3)=SJ(j2,j3)+SMD(2,3,i);
SJ(j3,j3)=SJ(j3,j3)+SMD(3,3,i);
SJ(k1,j3)=SMD(4,3,i);
SJ(k2,j3)=SMD(5,3,i);
SJ(k3,j3)=SMD(6,3,i);
end
if r(k1,1)==0;
SJ(j1,k1)=SMD(1,4,i);
SJ(j2,k1)=SMD(2,4,i);
SJ(j3,k1)=SMD(3,4,i);
SJ(k1,k1)=SJ(k1,k1)+SMD(4,4,i);
SJ(k2,k1)=SJ(k2,k1)+SMD(5,4,i);
SJ(k3,k1)=SJ(k3,k1)+SMD(6,4,i);
end
if r(k2,1)==0;
SJ(j1,k2)=SMD(1,5,i);
SJ(j2,k2)=SMD(2,5,i);
SJ(j3,k2)=SMD(3,5,i);
SJ(k1,k2)=SJ(k1,k2)+SMD(4,5,i);
SJ(k2,k2)=SJ(k2,k2)+SMD(5,5,i);
SJ(k3,k2)=SJ(k3,k2)+SMD(6,5,i);
end
if r(k3,1)==0;
SJ(j1,k3)=SMD(1,6,i);
SJ(j2,k3)=SMD(2,6,i);
SJ(j3,k3)=SMD(3,6,i);
SJ(k1,k3)=SJ(k1,k3)+SMD(4,6,i);
SJ(k2,k3)=SJ(k2,k3)+SMD(5,6,i);
SJ(k3,k3)=SJ(k3,k3)+SMD(6,6,i);
end
end
SJ;%matrizdenudototal
lc=size(mlc);
cl=lc(1,1);
AML1=zeros(m,6);
if mlc==0*mlc
AML1=AML1;
else
for i=1:cl;

temp=mlc(i,1);
Ai=mlc(i,2:4)';
a=mlc(i,5);b=L(temp)-a;
TML=[
b/L(temp) 0 0;...
0 b^2*(3*a+b)/L(temp)^3 6*a*b/L(temp)^3;...
0 a*b^2/L(temp)^2 b*(2*a-b)/L(temp)^2;...
a/L(temp) 0 0;...
0 a^2*(a+3*b)/L(temp)^3 -6*a*b/L(temp)^3;...
0 -a^2*b/L(temp)^2 a*(2*b-a)/L(temp)^2];
AMi=TML*Ai;
AML1(temp,:)=AML1(temp,:)+AMi';
end
end
clear('lc','temp','map','mbp','mam','mbm','rap','rbp','rap','ram','a');AML1;

lc=size(mld);
cl=lc(1,1);
AML2=zeros(m,6);
if mld==0*mld;
AML2=AML2;
else
for i=1:cl;
temp=mld(i,1);
w1=mld(i,2);w2=mld(i,3);d1=mld(i,4);d2=mld(i,5);
q=min(w1,w2);c=L(temp)-d2;b=d2-d1;a=d1;e=c+b/2;d=a+b/2;
ma=-q*b*(b^2*(L(temp)+3*(c-a))-24*e^2*d)/(24*L(temp)^2);
ra=q*b*(4*e^2*(L(temp)+2*d)-b^2*(c-a))/(4*L(temp)^3);
mb=(ra*L(temp)-q*b*e-ma);rb=q*b-ra;
%AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ra %+ri;%solopara4.18-8y4.18-9
AML2(temp,3)=AML2(temp,3)+ma %+mi;%solopara4.18-8y4.18-9
AML2(temp,5)=AML2(temp,5)+rb %+rd;%solopara4.18-8y4.18-9
AML2(temp,6)=AML2(temp,6)+mb %+md;%solopara4.18-8y4.18-9
end
end
clear('lc','cl','temp','ma','mb');AML2;

%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%cargas en los nudos (nlc:nodal load concenter)
%[#n Fx Fy]
lc=size(nlc);
cl=lc(1,1);
A=zeros(3*n,1);
for i=1:cl;
temp=nlc(i,1);
A(3*temp-2,1)=nlc(i,2);
A(3*temp-1,1)=nlc(i,3);
A(3*temp,1)=nlc(i,4);
end
clear('temp','lc','cl');A;
%matriz carga de nudo equivalente;
AE=zeros(3*n,1);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
AE(j1,1)=AE(j1,1)-AML(i,1)*cx(i)+AML(i,2)*cy(i);
AE(j2,1)=AE(j2,1)-AML(i,1)*cy(i)-AML(i,2)*cx(i);
AE(j3,1)=AE(j3,1)-AML(i,3);

AE(k1,1)=AE(k1,1)-AML(i,4)*cx(i)+AML(i,5)*cy(i);
AE(k2,1)=AE(k2,1)-AML(i,4)*cy(i)-AML(i,5)*cx(i);
AE(k3,1)=AE(k3,1)-AML(i,6);
end
AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:3*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada

%%%%%%%%%%%%%%%%%%RESULTADOS%%%%%%%%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:3*n,1)
S=SJ(1:N,1:N);SRD=SJ(N+1:3*n,1:N);
D=inv(S)*AD%desplazamientos de nudos
AR=ARL+SRD*D%reacciones en nudos
%%%%%%ACCIONES DE MIEMBRO%%%%%%%%%%%%%%%%%%
comp=zeros(3*n-N,1);
D=[D;comp];
AM=zeros(1,6);
for i=1:m
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
kk1=EA(i)/L(i);kk2=4*EI(i)/L(i);kk3=1.5*kk2/L(i);kk4=2*kk3/L(i);
AM(i,1)=AML(i,1)+kk1*((D(j1)-D(k1))*cx(i)+(D(j2)-D(k2))*cy(i));
AM(i,2)=AML(i,2)+kk4*(-(D(j1)-D(k1))*cy(i)+(D(j2)D(k2))*cx(i))+kk3*(D(j3)+D(k3));
AM(i,3)=AML(i,3)+kk3*(-(D(j1)-D(k1))*cy(i)+(D(j2)D(k2))*cx(i))+kk2*(D(j3)+D(k3)/2);
AM(i,4)=AML(i,4)+kk1*(-(D(j1)-D(k1))*cx(i)-(D(j2)-D(k2))*cy(i));
AM(i,5)=AML(i,5)+kk4*((D(j1)-D(k1))*cy(i)-(D(j2)-D(k2))*cx(i))kk3*(D(j3)+D(k3));
AM(i,6)=AML(i,6)+kk3*(-(D(j1)-D(k1))*cy(i)+(D(j2)D(k2))*cx(i))+kk2*(D(j3)/2+D(k3));
end
clc%limpia comand window
disp('----------------------RESULTADOS----------------------')
disp('Matriz desplazamientos')
disp(D)
disp('Matriz de Reacciones')
disp(AR);
disp('Matriz de Acciones de Miembro')
disp(AM);
disp ('RESPUESTAS EN COORDENADAS GLOBALES')

CODIFICACIN DEL PROGRAMA EN MATLAB PARA LA SOLUCIN DE PARRILAS POR EL


MTODO DE LA RIGIDEZ:
function parrilla
disp('ingrese');
node=input('coordenadas:[#n cx cy]=');
disp('ingrese');
memb=input('miembros:[#n ni nj prop.]=');
disp('libre=0 retringido=1');
disp('ingrese');
rest=input('restricciones:[#n resX resY resZ]=');
disp('ingrese');
prop=input('propiedades:[#prop A E I]=');
disp('ingrese');
nlc=input('Cargas en Nudos:[#n Fx(+)> Fy(+)^ Fz]=');
disp('ingrese');
mlc=input('Cargas Concentradas en miembro:[#m Fx< Fy! Mz d]=');
disp('ingrese');
mld=input('cargas distribuidas en miembro:[#m w1 w2 d1 d2]=');
%longitud
nn=size(node);
n=nn(1,1);
mm=size(memb);
m=mm(1,1);
L=zeros(1,1);
for i=1:m
L(i,1)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L;
%cosenos directores
cx=zeros(1,1);
cy=zeros(1,1);
for i=1:m;
cx(i,1)=(node(memb(i,3),2)-node(memb(i,2),2))/L(i);
cy(i,1)=(node(memb(i,3),3)-node(memb(i,2),3))/L(i);
end
%matrices de rotacion de miembro
R=zeros(3,3,1);
for i=1:m
R(1,1,i)=cx(i);R(1,2,i)=cy(i);
R(2,1,i)=-cy(i);R(2,2,i)=cx(i);R(3,3,i)=1;
end
%restricciones
r=zeros(3*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(3*tp-2,1)=rest(i,2);
r(3*tp-1,1)=rest(i,3);%r:es la lista de restricciones
r(3*tp,1)=rest(i,4);
end
t=0;
rc=zeros(1,1);
for i=1:3*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
rc;
%EA %[#m E Ix Iy G]
EI=zeros(1,1,1);
GI=zeros(1,1,1);
for i=1:m
k=memb(i,4);
EI(:,:,i)=prop(k,2)*prop(k,4);

GI(:,:,i)=prop(k,5)*prop(k,3);
end
EI=EI(:);
GI=GI(:);
%matriz miembro
SM=zeros(6,6,1);
for i=1:m;
SM(:,:,i)=[GI(i)/L(i) 0 0 -GI(i)/L(i) 0 0;...
0 4*EI(i)/L(i) -6*EI(i)/L(i)^2 0 2*EI(i)/L(i) 6*EI(i)/L(i)^2;...
0 -6*EI(i)/L(i)^2 12*EI(i)/L(i)^3 0 -6*EI(i)/L(i)^2 12*EI(i)/L(i)^3;...
-GI(i)/L(i) 0 0 GI(i)/L(i) 0 0;...
0 2*EI(i)/L(i) -6*EI(i)/L(i)^2 0 4*EI(i)/L(i) 6*EI(i)/L(i)^2;...
0 6*EI(i)/L(i)^2 -12*EI(i)/L(i)^3 0 6*EI(i)/L(i)^2 12*EI(i)/L(i)^3];
end
SM;
%matriz miembro en coordendas globales
ze=zeros(3,3);
SMD=zeros(6,6,1);
for i=1:m
RT=R(:,:,i);
RT=[RT ze;ze RT];
SMD(:,:,i)=RT'*SM(:,:,i)*RT;
end
SMD;
%matriz total de nudo
N=3*n-sum(r);
SJ=zeros(3*n,3*n);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(j3,1)==0
j3=j3-rc(j3,1);
else
j3=N+rc(j3,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(k3,1)==0
k3=k3-rc(k3,1);
else
k3=N+rc(k3,1);
end

if r(j1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SMD(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SMD(2,1,i);
SJ(j3,j1)=SJ(j3,j1)+SMD(3,1,i);
SJ(k1,j1)=SMD(4,1,i);
SJ(k2,j1)=SMD(5,1,i);
SJ(k3,j1)=SMD(6,1,i);
end
if r(j2,1)==0;
SJ(j1,j2)=SJ(j1,j2)+SMD(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SMD(2,2,i);
SJ(j3,j2)=SJ(j3,j2)+SMD(3,2,i);
SJ(k1,j2)=SMD(4,2,i);
SJ(k2,j2)=SMD(5,2,i);
SJ(k3,j2)=SMD(6,2,i);
end
if r(j3,1)==0;
SJ(j1,j3)=SJ(j1,j3)+SMD(1,3,i);
SJ(j2,j3)=SJ(j2,j3)+SMD(2,3,i);
SJ(j3,j3)=SJ(j3,j3)+SMD(3,3,i);
SJ(k1,j3)=SMD(4,3,i);
SJ(k2,j3)=SMD(5,3,i);
SJ(k3,j3)=SMD(6,3,i);
end
if r(k1,1)==0;
SJ(j1,k1)=SMD(1,4,i);
SJ(j2,k1)=SMD(2,4,i);
SJ(j3,k1)=SMD(3,4,i);
SJ(k1,k1)=SJ(k1,k1)+SMD(4,4,i);
SJ(k2,k1)=SJ(k2,k1)+SMD(5,4,i);
SJ(k3,k1)=SJ(k3,k1)+SMD(6,4,i);
end
if r(k2,1)==0;
SJ(j1,k2)=SMD(1,5,i);
SJ(j2,k2)=SMD(2,5,i);
SJ(j3,k2)=SMD(3,5,i);
SJ(k1,k2)=SJ(k1,k2)+SMD(4,5,i);
SJ(k2,k2)=SJ(k2,k2)+SMD(5,5,i);
SJ(k3,k2)=SJ(k3,k2)+SMD(6,5,i);
end
if r(k3,1)==0;
SJ(j1,k3)=SMD(1,6,i);
SJ(j2,k3)=SMD(2,6,i);
SJ(j3,k3)=SMD(3,6,i);
SJ(k1,k3)=SJ(k1,k3)+SMD(4,6,i);
SJ(k2,k3)=SJ(k2,k3)+SMD(5,6,i);
SJ(k3,k3)=SJ(k3,k3)+SMD(6,6,i);
end
end
SJ;%matrizdenudototal
lc=size(mlc);
cl=lc(1,1);
AML1=zeros(m,6);
for i=1:cl;
temp=mlc(i,1);
Ai=mlc(i,2:4)';
a=mlc(i,5);b=L(temp)-a;
TML=[
-b/L(temp) 0 0;...
0 -b*(2*a-b)/L(temp)^2 -a*b^2/L(temp)^2 ;...
0 6*a*b/L(temp)^3 b^2*(3*a+b)/L(temp)^3;...
-a/L(temp) 0 0;...
0 -a*(2*b-a)/L(temp)^2 a^2*b/L(temp)^2;...

0 -6*a*b/L(temp)^3 a^2*(a+3*b)/L(temp)^3];
AMi=TML*Ai;
AML1(temp,:)=AML1(temp,:)+AMi';
end
clear('lc','temp','map','mbp','mam','mbm','rap','rbp','rap','ram','a');AML1
lc=size(mld);
cl=lc(1,1);
AML2=zeros(m,6);
for i=1:cl;
temp=mld(i,1);
w1=mld(i,2);w2=mld(i,3);d1=mld(i,4);d2=mld(i,5);
q=min(w1,w2);c=L(temp)-d2;b=d2-d1;a=d1;e=c+b/2;d=a+b/2;
ma=q*b*(b^2*(L(temp)+3*(c-a))-24*e^2*d)/(24*L(temp)^2);
ra=q*b*(4*e^2*(L(temp)+2*d)-b^2*(c-a))/(4*L(temp)^3);
mb=-(ra*L(temp)-q*b*e+ma);rb=q*b-ra;
%AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ma;
AML2(temp,3)=AML2(temp,3)+ra;
AML2(temp,5)=AML2(temp,5)+mb;
AML2(temp,6)=AML2(temp,6)+rb;
end
clear('lc','cl','temp','ma','mb');AML2

%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%[#n Mx My Fz]
lc=size(nlc);
cl=lc(1,1);
A=zeros(3*n,1);
for i=1:cl;
temp=nlc(i,1);
A(3*temp-2,1)=nlc(i,2);
A(3*temp-1,1)=nlc(i,3);
A(3*temp,1)=nlc(i,4);
end
clear('temp','lc','cl');A
%matriz carga de nudo equivalente;
AE=zeros(3*n,1);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
AE(j1,1)=AE(j1,1)-AML(i,1)*cx(i)+AML(i,2)*cy(i);
AE(j2,1)=AE(j2,1)-AML(i,1)*cy(i)-AML(i,2)*cx(i);
AE(j3,1)=AE(j3,1)-AML(i,3);
AE(k1,1)=AE(k1,1)-AML(i,4)*cx(i)+AML(i,5)*cy(i);
AE(k2,1)=AE(k2,1)-AML(i,4)*cy(i)-AML(i,5)*cx(i);
AE(k3,1)=AE(k3,1)-AML(i,6);
end
AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:3*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end

AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%%%%%%%%%%%%RESULTADOS%%%%%%%%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:3*n,1);
S=SJ(1:N,1:N);SRD=SJ(N+1:3*n,1:N);
D=inv(S)*AD%desplazamientos de nudos
AR=ARL+SRD*D%reacciones en nudos
%%%%%%ACCIONES DE MIEMBRO%%%%%%%%%%%%%%%%%%
comp=zeros(3*n-N,1);
D=[D;comp];
AM=zeros(m,6);
for i=1:m
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
kk1=GI(i)/L(i);kk2=4*EI(i)/L(i);kk3=1.5*kk2/L(i);kk4=2*kk3/L(i);
AM(i,1)=AML(i,1)+kk1*((D(j1)-D(k1))*cx(i)+(D(j2)-D(k2))*cy(i));
AM(i,2)=AML(i,2)+kk2*(-(D(j1)+D(k1)/2)*cy(i)+(D(j2)+D(k2)/2)*cx(i))kk3*(D(j3)-D(k3));
AM(i,3)=AML(i,3)+kk3*((D(j1)+D(k1))*cy(i)-(D(j2)+D(k2))*cx(i))+kk4*(D(j3)D(k3));
AM(i,4)=AML(i,4)+kk1*(-(D(j1)-D(k1))*cx(i)-(D(j2)-D(k2))*cy(i));
AM(i,5)=AML(i,5)+kk2*(-(D(j1)/2+D(k1))*cy(i)+(D(j2)/2+D(k2))*cx(i))kk3*(D(j3)-D(k3));
AM(i,6)=AML(i,6)+kk3*(-(D(j1)+D(k1))*cy(i)+(D(j2)+D(k2))*cx(i))-kk4*(D(j3)D(k3));
end

También podría gustarte