Metnum03-Raditya Aryaputra Adityawarman

From ccitonlinewiki
Revision as of 13:08, 7 December 2020 by Radityaaryaputra (talk | contribs) (Quiz)
Jump to: navigation, search
Raditya Aryaputra

Biodata Diri

Nama: Raditya Aryaputra Adityawarman

NPM:1806181691

Program Studi: S1 Teknik Mesin Paralel

Kelas: Metode Numerik-03

Pertemuan 1: Senin, 9 November 2020

Pada pertemuan pertama setelah UTS, Pak Dai memberikan arahan kepada kami untuk memanfaatkan air.eng.ui.ac.id sebagai bahan untuk belajar. Selain itu, Pak Dai menjelaskan 4 indikator penilaian untuk pembelajaran metode numerik. Indikator pertama adalah memahami konsep dan prinsip. Konsep yaitu gagasa pemikiran mengenai apa saja yang sudah dipelajari, sedangkan prinsip yaitu pemahaman kita dalam memasukkan rumus-rumus. Indikator kedua adalah menerapkan konsep tersebut dalam memecahkan sebuah masalah. Indikator ketiga memahami aplikasi metode numerik ke dalam masalah keteknikan. Indikator yang terakhir adalah nilai tambah dalam mengenal diri kita sendiri sebagai tolak ukur apakah dari pembelajaran metode numerik diri kita bisa berkembang

Materi Sebelum UTS


Pada pertemuan sebelum UTS, kami telah belajar 3 materi utama, yaitu turunan numerik, mencari akar-akar, dan membaca pola.

1. Turunan Numerik

turunan numerik adalah menentukan hampiran nilai turunan fungsi f yang diberikan dalam bentuk tabel. Terdapat 3 pendekatan dalam menentukan turunan:
  • Turunan maju
Metnum radit 0 1.png
  • Turunan mundur
Metnum radit 0 2.png
  • Turunan pusat
Metnum radit 0 3.png

2. Mencari Akar

Pada materi ini, kami belajar cara mencari akar dengan metode numerik. Ada 2 cara dalam mengerjakannya, yaitu bracketing method dan open method.
Bracketing method
Bracketing method adalah metode mencari akar dengan cara menebak dua nilai, kemudian mengurung kedua nilai tersebut sehingga kita dapat menemukan akar-akar dari persamaan. Pada metode ini, ada beberapa cara penyelesaian, yaitu metode graphical, metode bisection, dan false-position.
  • Metode Graphical
Metode ini digunakan dengan cara membuat grafik fungsi dan melihat perpotongan sumbu horizontal atau sumbu x.
  • Metode Bisection
Metode ini dilakukan dengan cara membagi dua kurva yang diwakili oleh suatu titik yang nilainya dikalikan oleh nilai tertinggi dan yang terendah. Metode ini terus dilakukan hingga menemukan akar.
Metnum radit 0 4.png
  • False Position
Metode ini mirip dengan bisection, namun bedanya untuk penentuan titik tengah menggunakan segitiga dari titik perpotongan kurva dengan garis yang ditentukan.
Metnum radit 0 5.png
Open Method
Metode ini hanya menggunakan 1 titik sebagai acuan pertama untuk menemukan akar yang dicari. Open method terbagi menjadi 3 cara, yaitu newton rhapson, secant, dan simple fix point.
  • Newton Rhapson
Metode ini dilakukan dengan cara menentukan suatu titik dan menarik garis singgung terhadap kurva. Cara menentukan garis singgung tersebut dengan turunan.
Metnum radit 0 7.png
  • Secant
Metode ini mirip dengan Newton Rhapson, tapi estimasi dengan 2 titik jika pada newton rhapson f'(x) tidak dapat dicari.
Metnum radit 0 6.png
  • Simple Fix Point
Metode ini menghitung seluruh kemungkinan x yang dihasilkan dan dicari x konvergen sehingga x=g(x).

3. Membaca Pola

Ada dua cara dalam membaca pola suatu data, yaitu dengan regresi dan interpolasi
  • Regresi
  • Interpolasi

Tugas 1 Software OpenModelica


Saya mempelajari OpenModelica dengan referensi sebagai berikut:

  https://www.youtube.com/watch?v=Dw66ODbMS2A&feature=youtu.be

Video tersebut menjelaskan tutorial simulasi feedback control system. Berikut tahapan-tahapan simulasi:

  1. Pertama, buka OpenModelica dengan nama feedback
  2. Semua diagram blok yang akan disimulasikan terdapat pada tab blocks modelica. Pada simulasi ini, saya menggunakan sistem linear dan simple second order system untuk kontrol.
  3. Kemudian saya memakai PID controller pada menu continuous
  4. Pilih blok PID dan second order
  5. Pada menu math, pilih blok feedback
  6. Pada menu sources, pilih step sebagai input
  7. Setelah itu, blok-blok tersebut dihubungkan dengan cara menarik garis antar blok sehingga sistem menjadi closed loop
  8. Kemudian mengatur parameter yang diinginkan. Sistem tersebut underdamped, sehingga nilai damping yang dimasukkan <0.7
  9. Cek model apakah sudah siap untuk diset up atau belum
  10. Setelah siap untuk disimulasikan, kita menyimpan terlebih dahulu pada tempat default
  11. Jalankan simulasi dan tunggu hingga selesai
  12. Setelah simulasi selesai dilakukan, untuk melihat kurva centang y pada PID, step, dan second order
  13. Hasil simulasi didapatkan. Kita bisa mengubah parameter sehingga hasil simulasi lebih jelas

Lampiran


membuat file
diagram blok
cek blok sebelum simulasi
hasil simulasi

Pertemuan 2: Senin, 16 November 2020

Pada pertemuan ini, Pak Dai meminta setiap mahasiswa menunjukkan tugas minggu lalu, yaitu belajar OpenModelica. Lalu kami simulasi membuat program sederhana didalam modelica untuk menjumlahkan angka 10 kepada sebuah variabel. Berikut parameter dan hasilnya:

Metnum radit 2 1.png
Metnum radit 2 2.png

Lalu kami diminta untuk membuat program untuk mencari nilai rata-rata. Berikut parameter dan hasilnya:

Metnum radit 3 1.png
Metnum radit 3 2.png

Tugas 2 Menyelesaikan Aljabar Simultan


Pada tugas ini saya menggunakan persamaan berikut untuk mengerjakan tugas 2.

Metnum radit 5 3.png

Dalam hal ini, bisa dilakukan beberapa metode dalam mengerjakannya, seperti menggunakan eliminasi gauss, gauss jordan, crammer, dan gauss seidel.

  • Eliminasi gauss adalah suatu tahapan untuk memecahkan persamaan dengan cara mereduksi / menyederhanakan matriks persamaan tersebut. Prosedur dalam metode Gauuss akan menghasilkan bentuk matrik pada eselon tereduksi.
  • Gauss jordan merupakan pengembangan metode eliminasi Gauss, hanya saja augmented matrik, pada sebelah kiri diubah menjadi matrik diagonal.
  • Metode Cramer menggunakan determinan suatu matriks dan matriks lain yang diperoleh dengan mengganti salah satu kolom dengan vektor yang terdiri dari angka di sebelah kanan persamaannya.
  • Gauss seidel digunakan untuk menyelesaikan sistem persamaan linear (SPL) berukuran besar dan proporsi koefisien nolnya besar, seperti sistem-sistem yang banyak ditemukan dalam sistem persamaan diferensial.

Pada tugas ini, saya memakai metode eliminasi gauss dalam menyelesaikannya. Berikut percobaan yang saya lakukan:

Metnum radit 6 2.png
Metnum radit 6 3.png
Metnum radit 6 4.png

Dari simulasi ini didapatkan hasil x=2.5, y=0.66667, dan z=0.22222

Referensi dari percobaan di atas didapat dari https://build.openmodelica.org/Documentation/Modelica.Math.Matrices.solve.html.


Selain itu, saya mencoba membuat persamaan Newton Rhapson. Metode ini dilakukan dengan cara menentukan suatu titik dan menarik garis singgung terhadap kurva. Cara menentukan garis singgung tersebut dengan turunan. Kelebihan dari metode ini adalah hasilnya didapatkan dengan cepat, hanya memerlukan satu titik saja, dan caranya sederhana. Namun, kekurangan dari metode ini adalah tidak semua persamaan konvergen sehingga beberapa persamaan tidak mempunyai solusi dengan metode ini. Selain itu ketika memilih titik yang turunannya=0, cara ini tidak bisa digunakan.

Pertama-tama saya membuat fungsi pada function. Persamaan yang saya gunakan yaitu y=2x^2+20x+50. Selanjutnya, saya membuat fungsi turunan dengan persamaan y'=4x+20.

Kemudian saya membuat rumus newton rhapson pada function solve. Rumusnya yaitu Xn=(xn-1)-(f(xn-1)/f'(xn-1)). Input yang dimasukkan x0, i=0, dan x1. X sebagai variabel yang dimasukkan. Sementara i merupakan iterasi. Saya menggunakan loop while, sehingga program terus melakukan looping selama error lebih besar dari 10^-9.

Lalu saya membuat equation. Equation ini untuk menghitung fungsi-fungsi yang sudah dibuat. Parameternya yaitu x0=7 dan x1. x0=7 merupakan titik yang ditentukan.

Setelah dilakukan simulasi, maka didapatkan hasil dari persamaan y=2x^2+20x+50 yaitu titik yang memotong garis horizontal x=-5.

Metnum radit 6 1.png
Metnum radit 6 5.png

Pertemuan 3: Senin, 23 November 2020

Pada pertemuan ini, kami diminta untuk menjelaskan tugas minggu lalu, yaitu penyelesaian aljabar simultan. Selain itu, Pak Dai menjelaskan aplikasi metode numerik dalam permasalahan teknik. Urutan penyelesaiannya yaitu:

  1. masalah teknik, yaitu tahapan membuat gambaran mengenai masalah yang ada, seperti parameter dan metode yang digunakan.
  2. analisis masalah, yaitu respon dari kasus yang ada. Pada tahap ini menganalisis permasalahan dari parameter-parameter yang sudah diketahui
  3. model matematis, membuat model matematika dari variabel yang ada dengan hukum fisika.
  4. model numerik, yaitu menggunakan bahasa pemrograman untuk menyelesaikan permasalahan yang ada, contohnya menggunakan open modelica untuk menyelesaikan aljabar simultan.
  5. komputer, yaitu menggunakan software untuk menyelesaikan perhitungan, seperti open modelica, cfdsof, mathlab, dll.
  6. solusi, hasil dari simulasi didapatkan.

Selanjutnya Pak Dai memberi tugas untuk menyelesaikan permasalahan pegas massa yang terdapat pada bab 12 dari buku Numerical Method. Berikut soalnya:

Metnum radit 7 3.png

Untuk menyelesaikan soal ini, pertama-tama membuat free body diagram dari masing-masing sistem. Kemudian menuliskan persamaannya. Setelah itu, persamaan tersebut dapat diselesaikan dengan metode numerik, yaitu membuat matriks dan diselesaikan dengan eliminasi gauss. Berikut kode yang digunakan:

Metnum radit 7 4.png
Metnum radit 7 1.png

Berikut hasilnya, di mana x1 = 7,36, x2 = 10,06, x3 = 12,51

Metnum radit 7 2.png

Tugas 3 Menghitung Displacement dan Gaya Reaksi pada Trusses


Tugas yang diberikan pada pertemuan ketiga yaitu menghitung displacement dan gaya reaksi pada balcony truss dengan metode Finite Element Analysis (FEA) menggunakan aplikasi open modelica.

Metnum radit 8 0.png

Penyelesaiannya sebagai berikut: 1.Pertama-tama, menentukan elemen-elemen setiap batang, menentukan sudut, dan node-nodenya.

Metnum radit 8 1.png

2.Lalu menentukan kekakuan setiap batang. Rumus dari konstanta kekakuan yaitu k=AE/L dengan A luas penampang, E modulus elastisitas, dan L panjang batang. Karena batang 1,3,4,6 mempunyai panjang yang sama sebesar 36 in maka k juga sama. Begitu pula dengan k pada batang 2 dan 5 dengan panjang 50.9 in.

Metnum radit 8 2.png

3. Kemudian membuat persamaan matriks pada elemen. Rumusnya sebagai berikut:

Metnum radit 8 3.png

Persamaan tersebut kemudian dihitung pada tiap elemen menjadi matriks lokal. Dalam perhitungan, perhatikan juga nodenya karena akan dimasukkan ke dalam matriks global.

4. Gabungkan semua matriks lokal tiap elemen ke matriks global. Rumusnya: [K]G=[K1]+[K2]+[K3]+[k4]+[k5]+[k6]

Metnum radit 8 4 1.png

Berikut kode yang sudah saya buat dalam aplikasi openmodelica:

Metnum radit 9 2.png
Metnum radit 9 2 1.png

Berikut hasilnya:

Metnum radit 9 11 1png.png

5. Lalu masukkan boundary conditionnya. Pada node 1 dan 3 fix, sehingga U1x,U1y,U3x,U3y=0. Pada node 4 dan 5 diberikan gaya eksternal dengan F4y = -500 lb dan F5y = -500 lb. Boundary condition tersebut kemudian dimasukkan dalam persamaan {F}=[K]g*[U].

Metnum radit 8 5 1.png

6. Dari matriks tersebut bisa diselesaikan dengan eliminasi gauss, menghasilkan displacement U2x=-0.00355 in, U2Y=-0.01026 in, U4x=0.00118 in, U4y= -0.0114 in, U5x = 0.00240 in, dan U5y = -0.0195 in. Berikut matriks globalnya:

Metnum radit 8 6.png

Berikut kode yang sudah saya buat dalam aplikasi openmodelica:

Metnum radit 9 1.png

Berikut hasilnya:

Metnum radit 9 1 2.png

7. Kemudian menentukan gaya reaksi dengan rumus {R}=[K]g{U}-{F}. Berikut hasilnya:

Metnum radit 8 7 1.png

Berikut kode yang sudah saya buat dalam aplikasi openmodelica:

Metnum radit 9 11.png

Berikut hasilnya:

Metnum radit 9 12.png

Berikut file openmodelica yang saya buat: https://drive.google.com/drive/folders/1VxlNZBhgml-QFlUVyLImvTKod26Yo2i7?usp=sharing

Pertemuan 4: Senin, 30 November 2020

Quiz

Pada pertemuan ini diberikan quiz menghitung defleksi dan gaya reaksi dengan menggunakan Openmodelica. Berikut soal yang diberikan:

soal nomor 4
soal nomor 8

Berikut flow chart urutan pengerjaan soal di atas:

Flowchart1 radit 1.jpg
Flowchart1 radit 2.jpg

Kemudian berikut cara manual mengerjakan soal nomor 4 dan 8:

Quis raditya 4.jpg
Quis raditya 5.jpg

Berikut kode yang saya gunakan dalam mengerjakan soal nomor 4:

Fungsi Utama

class truss
//Data inisiasi [elemen #, node i, node j, theta(degrees), area(m^2), modulus(Pa), panjang(m)]
  parameter Real [:,7] inisiasi = [1, 1, 2,      0, 10e-4, 200e9, 1.00;
                                   2, 2, 3,      0, 10e-4, 200e9, 1.00;
                                   3, 1, 4, 308.66, 10e-4, 200e9, 1.60;
                                   4, 2, 4, 270.00, 10e-4, 200e9, 1.25; 
                                   5, 3, 4, 231.34, 10e-4, 200e9, 1.60];      
//Data node [node i, node j]
  parameter Integer [:,2] node = [1, 2;
                                  2, 3;
                                  1, 4;
                                  2, 4;
                                  3, 4];
//External load pada tiap node [node #, FX, FY]
  parameter Real [:,3] node_load = [1,        0,        0;
                                    2, -1035.28, -3863.70;
                                    3,        0,        0;
                                    4, -1035.28, -3863.70];
  
  parameter Integer y = size(node,1); //jumlah node
  parameter Integer x = 2*(size(node_load,1)); //total node tiap batang
  parameter Integer [:] Boundary = {1,3}; //node pada boundary
  parameter Real [x] load = {0,0,-1035.28,-3863.70,0,0,-1035.28,-3863.70}; //load tiap node
  Integer z = sum(Boundary); //jumlah boundary
                                   
  Real [y] k;
  Real [y,4,4] Ke;  
  Real [y,x,x] Kg;  
  Real [x,x] KgTot;  
  Real [x,x] KgB;  
  Real [x] U; 
  Real [x] R;
  
equation
 k = {(inisiasi[i,5] * inisiasi[i,6] / inisiasi[i,7]) for i in 1:size(inisiasi,1)}; //stiffness constant
 Ke = StiffnessMatrixElement(inisiasi);  //matriks lokal
 Kg = StiffnessMatrixGlobal(node, x, y, Ke);  //matriks global
 KgTot = SumStiffnessMatrixGlobal(x,y,Kg); //total matriks global
 KgB = BoundaryStiffnessMatrixGlobal(x,z,KgTot,Boundary); //boundary
 U = GaussJordan(x,KgB,load); //displacement
 R = ReactionForce(x,KgTot,U,load); //reaction force
end truss;

Matriks elemen

function StiffnessMatrixElement

  input Real [:,7] inisiasi_mat;
  output Real [size(inisiasi_mat,1),4,4] Ke_mat;

  protected
    Real theta;
    Real [3] StiffTrig; 
    Real [4,4] StiffTrans; 
    Real [size(inisiasi_mat,1)] k_vec;
    Real float_error = 10e-10;

algorithm
  k_vec := {(inisiasi_mat[i,5] * inisiasi_mat[i,6] / inisiasi_mat[i,7]) for i in 1:size(inisiasi_mat,1)};

  // Finding stiffness matrix of each element member
  for i in 1:size(inisiasi_mat,1) loop

  // Clearing the matrices
  StiffTrig := zeros(3);
  StiffTrans := zeros(4,4);
  
  // Converting degrees to radians
  theta := Modelica.SIunits.Conversions.from_deg(inisiasi_mat[i,4]);

  // {cos^2, sin^2, sincos}
  StiffTrig := {(Modelica.Math.cos(theta))^2,
                (Modelica.Math.sin(theta))^2,
                (Modelica.Math.sin(theta)*Modelica.Math.cos(theta))};
  
  // Handle float error elements in StiffTrig
  for t in 1:size(StiffTrig,1) loop
    if abs(StiffTrig[t]) <= float_error then
      StiffTrig[t] := 0;
    end if;
  end for;
  
  // Construct stiffness transformation matrix
  StiffTrans := [  StiffTrig[1],    StiffTrig[3], -1*StiffTrig[1], -1*StiffTrig[3];
                   StiffTrig[3],    StiffTrig[2], -1*StiffTrig[3], -1*StiffTrig[2];
                -1*StiffTrig[1], -1*StiffTrig[3],    StiffTrig[1],    StiffTrig[3];
                -1*StiffTrig[3], -1*StiffTrig[2],    StiffTrig[3],    StiffTrig[2]];
  
  // Multiply in stiffness constant of element, add final stiffness matrix to Ke_mat
  for m in 1:4 loop
    for n in 1:4 loop
      Ke_mat[i,m,n] := k_vec[i] * StiffTrans[m,n];
    end for;
  end for;

end for;
end StiffnessMatrixElement;

Pertemuan 5: Senin, 7 Desember 2020