M. Raja

From ccitonlinewiki
Revision as of 15:15, 2 December 2020 by M.raja (talk | contribs)
Jump to: navigation, search

Biodata

Nama  : M. Raja

NPM  : 1906379106

TTL  : Payakumbuh, 24 Juli 2001

Tempat Tinggal: Payakumbuh, Sumatera Barat

Golongan Darah: B

Hobi  : Travelling

Saat ini, saya adalah mahasiswa semester 3 program studi Teknik Mesin Universitas Indonesia. Saya memilih jurusan ini karena saya terinspirasi oleh bapak B.J. Habibie dan juga disarankan oleh saudara kandung saya untuk memilih jurusan ini. Saya sangat bersyukur bisa menjadi mahasiswa Teknik Mesin Universitas Indonesia, karena menurut saya tempat ini adalah tempat yang terbaik yang diizinkan Allah SWT untuk saya berkembang. Dengan ini, saya berharap Semoga ilmu yang saya pelajari di perkuliahan ini dapat saya terapkan untuk kebaikan orang banyak di suatu saat nanti dan menjadi ladang amal untuk diri saya pribadi.


Metode Numerik

Berdasarkan pemahaman saya, metode numerik adalah suatu cara dalam penyelesaian permasalahan yang menggunakan formulasi secara matematis dengan menggunakan operasi hitungan aritmatika dengan proses tambah, kurang, kali, dan bagi. Pada setengah semester pertama di mata kuliah metode numerik, kami dipandu oleh Bapak Dr. Ir. Engkos A. Kosasih, M.T. Beberapa topik yang dibahas yaitu:

1. Sistem Persamaan

2. Pseudocode

3. Turunan Numerik

4. Metode Newton Rhapson, Secant, dan Bisection

5. Interpolasi

6. Regresi Linear

Setelah UTS, setengah semester terkahir, perkuliahan Metode Numerik diisi oleh Bapak Dr. Ir. Ahmad Indra Siswantara


Pertemuan 1 (11 November 2020)

Pada pertemuan minggu ini, dipaparkan tujuan-tujuan pembelajaran metode numerik, yaitu: Tujuan: 1.Memahami konsep-konsep dan prinsip-prinsip dasar dalam metode numerik, seperti: Persamaan aljabar, algorithma, persamaan diferensial parsial, dll.

2.Mengerti aplikasi metode numerik.

3.Mampu menerapkan metode numerik dallam persoalan teknik.

4.Mendapat nilai tambah sehingga kita menjadi orang yang lebih beradab.

Tugas Minggu 1

Kami diminta mempelajari Open Modelica, yaitu sebuah aplikasi untuk membuat modelling dan simulasi. Untuk mempelejari aplikasi tersebut, saya menonton beberapa video dari youtube:

Dengan mempelajari beberapa tutorial dasar penggunaan OpenModelica, saya mencoba untuk mengaplikasikannya ke persamaan GLBB, videonya sebagai berikut:

Pertemuan 2 (18 November 2020)

Dalam metode numerik, segalanya berpusat dalam perhitungan. Dalam proses perhitungan sendiri merupakan suatu seni untuk menyusun algoritma yang cepat, efisien, dan menghasilkan output yang akurat.

  • Dalam dunia Teknik, faktor cepat dan akurat memegang peranan yang penting dalam penggunaan di lapangan. Sebagai seorang calon Engineer, kita memerlukan suatu sistem yang dapat memenuhi dua aspek penting sebelumnya untuk menyelesaikan permasalahan secara efisien baik di lapangan maupun dalam proses perancangan.
  • Bahasa mesin yang cepat untuk mengeluarkan nilai outputnya adalah bahasa Fortran dan C. Namun beliau lebih memilih untuk menggunakan bahasa Modelica dalam mata kuliah Metode Numerik karena beberapa alasan:
 1. Modelica adalah bahasa pemodelan yang cukup mudah dipahami.
 2. Modelica dapat mengeluarkan hasil hitungan yang cepat karena menggunakan bahasa pemrograman C.
 3. Modelica merupakan suatu bahasa yang open source, sehingga gratis dan mudah diakses oleh semua orang, serta memiliki komunitas pengguna yang cukup banyak.

Dalam menggunakan OpenModelica, untuk melakukan suatu perhitungan, maka variabel haruslah didefinisikan.

  • Apabila variabel tersebut memiliki nilai; maka nilai tersebut haruslah ditulis dengan menggunakan parameter Real variabel=nilai
  • Apabila variabel tersebut merupakan persamaan atau sesuatu yang ingin kita cari, maka variabel tersebut harus dituliskan dalam equation.

Tugas Minggu 2

Kami diminta untuk mengaplikasikan Open Modelica lebih lanjut dan saya mencoba mengaplikasikannya untuk mencari solusi dari sebuah matrix menggunakan open modelica ini dan membandingkannya dengan hasil yang didapat secara manual, berikut adalah video tugas tersebut:

Tugas Minggu 3


model Trusses_PR
parameter Integer N=10; //Global matrice = 2*points connected
parameter Real A=8;
parameter Real E=1.9e6;
Real G[N,N]; //global
Real Ginitial[N,N]; //global
Real Sol[N]; //global dispplacement
Real X[N]={0,0,0,0,0,0,0,-500,0,-500};
Real R[N]; //global reaction force
Real SolMat[N,1];
Real XMat[N,1];
//boundary coundition
Integer b1=1;
Integer b2=3;
//truss 1
parameter Real X1=0; //degree between truss
Real k1=A*E/36;
Real K1[4,4]; //stiffness matrice
Integer p1a=1;
Integer p1b=2;
Real G1[N,N];
//truss 2
parameter Real X2=135; //degree between truss
Real k2=A*E/50.912;
Real K2[4,4]; //stiffness matrice
Integer p2a=2;
Integer p2b=3;
Real G2[N,N];
//truss 3
parameter Real X3=0; //degree between truss
Real k3=A*E/36;
Real K3[4,4]; //stiffness matrice
Integer p3a=3;
Integer p3b=4;
Real G3[N,N];
//truss 4
parameter Real X4=90; //degree between truss
Real k4=A*E/36;
Real K4[4,4]; //stiffness matrice
Integer p4a=2;
Integer p4b=4;
Real G4[N,N]; 
//truss 5
parameter Real X5=45; //degree between truss
Real k5=A*E/50.912;
Real K5[4,4]; //stiffness matrice
Integer p5a=2;
Integer p5b=5;
Real G5[N,N]; 
//truss 6
parameter Real X6=0; //degree between truss
Real k6=A*E/36;
Real K6[4,4]; //stiffness matrice
Integer p6a=4;
Integer p6b=5;
Real G6[N,N];
/*
for each truss, please ensure pXa is lower then pXb (X represents truss element number)
*/ 
algorithm
//creating global matrice
K1:=Kekakuan_Matrix(X1);
G1:=k1*Local_Global(K1,N,p1a,p1b);
K2:=Kekakuan_Matrix(X2);
G2:=k2*Local_Global(K2,N,p2a,p2b); 
K3:=Kekakuan_Matrix(X3);
G3:=k3*Local_Global(K3,N,p3a,p3b);
K4:=Kekakuan_Matrix(X4);
G4:=k4*Local_Global(K4,N,p4a,p4b);
K5:=Kekakuan_Matrix(X5);
G5:=k5*Local_Global(K5,N,p5a,p5b); 
K6:=Kekakuan_Matrix(X6);
G6:=k6*Local_Global(K6,N,p6a,p6b);
G:=G1+G2+G3+G4+G5+G6;
Ginitial:=G;
//implementing boundary condition
for i in 1:N loop
 G[2*b1-1,i]:=0;
 G[2*b1,i]:=0;
 G[2*b2-1,i]:=0;
 G[2*b2,i]:=0;
end for;
G[2*b1-1,2*b1-1]:=1;
G[2*b1,2*b1]:=1;
G[2*b2-1,2*b2-1]:=1;
G[2*b2,2*b2]:=1;
//solving displacement
Sol:=Gauss_Jordan(N,G,X);
//solving reaction force
SolMat:=matrix(Sol);
XMat:=matrix(X);
R:=Reaction_Trusses1(N,Ginitial,SolMat,XMat);
end Trusses_PR;

==

class Trusses
parameter Integer N=8; //Global matrice = 2*points connected
parameter Real A=0.001; //Area m^2
parameter Real E=200e9; //Pa
Real G[N,N]; //global
Real Ginitial[N,N]; //global
Real Sol[N]; //global displacement
Real X[N]={0,0,-1035.2762,-3863.7033,0,0,-1035.2762,-3863.7033};
Real R[N]; //global reaction force
Real SolMat[N,1];
Real XMat[N,1];
//boundary condition
Integer b1=1;
Integer b2=3;
//truss 1
parameter Real X1=0; //degree between truss
Real k1=A*E/1;
Real K1[4,4]; //stiffness matrice
Integer p1a=1;
Integer p1b=2;
Real G1[N,N];
//truss 2
parameter Real X2=0; //degree between truss
Real k2=A*E/1;
Real K2[4,4]; //stiffness matrice
Integer p2a=2;
Integer p2b=3;
Real G2[N,N];
//truss 3
parameter Real X3=90; //degree between truss
Real k3=A*E/1.25;
Real K3[4,4]; //stiffness matrice
Integer p3a=2;
Integer p3b=4;
Real G3[N,N];
//truss 4
parameter Real X4=90+38.6598; //degree between truss
Real k4=A*E/1.6;
Real K4[4,4]; //stiffness matrice
Integer p4a=1;
Integer p4b=4;
Real G4[N,N];
//truss 5
parameter Real X5=90-38.6598; //degree between truss
Real k5=A*E/1.6;
Real K5[4,4]; //stiffness matrice
Integer p5a=3;
Integer p5b=4;
Real G5[N,N];
/*
for each truss, please ensure pXa is lower then pXb (X represents truss 
element number)
*/
algorithm
//creating global matrice
K1:=Kekakuan_Matrix(X1);
G1:=k1*Local_Global(K1,N,p1a,p1b);
K2:=Kekakuan_Matrix(X2);
G2:=k2*Local_Global(K2,N,p2a,p2b);
K3:=Kekakuan_Matrix(X3);
G3:=k3*Local_Global(K3,N,p3a,p3b);
K4:=Kekakuan_Matrix(X4);
G4:=k4*Local_Global(K4,N,p4a,p4b);
K5:=Kekakuan_Matrix(X5);
G5:=k5*Local_Global(K5,N,p5a,p5b);
G:=G1+G2+G3+G4+G5;
Ginitial:=G;
//implementing boundary condition
for i in 1:N loop
G[2*b1-1,i]:=0;
G[2*b1,i]:=0;
G[2*b2-1,i]:=0;
G[2*b2,i]:=0;
end for;
G[2*b1-1,2*b1-1]:=1;
G[2*b1,2*b1]:=1;
G[2*b2-1,2*b2-1]:=1;
G[2*b2,2*b2]:=1; 
//solving displacement
Sol:=Gauss_Jordan(N,G,X);
//solving reaction force
SolMat:=matrix(Sol);
XMat:=matrix(X);
R:=Reaction_Trusses1(N,Ginitial,SolMat,XMat);
end Trusses;

Fungsi Panggil

function Kekakuan_Matrix
input Real A;
Real Y;
output Real X[4,4];
Real float_error = 10e-10;
final constant Real pi=2*Modelica.Math.asin(1.0);
algorithm
Y:=A/180*pi;
   
X:=[(Modelica.Math.cos(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y),- (Modelica.Math.cos(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y);
Modelica.Math.cos(Y)*Modelica.Math.sin(Y),(Modelica.Math.sin(Y))^2,- Modelica.Math.cos(Y)*Modelica.Math.sin(Y),-(Modelica.Math.sin(Y))^2;

-(Modelica.Math.cos(Y))^2,-Modelica.Math.cos(Y)*Modelica.Math.sin(Y), (Modelica.Math.cos(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y);
-Modelica.Math.cos(Y)*Modelica.Math.sin(Y),- (Modelica.Math.sin(Y))^2,Modelica.Math.cos(Y)*Modelica.Math.sin(Y), (Modelica.Math.sin(Y))^2];
 for i in 1:4 loop
  for j in 1:4 loop
    if abs(X[i,j]) <= float_error then
      X[i,j] := 0;
    end if;
  end for;
 end for;
 end Kekakuan_Matrix;

==

function Local_Global
input Real Y[4,4];
input Integer B;
input Integer p1;
input Integer p2;
output Real G[N,N];
algorithm
for i in 1:B loop
 for j in 1:B loop
     G[i,j]:=0;
 end for;
end for;
G[2*p1,2*p1]:=Y[2,2];
G[2*p1-1,2*p1-1]:=Y[1,1];
G[2*p1,2*p1-1]:=Y[2,1];
G[2*p1-1,2*p1]:=Y[1,2];
G[2*p2,2*p2]:=Y[4,4];
G[2*p2-1,2*p2-1]:=Y[3,3];
G[2*p2,2*p2-1]:=Y[4,3];
G[2*p2-1,2*p2]:=Y[3,4];
G[2*p2,2*p1]:=Y[4,2];
G[2*p2-1,2*p1-1]:=Y[3,1];
G[2*p2,2*p1-1]:=Y[4,1];
G[2*p2-1,2*p1]:=Y[3,2];
G[2*p1,2*p2]:=Y[2,4];
G[2*p1-1,2*p2-1]:=Y[1,3];
G[2*p1,2*p2-1]:=Y[2,3];
G[2*p1-1,2*p2]:=Y[1,4];
end Local_Global;

==

function Gauss_Jordan
input Integer N;
input Real A[N,N];
input Real B[N];
output Real X[N];
Real float_error = 10e-10;
algorithm
X:=Modelica.Math.Matrices.solve(A,B);
for i in 1:N loop
  if abs(X[i]) <= float_error then
    X[i] := 0;
  end if;
end for;
end Gauss_Jordan;

==

function Reaction_Trusses1
input Integer N;
input Real A[N,N];
input Real B[N,N];
input Real C[N,N];
Real X[8,1];
output Real Sol[8];
Real float_error = 10e-10;
algorithm
X:=A*B-C;
for i in 1:N loop
 if abs(X[i,1]) <= float_error then
   X[i,1] := 0;
 end if;
end for;
for i in 1:N loop
 Sol[i]:=X[i,1];
end for;
end Reaction_Trusses1;