0% found this document useful (0 votes)
5 views10 pages

Tugas FEM

This document discusses applying the finite element method to structural analysis problems using beam and truss elements. It defines key parameters like node locations, element properties, applied loads, and generates the stiffness matrix for each element type. Forces and moments are calculated for member loads at the fixed end.

Uploaded by

Michael Hanafi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views10 pages

Tugas FEM

This document discusses applying the finite element method to structural analysis problems using beam and truss elements. It defines key parameters like node locations, element properties, applied loads, and generates the stiffness matrix for each element type. Forces and moments are calculated for member loads at the fixed end.

Uploaded by

Michael Hanafi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

%Tugas Metode Elemen Hingga

%2. Michael - 15019091

clear
clc

%JLoc adalah Joint Coordinate dengan satuan m


JLoc=[0 2;5 2;10 2;5 0;10 0]

%NJ= Number Joint


NJ=size(JLoc,1)

% E adalah modulus elastisitas material dengan satuan kPa


E=[10^8]

% CSI adalah cross section of the elements (matriks) untuk [A I]


% area dengan satuan m^2 dan inersia dengan satuan m^4
% urutan: balok;kolom;truss
CSI=[100*10^-8 40957.2*10^-8; 100*10^-4 40957.2*10^-8; 100*10^-4 40957.2*10^-
8];

%Member=[begin, end, E, CSI, Release]


Member=[1,2,1,1,0;2,3,1,1,0;1,4,1,1,3;2,4,1,1,0;4,3,1,1,3;3,5,1,1,0;4,5,1,1,0
]
%Restraint=[JLoc,Rx, Ry, M]
Restraint=[1,1,1,1; 4,1,1,0]

%JointLoad=[JLoc, Px, Py, M] dalam satuan kN and kN.m


JointLoad=[1,0,10,0;3,10,0,0;4,0,15,0]

%ML=[Member,TypeLoad,How Big?1,How Big?2,Distance fromBegin,Distance from


End]
% jika beban nya triangular atau w1 dan w2 punya nilai yang berbeda
ML=[1,1,0,0,4,4]

%NM= Number of Members


NM=size(Member,1);
%NMJ= Number of Member Joints
NMJ=size(ML,1);
%NR= Number of Restraints
NR=size(Restraint,1);
%NJL=Number of Joint Loads
NJL=size(JointLoad,1);
%NML=Number of Member Loads
NML=size(ML,1);

%How many NDOF


A=sum(Restraint); %berapa banyak restraint yang dapat dilihat dari kolom 2,
3, dan 4
NDOF=NJ*3-A(1,2)-A(1,3)-A(1,4);

%Length of Each Member


L=zeros(NM,1);

%Calculate L (Sum of Square Root : Like Pytaghoras if 2D)


for i=1:NM
L(i,1)=sqrt(((JLoc(Member(i,2),1)-
JLoc(Member(i,1),1))^2)+((JLoc(Member(i,2),2)-JLoc(Member(i,1),2))^2));
end

%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);

for i=1:NM %cos or sin; delta x or delta y divided by L


T(1,1,i)=(JLoc(Member(i,2),1)-JLoc(Member(i,1),1))/L(i);
T(1,2,i)=(JLoc(Member(i,2),2)-JLoc(Member(i,1),2))/L(i);
T(2,1,i)=-1*T(1,2,i); %-sin teta
T(2,2,i)=T(1,1,i); %cos teta
T(3,3,i)=1;
T(4,4,i)=T(1,1,i);
T(4,5,i)=T(1,2,i);
T(5,4,i)=T(2,1,i);
T(5,5,i)=T(2,2,i);
T(6,6,i)=1;
end

%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

%Masukkan shear dan moment dari fixed end


for i=1:NML
j=ML(i,1);
if ML(i,2) == 1
if Member(i,5) == 0
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)));
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

%Transformasi Qf yang mana sebagai koordinat lokal menjadi Ff Global


%Ff = Transpose*Qf
for i=1:NM %(:,:,i) all rows and all columns for each iterations aka the
matrices itself
Ff(:,:,i)=T(:,:,i).'*Qf(:,:,i);
end

%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

%DOF Code and Structural Restraint


for i=1:NJ
codeS0((i-1)*3+1,1)=(i-1)*3+1;
codeS0((i-1)*3+2,1)=(i-1)*3+2;
codeS0((i-1)*3+3,1)=(i-1)*3+3;
end

%Structural DOF Code


%the purpose is to store the unrestrained DOF to S
h=1;
for i=1:(NJ*3)
a=0;
for j=1:size(codeR,1) %how many restraint code
if codeS0(i,1)==codeR(j,1)
a=1;
end
end
if a==0
codeS(h,1)=codeS0(i,1);
h=h+1;
end
end

%Identifying size of S
S=zeros(NDOF,NDOF);

%Assembling Structure Stifness


for i=1:NM %bm stands for baris matrix, km stands for kolom matrix
for bm=1:size(K(:,:,1),1)
for km=1:size(K(:,:,1),2)
for bs=1:size(codeS,1)
for ks=1:size(codeS,1)
if codeS(bs,1)==codeM(bm,i) & codeS(ks,1)==codeM(km,i)
S(bs,ks)=S(bs,ks)+K(bm,km,i);
end
end
end
end
end
end

%Menampilkan S
S

%Identifikasi ukuran Pf
Pf=zeros(size(codeS,1),1);

%Assembling Fixed End Forces of Structure


for i=1:NM
for bm=1:size(Ff(:,1,1),1)
for bs=1:size(codeS,1)
if codeS(bs,1)==codeM(bm,i)
Pf(bs,1)=Pf(bs,1)+Ff(bm,1,i);
end
end
end
end

%Menampilkan Pf
Pf

%Menentukan variabel untuk joint forces


P=zeros(NDOF,1);

%Menentukan joint forces


for i=1:NJL
n=((JointLoad(i,1)-1)*3+1);
for m=1:NDOF
if n==codeS(m,1)
P(m,1)=P(m,1)+JointLoad(i,2);
end
end
n=((JointLoad(i,1)-1)*3+2);
for m=1:NDOF
if n==codeS(m,1)
P(m,1)=P(m,1)+JointLoad(i,3);
end
end
n=((JointLoad(i,1)-1)*3+3);
for m=1:NDOF
if n==codeS(m,1)
P(m,1)=P(m,1)+JointLoad(i,4);
end
end
end

%Menampilkan P
P
%Menentukan Deformasi Struktur
d=S\(P-Pf)

%Sama seperti dengan mencari S


S0=zeros(size(codeS0,1),size(codeS0,1));
for i=1:NM
for bm=1:size(K(:,:,1),1)
for km=1:size(K(:,:,1),2)
for bs=1:size(codeS0,1)
for ks=1:size(codeS0,1)
if codeS0(bs,1)==codeM(bm,i) & codeS0(ks,1)==codeM(km,i)
S0(bs,ks)=S0(bs,ks)+K(bm,km,i);
end
end
end
end
end
end

%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)

You might also like