Oka Widiantara Suputra

From ccitonlinewiki
Revision as of 14:01, 2 December 2020 by OkaSuputra (talk | contribs)
Jump to: navigation, search

Salam hangat! Selamat datang di laman saya :D

Oka Suputra

Biodata

Perkenalkan, nama saya Oka sebagai mahasiswa Teknik Mesin UI angkatan 2018. Saya bersyukur bisa mendapatkan kesempatan untuk bisa belajar dan berkembang selama 20 tahun kehidupan yang telah saya lalui. Sekilas tentang saya, berinteraksi dengan orang lain merupakan hal yang menyenangkan untuk saya karena setiap orang memiliki kisah yang unik sehingga dapat membuka wawasan ataupun perspektif. Dari situ, kita bisa menggabungkan perspektif yang ada di dunia ini sehingga didapatkan berbagai jenis cara untuk memecahkan permasalahan yang ada dan bahkan menolong orang lain. Saya percaya apabila kita ingin terus belajar, memiliki niat yang baik, berusaha, dan beribadah, pasti akan diberikan jalan yang baik untuk kedepannya.

Pertemuan-1 11/11/2020

Tujuan Pembelajaran Metode Numerik

  • Memahami prinsip dasar dan konsep metode numerik sebagai bekal perjalanan kita untuk mencapai tahap selanjutnya sebagai seorang engineer
  • Mampu mengerti aplikasi yang ada dalam metode numerik
  • Bisa menerapkan konsep di dalam pemodelan numerik dan persoalan teknik(menyelesaikan problem dengan numerik)
  • Mendapatkan nilai tambah atau value sebagai manusia yang beradab

Materi Sebelum UTS

  • Pseudocode
  • Sistem Persamaan
  • Turunan Numerik
  • Metode Newton Rhapson, Secant, Bisection
  • Regresi Linear
  • Interpolasi

Tugas 1

Dalam tugas yang pertama ini, saya mempelajari penggunaan Open Modelica melalui beberapa source dari youtube seperti:

Setelah itu saya membuat video pembelajaran saya sendiri akan Open Modelica dengan mengaplikasikan basic nya ke dalam permasalahan Cantilever Beam

Pertemuan-2 18/11/2020

Mengapa Open Modelica?

Pada pertemuan kedua kali ini, salah satu teman saya, Yogi Gunawan memberikan suatu pertanyaan menarik kepada Pak DAI "Dari sekian program yang ada, mengapa kita memilih Open Modelica?". Kemudian Pak DAI memberikan beberapa key takeaways untuk menjawab perihal tersebut.

  • Open Modelica lebih di fokuskan kepada design permodelan yang akan membantu kita, para engineers, untuk bisa menyelesaikan real case baik dari control system, heat transfer, sistem fluida dan sebagainya.
  • Memudahkan kita untuk cross function (mempelajari berbagai dasar ilmu) dalam 1 software
  • Open Source, berarti dia free untuk digunakan dan dapat melakukan interaksi dengan pengguna lainnya. Bahkan sekarang banyak sekali open source yang memiliki kelebihan lebih banyak dari software yang telah dilegalisasi

Tugas 2

Overview

Setelah kami diajarkan oleh Pak DAI beberapa tipe modelica seperti Class dan Function, kami diberikan tugas untuk melatih implementasi tersebut ke dalam persoalan aljabar simultan.

[Aljabar Simultan merupakan metode penyelesaian persamaan matematik yang kompleks dalam satu waktu yang sama. Salah satu metode yang bisa digunakan adalah Gauss Jordan]

Saya mengambil contoh permasalahan dari Buku Numerical Method 7th Edition oleh Steven C. Chapra pada bab 12 problem 8 untuk dijadikan study case dalam pemrograman Open Modelica.

Studycase Aljabar Simultan 1.png

Pada gambar di atas, perlu diselesaikan transformasi matrix yang ada untuk bisa mendapatkan nilai c1, c2, c3, can c4 sebagai konsentrasi dari chlorida yang dibutuhkan pada masing-masing reservoir/lake. Oleh karena itu kita bisa implementasikan ke dalam Open Modelica bagian class seperti di bawah

Modelica Class

Studycase Aljabar Simultan 2.png

Modelica Function

Studycase Aljabar Simultan 3.png

Setelah disimulasi maka akan didapatkan nilai masing-masing sebagai berikut:

  • c1= 0.558325
  • c2= 0.857411
  • c3= 0.0931163
  • c4= 0.100237

Untuk mendapatkan guide secara visual, dapat dilihat di video bawah ini

Video

Pertemuan-3 25/11/2020

Materi

Pada pertemuan ini, kita mempelajari mengenai aplikasi metode numerik terhadap dunia Engineering. Adapun metode yang secara umum digunakan untuk bisa membantu kita yaitu CFD, Stokastik, dan FEA.


Gauss Jordan

Untuk materi gauss jordan ini sendiri, saya mempelajari dari Christo, teman saya yang melakukan sharing di kelas sehingga didapatkan hasil coding sebagai berikut

function GaussJordan
input Real [:,:] A;//matriks awal
output Real [:,:] B;//matriks tereduksi
protected 
Integer h = 1;    //pivot row
Integer k = 1;    //pivot coloumn
Integer m = size(A,1); //jumlah baris
Integer n = size(A,2); //jumlah kolom
Integer c = 0;
Integer max_row; // Row index of max number in pivot column
Real [:] pivot_column;
Real [:] pivot_row;
Real [:,:] temp_array;
Real r;
Real float_error = 10e-10;
algorithm
B := A;
while h <= m and k <= n loop
 for i in 1 : m loop
   for j in 1 : n loop
    if abs(B[i,j]) <= float_error then
      B[i,j] := 0;
     end if;
   end for;
 end for;
//Finding pivot 
 pivot_column:= {B[i,h] for i in h:m};
   //Baris terbawah yang mempunyai dengan pivot tertinggi
   c:=h-1;
   for element in pivot_column loop
     c:= c+1;
     if abs(element)== max(abs(pivot_column)) then
       max_row :=c;
     end if;
   end for; 
 //Jika tidak ada pivot di kolom ini, pindah ke kolom selanjutnya
 if B[max_row,k] == 0 then
   k:=k+1;
 else 
   // tukar row h - max_row
   temp_array := B;
   temp_array[h] := B[max_row];
   temp_array[max_row] := B[h];
   B:= temp_array;
   //devide pivot row by pivot number
    B[h] := B[h]/B[h,k];
    for i in (h+1) :m loop
      r := B[i,k]/B[h,k];
     B[i,k]:=0;
     for j in (k+1) : n loop
       B[i,j] := B[i,j]-B[h,j] * r;
     end for;
   end for;
   //pindah ke pivot kolom dan row selanjutnya
   h := h+1;
   k := k+1;  
 end if;
 end while;
// proses dari kanan atas
h :=m;
k :=n;
while h >=1 and k>=1 loop
 //dealing with error
 for i in 1:m loop
   for j in 1:n loop
     if abs(B[i,j]) <=float_error then
       B[i,j]:=0;
     end if;
   end for;
 end for; 
//finding pivot 
   pivot_row := {B[h,i] for i in 1:k};
   //Get position index k of pivot 
   c := 0;
   for element in pivot_row loop
     c := c+1;
     if element <> 0 then
       break;
     end if;
   end for;
   k:= c;
 // no pivot in this row, move to next row
 if B[h,k] == 0 then 
   h:= h-1;
 else
   //perform row operatation
   for i in 1:(h-1) loop
     r := B[i,k];
     B[i] := B[i] - B[h] *r;
   end for;
   //move to next pivot row dan column
   h:=h+1;
   k:=k+1;
 end if; 
end while;    
end GaussJordan;


Kami mencoba mengerjakan problem pseudocode pada bagian 9.4 di buku Numerical Method 7th Edition Chapra

Pseudo 9.4.png
 function GaussElimination
 input Real [3,3] A; 
 input Real [3] B;   
 output Real [3] x;  
 protected
   Real [3,3] a;
   Real [3] b;
   Integer m = size(A,1);  // total row
   Integer n = size(A,2);  // total column
   Real k = 1;       
   Real i = 1;       
   Real j = 1;      
   Real factor = 1;   
   Real sum = 1;     
 algorithm
 a := A;
 b := B;
 // Forward Elimination
 for k in 1:(n-1) loop
 for i in (k+1):n loop
   factor := a[i,k] / a[k,k];
     for j in (k+1):n loop
      a[i,j] := a[i,j] - (factor * a[k,j]);
     end for;
     b[i] := b[i] - (factor * b[k]);
   end for;
 end for;
 // Back Substitution
 x[n] := b[n] / a[n,n];
 for i in (n-1):(-1) loop
   sum := b[i];
   for j in (i+1):n loop
     sum := sum - (a[i,j] * x[j]);
   end for;
   x[i] := sum / a[i,i];
 end for;
 end GaussElimination;

Setelah itu coding disimulasikan untuk membuktikan Example 9.5

Example 9.5.png
Open Modelica 9.5.png

Setelah check model dan melakukan simulasi, maka hasil dibuktikan sesuai

Solution 9.5.png