Difference between revisions of "Calvin rahmat pratama"

From ccitonlinewiki
Jump to: navigation, search
(Tugas Minggu 3)
Line 167: Line 167:
  
 
end Trusses;
 
end Trusses;
 +
 +
== Fungsi Panggilan ==
 +
Matriks
 +
function Matrices
 +
input Real A;
 +
protected
 +
Real Y;
 +
public
 +
output Real X[4,4];
 +
protected
 +
Real float_error = 10e-10;
 +
protected
 +
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 Matrices;
 +
 +
Global Matriks
 +
 +
function GlobalMatrices
 +
 +
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 GlobalMatrices;
 +
 +
Reaction Matrices
 +
 +
function Reaction_Matrices
 +
input Integer N;
 +
input Real A[N,N];
 +
input Real B[N,1];
 +
input Real C[N,1];
 +
protected
 +
Real X[N,1];
 +
public
 +
output Real Sol[N];
 +
protected
 +
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_Matrices;

Revision as of 12:44, 2 December 2020

Biodata Diri

Nama: Calvin Rahmat Pratama

NPM: 1806200974

Tempat,tanggal lahir: Batam,14 Oktober 2000

Hobi: Gaming dan Golf


Saya adalah mahasiswa FTUI angkatan 2018 dari jurusan Teknik mesin dan saya adalah salah satu ciptaan terbaik dari Tuhan yang Maha Esa karena pada prinsipnya Tuhan yang Maha Esa itu mendesain manusia dengan sebaik baiknya makhluk.

Teknik Mesin merupakan program studi yang saya gemari dikarenakan ayah saya juga merupakan lulusan Teknik Mesin.

Tujuan Pembelajaran

1. Memahami konsep dengan dengan baik tentang dasar-dasar metode numerik.

2. Mampu menerapkan pemahaman konsep tersebut didalam permodelan numerik.

3. Mampu menerapkan metode numerik dipersoalan keteknikan.

4. Sebagai nilai tambah bagi saya agar menjadi manusia yang beradab seperti pada Sila ke-2 Pancasila.

Metode Numerika

Sejauh ini yang dapat saya ketahui dalam metode numerika adalah metode numerika dapat menyelesaikan permasalahan yang tidak dapat diselesaikan oleh metoda analisis saya juga mempelajari cara menggunakan excel untuk menyelesaikan beberapa permasalahan metode numerika. Seperti menggunakan psuedocode dan metode newton rhapson.

Tugas Minggu 1

Review Minggu 1

Untuk pertemuan pertama saya mempelajari cara menggunakan OpenModelica dimulai dari persamaan yang cukup sederhana, OpenModelica sendiri merupakan aplikasi penghitungan permodelan yang lumayan kompleks, sehingga OpenModelica itu sendiri sangat membantu saat menyelesaikan permodelan masalah mulai dari yang cukup mudah sampai ke cukup kompleks

Review Minggu 2

Alasan mengapa menggunakan openmodelica dibanding aplikasi lainnya

- Secara penggunanaan lebih digunakan untuk permodelan bukan untuk programming

- Didalam melakukan perhitungan kode yang diinput di modelica itu di terjemahkan ke Bahasa C dan kemudian diterjemahkan lagi ke Bahasa permesinan sehingga bisa melakukan perhitungan permodelan

- Paling penting adalah openmodelica itu gratis

Pada pertemuan kedua saya juga mempelajari menggunakan modelica untuk "memanggil" fungsi. Pada pertemuan kedua juga mempelajari mengenai Fungsi tambah yang mana terlebih dahulu dari permodelan masalah di translasi kan terlebih dahulu ke dalam bahasa C++ yang nantinya akan di proses menjadi data-data perhitungan.

Tugas Minggu 2

Review Minggu 3

Pada minggu ke tiga ini saya mencoba untuk mempelajari kembali untuk membuat fungsi modelica 9x12 dengan metode gauss atau menggunakan metode lain, kemudian mencoba mengimplementasikan psuedocode pada Figure 9.4 di modelica yang mana nantinya akan di test coding dengan example 9.5.

Tugas Minggu 3

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:=Matrices(X1);
G1:=k1*GlobalMatrices(K1,N,p1a,p1b);
K2:=Matrices(X2);
G2:=k2*GlobalMatrices(K2,N,p2a,p2b);
K3:=Matrices(X3);
G3:=k3*GlobalMatrices(K3,N,p3a,p3b);
K4:=Matrices(X4);
G4:=k4*GlobalMatrices(K4,N,p4a,p4b);
K5:=Matrices(X5);
G5:=k5*GlobalMatrices(K5,N,p5a,p5b);
K6:=Matrices(X6);
G6:=k6*GlobalMatrices(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_Matrices(N,Ginitial,SolMat,XMat);

end Trusses;

Fungsi Panggilan

Matriks

function Matrices
input Real A;
protected
Real Y;
public
output Real X[4,4];
protected
Real float_error = 10e-10;
protected
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 Matrices;

Global Matriks

function GlobalMatrices

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 GlobalMatrices;

Reaction Matrices

function Reaction_Matrices

input Integer N;
input Real A[N,N];
input Real B[N,1];
input Real C[N,1];
protected
Real X[N,1];
public
output Real Sol[N];
protected
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_Matrices;