Tugas FEM
Tugas FEM
clear
clc
%Menampilkan L
L
%k sumbu lokal
k=zeros(6,6,NM);
for i=1:NM
if Member(i,5)==0 %for MT=0
k(1,1,i)=CSI(Member(i,4),1)*(L(i)^2)/CSI(Member(i,4),2);
k(2,2,i)=12;
k(2,3,i)=6*L(i);
k(3,2,i)=6*L(i);
k(3,3,i)=4*(L(i)^2);
k(1,4,i)=-1*k(1,1,i);
k(4,1,i)=-1*k(1,1,i);
k(4,4,i)=k(1,1,i);
k(2,5,i)=-12;
k(5,2,i)=-12;
k(5,5,i)=12;
k(2,6,i)=6*L(i);
k(5,3,i)=-1*k(2,3,i);
k(5,6,i)=-1*k(2,3,i);
k(3,5,i)=-1*k(3,2,i);
k(6,2,i)=k(3,2,i);
k(6,5,i)=-1*k(3,2,i);
k(3,6,i)=k(3,3,i)/2;
k(6,3,i)=k(3,3,i)/2;
k(6,6,i)=k(3,3,i);
%not yet multiplied by EI/L^3
for y=1:6
for x=1:6
k(y,x,i)=k(y,x,i)*(E(Member(i,3))*CSI(Member(i,4),2)/(L(i)^3));
end
end
end
if Member(i,5)==1 %for MT=1
k(1,1,i)=CSI(Member(i,4),1)*(L(i)^2)/CSI(Member(i,4),2);
k(1,4,i)=-1*k(1,1,i);
k(2,2,i)=3;
k(2,5,i)=-3;
k(2,6,i)=3*L(i);
k(4,1,i)=k(1,4,i);
k(4,4,i)=k(1,1,i);
k(5,2,i)=k(2,5,i);
k(5,5,i)=k(2,2,i);
k(5,6,i)=-1*k(2,6,i);
k(6,2,i)=k(2,6,i);
k(6,5,i)=k(5,6,i);
k(6,6,i)=3*(L(i))^2;
%not yet multiplied by EI/L^3
for y=1:6
for x=1:6
k(y,x,i)=k(y,x,i)*(E(Member(i,3))*CSI(Member(i,4),2)/(L(i)^3));
end
end
end
if Member(i,5)==2 %for MT=2
k(1,1,i)=CSI(Member(i,4),1)*(L(i)^2)/CSI(Member(i,4),2);
k(1,4,i)=-1*k(1,1,i);
k(2,2,i)=3;
k(2,5,i)=-3;
k(2,3,i)=3*L(i);
k(4,1,i)=k(1,4,i);
k(4,4,i)=k(1,1,i);
k(5,2,i)=k(2,5,i);
k(5,5,i)=k(2,2,i);
k(3,2,i)=k(2,3,i);
k(3,3,i)=3*(L(i))^2;
k(3,5,i)=-1*k(2,3,i);
k(5,3,i)=k(3,5,i);
k(6,6,i)=0;
%not yet multiplied by EI/L^3
for y=1:6
for x=1:6
k(y,x,i)=k(y,x,i)*(E(Member(i,3))*CSI(Member(i,4),2)/(L(i)^3));
end
end
end
if Member(i,5)==3 %for MT=3
k(1,1,i)=1;
k(1,4,i)=-1;
k(4,1,i)=-1;
k(4,4,i)=1;
k(1,2,i)=0;
%not yet multiplied by EA/L
for y=1:6
for x=1:6
k(y,x,i)=k(y,x,i)*(E(Member(i,3))*CSI(Member(i,4),1)/(L(i)));
end
end
end
end
%Menampilkan k lokal
k
%T adalah matrik transformasi
T=zeros(6,6,NM);
%Menampilkan T
T
%K adalah kekakuan pada koordinat global
K=zeros(6,6,NM);
%Masukkan nilai K
%K=T (Transpose) kT
for i=1:NM %(:,:,i) all rows and all columns for each iterations aka the
matrices itself
K(:,:,i)=T(:,:,i).'*k(:,:,i)*T(:,:,i);
end
%Menampilkan K
K
%Menentukan member load
Qf=zeros(6,1,NM); %untuk semua MT
Qf(2,1,j)=Qf(2,1,j)+(ML(i,3)*(ML(i,6)^2)/(L(i)^3)*(3*ML(i,5)+ML(i,6)));
Qf(3,1,j)=Qf(3,1,j)+(ML(i,3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2));
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+(ML(i,3)*(ML(i,5)^2)/(L(i)^3)*(3*ML(i,6)+ML(i,5)));
Qf(6,1,j)=Qf(6,1,j)+(-ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2));
end
if Member(i,5) == 1
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+(ML(i,3)*(ML(i,6)^2)/(L(i)^3)*(3*ML(i,5)+ML(i,6))-
(3/(2*L(i))*ML(i,3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2)));
Qf(3,1,j)=Qf(3,1,j)+0;
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+(ML(i,3)*(ML(i,5)^2)/(L(i)^3)*(3*ML(i,6)+ML(i,5))+(3/(2*L
(i))*ML(i,3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2)));
Qf(6,1,j)=Qf(6,1,j)+(-ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2)-
0.5*ML(i,3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2));
end
if Member(i,5) == 2
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+(ML(i,3)*(ML(i,6)^2)/(L(i)^3)*(3*ML(i,5)+ML(i,6))-
(3/(2*L(i))*-ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2)));
Qf(3,1,j)=Qf(3,1,j)+(ML(i,3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2)-0.5*-
ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2));
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+(ML(i,3)*(ML(i,5)^2)/(L(i)^3)*(3*ML(i,6)+ML(i,5))+(3/(2*L
(i))*-ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2)));
Qf(6,1,j)=Qf(6,1,j)+0;
end
if Member(i,5) == 3
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+(ML(i,3)*(ML(i,6)^2)/(L(i)^3)*(3*ML(i,5)+ML(i,6))-
((ML(i,3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2))+(-
ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2)))/(L(i)));
Qf(3,1,j)=Qf(3,1,j)+0;
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+(ML(i,3)*(ML(i,5)^2)/(L(i)^3)*(3*ML(i,6)+ML(i,5))+((ML(i,
3)*ML(i,5)*(ML(i,6)^2)/(L(i)^2))+(-
ML(i,3)*ML(i,6)*(ML(i,5)^2)/(L(i)^2)))/(L(i)));
Qf(6,1,j)=Qf(6,1,j)+0;
end
end
if ML(i,2) == 2
if Member(i,5) == 0 %Untuk MT=0
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+(-6*ML(i,3)*ML(i,4)*ML(i,5)/(L(i)^3));
Qf(3,1,j)=Qf(3,1,j)+(ML(i,3)*ML(i,6)*(ML(i,6)-
2*ML(i,5))/(L(i)^2));
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+(6*ML(i,3)*ML(i,4)*ML(i,5)/(L(i)^3));
Qf(6,1,j)=Qf(6,1,j)+(ML(i,3)*ML(i,5)*(ML(i,5)-
2*ML(i,6))/(L(i)^2));
end
if Member(i,5) == 1 %Untuk MT=1
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+((-6*ML(i,3)*ML(i,4)*ML(i,5)/(L(j)^3))-
(3/(2*L(j))*ML(i,3)*ML(i,5)*(ML(i,5)-2*ML(i,4))/(L(j)^2)));
Qf(3,1,j)=Qf(3,1,j)+0;
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+((6*ML(i,3)*ML(i,4)*ML(i,5)/(L(j)^3))+((3/(2*L(j))*ML(i,3
)*ML(i,5)*(ML(i,5)-2*ML(i,4))/(L(j)^2))));
Qf(6,1,j)=Qf(6,1,j)+((ML(i,3)*ML(i,4)*(ML(i,4)-
2*ML(i,5))/(L(j)^2))-(0.5*ML(i,3)*ML(i,5)*(ML(i,5)-2*ML(i,4))/(L(j)^2)));
end
if Member(i,5) == 2
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+((-6*ML(i,3)*ML(i,4)*ML(i,5)/(L(i)^3))-
(3/(2*L(i))*(ML(i,3)*ML(i,5)*(ML(i,5)-2*ML(i,6))/(L(i)^2))));
Qf(3,1,j)=Qf(3,1,j)+((ML(i,3)*ML(i,6)*(ML(i,6)-
2*ML(i,5))/(L(i)^2))-0.5*(ML(i,3)*ML(i,5)*(ML(i,5)-2*ML(i,6))/(L(i)^2)));
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+((6*ML(i,3)*ML(i,4)*ML(i,5)/(L(i)^3))+(3/(2*L(i))*(ML(i,3
)*ML(i,5)*(ML(i,5)-2*ML(i,6))/(L(i)^2))));
Qf(6,1,j)=Qf(6,1,j)+0;
end
if Member(i,5) == 3
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+((-6*ML(i,3)*ML(i,4)*ML(i,5)/(L(i)^3))-
(1/(L(i))*((Qf(3,1,j)+(ML(i,3)*ML(i,6)*(ML(i,6)-
2*ML(i,5))/(L(i)^2)))+(ML(i,3)*ML(i,5)*(ML(i,5)-2*ML(i,6))/(L(i)^2)))));
Qf(3,1,j)=Qf(3,1,j)+0;
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+((ML(i,3)*ML(i,5)*(ML(i,5)-
2*ML(i,6))/(L(i)^2))+(1/L(i)*((Qf(3,1,j)+(ML(i,3)*ML(i,6)*(ML(i,6)-
2*ML(i,5))/(L(i)^2)))+(ML(i,3)*ML(i,5)*(ML(i,5)-2*ML(i,6))/(L(i)^2)))));
Qf(6,1,j)=Qf(6,1,j) + 0;
end
end
if ML(i,2) == 3 %Beban merata
if Member(i,5) == 0 %Untuk MT=0
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+(ML(i,3)*L(j)/2);
Qf(3,1,j)=Qf(3,1,j)+(ML(i,3)*(L(j)^2)/12);
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+(ML(i,3)*L(j)/2);
Qf(6,1,j)=Qf(6,1,j)+(-1*ML(i,3)*(L(j)^2)/12);
end
if Member(i,5) == 1 %Untuk MT=1
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+((ML(i,3)*L(j)/2)-
(3/(2*L(j))*(ML(i,3)*(L(j)^2)/12)));
Qf(3,1,j)=Qf(3,1,j)+0;
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+((ML(i,3)*L(j)/2)+(3/(2*L(j))*(ML(i,3)*(L(j)^2)/12)));
Qf(6,1,j)=Qf(6,1,j)+((-1*ML(i,3)*(L(j)^2)/12)-
(0.5*(ML(i,3)*(L(j)^2)/12)));
end
if Member(i,5) == 2 %Untuk MT=2
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+((ML(i,3)*L(j)/2)-(3/(2*L(j))*-
1*ML(i,3)*(L(j)^2)/12));
Qf(3,1,j)=Qf(3,1,j)+((ML(i,3)*(L(j)^2)/12)-(0.5*-
1*ML(i,3)*(L(j)^2)/12));
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+((ML(i,3)*L(j)/2)+(3/(2*L(j))*-
1*ML(i,3)*(L(j)^2)/12));
Qf(6,1,j)=Qf(6,1,j)+0;
end
if Member(i,5) == 3 %Untuk MT=3
Qf(1,1,j)=Qf(1,1,j)+0;
Qf(2,1,j)=Qf(2,1,j)+((ML(i,3)*L(j)/2)-
(((ML(i,3)*(L(j)^2)/12)+(-1*ML(i,3)*(L(j)^2)/12))/(L(j))));
Qf(3,1,j)=Qf(3,1,j)+0;
Qf(4,1,j)=Qf(4,1,j)+0;
Qf(5,1,j)=Qf(5,1,j)+((ML(i,3)*L(j)/2)+(((ML(i,3)*(L(j)^2)/12)+(-
1*ML(i,3)*(L(j)^2)/12))/(L(j))));
Qf(6,1,j)=Qf(6,1,j)+0;
end
end
end
%Menampilkan Qf
Qf
%Menampilkan Ff
Ff
%Codify DOF
for i=1:NM %codeM=(beginningnumber-1)*3+1 from 1 to 3; 4 to 6 uses endnumber
codeM(1,i)=(Member(i,1)-1)*3+1;
codeM(2,i)=(Member(i,1)-1)*3+2;
codeM(3,i)=(Member(i,1)-1)*3+3;
codeM(4,i)=(Member(i,2)-1)*3+1;
codeM(5,i)=(Member(i,2)-1)*3+2;
codeM(6,i)=(Member(i,2)-1)*3+3;
end
% Exclude restraint
j=1;
for i=1:NR
if Restraint(i,2)==1 %if there is any horizontal restraint
codeR(j,1)=(Restraint(i,1)-1)*3+1;
j=j+1;
end
if Restraint(i,3)==1 %if there is any vertical restraint
codeR(j,1)=(Restraint(i,1)-1)*3+2;
j=j+1;
end
if Restraint(i,4)==1 %if there is any rotational restraint
codeR(j,1)=(Restraint(i,1)-1)*3+3;
j=j+1;
end
end
%Identifying size of S
S=zeros(NDOF,NDOF);
%Menampilkan S
S
%Identifikasi ukuran Pf
Pf=zeros(size(codeS,1),1);
%Menampilkan Pf
Pf
%Menampilkan P
P
%Menentukan Deformasi Struktur
d=S\(P-Pf)
%Sama seperti Pf
Pf0=zeros(size(codeS0,1),1);
for i=1:NM
for bm=1:size(K(:,:,1),1)
for bs=1:size(codeS0,1)
if codeS0(bs,1)==codeM(bm,i)
Pf0(bs,1)=Pf0(bs,1)+Ff(bm,1,i);
end
end
end
end
d0=zeros(size(codeS0,1),1);
for bm=1:size(codeS,1)
for bs=1:size(codeS0,1)
if codeS0(bs,1)==codeS(bm,1)
d0(bs,1)=d0(bs,1)+d(bm,1);
end
end
end
P0a=S0*d0+Pf0;
R=zeros(size(codeR,1),1);
for bm=1:size(codeR,1)
for bs=1:size(codeS0,1)
if codeS0(bs,1)==codeR(bm,1)
R(bm,1)=R(bm,1)+P0a(bs,1);
end
end
end
v=zeros(size(K(:,:,1),1),1,NM);
for i=1:NM
for bm=1:size(K(:,:,1),1)
for bs=1:size(codeS,1)
if codeS(bs,1)==codeM(bm,i)
v(bm,1,i)=v(bm,1,i)+d(bs,1);
end
end
end
end
for i=1:NM
u(:,1,i)=T(:,:,i)*v(:,1,i);
end
for i=1:NM
Q(:,1,i)=k(:,:,i)*u(:,1,i)+Qf(:,1,i);
end
disp(d)