Difference between revisions of "Metnum03 Rasyid Indy Nur Sasongko"

From ccitonlinewiki
Jump to: navigation, search
Line 307: Line 307:
 
:* Tujuan optimasi : Displacement U minimum, Cross-Area minimum, dan nilai E dan A (murah)
 
:* Tujuan optimasi : Displacement U minimum, Cross-Area minimum, dan nilai E dan A (murah)
  
'''Elasticity Lock'''
+
'''Perhitungan dan Coding'''
 +
 
 +
'''1.Elasticity Lock'''
  
 
Material lock merupakan pengambilan data dengan material yang sama dan untuk memvariasikan luas areanya. Pada material lock ini, saya menggunakan material SS400 yang berprofil siku. Dimana data yang saya ambil sebagai berikut :
 
Material lock merupakan pengambilan data dengan material yang sama dan untuk memvariasikan luas areanya. Pada material lock ini, saya menggunakan material SS400 yang berprofil siku. Dimana data yang saya ambil sebagai berikut :
Line 317: Line 319:
 
source : http://infoindosteel.blogspot.com/2017/02/harga-besi-baja-siku.html  
 
source : http://infoindosteel.blogspot.com/2017/02/harga-besi-baja-siku.html  
  
Kemudian langkah selanjutnya adalah mencari massa dan nilai tegangan melalui koding curve fitting. Sehingga kita mendapatkan hasil curve fitting yang dituliskan pada excel sebagai berikut :
+
'''Coding'''
 +
 
 +
'''Coding Trusses'''
 +
 
 +
model Trusses_3D_Tugas_Besar_Safety  //by Rasyid Indy Nur S. 1806181874
 +
 
 +
//define initial variable
 +
parameter Integer Points=size(P,1); //Number of Points
 +
parameter Integer Trusses=size(C,1); //Number of Trusses
 +
parameter Real Yield=400000000; //Yield Strength (Pa)
 +
parameter Real Area=0.000531;  //Area L Profile (Dimension=0.03, Thickness=0,003) (m2)
 +
parameter Real Elas=79000000000;    //Elasticity SS 400 A36  (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;
 +
 
 +
----
 +
 
 +
'''Coding Cure Fitting'''
 +
 
 +
function Curve_Fitting
 +
 
 +
input Real X[:];
 +
input Real Y[size(X,1)];
 +
input Integer order=2;
 +
output Real Coe[order+1];
 +
 
 +
protected
 +
Real Z[size(X,1),order+1];
 +
Real ZTr[order+1,size(X,1)];
 +
Real A[order+1,order+1];
 +
Real B[order+1];
 +
 
 +
algorithm
 +
 
 +
for i in 1:size(X,1) loop
 +
  for j in 1:(order+1) loop
 +
  Z[i,j]:=X[i]^(order+1-j);
 +
  end for;
 +
end for;
 +
ZTr:=transpose(Z);
 +
 
 +
A:=ZTr*Z;
 +
B:=ZTr*Y;
 +
Coe:=Modelica.Math.Matrices.solve(A,B);
 +
//Coe:=fill(2,size(Coe,1));
 +
 
 +
end Curve_Fitting;
 +
/*
 +
for i in 1:3 loop
 +
for j in 1:Points loop
 +
  R[j]:=reaction[3*(j-1)+i];
 +
end for;
 +
Sur[i]:=sum(R);
 +
end for;
 +
*/
 +
 
 +
----
 +
 
 +
Kemudian langkah selanjutnya adalah mencari hasil harga tiap area yang telah ditentukan melalui koding curve fitting. Sehingga kita mendapatkan hasil curve fitting yang dituliskan pada excel sebagai berikut :
  
 
'''function'''
 
'''function'''
 +
 +
'''Model Tugas Besar 3D Trusses'''
 +
 +
[[File:Trussrsyd.PNG|500px|centre]]
 +
 +
'''Function Curve Fitting'''
  
 
[[File:Ss func.PNG|500px|centre]]
 
[[File:Ss func.PNG|500px|centre]]
Line 325: Line 574:
 
[[File:Func.PNG|500px|centre]]
 
[[File:Func.PNG|500px|centre]]
  
'''class'''
+
'''Class Curve Fitting'''
  
 
[[File:Curve fit.PNG|500px|centre]]
 
[[File:Curve fit.PNG|500px|centre]]
 +
 +
Lalu, didapatkan hasil dari simulasi dengan nilai Coe yang akan kita ambil untuk salah satu variabel perhitungan adalah sebagai berikut:
  
 
[[File:Plotting curve.PNG|350px|centre]]
 
[[File:Plotting curve.PNG|350px|centre]]
  
'''Hasil Excel'''
+
'''Hasil Excel dan Grafik'''
  
Secara otomatis didapatkan harga di excel dengan menginput data hasil koding curve fitting.
+
Setelah dilakukan perhitungan maka secara otomatis didapatkan harga di excel dengan menginput data hasil koding curve fitting. Berikut hasil dari perhitungan dan grafiknya:
  
 
[[File:Ss hasil.PNG|500px|centre]]
 
[[File:Ss hasil.PNG|500px|centre]]
 +
 +
[[File:Graf cost ratio.PNG|500px|centre]]
 +
 +
'''2. Area Locked'''
 +
 +
Area Locked adalah pengambilan data menggunakan luas area yang sama dan memvariasikan materialnya. Untuk area locked ini, saya menggunakan material SS400, SS304, SS403, dan SS316 yang mempunyai profil siku dengan memberikan sample yang mempunyai ariasi berupa material dan harga. Berikut data yang saya gunakan:
 +
 +
[[File:Area lockedrsyd.PNG|500px|centre]]
 +
 +
[[File:Harga material.PNG|350px|centre]]
 +
 +
source : https://www.indiamart.com/proddetail/ms-sheet-10121470997.html
 +
 +
'''Coding'''
 +
 +
function Curve_Fitting
 +
 +
input Real X[:];
 +
input Real Y[size(X,1)];
 +
input Integer order=2;
 +
output Real Coe[order+1];
 +
 +
protected
 +
Real Z[size(X,1),order+1];
 +
Real ZTr[order+1,size(X,1)];
 +
Real A[order+1,order+1];
 +
Real B[order+1];
 +
 +
algorithm
 +
 +
for i in 1:size(X,1) loop
 +
  for j in 1:(order+1) loop
 +
  Z[i,j]:=X[i]^(order+1-j);
 +
  end for;
 +
end for;
 +
ZTr:=transpose(Z);
 +
 +
A:=ZTr*Z;
 +
B:=ZTr*Y;
 +
Coe:=Modelica.Math.Matrices.solve(A,B);
 +
//Coe:=fill(2,size(Coe,1));
 +
 +
end Curve_Fitting;
 +
/*
 +
for i in 1:3 loop
 +
for j in 1:Points loop
 +
  R[j]:=reaction[3*(j-1)+i];
 +
end for;
 +
Sur[i]:=sum(R);
 +
end for;
 +
*/
 +
 +
----
 +
 +
'''Class'''
 +
 +
'''class cost'''
 +
 +
[[File:Class cost.PNG|500px|centre]]
 +
 +
'''coe cost'''
 +
 +
[[File:Coe cost per kg.PNG|350px|centre]]
 +
 +
'''class density'''
 +
 +
[[File:Class density.PNG|500px|centre]]
 +
 +
'''coe density'''
 +
 +
[[File:Coe density.PNG|350px|centre]]
 +
 +
'''class yield'''
 +
 +
[[File:Yield rsyd.PNG|500px|centre]]
 +
 +
'''coe yield'''
 +
 +
[[File:Coe yield.PNG|350px|centre]]
 +
 +
'''Hasil Excel dan Grafik'''
 +
 +
Setelah dilakukan perhitungan maka secara otomatis didapatkan harga di excel dengan menginput data hasil koding curve fitting. Berikut hasil dari perhitungan dan grafinya:
 +
 +
[[File:Hitungan area locked.PNG|500px|centre]]
 +
 +
[[File:Graf cost area.PNG|500px|centre]]

Revision as of 23:19, 12 January 2021

Pendahuluan

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

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

Nama  : Rasyid Indy Nur Sasongko

NPM  : 1806181874

Rasyid Indy Nur Sasongko.S1 Teknik Mesin 2018.Universitas Indonesia

Perkenalkan, nama saya Rasyid Indy Nur Sasongko, saya merupakan mahasiswa S1 paralel Teknik Mesin Universitas Indonesia. Berikut ini merupakan beberapa catatan-catatan yang telah saya tulis selama Perkuliahan Jarak Jauh (PJJ) mata kuliah Metode Numerik. Catatan ini berisi tugas yang diberikan kemudian juga progress pembelajaran saya diadakan pertemuan.

Pertemuan 1 : Senin, 9 November 2020

Assalamualaikum Wr.Wb. pada pertemuan awal kali ini Pak Dai mengawali pertemuan dengan memberikan arahan dalam sistem pembelajaran menggunakan Air.eng.ui.ac.id sebagai tools untuk belajar dan bahan rangkuman setiap pertemuannya. Dalam pertemuan kali ini Pak Dai juga memberikan beberapa poin penting dalam berlangsungnya kegiatan belajar khususnya untuk mata kuliah metode numerik. Berikut beberapa poin yang disampaikan oleh Pak Dai :

- Mengenal atau mengetahui proses pengetahuannya

- Mengerti konsep

- Bisa membantu memecahkan masalah dari pemahaman tersebut

- Mendapatkan nilai tambah bagi diri sendiri

Dari keempat poin tersebut, konsep-konsep metode numerik yang telah dipelajari dari awal dan sebelum uts harus dipahami dan dimengerti agar dapat mengenal dan mengetahui proses belajarnya. Kemudian dari konsep-konsep yang kita sudah pelajari selanjutnya kita bisa mulai bisa memecahkan masalah-masalah yang berkaitan dengan teknik mesin sebagai outputnya. Dan yang terakhir kita dapat menilai diri kita sendiri dimana kita sudah bisa sejauh apa menguasai materi numerik dan peningkatan ilmu yang sudah didapat. Hal itu didapat dari nilai tambah bagi diri sendiri sebagai nilai tolak ukur. Kemudian pada akhir kelas kami diminta untuk mempelajari software Openmodelica dan mencoba aplikasi tersebut.

Materi Metode Numerik : Sebelum UTS

Pada mata kuliah metode numerik, di chapter-chapter awal kami mempelajari metode numerik secara garis besar. Namun pada chapter 5 ini, mulai diberikan beberapa metode-metode yang digunakan untuk menyelesaikan persamaan. Metode yang pertama adalah bracketing method yang berisi Graphical method, False position method, dan Bisection method. Lalu, metode selanjutnya yaitu open method yang berisikan Fixed-point iteration, Secant method, Newton Raphson method dan Brent's method.

Kemudian pada chapter selanjutnya, kami diberikan materi tentang regresi linear. Kegunaan regresi linear tersebut biasanya digunakan untuk membuktikan teori-teori yang sudah ada dengan eksperimen. Kami mengujinya dengan mengambil sampel yang bervariasi, kemudian kami dapat menghitung beberapa variabel seperti error dan lain-lain. Metode ini sering dijumpai ketika melakukan praktikum atau pada saat menganalisa suatu data.

Pada chapter terakhir sebelum uts yang diberikan kepada kami adalah materi tentang interpolasi. Interpolasi linier adalah salah satu metode yang digunakan untuk mengetahui nilai dari interval dua buah titik yang terletak dalam satu garis lurus. Interpolasi ini juga mempunyai beberapa jenis yaitu Newton Divided difference, Langrange, Spline, dan multidimesional.

Tutorial mempelajari software Open Modelica

Dalam mempelajari dan memahami modelica, saya mencoba melihat tutorialnya di youtube dengan link : https://www.youtube.com/watch?v=SW5Eclf1tRs&t=5s

Didalam video tersebut membahas pengenalan modelica untuk para pemula atau beginners. Video tersebut juga menjelaskan tentang simbol-simbol, tools, interface, dan lain-lain. Pada bagian libraries, terdapat tools yang dapat membantu kita dalam menggunakan modelica. Ada berbagai macam tools yang mempunyai berbagai fungsi yang sesuai dengan fungsinya. Berikut contoh gambarnya :

Modelica.PNG

Kemudian tutorial dalam membuat sebuah simulasi menggunakan software open modelica saya menggunakan referensi : https://www.youtube.com/watch?v=Dw66ODbMS2A&t=3s dalam referensi tersebut, video tersebut menjelaskan simulasi sebuah feedback control system.

Diawal simulasi, dimulai dengan melakukan pembuatan model untuk disimulasikan. Dalam melakukan simulasi tersebut sistem yang digunakan adalah sistem linear dimana simple second order system sebagai target untuk kontrol. PID control pada Open Modelica menggunakan tool continous. Kemudian area simulasi dimasukkan dengan blok untuk PID control dan simple second order system. Lalu menu math digunakan tool feedback ke area simulasi, dan menu source yang berupa tool step, dikoneksikan ke seluruh sistem. Drag keseluruhan blok dan tools yang ada untuk membuat sistem menjadi closed loop.

Closed loop.PNG

Selanjutnya tahap yang dilakukan adalah tahap memasukan nilai parameter. Sistem menggunakan underdamped, nilai damping <1. Sistem kemudian dicek melalui perhitungan dan didapatkan 22 persamaan dan 22 variabel. Simulasi juga dilakukan dengan 30 interval. Hasil output data dari grafik kita mendapat variabel seperti U dan y. Diakhir simulasi kita juga dapat merubah parameter untuk mendapatkan variasi yang ditentukan dan proses simulasi hanya tinggal dilakukan kembali.

Parameter.PNG

Tugas 1 Membuat Video

https://www.youtube.com/watch?v=bvXGA_v8s-k

Pertemuan 2 : Senin, 16 November 2020

Assalamualaikum Wr. Wb. Pada pertemuan kali ini Pak Dai memulai pertemuan dengan dengan diskusi pembelajaran OpenModelica yang sudah dilakukan. Kemudian Pak Dai juga memeriksa satu persatu tugas yang telah diberikan minggu lalu yaitu melakukan simulasi OpenModelica. Setelah itu, dilanjutkan dengan memberikan latihan membuat perhitungan sederhana menjumlahkan angka 10 terhadap suatu variabel dengan software OpenModelica. Berikut adalah lampiran dari tutorial yang diberikan oleh Pak Dai. Dibuat dengan menggunakan pemrograman untuk perhitungan yang akan digunakan. Pada percobaan pertama menghitung nilai X untuk persamaan y=x+10, kemudian mendapat nilai y

Lata rsyd.PNG

Setelah itu, dapat dilihat grafik input dan hasi sebagai berikut, dengan nilai input x=7 didapatkan hasil y=17. Kita juga dapat melakukan simulasi kembali apabila ingin merubah nilai x.

Grafik lat1rsyd.PNG

Berikutnya adalah mencoba perhitungan untuk menentukan rata-rata dari kelompok data yang sudah disediakan. Yaitu a1=7,a2=14,a=3=21,a4=35,a5=42.

Latih2add rsyd.PNG

Kemudian terdapat hasil simulasi dari perhitungan untuk nilai masing-masing data dan hasil mean dari data tersebut adalah 23,8 berikut grafik yang dihasilkan dari simulasi tersebut.

Latih2 grafik rsyd.PNG

Tugas 2 : Tugas memecahkan suatu persamaan aljabar simultan

Definisi dari aljabar simultan adalah suatu metode yang digunakan untuk menyelesaikan persoalan matematik yang bersangkutan dengan hal matematik yang kompleks sehingga membutuhkan bantuan softare seperti OpenModelica. Ada beberapa jenis-jenis metode yang dapat digunakan dengan cara aljabar simultan :

1. Eliminasi Gauss

2. Cramer

3. Gauss Seidel

4. Gauss Jordan

Berikut persamaan yang saya gunakan untuk aljabar simultan :

X1 + 3X2 + 2X3 = 5

2X1+ 4X2 + X3 = 4

3X1+ X2 + 3X3 = 3

Langkah pertama yang dilakukan adalah membuat modelica class baru tipe class dan membuat fungsi-fungsi dan variabel seperti Real A[3,3] yang berarti bahwa 3,3 adalah matriks yang digunakan adalah matriks orde 3x3 dan parameter Real B[3] adalah 3 yang menunjukan matriks dengan orde 3x1 serta terakhir adalah parameter X dimana X yang akan dicari 3 akar-akarnya setelah dilakukan simulasi. Class yang saya gunakan untuk menyelesaikan persamaan adalah tipe function. Berikut hasil rangkaian bahasa modelica :

Simultan rsyd.PNG

Berikut hasil rangkaian bahasa modelica yang sudah dicek dengan berisikan 15 persamaan dan 15 variabel yang sudah benar.

Simul rsyd.PNG

Selanjutnya, berikut adalah setting simulasi yang saya lakukan.

Setup rsyd.PNG

Setelah dilakukan simulasi, didapatkan akar-akar dari persamaan eliminasi gauss yaitu X1=-0.666667, X2=1, X3=1.33333. Berikut adalah hasil simulasi yang dilakukan.

Grafik simul rsyd.PNG

Pertemuan 3 : Senin, 23 November 2020

Assalamualaikum Wr. Wb. pada pertemuan kali ini Pak Dai memberikan alur pemecahan masalah teknik menggunakan metode numerik. Cara pemecahan masalah tersebut adalah sebagai berikut :

1. Masalah teknik

2. Analisis masalah

3. Model Matematis

4. Model Numerik

5. Komputer

6. Mendapatkan Solusi

Kemudian Pak Dai juga memberikan tugas yaitu studi kasus di gambar 12.11 yaitu dengan membuktikan persamaan aljabar dan selesaikan dengan OpenModelica. Berikut gambar soal yang diberikan.

Save rsyd.PNG

Berikut saya menggunakan function yang sudah saya buat dan membuat class baru untuk latihan 12.11

Latian12.PNG

Setelah itu dapat kita lakukan pengecekan dan didapatkan 15 persamaan dan 15 variabel yang sudah benar.

Latiancek rsyd.PNG

Lalu kita dapat melakukan simulasi untuk mendapatkan hasil dan grafik seperti pada gambar di bawah ini. Dan didapatkan hasil yaitu :

X1 = 7.3575

X2 = 10.0552

X3 = 12.5077

Grafik latihan 12rsyd.PNG

Dapat disimpulkan bahwa jawaban yang sudah tertera di buku sudah sesuai dengan penyelesaian yang dilakukan melalui software OpenModelica.

Tugas 3

Setelah pertemuan hari ini, Pak Dai memberikan tugas untuk mengerjakan soal berikut:

Example rsyd.jpg

Penyelesaian :

Merubah problem menjadi node dan elemen

Table RSYD.jpg

Menentukan nilai konstanta kekakuan stifness constant dari elemen

Untuk elemen 1,2,3,4,5

Oyu rsyd.jpg
Scann rsyd.jpg

Berikut parameter yang saya digunakan untuk di OpenModelica :

6x6 rsyd.PNG

Berikut merupakan hasil simulasi dari class matriks yang saya buat :

Grafik 6x6.PNG

Selanjutnya, saya lampirkan perhitungan untuk mencari R :

Ef rsyd.jpg

Berikut parameter yang digunakan :

Ef rsyd.PNG
Tayo rsyd.PNG

Pertemuan 4: Senin, 30 November 2020

Assalamualaikum Wr.Wb. Pada awal pertemuan Pak Dai memberikan pertanyaan tentang perbedaan antara pembebanan statis dan pembebanan dinamik, kemudian saya menyimpulkan bahwa perbedaannya adalah pembebanan statik bebannya tidak berubah terhadap waktu sedangkan pembebanan dinamik bebannya berubah terhadap waktu. Lalu, Pak Dai juga menjelaskan manfaat metode numerik untuk persoalan-persoalan teknik.

Quiz Pertemuan 4 dan Tugas 4

Pada hari ini, Pak Dai memberikan quiz 2 soal yaitu :

Soal 4rsyd.jpg
Soal 8rsyd.jpg

Kemudian Pak Dai juga memberikan instruksi untuk menjawab soalnya dengan memberikan flow chartnya terlebih dahulu di air.eng.ui.ac.id. Berikut jawaban yang telah saya kerjakan.

Flow chart 4 rsyd.jpg
Flow chart 8 rsyd.jpg

Pertemuan 5 : Senin, 7 Desember 2020

Assalamualaikum Wr. Wb. pada pertemuan kali ini membahas dan berdiskusi tentang tahapan dalam menyelesaikan soal-soal pada kuis yang diberikan pada minggu sebelumnya. Kemudian pertemuan ini diberikan dan dilanjutkan oleh Ahmad Mohammad Fahmi dengan menjelaskan flowchart yang ia buat. Lalu, Ahmad menjelaskan bahasa modelica yang ia gunakan untuk menyelesaikan permasalahan atau soal yang diberikan sebelumnya. Dari penjelasan yang diberikan oleh Ahmad Mohammad Fahmi, saya mendapatkan pembelajaran baru dimana contohnya itu seperti cara looping pada aplikasi OpenModelica. Ahmada mengerjakan soal ini secara baik dan runtut sehingga yang memerhatikan bisa dengan mudah membaca dan dapat diaplikasikan.

Dari pembahasan yang dijelaskan oleh Ahmad, saya dapat menjelaskan beberapa langkah untuk mengerjakan soal-soal yang diberikan. Berikut beberapa langkah-langkah untuk mengerjakan soal-soal tersebut.

  • Menentukan matriks global yang akan digunakan pada persoalan pada soal dengan cara menurunkan matriks lokal pada setiap joint di persoalan yang diberikan. Pada setiap persoalan juga perlu untuk memasukan function boundary untuk menambahkan looping.
  • Matriks global total yang sudah ditemukan, dilakukan simulasi dengan menggunakan aplikasi OpenModelica
  • Variabel-variabel yang ada, kita dapat menemukan variabel yang dibutuhkan contoh pada persoalan yang diberikan kita dapat menemukan variabel defleksi (U) serta variabel konstanta kekakuan (K) pada setiap elemen.
  • Dengan didapatkannya variabel defleksi dan konstanta kekakuan pada batang, maka dapat ditemukan juga persamaan gaya reaksi yang terjadi pada batang tersebut.
  • Simulasikan dengan menggunakan aplikasi OpenModelica untuk mendapatkan hasil reaction force atau gaya reaksi pada setiap elemen.

Tugas 5

Berikut adalah contoh soal 3.3

Soal lat rsyd.PNG

Berikut pembahasan contoh soal 3.3

Dari syntax yang digunakan, parameter dan equation yang dimasukan. Dapat dilihat bahwa variabel dan equation yang didapatkan telah setimbang.

Soal rsyd.PNGMetnum rsyd.PNG

3.3 rsyd.PNGSave rsyd3.3.PNG

Hasil rsyd.PNGHasil 1 rsyd.PNGYuk rsyd.PNG

Masukan atas codingan Ahmad Mohammad Fahmi

Hasil codingan yang dibuat oleh Ahmad Mohammad Fahmi sudah baik, karena dalam latihan soal mengenai tugas truss sudah memasukan data pada matriks dan dilakukan perhitungan secara manual pada software OpenModelica. Namun untuk contoh soal selanjutnya, Ahmad Mohammad Fahmi sudah menggunakan loop, sehingga data perhitungannya juga sudah banyak dan dapat dilakukan secara otomatis. Perhitungannya pun juga sudah ada batasan-batasan. Contohnya seperti pada batas kolom pada matriks inisiasi yang dihitung. Kemudian Ahmad Mohammad Fahmi juga menggunakan class dan funtion. Dimana bentuk perhitungan terlihat rapi. Sistem class dan function yang dibuat oleh Ahmad Mohammad Fahmi juga memberikan kemudahan dalam variasi soal yang ada contohnya seperti soal 2D atau 3D. Kemudahannya adalah yang perlu dirubah dari class dan function tidak perlu keseluruhan hanya terbatas pada variabel apa yang diketahui. Boundary condition yang terdapat pada node-node ikut dirubah pula. Untuk hasil coding dari soal 3.3, disini juga diterapkan sistem yang sama. Tetapi terdapat beberapa perubahan pada beberapa bagian di class dan function.Dalam cara pengerjaan yang sama, terdapat beberapa bentuk boundary, parameter real yang menggunakan persamaan yang berbda jika dibandingkan dengan soal sebelumnya. Mungkin untuk masukannya adalah menjelaskan istilah-istilah yang digunakan pada parameter ataupun equation dan algorithm. Untuk keseluruhan sudah baik dan perhitungan juga sudah benar untuk output yang diberikan yaitu defleksi, reaction force, dan penjumlahan gaya-gaya.

Pertemuan 6 : Senin, 14 Desember 2020

Assalamualaikum Wr. Wb. pada pertemuan kali ini Pak Dai memberikan tugas pada setiap mahasiswa untuk melakukan muhasabah diri tentang materi pembelajaran mata kuliah metode numerik. Pak Dai berharap bahwa mahasiswa dapat menilai diri sendiri yang sesuai dengan pemahaman dan konsep yang telah dipahami. Dari muhasabah diri tersebut, Pak Dai kemudian memberikan kesempatan pada mahsiswa untuk menerangkan beberapa materi yang sudah dipahami untuk bukti bahwa mahasiswa tersebut telah sesuai dengan nilai yang diberikan pada dirinya sendiri. Parameternya adalah seberapa paham mahasiswa itu terhadap konsep dan pemahaman yang sudah diberikan selama mata kuliah metode numerik. Kemudian pembelajaran berikutnya dilanjutkan dengan materi yang diberikan oleh Christo mengenai pemahaman dari alur berfikir tentang soal-soal yang telah diberikan. Christo juga menjelaskannya ke dalam software OpenModelica mengenai bagaimana mengidentifikasi parameter apa saja yang digunakan pada soal, membentuk model, dan melakukan perhitungan dari model soal yang diberikan. Pemaparan tersebut juga dibantu oleh Josiah Enrico dan Ahmad Mohammad Fahmi untuk membandingan alur-alur pengerjaan soal-soal yang telah diberikan.

Pertemuan 7 : Senin, 21 Desember 2020

Assalamualaikum Wr. Wb. pada pertemuan kali ini dimulai dengan Pak Dai memberikan arahan untuk penyelesaian tugas besar. Kemudian dilanjutkan dengan menjelaskan optimasi dari truss, yang dimana pada truss tersebut terdapat 3 displacement yaitu sumbu yz, tetta dan r. Truss berbeda dengan beam dimana truss tiap titiknya mempunyai 3 derajat kebebasan dengan variabelnya displacement dalam x,y,z untuk asumsi pada suatu batang. Sedangkan pada beam, rangkanya mempunyai 6 derajat kebebasan dengan variabel x,y,z dan kearah momen atau puntirannya. Pada asumsi yang sudah dijelaskan kami sebagai mahasiswa diharapkan untuk menyusun persamaan-persamaannya. Dengan menyusun persamaannya diharapkan kami mahasiswa dapat mengerti dan memahami bagaimana menyelesaikan permasalahan tersebut dengan matriks dan variabel-variabel sudah kami susun dan dapat diaplikasikan pada aplikasi OpenModelica. Kemudian kami juga harus mengerti dan paham bagaimana menyusun persamaannya, boundary condition dan lain-lain.

Selanjutnya kami mahasiswa juga diharapkan menghitung kondisi optimal pada rangka dengan parameter seperti pada tujuan dan fungsi objektif pada optimasi. Pada perhitungan tersebut harus ada fungsi-fungsi pada batasan atau constraintsnya contohnya seperti berapa panjang siku dan harga per berapa ukuran. Optimasi ini juga mempunyai tujuan yaitu untuk meminimalisir biaya. Constraints yang diberikan harus mampu untuk menahan beban yang dimana gaya-gaya bekerja mampu didukung pada rangka tersebut. Langkah awal yang dilakukan adalah mencari displacement, memeriksa gayanya dan mengoptimasi gaya tersebut dan menghitung stress. Selanjutnya membandingkan stress dari kekuatan material yang digunakan. Tegangan yang telah dihitung tersebut tidak boleh melebihi dari allowable stress agar membentuk rangka yang sesuai dengan standar. Dari data-data yang sudah dikumpulkan, kita akan mendapatkan jenis material dan ukuran dari batang dan kita juga dapat mengetahui berapa spesifikasi siku. Lalu, kita dapat melakukan optimasi untuk mengetahui yang mana bahan yang paling optimal.

k= A.E/L

A= merupakan luas penampang siku

E= modulus elastisitas tiap bahan

L= panjang batang rangka

Dapat digaris bawahi bahan atau profil siku yang digunakan adalah galvanis, stainlessm dan lain-lain

Aplikasi Metode Numerik dalam Kasus Optimasi

Pembahasan tentang materi ini diberikan oleh Bu Chandra, dengan menyampaikan penjelasan-penjelasan melalui powerpoint dimana optimasi yang digunakan adalah metode bracket optimization using golden ratio. Diharapkan kita mahasiswa dapat mengikuti simulasi dengan menggunakan OpenModelica untuk menyelesaikan permasalahn dengan fungsi exercise yang telah diberikan dan tercantum pada powerpoint. Optimasi juga adalah cara untuk mendapatkan nilai maksimum atau minimum dari suatu permasalahan. Optimasi fungsi non linear, dan objektifnya adalah mencari nilai f(x) maksimum dan minimum. Kemudian dalam penerapannya dapat menggunakan persamaan sebagai berikut

d= akar5 - 1/2 x (xu-xl)

x1= x1 + d

x2= xu - d

dengan syarat sebagai berikut,

- f(x1)>f(x2), domain sebalah kiri x2 dapat dieliminasi xL = x2 untuk iterasi berikutnya xu = xu lama.

- f(x2)>f(x1), domain x disebelah kanan x1 daat dieliminasi xu = x1 untuk iterasi berikutnya xL = xL lama.

Metn rsyd.PNG

Tugas Besar Metode Numerik : Optimasi Desain Struktur Rangka (Truss) Sederhana dengan Open Modelica

Pada tugas besar ini kami mahasiswa diminta untuk melakukan optimasi pemilihan material dan luas penampang trusses untuk rangka seperti gambar dibawah ini

Truss rsyd.PNG Parameter truss.PNG

Asumsi yang digunakan untuk melakukan perhitungan ini antara lain:

1. Variasi Stiffness terikat dengan variabel area pada material yang akan digunakan. Karean akan sulit apabila memvariasikan elastisitas, dimana setiap material memiliki range yang tidak teratur dan dalam satu material yang sejenis tidak terjadi perubahan nilai elastisitas yang berbanding lurus dengan perubahan biaya

2. Dimensi material mengikuti standar ukuran material yang dipilih

3. Beban akan terdistribusi hanya pada node/point penghubung (karena bersifat trusses)

4. Terdapat 2 perhitungan yaitu dengan material lock dan area lock.

Latar Belakang

Memperoleh desain dengan harga paling terjangkau dan spesifikasi atau kemampuan mumpuni untuk target penggunaan (material, luas, dan harga yang optimal)

Ketentuan

  • Optimasi dilakukan dengan mencari harga termurah dengan faktor berubah kekuatan dan area
  • Tujuan optimasi : Displacement U minimum, Cross-Area minimum, dan nilai E dan A (murah)

Perhitungan dan Coding

1.Elasticity Lock

Material lock merupakan pengambilan data dengan material yang sama dan untuk memvariasikan luas areanya. Pada material lock ini, saya menggunakan material SS400 yang berprofil siku. Dimana data yang saya ambil sebagai berikut :

SS LOCKES.PNG
Ss harga.PNG

source : http://infoindosteel.blogspot.com/2017/02/harga-besi-baja-siku.html

Coding

Coding Trusses

model Trusses_3D_Tugas_Besar_Safety //by Rasyid Indy Nur S. 1806181874

//define initial variable parameter Integer Points=size(P,1); //Number of Points parameter Integer Trusses=size(C,1); //Number of Trusses parameter Real Yield=400000000; //Yield Strength (Pa) parameter Real Area=0.000531; //Area L Profile (Dimension=0.03, Thickness=0,003) (m2) parameter Real Elas=79000000000; //Elasticity SS 400 A36 (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;


Coding Cure Fitting

function Curve_Fitting

input Real X[:]; input Real Y[size(X,1)]; input Integer order=2; output Real Coe[order+1];

protected Real Z[size(X,1),order+1]; Real ZTr[order+1,size(X,1)]; Real A[order+1,order+1]; Real B[order+1];

algorithm

for i in 1:size(X,1) loop

 for j in 1:(order+1) loop
 Z[i,j]:=X[i]^(order+1-j);
 end for;

end for; ZTr:=transpose(Z);

A:=ZTr*Z; B:=ZTr*Y; Coe:=Modelica.Math.Matrices.solve(A,B); //Coe:=fill(2,size(Coe,1));

end Curve_Fitting; /* for i in 1:3 loop

for j in 1:Points loop
 R[j]:=reaction[3*(j-1)+i];
end for;
Sur[i]:=sum(R);

end for;

  • /

Kemudian langkah selanjutnya adalah mencari hasil harga tiap area yang telah ditentukan melalui koding curve fitting. Sehingga kita mendapatkan hasil curve fitting yang dituliskan pada excel sebagai berikut :

function

Model Tugas Besar 3D Trusses

Trussrsyd.PNG

Function Curve Fitting

Ss func.PNG
Func.PNG

Class Curve Fitting

Curve fit.PNG

Lalu, didapatkan hasil dari simulasi dengan nilai Coe yang akan kita ambil untuk salah satu variabel perhitungan adalah sebagai berikut:

Plotting curve.PNG

Hasil Excel dan Grafik

Setelah dilakukan perhitungan maka secara otomatis didapatkan harga di excel dengan menginput data hasil koding curve fitting. Berikut hasil dari perhitungan dan grafiknya:

Ss hasil.PNG
Graf cost ratio.PNG

2. Area Locked

Area Locked adalah pengambilan data menggunakan luas area yang sama dan memvariasikan materialnya. Untuk area locked ini, saya menggunakan material SS400, SS304, SS403, dan SS316 yang mempunyai profil siku dengan memberikan sample yang mempunyai ariasi berupa material dan harga. Berikut data yang saya gunakan:

Area lockedrsyd.PNG
Harga material.PNG

source : https://www.indiamart.com/proddetail/ms-sheet-10121470997.html

Coding

function Curve_Fitting

input Real X[:]; input Real Y[size(X,1)]; input Integer order=2; output Real Coe[order+1];

protected Real Z[size(X,1),order+1]; Real ZTr[order+1,size(X,1)]; Real A[order+1,order+1]; Real B[order+1];

algorithm

for i in 1:size(X,1) loop

 for j in 1:(order+1) loop
 Z[i,j]:=X[i]^(order+1-j);
 end for;

end for; ZTr:=transpose(Z);

A:=ZTr*Z; B:=ZTr*Y; Coe:=Modelica.Math.Matrices.solve(A,B); //Coe:=fill(2,size(Coe,1));

end Curve_Fitting; /* for i in 1:3 loop

for j in 1:Points loop
 R[j]:=reaction[3*(j-1)+i];
end for;
Sur[i]:=sum(R);

end for;

  • /

Class

class cost

Class cost.PNG

coe cost

Coe cost per kg.PNG

class density

Class density.PNG

coe density

Coe density.PNG

class yield

Yield rsyd.PNG

coe yield

Coe yield.PNG

Hasil Excel dan Grafik

Setelah dilakukan perhitungan maka secara otomatis didapatkan harga di excel dengan menginput data hasil koding curve fitting. Berikut hasil dari perhitungan dan grafinya:

Hitungan area locked.PNG
Graf cost area.PNG