Muhammad Faridz Athaya
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيْمِ
السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُ
Contents
Biodata
Nama : Muhammad Faridz Athaya
NPM : 1806149160
TTL : Jakarta, 12 Oktober 1999
Tempat Tinggal: Jatisampurna
Faridz merupakan mahasiswa semester 5 jurusan teknik mesin di Universitas Indonesia. Selama dua tahun di Universitas Indonesia, Faridz cukup aktif dalam berorganisasi di lingkup Fakultas Teknik. Dimana Faridz memiliki pengalaman organisasi di IMM FTUI dan BEM FTUI di tahun pertama, dan diamanahkan sebagai Ketua IMM FTUI di tahun ini hingga bulan desember nanti. Sebagai seorang mahasiswa, Faridz mempunyai mimpi untuk dapat menginspirasi banyak orang dan membawa kebaikan bagi lingkungannya. Oleh karena itu, Faridz selalu berusaha aktif dan memberikan manfaat lewat organisasi dan belajar dengan tekun agar ilmu yang dipelajari akan bermanfaat bagi agama, bangsa, dan negara di kemudian hari. Insha Allah dengan niat yang tulus dan semangat menebar kebaikan, apa yang diimpikan oleh Faridz akan tercapai
Sebelum UTS
Sebelum UTS kami diajarkan oleh Pak Dr. Ir. Engkos A. Kosasih, M. T., dimana materi yang diajarkan adalah
- Deret Mclaurin & Deret Taylor, dengan metode forward, center, dan backward
- Bracketing Methods dan Open Methods, dimana bracketing methods meliputi graphical methods, bisection methods, dan false-position methods sedangkan open methods meliputi simple fixed-point iteration, newton-raphson methods, secant methods, dan brents methods
- Mencari nilai interpolasi dan regresi linier menggunakan matriks
Minggu 1 (11 November 2020)
Pada pertemuan pertama, Pak Dr. Ir. Ahmad Indra Siswantara memperkenalkan kami dengan situs wiki air dan kami diarahkan juga untuk membuat page kami sendiri di situs tersebut. Dimana nantinya kami harus mengupdate dan mereview setiap pertemuan dengan Pak Dr. Ir. Ahmad Indra Siswantara, beliau juga memberi tahu kepada kami tujuan mempelajari Metode Numerik, yaitu untuk memahami konsep dan prinsip dasar metode numerik, mengerti bagaimana mengaplikasikannya, dan mampu menerapkannya pada persoalan yang berbau keteknikan
Setelah melaksanakan kelas metode numerik pada minggu pertama, kami diberikan tugas untuk membuat video tutorial mengenai pemakaian aplikasi OpenModelica pada suatu pekerjaan. Dimana saya akhirnya memilih untuk mengangkat video tutorial membuat Feedback Control System Sederhana dengan aplikasi OpenModelica sebagai tugas saya. Dalam membuat Feedback Control System Sederhana, saya menggunakan Step sebagai Sourcenya, Feedback, PID dan Second Order yang parameternya bisa dilihat pada gambar di bawah ini
Untuk penjelasan lebih lengkap, dapat dilihat video tutorial saya dalam membuat Feedback Control System Sederhana pada
Minggu 2 (18 November 2020)
Dalam lebih mendalami materi yang sudah disampaikan di minggu kedua, saya menguji matriks 5x5 yang saya buat sendiri dan saya coba menyelesaikannya dengan OpenModelica, berikut matriks yang akan saya uji
Disini saya menggunakan metode Gauss Elimination. OpenModelica memiliki function yang sudah tersedia untuk menyelesaikan matriks X*a = Y, dimana X merupakan matriks 5 x 5 pada ruas kiri persamaan, Y merupakan hasil dari persamaan yang berada pada ruas kanan persamaan, dan a merupakan nilai yang ingin dicari. Function yang tersedia ini bernama solve dan kita dapat menggunakannya dengan mengetik Modelica.Math.Matrices.solve pada algoritma. Untuk memudahkan eksekusi pada class, saya membuat function terlebih dahulu dengan X dan Y sebagai input serta a sebagai output.
Berikut merupakan class yang saya buat untuk mempermudah menyelesaikan permasalahan yang saya uji
Setelah itu, saya mulai simulasikan fungsi yang sudah saya buat dengan memanggil class ke fungsi yang saya buat, sehingga didapatkan jawaban dengan membentuk grafik sebagai berikut
Dari grafik di atas, maka didapatkan nilai a masing-masing adalah:
- a1 = -70.358
- a2 = 53.333
- a3 = -22.368
- a4 = -9.9111
- a5 = 37.0032
Untuk lebih lengkapnya, dapat ditonton melalui video tutorial yang saya buat dan upload di youtube
Minggu 3 (25 November 2020)
Trusses Problem 1 (Example 3.1)
Persamaan model Trusses 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:=Stiffness_Matrices(X1); G1:=k1*Local_Global(K1,N,p1a,p1b); K2:=Stiffness_Matrices(X2); G2:=k2*Local_Global(K2,N,p2a,p2b); K3:=Stiffness_Matrices(X3); G3:=k3*Local_Global(K3,N,p3a,p3b); K4:=Stiffness_Matrices(X4); G4:=k4*Local_Global(K4,N,p4a,p4b); K5:=Stiffness_Matrices(X5); G5:=k5*Local_Global(K5,N,p5a,p5b); K6:=Stiffness_Matrices(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_Trusses(N,Ginitial,SolMat,XMat); end Trusses; |
Trusses Problem 2 (Homework)
Persamaan class Trusses_HW parameter Integer N=8; //Global matrice = 2*points connected parameter Real A=0.001; //Area m2 parameter Real E=200e9; //Pa Real G[N,N]; //global Real Ginitial[N,N]; //global Real Sol[N]; //global dispplacement 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:=Stiffness_Matrices(X1); G1:=k1*Local_Global(K1,N,p1a,p1b); K2:=Stiffness_Matrices(X2); G2:=k2*Local_Global(K2,N,p2a,p2b); K3:=Stiffness_Matrices(X3); G3:=k3*Local_Global(K3,N,p3a,p3b); K4:=Stiffness_Matrices(X4); G4:=k4*Local_Global(K4,N,p4a,p4b); K5:=Stiffness_Matrices(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_Trusses(N,Ginitial,SolMat,XMat); end Trusses_HW; |
Fungsi Panggil
Matrice Transformation function Stiffness_Matrices 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 Stiffness_Matrices; |
Global Element Matrice function Local_Global input Real Y[4,4]; input Integer B; input Integer p1; input Integer p2; output Real G[B,B]; 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; |
Reaction Matrice Equation function Reaction_Trusses input Integer N; input Real A[N,N]; input Real B[N,1]; input Real C[N,1]; Real X[N,1]; output Real Sol[N]; 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_Trusses; |