Mentum03-Muhammad Rio Hidayah

From ccitonlinewiki
Jump to: navigation, search

BIODATA DIRI

Foto Muhammad Rio.jpg

بِسْمِ اللّهِ الرَّحْمَنِ الرَّحِيْمِ


Assalamualaikum wr.wb.

Perkenalkan,

Nama :Muhammad Rio Hidayah

NPM  :1706070715

Pertemuan 1 (9 November 2020)

Ketika saya menjalani pembelajaran Metode Numerik dengan Bapak Engkos di saat sebelum UTS, saya mempelajari dasar2 konversi dan penyelesaian masalah-masalah analitik dengan metode yang dapat dipahami dan diselesaikan oleh program komputasi. Beberapa diantaranya yaitu penggunaan Matriks dan pseudocode.


Di hari pertama pembelajaran bersama Pak Dai, saya dan kawan-kawan diminta untuk menginstall aplikasi Modelica untuk digunakan dalam pembelajaran berikutnya. Selain itu, kami diminta untuk mempelajari dan mencoba sendiri aplikasi tersebut. Dari yang saya coba, saya dapat menyimpulkan bahwa Modelica merupakan aplikasi yang terbilang cukup lawas, namum memiliki kemampuan penyelesaian masalah analitik yang baik, dikarenakan jumlah function dan library yang sangat memadai.

Pertemuan 2 (16 November 2020)

Pada pertemuan ini, diberikan latihan yaitu membuat program sederhana didalam Modelica untuk mencari rata-rata nilai dari 5 angka.

5 angka tersebut adalah 300, 350, 400, 450, dan 500.

Berikut kode pemograman dari program tersebut

Metnum M.Rio Pertemuan 2 1.PNG

Pertemuan 3 (23 November 2020)

Tugas 3

Diberikan tugas yaitu menyelesaikan sebuah persoalan mengenai defleksi dan gaya reaksi dari suatu sistem yang ada di buku menggunakan Modelica.

Berikut coding class yang digunakan

Metnum Tugas 3 M.Rio Hidayah Foto 1.JPG


Metnum Tugas 3 M.Rio Hidayah RumusReaksi.JPG

Pertemuan 4 (30 November 2020)

Quiz 1

Pada Pertemuan kali ini, diberikan sebuah persoalan yang dijadikan quiz.

Berikut soalnya

Metnum Soal Quiz 1 M.Rio.jpg

Dalam pengerjaan soal tersebut, diperlukan sebuah proses yang runtun. Proses tersebut dapat dijelaskan dalam bentuk flowchart. Berikut flowchart dari pengerjaan soal tersebut Metnum Quiz 1 Flowchart M.Rio.jpg

Pertemuan 5 (7 Desember 2020)

Pertemuan 6 (14 Desember 2020)

Tugas Besar Metode Numerik

Tujuan : Mengoptimalkan harga pembuatan ranka truss sederhana dengan menvariasikan dimensi dan elastisitas material

Tugas Besar Metnum Geometri Jos.jpg

Constrain

- Spesifikasi L (Panjang) dan geometri rangka truss

- Gaya beban diberikan kepada struktur (1000 N dan 2000 N)


Asumsi

- Variasi Stiffness terikat dengan variabel area. Memvariasikan Elastisitas tergolong sulit karena setiap material memiliki range yang tidak teratur dan dalam satu material yang sejenis (struktur biaya tetap) tidak terjadi perubahan nilai elastisitas yang berbanding lurus dengan perubahan biaya.

- Beban akan terdistribusi hanya pada point penghubung Untuk perhitungan displacement, reaction force, dan stress

model Trusses_3D_Tugas_Besar_Safety

//define initial variable
parameter Integer Points=size(P,1); //Number of Points
parameter Integer Trusses=size(C,1); //Number of Trusses
parameter Real Yield=275e6; //Yield Strength (Pa)
parameter Real Area=0.000224;   //Area L Profile (Dimension=0.03, Thickness=0,004) (m2)
parameter Real Elas=193e9;     //Elasticity SS 302  (Pa)

//define connection
parameter Integer C[:,2]=[1,5; 
                          2,6;
                          3,7;
                          4,8;
                          5,6;  //1st floor
                          6,7;  //1st floor
                          7,8;  //1st floor
                          5,8;  //1st floor
                          5,9;
                         6,10;
                         7,11;
                         8,12;
                         9,10; //2nd floor
                         10,11;//2nd floor 
                         11,12;//2nd floor
                          9,12; //2nd floor
                          9,13;
                         10,14;
                         11,15;
                         12,16;
                         13,14;//3rd floor
                         14,15;//3rd floor
                         15,16;//3rd floor
                        13,16];//3rd floor
                                                              
//define coordinates (please put orderly)
parameter Real P[:,6]=[0.3,-0.375,0,1,1,1;     //1
                       -0.3,-0.375,0,1,1,1;    //2
                       -0.3,0.375,0,1,1,1;     //3
                       0.3,0.375,0,1,1,1;      //4
                           
                       0.3,-0.375,0.6,0,0,0;   //5
                       -0.3,-0.375,0.6,0,0,0;  //6
                       -0.3,0.375,0.6,0,0,0;   //7
                       0.3,0.375,0.6,0,0,0;    //8
                            
                       0.3,-0.375,1.2,0,0,0;   //9
                       -0.3,-0.375,1.2,0,0,0;  //10  
                       -0.3,0.375,1.2,0,0,0;   //11
                       0.3,0.375,1.2,0,0,0;    //12
                            
                       0.3,-0.375,1.8,0,0,0;   //13
                       -0.3,-0.375,1.8,0,0,0;  //14
                       -0.3,0.375,1.8,0,0,0;   //15
                       0.3,0.375,1.8,0,0,0];   //16
                          
//define external force (please put orderly)
parameter Real F[Points*3]={0,0,0,
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,-500, 
                            0,0,-1000, 
                            0,0,-1000, 
                            0,0,-500}; 

//solution
Real displacement[N], reaction[N];
Real check[3];

Real stress1[Trusses];
Real safety[Trusses];
Real dis[3];
Real Str[3];
 
protected
parameter Integer N=3*Points;
Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3];
Real err=10e-10, ers=10e-4;

algorithm
//Creating Global Matrix
G:=id;
for i in 1:Trusses loop
 for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
 end for;
      
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
                     cy*cx,cy^2,cy*cz;
                     cz*cx,cz*cy,cz^2];

   //Transforming to global matrix
   g:=zeros(N,N); 
   for m,n in 1:3 loop
     g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
     g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
   end for;  

 G_star:=G+g;
 G:=G_star;
end for;

//Implementing boundary
for x in 1:Points loop
 if P[x,4] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-2,a]:=0;
     G[(x*3)-2,(x*3)-2]:=1;
   end for;
 end if;
 if P[x,5] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-1,a]:=0;
     G[(x*3)-1,(x*3)-1]:=1;
   end for;
 end if;
 if P[x,6] <> 0 then
   for a in 1:Points*3 loop
     G[x*3,a]:=0;
     G[x*3,x*3]:=1;
   end for;
 end if;
end for;

//Solving displacement
displacement:=Modelica.Math.Matrices.solve(G,F);

//Solving reaction
reaction:=(G_star*displacement)-F;

//Eliminating float error
for i in 1:N loop
 reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
 displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
end for;

//Checking Force
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))});
check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)});
  
for i in 1:3 loop
 check[i] := if abs(check[i])<=ers then 0 else check[i];
end for;

//Calculating stress in each truss
for i in 1:Trusses loop
for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]);
end for;
      
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
                cy*cx,cy^2,cy*cz;
                cz*cx,cz*cy,cz^2];
   
   Str:=(X*dis);
   stress1[i]:=Modelica.Math.Vectors.length(Str);
end for;

//Safety factor
for i in 1:Trusses loop
 if stress1[i]>0 then
   safety[i]:=Yield/stress1[i];
 else
   safety[i]:=0;
 end if; 
end for;

end Trusses_3D_Tugas_Besar_Safety;

UAS