Difference between revisions of "Cornelia Christiani Vianney"

From ccitonlinewiki
Jump to: navigation, search
(JAWABAN UAS METODE NUMERIK)
 
(69 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
== Perkenalan ==
 
== Perkenalan ==
  
[[File:Cornelia1.jpg|200px|thumb|right|alt text]]
+
[[File:Cornelia1.jpg|300px|thumb|right|alt text]]
 
Nama Lengkap : Cornelia Christiani Vianney
 
Nama Lengkap : Cornelia Christiani Vianney
  
Line 14: Line 14:
  
 
Angkatan : 2018
 
Angkatan : 2018
 +
 +
 +
Saya adalah seorang mahasiswa semester 5 di Departemen Teknik Mesin jurusan teknik mesin. Saya bersyukur bisa berada sampai pada tahap ini karena berkat dan pertolongan Tuhan yang mengijinkan saya mendapatkan jurusan teknik mesin di UI ini. Pada bagian ini, saya akan belajar mengenai '''Metode Numerik'''. Saya berharap melalui pembelajaran mata kuliah ini, saya dapat menggunakannya dan mengaplikasikannya untuk menyelesaikan masalah yang akan saya hadapi ke depannya juga untuk membantu orang lain.
 +
 +
 +
 +
 +
  
  
  
Saya adalah seorang mahasiswa semester 5 di Departemen Teknik Mesin jurusan teknik mesin. Saya bersyukur bisa berada sampai pada tahap ini karena berkat dan pertolongan Tuhan yang mengijinkan saya mendapatkan jurusan teknik mesin di UI ini. Pada bagian ini, saya akan belajar mengenai '''Metode Numerik'''. Saya berharap melalui pembelajaran mata kuliah ini, saya dapat menggunakannya dan mengaplikasikannya untuk menyelesaikan masalah yang akan saya hadapi ke depannya juga untuk membantu orang lain.
 
  
 
== Review Materi Sebelumnya ==
 
== Review Materi Sebelumnya ==
Line 30: Line 37:
  
 
== Pertemuan 1 (11/11/2020) ==
 
== Pertemuan 1 (11/11/2020) ==
 
  
 
Pada pertemuan pertama setelah UTS ini, Pak Dr. Ir. Ahmad Indra Siswantara meminta mahasiswa untuk membuat akun pada situs wiki air. Kami dijelaskan langkah-langkah membuat halaman baru berjudulkan nama lengkap kami masing-masing. Halaman ini yang nantinya akan digunakan sebagai ''update review'' tiap minggu pertemuan dan sebagai wadah menuangkan pemikiran dari tugas-tugas yang diberikan. Selain itu, beliau juga memaparkan tujuan pembelajaran mata kuliah metode numerik ini, yaitu :
 
Pada pertemuan pertama setelah UTS ini, Pak Dr. Ir. Ahmad Indra Siswantara meminta mahasiswa untuk membuat akun pada situs wiki air. Kami dijelaskan langkah-langkah membuat halaman baru berjudulkan nama lengkap kami masing-masing. Halaman ini yang nantinya akan digunakan sebagai ''update review'' tiap minggu pertemuan dan sebagai wadah menuangkan pemikiran dari tugas-tugas yang diberikan. Selain itu, beliau juga memaparkan tujuan pembelajaran mata kuliah metode numerik ini, yaitu :
Line 39: Line 45:
  
 
Kami diingatkan juga bahwa meskipun kita menggunakan komputer sebagai salah satu media penghitungan, komputer juga memiliki batasan penghitungan yang sebenarnya masih dapat dihitung oleh manusia. Manusialah yang berperan sebagai subjek yang pintar dalam mengoperasikan komputer.
 
Kami diingatkan juga bahwa meskipun kita menggunakan komputer sebagai salah satu media penghitungan, komputer juga memiliki batasan penghitungan yang sebenarnya masih dapat dihitung oleh manusia. Manusialah yang berperan sebagai subjek yang pintar dalam mengoperasikan komputer.
 
  
  
Line 50: Line 55:
 
*https://www.youtube.com/watch?v=esSMzMCFwbo
 
*https://www.youtube.com/watch?v=esSMzMCFwbo
  
Hasil pembelajaran saya dapat dilihat melalui video : https://youtu.be/JkRA9RDreQ4
+
Hasil pembelajaran saya dapat dilihat melalui video :  
 +
 
 +
<youtube width="200" height="100">JkRA9RDreQ4</youtube>
 +
 
 +
 
 +
 
 +
== Pertemuan 2 (18/11/2020) ==
 +
 
 +
Hari ini kembali diingatkan oleh Pak Dai bahwa orang yang beruntung adalah orang yang menjalani hari ini lebih baik dari hari kemarin, yang memiliki gradien hidup positif. Apabila seseorang menjalani hari ini tidak berbeda dari hari kemarin, maka gradien nya 0, dan apabila hari ini justru malah lebih buruk dari hari kemarin, maka gradiennya negatif. Kami juga diminta untuk mencoba merenungkan apa yang telah didapat dari mata kuliah sebelumnya.
 +
Untuk materi yang disampaikan berupa penggunaan open modellica dengan kelas 'class' dan 'function', yaitu dimana kita menuliskan fungsi pada kelas 'function' kemudian kita panggil melalui kelas 'class'.
 +
 
 +
 
 +
Diberi contoh fungsi yang digunakan sebagai berikut, dan diberi nama file 'fungsitmbhx1'
 +
[[File:Function.png|800px|center]]
 +
 
 +
 
 +
Kemudian dibuat kelas yang memanggil fungsi tersebut, diberi nama 'Kelaspanggil' dan kita misalkan nilai x1=5
 +
[[File:Class.png|800px|center]]
 +
 
 +
 
 +
Maka akan kita dapatkan hasil sebagai berikut
 +
[[File:Hasil_Class-function.png|800px|center]]
 +
 
 +
Dengan nilai x1 yang dapat diubah sesuai kebutuhan.
 +
 
 +
 
 +
 
 +
'''Tugas Minggu II'''
 +
 
 +
Membuat sebuah kelas fungsi dan kelas pemanggil untuk menyelesaikan persamaan simultan (bisa berupa kasus nyata)
 +
 
 +
 
 +
Disini saya baru mencoba menyelesaikan SPL dengan metode matriks (array) dari 10 persamaan dengan 10 variabel.
 +
 
 +
<youtube width="200" height="100">nLJRO6iZfkY</youtube>
 +
 
 +
 
 +
 
 +
== Pertemuan 3 (25/11/2020) ==
 +
 
 +
Pada pertemuan hari ini kami diperkenalkan untuk dapat mengapliakasikan modelica untuk menyelesaikan permasalahan keteknikan. Sebelum itu, ada latihan menyelesaikan sistem persamaan dengan membuat fungsi penyelesaian dengan referensi pseudocode 9.4 untuk soal 9.5 dari buku ''Numerical Methods for Engineers 7th Edition'' oleh Chapra.
 +
 
 +
Pada hari ini pula, dua mahasiswa, yaitu Josiah Enrico dan Christopher Erwin turut membantu menjelaskan pemahaman mereka mengenai penyelesaian Gauss Jordan menggunakan modelica. Saya memahami sebagian penjelasan mereka dan akan saya coba gunakan untuk menyelesaikan tugas selanjutnya.
 +
 
 +
 
 +
'''Latihan'''
 +
 
 +
 
 +
[[File:Soal_buku_9_5.png|800px|center]]
 +
 
 +
 
 +
Saya mencoba menggunakan code Gauss-Jordan yang dijelaskan oleh saudara Christopher Salendu untuk menyelesaikan persamaan 9.5
 +
 
 +
[[File:Func_9_5.png|800px|center]]
 +
 
 +
[[File:Class_9_5.png|800px|center]]
 +
 
 +
 
 +
Sehingga saya mendapatkan hasil perhitungan pada matriks akhir sebagai berikut
 +
 
 +
[[File:Hasil_9_5.png|800px|center]]
 +
 
 +
 
 +
dimana hasilnya sesuai dengan perhitungan di buku
 +
 
 +
[[File:Hasil_buku_9_5.png|800px|center]]
 +
 
 +
 
 +
Kemudian, saya menemukan hal menarik dari perhitungan kali ini. Ketika saya mencoba mengecek secara mandiri function yang digunakan, saya mendapatkan eror seperti gambar di bawah:
 +
 
 +
[[File:Error_9_5.png|800px|center]]
 +
 
 +
dimana dikatakan bahwa komputer tidak dapat membaca persamaan yang akan digunakan dalam perhitungan, sedangkan persamaan awal matriks memang masih dikondisikan agar dapat semua jenis ukuran matriks dapat tercakup. Nyatanya, ketika saya coba abaikan eror dalam function dan mencoba simulate dari class, perhitungan dapat berjalan baik sehingga mendapatkan hasil seperti di gambar sebelumnya.
 +
 
 +
 
 +
'''Tugas Minggu III'''
 +
 
 +
Kami diminta untuk membuat program sederhana dengan modelica menggunakan fungsi penyelesaian aljabar untuk kasus 4 dibawah.
 +
 
 +
[[File:Tugas minggu 3.jpeg|800px|center]]
 +
 
 +
 
 +
Saya terlebih dahulu mencoba perhitungan secara manual
 +
 
 +
[[File:truss4manual.jpg|300px]]    [[File:truss4manual1.jpg|300px]]  [[File:truss4manual2.jpg|300px]]
 +
 
 +
 
 +
Selanjutnya saya akan mencoba memasukkannya ke dalam program. Dalam hal ini saya belajar dari saudari Hikaru Trinita dalam menggunakan persamaan matriks yang diperlukan dengan perhitungan sederhana
 +
 
 +
Diawali dengan membuat matriks konstanta pegas global
 +
 
 +
[[File:modelkg1.png|800px|center]]
 +
 
 +
[[File:modelkg2.png|800px|center]]
 +
 
 +
[[File:modelkg3.png|800px|center]]
 +
 
 +
 
 +
didapatkan nilai anggota matriks KG seperti di bawah
 +
 
 +
[[File:kg1-2.png|400px]]  [[File:kg3-4.png|400px]]
 +
 
 +
[[File:kg5-6.png|400px]]  [[File:kg7-8.png|400px]]
 +
 
 +
 
 +
Kemudian saya mencoba membuat function seperti penyelesaian SPL sebelumnya dengan kelas terkait:
 +
 
 +
[[File:cctruss4.png|800px|center]]
 +
 
 +
[[File:ctruss4.png|800px|center]]
 +
 
 +
 
 +
Sehingga, didapatkan nilai matriks R dan U seperti berikut
 +
 
 +
[[File:R-U.png|800px|center]]
 +
 
 +
 
 +
 
 +
 
 +
== Pertemuan 4 (02/12/2020) ==
 +
 
 +
Kita harus memahami makna dari apa yang kita lakukan.
 +
 
 +
 
 +
''' Quiz : Diagram Class dan Flow Chart'''
 +
 
 +
Membuat class diagram dan flowchart setiap class untuk coding mengenai Trusses Problem milik Josiah Enrico :
 +
 
 +
 
 +
Dari yang saya pahami dari pembahasan soal milik saudara Josiah, didapatkan 5 kelas yang digunakan. Dari Matrices Transformation, menggunakan input data sudut dari elemen pada truss, kemudian dihasilkan output berupa matriks lokal dari kekakuan pegas. Dari persamaan pada Global Element Matrice, tiap matriks lokal kekakuan tiap elemen diletakkan dalam susunan matriks global. Dalam class Truss kemudian matriks tiap elemen diolah dengan luas penampang, modulus elastisitas dan panjang tiap elemen, kemudian disatukan menjadi suatu matriks global G. dengan menerapkan boundary condition, kemudian matriks diselesaikan dengan Gauss Jordan untuk mendapatkan nilai defleksi dan menggunakan fungsi Reaction untuk mendapatkan gaya reaksi
 +
 
 +
[[File:kuis1.1.jpg|300px]]          [[File:kuis1.2.jpg|300px]]
 +
 
 +
 
 +
'''Tugas Minggu IV'''
 +
 
 +
buatlah flowchart, diagram class, coding openmodelica
 +
 
 +
[[File:pr4tin.jpeg|600px|center]]
 +
 
 +
 
 +
HASIL
 +
 
 +
Diagram Class dan Flow Chart
 +
 
 +
[[File:DC_3D.jpg|300px]]          [[File:FC_3D.jpg|300px]]
 +
 
 +
 
 +
Saya mencoba menghitung secara manual guna mendapatkan data untuk perhitungan
 +
 
 +
[[File:manual_3D.jpg|600px|center]]
 +
 
 +
 
 +
Berikut adalah hasil coding untuk soal 3D Trusses berdasarkan referensi milik saudara Ahmad Mohammad Fahmi dari kelas Metode Numerik 03 :
 +
 
 +
Kekakuan Elemen
 +
 
 +
[[File:KE_3D_1.png|600px|center]]
 +
 
 +
[[File:KE_3D_2.png|600px|center]]
 +
 
 +
 
 +
Kekakuan Global
 +
 
 +
[[File:KG_3D_1.png|600px|center]]
 +
 
 +
[[File:KG_3D_2.png|600px|center]]
 +
 
 +
 
 +
Kekakuan Global Gabungan (hasil penjumlahan kekakuan global per elemen)
 +
 
 +
[[File:KGG_3D.png|600px|center]]
 +
 
 +
[[File:KGB_3D.png|600px|center]]
 +
 
 +
 
 +
Gauss Jordan
 +
 
 +
[[File:Gauss_Jordan_3D.png|600px|center]]
 +
 
 +
 
 +
Gaya Reaksi
 +
 
 +
[[File:Gaya_Reaksi_3D.png|600px|center]]
 +
 
 +
 
 +
Kelas Pemanggil
 +
 
 +
[[File:kelas_3d_rev.png|600px|center]]
 +
 
 +
 
 +
Hasil yang didapatkan untuk U (besar defleksi) dan R (gaya reaksi)
 +
 
 +
[[File:u_3d_rev.png|300px]]          [[File:r_3d_rev.png|300px]]
 +
 
 +
 
 +
Video Penjelasan :
 +
 
 +
<youtube width="200" height="100">89NJwIniB14</youtube>
 +
 
 +
 
 +
== Pertemuan 5 pengganti (14/12/2020) ==
 +
 
 +
Kami diminta untuk muhasabah diri dan memberikan penilaian terhadap diri sendiri akan pemahaman mengenai mata kuliah Metode Numerik ini. Disini juga dibahas mengenai sistem truss berupa diskusi kelas MetNum 02 dan MetNum 03.
 +
 
 +
 
 +
== Pertemuan 6 (16/12/2020) ==
 +
 
 +
'''Aplikasi Metode Numerik dalam Kasus Optimisasi'''
 +
 
 +
Kami belajar mengenai program optimasi dengan modelica. Penjelasan diberikan oleh Bu Chandra melalui video yang kemudian dibahas dikelas. Program optimasi dengan menggunakan bracket function digunakan apabila kita memiliki sebuah rentang nilai dengan grafik dan hendak menentukan titik maksimum dari grafik tersebut.
 +
 
 +
Fungsi yang digunakan adalah sebagai berikut :
 +
[[File:op1.png|600px|center]]
 +
 
 +
Kelas pemanggilnya :
 +
[[File:op2.png|600px|center]]
 +
 
 +
[[File:op3.png|600px|center]]
 +
 
 +
Sehingga didapatkan nilai :
 +
[[File:op4.png|600px|center]]
 +
 
 +
[[File:op5.png|600px|center]]
 +
 
 +
 
 +
 
 +
 
 +
== Tugas Besar Metode Numerik : Aplikasi Metode Numerik dalam Optimasi desain Struktur Rangka Sederhana==
 +
 
 +
 
 +
 
 +
 
 +
Sebagai tugas besar, kami diminta untuk mendesain rangka yang reliable dengan pengeluaran cost yang optimum (serendah mungkin).
 +
 
 +
Diketahui sebuah struktur rangka seperti pada gambar, dengan data yang diberikan juga tertera.
 +
 
 +
[[File:soaltubes.jpeg|400px]]  [[File:soaltubes1.jpeg|500px]]
 +
 
 +
 
 +
Variabel bebas/faktor lainnya yang perlu ditentukan adalah jenis material (elastisitas), harga material, dan luas cross section Truss (dengan L profile). Kami diminta untuk mencari optimasi dan membentuk kurva efisiensi harga dengan Curve Fitting, serta menentukan nilai optimum dengan cost terendah.
 +
 
 +
 
 +
''' Data, Penomoran dan Asumsi '''
 +
 
 +
[[File:tubesCornelia.png|600px|center]]
 +
 
 +
 
 +
1. Beban terdistribusi pada node
 +
 
 +
2. Titik node 1 pada penomoran terletak pada titik pusat koordinat (0,0,0)
 +
 
 +
3. Jenis material yang digunakan : Mild Steel SS400
 +
 
 +
4. Panjang truss vertikal 0.6 m per tingkat
 +
 
 +
 
 +
''' Code yang digunakan '''
 +
 
 +
3D Truss
 +
 
 +
[[File:tubes3Cornelia.png|600px|center]]
 +
 
 +
[[File:tubes5Cornelia.png|600px|center]]
 +
 
 +
[[File:tubes6Cornelia.png|600px|center]]
 +
 
 +
[[File:tubes7Cornelia.png|600px|center]]
 +
 
 +
[[File:tubes8Cornelia.png|600px|center]]
 +
 
 +
[[File:tubes9Cornelia.png|600px|center]]
 +
 
 +
 
 +
 
 +
Fungsi Curve Fitting
 +
 
 +
[[File:funccfCornelia.png|600px|center]]
 +
 
 +
 
 +
Class Curve Fitting
 +
 
 +
[[File:classcfCornelia.png|600px|center]]
 +
 
 +
 
 +
Optimasi
 +
 
 +
[[File:tubes10Cornelia.png|600px|center]]
 +
 
 +
[[File:tubes11Cornelia.png|600px|center]]
 +
 
 +
 
 +
''' Hasil Perhitungan '''
 +
 
 +
Displacement
 +
 
 +
[[File:dis1Cornelia.png|300px]] [[File:dis2Cornelia.png|300px]]
 +
 
 +
 
 +
Reaction Force
 +
 
 +
[[File:reaction1Cornelia.png|300px]] [[File:reaction2Cornelia.png|300px]]
 +
 
 +
 
 +
Safety dan Stress
 +
 
 +
[[File:safetyCornelia.png|300px]]  [[File:stressCornelia.png|300px]]
 +
 
 +
 
 +
Variasi Cross-section Area
 +
 
 +
[[File:tubes1Cornelia.png|700px|center]]
 +
 
 +
 
 +
[[File:var1Cornelia.png|300px|center]]
 +
 
 +
 
 +
[[File:opt1Cornelia.png|300px|center]]
 +
 
 +
 
 +
Kesimpulan, nilai optimal luas cross-section truss dengan material '''Mild Steel SS400''' dengan susunan rangka seperti pada soal adalah '''0.00047 m^2''' atau dapat dikatakan dimensi truss '''0.05x0.05 mm dengan tebal L profile 0.005 mm'''
 +
 
 +
 
 +
Variasi Elasticity Material
 +
 
 +
[[File:tubes2Cornelia.png|700px|center]]
 +
 
 +
 
 +
[[File:var2Cornelia.png|300px|center]]
 +
 
 +
 
 +
[[File:opt2Cornelia.png|300px|center]]
 +
 
 +
 
 +
Kesimpulan, nilai optimal elasticity material dengan luas cross-section '''171e-6 m^2'''susunan rangka seperti pada soal adalah '''1.93e11''' atau dapat dikatakan material terbaik sebagai penyusun rangka tersebut adalah '''SS304'''
 +
 
 +
 
 +
'''Referensi'''
 +
 
 +
https://wijayamakmur.com/product/siku-ss201-30x30x3mm-x-6000mm/
 +
 
 +
https://metal.beyond-steel.com/2011/08/harga-plat-mild-steel-a36-or-ss400-for-construction/
 +
 
 +
http://www.pusatbesibaja.co.id/harga-besi-siku-profil-baja-distributor-pabrik-supplier-agen-jual-toko-produsen/
 +
 
 +
https://www.aksteel.com/sites/default/files/2018-01/201201512_3.pdf
 +
 
 +
 
 +
== JAWABAN UAS METODE NUMERIK ==
 +
 
 +
 
 +
 
 +
Berikut adalah jawaban UAS Metode Numerik 2020/2021 saya:
 +
 
 +
[[File:corneliauas1.jpg|600px|center]]
 +
 
 +
[[File:corneliauas2.jpg|600px|center]]
 +
 
 +
[[File:corneliauas3.jpg|600px|center]]
 +
 
 +
[[File:corneliauas4.jpg|600px|center]]
 +
 
 +
[[File:corneliauas5.jpg|600px|center]]
 +
 
 +
[[File:corneliauas6.jpg|600px|center]]
 +
 
 +
[[File:corneliauas7.jpg|600px|center]]
 +
 
 +
 
 +
Code Modelica yang digunakan untuk menjawab soal nomor 7
 +
 
 +
model UAS_1dtruss //Cornelia Christiani Vianney
 +
 +
//define initial variable
 +
parameter Integer Points=size(P,1); //Number of Points
 +
parameter Integer Trusses=size(C,1); //Number of Trusses
 +
parameter Real Yield=225e6; //Yield Strength (Mild steel SS400)(Pa)
 +
parameter Real Area=0.0005; //Area L Profile (Dimension=0.03, Thickness=0.003)(m2)
 +
parameter Real Elas=2e11;  //Elasticity SS400 (Mild steel SS400)(Pa)
 +
 +
//define connection
 +
parameter Integer C[:,2]=[1,2;
 +
                          2,3;
 +
                          3,4];
 +
                                                             
 +
//define coordinates (please put orderly)
 +
parameter Real P[:,6]=[0,0,0,1,1,1;      //1
 +
                        0,0.04,0,0,0,0;  //2
 +
                        0,0.08,0,0,0,0;  //3
 +
                        0,0.12,0,0,0,0];  //4
 +
                           
 +
//define external force (please put orderly)
 +
parameter Real F[Points*3]={0,0,0,      //1
 +
                            0,0,0,      //2
 +
                            0,0,0,      //3
 +
                            0,200,0};  //4
 +
                           
 +
//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 UAS_1dtruss;
 +
 
 +
 
 +
Hasil yang didapatkan dari coding
 +
 
 +
[[File:corneliauas8.png|300px]][[File:corneliauas9.png|300px]][[File:corneliauas10.png|400px]]

Latest revision as of 19:52, 13 January 2021

Perkenalan

alt text

Nama Lengkap : Cornelia Christiani Vianney

Nama Panggilan : Christin

NPM : 1806149066

Tempat, tanggal lahir : Jakarta, 29 Juni 2000

Jurusan : Teknik Mesin

Angkatan : 2018


Saya adalah seorang mahasiswa semester 5 di Departemen Teknik Mesin jurusan teknik mesin. Saya bersyukur bisa berada sampai pada tahap ini karena berkat dan pertolongan Tuhan yang mengijinkan saya mendapatkan jurusan teknik mesin di UI ini. Pada bagian ini, saya akan belajar mengenai Metode Numerik. Saya berharap melalui pembelajaran mata kuliah ini, saya dapat menggunakannya dan mengaplikasikannya untuk menyelesaikan masalah yang akan saya hadapi ke depannya juga untuk membantu orang lain.





Review Materi Sebelumnya

Selama setengah semester sebelumnya, mata kuliah metode numerik ini diajar oleh bapak Dr. Ir. Engkos A. Kosasih, M.T. Disini saya belajar mengenai beberapa hal, antara lain :

  • penghitungan deret Taylor dan McLaurin dengan metode forward, center, dan backward dan penghitungannya dalam Excel;
  • menghitung akar-akar persamaan dengan metode Bisection, Secant, dan Newton Raphson serta pengaplikasiannya melalui Excel;
  • menyelesaikan sistem persamaan menggunakan deret Taylor;
  • serta mencari nilai interpolasi dan regresi linier menggunakan matriks.

Yang masih saya kurang pahami adalah mengenai code yang dapat digunakan di aplikasi, karena sebelumnya kurang dijelaskan dan cara pengaplikasiannya pun juga masih belum terbayang.

Pertemuan 1 (11/11/2020)

Pada pertemuan pertama setelah UTS ini, Pak Dr. Ir. Ahmad Indra Siswantara meminta mahasiswa untuk membuat akun pada situs wiki air. Kami dijelaskan langkah-langkah membuat halaman baru berjudulkan nama lengkap kami masing-masing. Halaman ini yang nantinya akan digunakan sebagai update review tiap minggu pertemuan dan sebagai wadah menuangkan pemikiran dari tugas-tugas yang diberikan. Selain itu, beliau juga memaparkan tujuan pembelajaran mata kuliah metode numerik ini, yaitu :

  • memahami konsep-konsep dan prinsip-prinsip dasar dalam metode numerik;
  • mengerti aplikasi dari metode numerik;
  • mampu menerapkan metode numerik dalam persoalan teknik;
  • dan untuk mendapat nilai tambah sehingga kita bisa menjadi orang yang lebih beradab.

Kami diingatkan juga bahwa meskipun kita menggunakan komputer sebagai salah satu media penghitungan, komputer juga memiliki batasan penghitungan yang sebenarnya masih dapat dihitung oleh manusia. Manusialah yang berperan sebagai subjek yang pintar dalam mengoperasikan komputer.


Tugas Minggu I

  • Mempelajari aplikasi Open Modelica melalui video youtube dan memberikan tautan link hasil pembelajaran.

Saya coba mempelajari aplikasi Open Modelica melalui video berikut :

Hasil pembelajaran saya dapat dilihat melalui video :


Pertemuan 2 (18/11/2020)

Hari ini kembali diingatkan oleh Pak Dai bahwa orang yang beruntung adalah orang yang menjalani hari ini lebih baik dari hari kemarin, yang memiliki gradien hidup positif. Apabila seseorang menjalani hari ini tidak berbeda dari hari kemarin, maka gradien nya 0, dan apabila hari ini justru malah lebih buruk dari hari kemarin, maka gradiennya negatif. Kami juga diminta untuk mencoba merenungkan apa yang telah didapat dari mata kuliah sebelumnya. Untuk materi yang disampaikan berupa penggunaan open modellica dengan kelas 'class' dan 'function', yaitu dimana kita menuliskan fungsi pada kelas 'function' kemudian kita panggil melalui kelas 'class'.


Diberi contoh fungsi yang digunakan sebagai berikut, dan diberi nama file 'fungsitmbhx1'

Function.png


Kemudian dibuat kelas yang memanggil fungsi tersebut, diberi nama 'Kelaspanggil' dan kita misalkan nilai x1=5

Class.png


Maka akan kita dapatkan hasil sebagai berikut

Hasil Class-function.png

Dengan nilai x1 yang dapat diubah sesuai kebutuhan.


Tugas Minggu II

Membuat sebuah kelas fungsi dan kelas pemanggil untuk menyelesaikan persamaan simultan (bisa berupa kasus nyata)


Disini saya baru mencoba menyelesaikan SPL dengan metode matriks (array) dari 10 persamaan dengan 10 variabel.


Pertemuan 3 (25/11/2020)

Pada pertemuan hari ini kami diperkenalkan untuk dapat mengapliakasikan modelica untuk menyelesaikan permasalahan keteknikan. Sebelum itu, ada latihan menyelesaikan sistem persamaan dengan membuat fungsi penyelesaian dengan referensi pseudocode 9.4 untuk soal 9.5 dari buku Numerical Methods for Engineers 7th Edition oleh Chapra.

Pada hari ini pula, dua mahasiswa, yaitu Josiah Enrico dan Christopher Erwin turut membantu menjelaskan pemahaman mereka mengenai penyelesaian Gauss Jordan menggunakan modelica. Saya memahami sebagian penjelasan mereka dan akan saya coba gunakan untuk menyelesaikan tugas selanjutnya.


Latihan


Soal buku 9 5.png


Saya mencoba menggunakan code Gauss-Jordan yang dijelaskan oleh saudara Christopher Salendu untuk menyelesaikan persamaan 9.5

Func 9 5.png
Class 9 5.png


Sehingga saya mendapatkan hasil perhitungan pada matriks akhir sebagai berikut

Hasil 9 5.png


dimana hasilnya sesuai dengan perhitungan di buku

Hasil buku 9 5.png


Kemudian, saya menemukan hal menarik dari perhitungan kali ini. Ketika saya mencoba mengecek secara mandiri function yang digunakan, saya mendapatkan eror seperti gambar di bawah:

Error 9 5.png

dimana dikatakan bahwa komputer tidak dapat membaca persamaan yang akan digunakan dalam perhitungan, sedangkan persamaan awal matriks memang masih dikondisikan agar dapat semua jenis ukuran matriks dapat tercakup. Nyatanya, ketika saya coba abaikan eror dalam function dan mencoba simulate dari class, perhitungan dapat berjalan baik sehingga mendapatkan hasil seperti di gambar sebelumnya.


Tugas Minggu III

Kami diminta untuk membuat program sederhana dengan modelica menggunakan fungsi penyelesaian aljabar untuk kasus 4 dibawah.

Tugas minggu 3.jpeg


Saya terlebih dahulu mencoba perhitungan secara manual

Truss4manual.jpg Truss4manual1.jpg Truss4manual2.jpg


Selanjutnya saya akan mencoba memasukkannya ke dalam program. Dalam hal ini saya belajar dari saudari Hikaru Trinita dalam menggunakan persamaan matriks yang diperlukan dengan perhitungan sederhana

Diawali dengan membuat matriks konstanta pegas global

Modelkg1.png
Modelkg2.png
Modelkg3.png


didapatkan nilai anggota matriks KG seperti di bawah

Kg1-2.png Kg3-4.png

Kg5-6.png Kg7-8.png


Kemudian saya mencoba membuat function seperti penyelesaian SPL sebelumnya dengan kelas terkait:

Cctruss4.png
Ctruss4.png


Sehingga, didapatkan nilai matriks R dan U seperti berikut

R-U.png



Pertemuan 4 (02/12/2020)

Kita harus memahami makna dari apa yang kita lakukan.


Quiz : Diagram Class dan Flow Chart

Membuat class diagram dan flowchart setiap class untuk coding mengenai Trusses Problem milik Josiah Enrico :


Dari yang saya pahami dari pembahasan soal milik saudara Josiah, didapatkan 5 kelas yang digunakan. Dari Matrices Transformation, menggunakan input data sudut dari elemen pada truss, kemudian dihasilkan output berupa matriks lokal dari kekakuan pegas. Dari persamaan pada Global Element Matrice, tiap matriks lokal kekakuan tiap elemen diletakkan dalam susunan matriks global. Dalam class Truss kemudian matriks tiap elemen diolah dengan luas penampang, modulus elastisitas dan panjang tiap elemen, kemudian disatukan menjadi suatu matriks global G. dengan menerapkan boundary condition, kemudian matriks diselesaikan dengan Gauss Jordan untuk mendapatkan nilai defleksi dan menggunakan fungsi Reaction untuk mendapatkan gaya reaksi

Kuis1.1.jpg Kuis1.2.jpg


Tugas Minggu IV

buatlah flowchart, diagram class, coding openmodelica

Pr4tin.jpeg


HASIL

Diagram Class dan Flow Chart

DC 3D.jpg FC 3D.jpg


Saya mencoba menghitung secara manual guna mendapatkan data untuk perhitungan

Manual 3D.jpg


Berikut adalah hasil coding untuk soal 3D Trusses berdasarkan referensi milik saudara Ahmad Mohammad Fahmi dari kelas Metode Numerik 03 :

Kekakuan Elemen

KE 3D 1.png
KE 3D 2.png


Kekakuan Global

KG 3D 1.png
KG 3D 2.png


Kekakuan Global Gabungan (hasil penjumlahan kekakuan global per elemen)

KGG 3D.png
KGB 3D.png


Gauss Jordan

Gauss Jordan 3D.png


Gaya Reaksi

Gaya Reaksi 3D.png


Kelas Pemanggil

Kelas 3d rev.png


Hasil yang didapatkan untuk U (besar defleksi) dan R (gaya reaksi)

U 3d rev.png R 3d rev.png


Video Penjelasan :


Pertemuan 5 pengganti (14/12/2020)

Kami diminta untuk muhasabah diri dan memberikan penilaian terhadap diri sendiri akan pemahaman mengenai mata kuliah Metode Numerik ini. Disini juga dibahas mengenai sistem truss berupa diskusi kelas MetNum 02 dan MetNum 03.


Pertemuan 6 (16/12/2020)

Aplikasi Metode Numerik dalam Kasus Optimisasi

Kami belajar mengenai program optimasi dengan modelica. Penjelasan diberikan oleh Bu Chandra melalui video yang kemudian dibahas dikelas. Program optimasi dengan menggunakan bracket function digunakan apabila kita memiliki sebuah rentang nilai dengan grafik dan hendak menentukan titik maksimum dari grafik tersebut.

Fungsi yang digunakan adalah sebagai berikut :

Op1.png

Kelas pemanggilnya :

Op2.png
Op3.png

Sehingga didapatkan nilai :

Op4.png
Op5.png



Tugas Besar Metode Numerik : Aplikasi Metode Numerik dalam Optimasi desain Struktur Rangka Sederhana

Sebagai tugas besar, kami diminta untuk mendesain rangka yang reliable dengan pengeluaran cost yang optimum (serendah mungkin).

Diketahui sebuah struktur rangka seperti pada gambar, dengan data yang diberikan juga tertera.

Soaltubes.jpeg Soaltubes1.jpeg


Variabel bebas/faktor lainnya yang perlu ditentukan adalah jenis material (elastisitas), harga material, dan luas cross section Truss (dengan L profile). Kami diminta untuk mencari optimasi dan membentuk kurva efisiensi harga dengan Curve Fitting, serta menentukan nilai optimum dengan cost terendah.


Data, Penomoran dan Asumsi

TubesCornelia.png


1. Beban terdistribusi pada node

2. Titik node 1 pada penomoran terletak pada titik pusat koordinat (0,0,0)

3. Jenis material yang digunakan : Mild Steel SS400

4. Panjang truss vertikal 0.6 m per tingkat


Code yang digunakan

3D Truss

Tubes3Cornelia.png
Tubes5Cornelia.png
Tubes6Cornelia.png
Tubes7Cornelia.png
Tubes8Cornelia.png
Tubes9Cornelia.png


Fungsi Curve Fitting

FunccfCornelia.png


Class Curve Fitting

ClasscfCornelia.png


Optimasi

Tubes10Cornelia.png
Tubes11Cornelia.png


Hasil Perhitungan

Displacement

Dis1Cornelia.png Dis2Cornelia.png


Reaction Force

Reaction1Cornelia.png Reaction2Cornelia.png


Safety dan Stress

SafetyCornelia.png StressCornelia.png


Variasi Cross-section Area

Tubes1Cornelia.png


Var1Cornelia.png


Opt1Cornelia.png


Kesimpulan, nilai optimal luas cross-section truss dengan material Mild Steel SS400 dengan susunan rangka seperti pada soal adalah 0.00047 m^2 atau dapat dikatakan dimensi truss 0.05x0.05 mm dengan tebal L profile 0.005 mm


Variasi Elasticity Material

Tubes2Cornelia.png


Var2Cornelia.png


Opt2Cornelia.png


Kesimpulan, nilai optimal elasticity material dengan luas cross-section 171e-6 m^2susunan rangka seperti pada soal adalah 1.93e11 atau dapat dikatakan material terbaik sebagai penyusun rangka tersebut adalah SS304


Referensi

https://wijayamakmur.com/product/siku-ss201-30x30x3mm-x-6000mm/

https://metal.beyond-steel.com/2011/08/harga-plat-mild-steel-a36-or-ss400-for-construction/

http://www.pusatbesibaja.co.id/harga-besi-siku-profil-baja-distributor-pabrik-supplier-agen-jual-toko-produsen/

https://www.aksteel.com/sites/default/files/2018-01/201201512_3.pdf


JAWABAN UAS METODE NUMERIK

Berikut adalah jawaban UAS Metode Numerik 2020/2021 saya:

Corneliauas1.jpg
Corneliauas2.jpg
Corneliauas3.jpg
Corneliauas4.jpg
Corneliauas5.jpg
Corneliauas6.jpg
Corneliauas7.jpg


Code Modelica yang digunakan untuk menjawab soal nomor 7

model UAS_1dtruss //Cornelia Christiani Vianney

//define initial variable
parameter Integer Points=size(P,1); //Number of Points
parameter Integer Trusses=size(C,1); //Number of Trusses
parameter Real Yield=225e6; //Yield Strength (Mild steel SS400)(Pa)
parameter Real Area=0.0005; //Area L Profile (Dimension=0.03, Thickness=0.003)(m2)
parameter Real Elas=2e11;  //Elasticity SS400 (Mild steel SS400)(Pa)

//define connection
parameter Integer C[:,2]=[1,2; 
                          2,3;
                          3,4];
                                                             
//define coordinates (please put orderly)
parameter Real P[:,6]=[0,0,0,1,1,1;      //1
                       0,0.04,0,0,0,0;   //2
                       0,0.08,0,0,0,0;   //3
                       0,0.12,0,0,0,0];  //4
                           
//define external force (please put orderly)
parameter Real F[Points*3]={0,0,0,      //1
                            0,0,0,      //2
                            0,0,0,      //3
                            0,200,0};   //4
                           
//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 UAS_1dtruss;


Hasil yang didapatkan dari coding

Corneliauas8.pngCorneliauas9.pngCorneliauas10.png