Difference between revisions of "Metnum03-Gandes Satria Pratama"

From ccitonlinewiki
Jump to: navigation, search
(Created page with "== '''BIODATA DIRI''' == 400px|thumb|right|Gandes Satria Pratama.S1 Teknik Mesin Ekstensi 2019.Universitas Indonesia Assallammualaiakum Wa...")
 
(UAS (Ujian Akhir Semester))
 
(37 intermediate revisions by the same user not shown)
Line 1: Line 1:
== '''BIODATA DIRI''' ==
+
= '''BIODATA DIRI''' =
 
[[File:Gandes Satria Pratama .PNG|400px|thumb|right|Gandes Satria Pratama.S1 Teknik Mesin Ekstensi 2019.Universitas Indonesia]]
 
[[File:Gandes Satria Pratama .PNG|400px|thumb|right|Gandes Satria Pratama.S1 Teknik Mesin Ekstensi 2019.Universitas Indonesia]]
  
Line 13: Line 13:
  
 
No. Handphone      : 081220792803
 
No. Handphone      : 081220792803
 +
 +
=''' Pertemuan 1 (9 November 2020) '''=
 +
 +
Materi sebelum UTS
 +
----
 +
 +
Materi yang diajarkan sebelum UTS adalah sebagai berikut
 +
 +
'''1. Deret Taylor dan Deret Mclaurin'''
 +
 +
'''2. Pencarian Akar - Akar'''
 +
 +
Pada Pencarian akar akar ini ada 2 metode yang digunakan, yaitu metode menggunakan '''Open Methods''' dan '''Bracketing Method'''. Pada open methods diajarkan menggunakan Newton Rhapson, Simple Fix Point dan Secant Method. Sedangkan pada metode bracketing diajarkan menggunakan False methods dan Bisections.
 +
 +
'''3. Penurunan Numeric'''
 +
Pada penurunan ini kita diajarkan penurunan secara backward, forward dan center.
 +
 +
'''4. Regresi Linear dan Interpolasi'''
 +
 +
'''5. Gauss-Jordan dan Aljabar'''
 +
 +
'''Tutorial Menggunakan OpenModelica'''
 +
----
 +
 +
Pada pertemuan ini ditugaskan untuk mempelajari dan mengenal software OpenModelica. Pada tugas ini saya mencoba menggunakan open modelica dalam menyelesaikan soal thermal resistance. Berikut ini adalah soal dari thermal resistance beserta hasilnya.
 +
 +
[[File:1.Asoal.jpg]]
 +
 +
[[File:Asoal.jpg]]
 +
 +
Dan berikut ini adalah coding openmodelica dan hasilnya.
 +
 +
[[File:Mode1.jpg]]
 +
 +
[[File:Mode2.jpg]]
 +
 +
[[File:Mode3.jpg]]
 +
 +
Dan berikut link video tutorial dalam menggunakan openmodelica.
 +
 +
https://www.youtube.com/watch?v=0ECIS6ybP9w&t=7s
 +
 +
=''' Pertemuan 2 (16 November 2020) '''=
 +
 +
Latihan 1 dengan membuat program kecil dimana persamaannya y = x + 10 lalu di running dengan openmodelica. lalu mencoba dengan merubah x dan memastikan bahwa nilai sesuai.
 +
 +
[[File:latih1a.jpg]]
 +
 +
[[File:latih1b.jpg]]
 +
 +
Lalu membuat latihan 2 bagaimana mencari mean. Berikut hasil open modelica yang saya lakukan.
 +
 +
[[File:latih2a.jpg]]
 +
 +
[[File:latih2b.jpg]]
 +
 +
Lalu kita mempelajari menggunakan function mode. Dimana function mode dapat digunakan pada equation pada class.
 +
 +
[[File:latih3a.jpg]]
 +
 +
contoh coding pada function mode.
 +
 +
[[File:latih3b.jpg]]
 +
 +
Function dimasukan kepada equation di class mode.
 +
 +
[[File:latih3c.jpg]]
 +
 +
Hasil dari simulasi class mode.
 +
 +
Latihan Tugas Minggu 2
 +
----
 +
 +
Pada minggu ini pak dai memberikan tugas untuk menyelesaikan aljabar menggunakan open modelica. Saya mencoba melakukan dengan persamaan sebagai berikut.
 +
 +
[[File:w2.1.jpeg|700px]]
 +
 +
Lalu saya melakukan coding di modelica seperti berikut
 +
 +
[[File:w2.2.jpeg|700px]]
 +
 +
Lalu hasilnya menjadi seperti ini
 +
 +
[[File:w2.3.jpeg|700px]]
 +
 +
Dapat dilihat hasil dari foto pertama dengan hasil foto diatas nilai x1, x2, x3, x4 sama dan sesuai.
 +
 +
=''' Pertemuan 3 (23 November 2020) '''=
 +
 +
Pada pertemuan ini, memperdalami penggunaan openmodelica untuk penyelesaian matriks. Penyelesaiannya tugasnya seperti berikut berdasarkan contoh sebagai berikut.
 +
 +
[[File:w3.1.jpg]]
 +
 +
[[File:w3.2.jpg]]
 +
 +
Lalu pada open modelica buka class and function sheet lalu masukan coding seperti dibawah ini.
 +
 +
[[File:w3.3.jpg]]
 +
 +
[[File:w3.4.jpg]]
 +
 +
Dan berikut hasilnya.
 +
 +
[[File:w3.5.jpg]]
 +
 +
Hasilnya sama seperti dengan dibuku.
 +
 +
'''TUGAS PERTEMUAN 3'''
 +
----
 +
 +
Berikut tugas yang diberikan pada pertemuan ini
 +
 +
[[File:beam1.jpg]]
 +
 +
Lalu kita tentukan node pada sistem tersebut. Sesuai gambar node pada sistem tersebut seperti tabel dibawah ini.
 +
 +
[[File:beam2.jpg]]
 +
 +
Lalu tentukan persamaan 'k'. karena pada beam 1,3,4,6 memiliki karakteristik yang sama. Maka dikelompokan menjadi k(1,3,4,6) dan k(2,5)
 +
 +
[[File:beam3.jpg]]
 +
 +
lalu masukan nilai k ke matriks seperti dibawah ini
 +
 +
[[File:beam4.jpg]]
 +
 +
karena sudut dari beam 1,3,6 = 0, sama maka matriks akan seperti ini. dan masukan ke matriks global maka akan jadi seperti ini. Lakukan hal yang sama pada setiap beamnya.
 +
 +
[[File:beam5.jpg]]
 +
 +
[[File:beam6.jpg]]
 +
 +
[[File:beam7.jpg]]
 +
 +
Untuk beam 4 gunakan persamaan ini
 +
 +
[[File:beam8.jpg]]
 +
 +
Untuk beam 2 dan 5 matriknya seperti ini.
 +
 +
[[File:beam9.jpg]]
 +
 +
[[File:beam10.jpg]]
 +
 +
[[File:beam11.jpg]]
 +
 +
Lalu semua matriks K 1 sampai K6 global ditambahkan menjadi matriks berikut dan lakukan eliminasi pada matriks
 +
 +
[[File:beam12.jpg]]
 +
 +
Lalu karena U1x, U1y, U3x dan U3y = 0 maka dapat disederhanakan menjadi seperti ini
 +
 +
[[File:beam13.jpg]]
 +
 +
Lalu akan didapatkan hasil U seperti ini.
 +
 +
[[File:beam14.jpg]]
 +
 +
Lalu cari gaya gaya reaksinya
 +
 +
[[File:beam15.jpg]]
 +
 +
dan hasil akan seperti ini
 +
 +
[[File:beam16.jpg]]
 +
 +
Dan berikut penyelesaiannya menggunakan Open Modelica. Berikut pada saat mencari K global
 +
 +
[[File:beam17.jpg]]
 +
 +
Berikut koding mencari R
 +
 +
[[File:beam18.jpg]]
 +
 +
dan berikut hasilnya
 +
 +
[[File:beam19.jpg]]
 +
 +
Terjadi sedikit perbedaan karena pada dibuku ada nilai yang dibulatkan.
 +
 +
=''' Pertemuan 4 (30 November 2020) '''=
 +
 +
=='''Quiz 2'''==
 +
----
 +
 +
[[File:q001.jpg]]
 +
 +
[[File:q002.jpg]]
 +
 +
Lalu flow perhitungannya
 +
 +
[[File:q003.jpg]]
 +
 +
'''Nomor 4'''
 +
----
 +
 +
Hal yang harus dilakukan pertama adalah menentukan node padasetiap batang dan menentukan nilai kekakuan pada batang. Lalu mencari K lokal di setiap batang. Satukan K lokal setiap batang menjadi K global.
 +
 +
[[File:2D01.jpg|400px]]
 +
 +
[[File:2D02.jpg|400px]]
 +
 +
Pada open modelica mencari ke kakuan setiap batang dan akan menemukan K lokal.
 +
 +
[[File:2D03.jpg|400px]]
 +
 +
[[File:2D04.jpg|400px]]
 +
 +
Lalu hasil K lokal digabungkan menjadi K global pada excel
 +
 +
[[File:ExKG.jpg|400px]]
 +
 +
Selanjutnya menghitung U dan R pada open modelica
 +
 +
[[File:2D05.jpg|400px]]
 +
 +
[[File:2D06.jpg|400px]]
 +
 +
[[File:2D07.jpg|400px]]
 +
 +
Dan berikut Hasil R dan Unya
 +
 +
[[File:2D08.jpg|400px]]
 +
 +
'''Nomor 8'''
 +
----
 +
 +
Untuk soal nomor 8 saya menggunakan coding dari josiah enrico. Dengan koding seperti berikut
 +
 +
[[File:GSOQ8.1.jpg|400px]]
 +
 +
[[File:GSOQ8.2.jpg|400px]]
 +
 +
[[File:GSOQ8.3.jpg|400px]]
 +
 +
Dan menghasilkan nilai seperti ini
 +
 +
[[File:GSOQ8.4.jpg|400px]]
 +
 +
Tapi menurut saya ada yang harus diperbaiki karena cosx, cos y dan cos z hanya 1 sedangkan cos dimasing sumbu harusnya ada 3. Jadi secara teoritis hasilnya akan salah. Saya akan mencoba mencari tahu bagaimana melakukan proses loop pada cos x, cos y dan cos z.
 +
 +
=''' Pertemuan 5 (7 Desember 2020) '''=
 +
 +
Pada pertemuan ke 5 pak dai menyuruh untuk belajar dengan berbagai macam fungsi di open modelica. Dan juga pak dai menyuruh dengan menyelesaikan soal dengan menggunakan berbagai rumus di open modelica seperti
 +
 +
-proses loooping
 +
 +
-data array
 +
 +
-fungsi if
 +
 +
-class dan memanggil function dalam modelica
 +
 +
Selanjutnya disuruh memahami koding yang dibuat oleh Ahmad Mohammad Fahmi.
 +
 +
=='''TUGAS 4 '''==
 +
 +
[[File:GSPTugas4.jpg|400px]]
 +
 +
Pada tugas ini saya bersama teman - teman yang lain melakukan diskusi dengan Ahmad Mohammad Fahmi dan cukup memahami alur dari pengerjaan.
 +
 +
1. Langkah 1 buat Class dengan memasukan semua parameter dan semua equation untuk menyelesaikan permasalahan.
 +
 +
[[File:GSPW5T41.jpg|400px]]
 +
 +
[[File:GSPW5T42.jpg|400px]]
 +
 +
[[File:GSPW5T43.jpg|400px]]
 +
 +
2. Lalu membuat function matriks elemen
 +
 +
[[File:GSPW5T44.jpg|400px]]
 +
 +
[[File:GSPW5T45.jpg|400px]]
 +
 +
3. Lalu hasil dari matriks elemen di konversikan menjadi matriks global
 +
 +
[[File:GSPW5T46.jpg|400px]]
 +
 +
[[File:GSPW5T47.jpg|400px]]
 +
 +
4. Lalu tambahkan semua matriks global setiap elemen menjadi 1 matriks global dari semua elemen dengan fungsi sum
 +
 +
[[File:GSPW5T47.jpg|400px]]
 +
 +
5. Cek setiap boundary di setiap poin
 +
 +
[[File:GSPW5T48.jpg|400px]]
 +
 +
[[File:GSPW5T49.jpg|400px]]
 +
 +
[[File:GSPW5T4910.jpg|400px]]
 +
 +
[[File:GSPW5T4911.jpg|400px]]
 +
 +
[[File:GSPW5T4912.jpg|400px]]
 +
 +
6. Lalu lakukan gauss jordan untuk mendapatkan K global Boundary
 +
 +
[[File:GSPW5T4913.jpg|400px]]
 +
 +
7. Hitung Reaction Force
 +
 +
[[File:GSPW5T4914.jpg|400px]]
 +
 +
8. Lakukan check force
 +
 +
[[File:GSPW5T4915.jpg|400px]]
 +
 +
9. Dan berikut Hasilnya
 +
 +
[[File:GSPW5T4916.jpg|400px]]
 +
 +
Pada koding ini saya masih belum terlalu mengerti fungsi dari boundary dan check force. Yang nantinya akan saya pelajari lebih lanjut
 +
 +
=''' Pertemuan 6 (14 Desember 2020) '''=
 +
 +
Assalamu'alaikum wr.wb. pada pertemuan ini pak DAI menginstruksikan mahasiswanya untuk melakukan muhasabah diri. Muhasabah yang dilakukan dengan terkait dengan kemampuan dalam melakukan metode numerik secara individu. Muhasabah ini juga membuat para mahasiswa menilai diri sendiri berdasarkan kemampuan individual pemahaman metode numerik selama ini.
 +
 +
Selanjutnya Christo menjelaskan konsep berpikir dalam melakukan metode numerik dengan alur berfikir mengenai soal-soal yang telah diberikan dan menjelaskannya ke teman-teman yang ada di kelas menggunakan software OpenModelica. Lalu Enrico dan Fahmi menjelaskan perbedaan dari konsep koding mereka. Selanjutnya pak Dai meminta kita agar mengkombinasikan koding dari josiah dan fahmy untuk tugas besar 2 kelas secara bersama - sama.
 +
 +
=''' Pertemuan 7 (21 Desember 2020) '''=
 +
 +
Bu Candra untuk mengajari kami terkait optimisasi. Optimisasi adalah suatu cara untuk mendapatkan yang paling optimal dari suatu permasalahan. Optimasi yang dijelaskan oleh Bu Chandra adalah mengenai optimasi Bracket Optimization using golden ratio. Penerapan optimasi menggunakan golden ratio ini diharapkan dapat diaplikasikan dalam mengerjakan tugas besar dalam menentukan stress maksimum yang masih saftey pada struktur dan harga yang dikeluarkan untuk digunakan pada struktur secara keseluruhan. Untuk hal tersebut, kekuatan material harus lebih kuat dari stress dari beban yaitu stress dari beban tersebut tidak boleh lebih besar 1/2 kali nya dari kekuatan material. Dalam optimisasi tersebut harus ada fungsi objektif dan ada konstrain/batasan/interval. Kemudian kami melakukan
 +
 +
Optimasi merupakan cara untuk mendapatkan nilai maksimum atau minimum dari suatu permasalahan. Optimasi yang dilakukan bergantung pada penentuan dua titik(misal xL dan xU) sehingga terdapat satu nilai maksimum atau minimum dari fungsi tersebut pada selang nilai xL dan xU. Berikut adalah langkah-langkah dalam menentukan nilai maksimum dari sebuah fungsi:
 +
 +
1. Menentukan batasan titik awal terendah (xL) dan tertinggi (xH)
 +
 +
2. Mendapatkan nilai x1 dan x2 dari golden ratio (d)
 +
 +
3. Menentukan xL dan xH berdasarkan nilai batasan maksimum dan minimal baru
 +
 +
4. Mendapatkan nilai x1 dan x2 baru lanjutkan langkah tersebut hingga mendapatkan nilai maksimum dari fungsi tersebut
 +
 +
selanjutnya untuk dapat menentukan nilai x1 dan x2 membutuhkan persamaan berikut:
 +
 +
d = akar5 - 1/2 x (xu-xl)
 +
 +
x1 = x1 + d
 +
 +
x2 = xu - d
 +
 +
 +
Dalam melakukan optimasi sebuah fungsi dan menentukan nilai xL dan xU baru harus memeperhatikan syarat berikut:
 +
 +
- f(x1) > f(x2), domain sebelah kiri x2 dapat dieliminasi xL = x2 untuk iterasi berikutnya xu = xu lama
 +
 +
- f(x2) > f(x1), domain x sebelah kanan x1 dapat dieliminasi xu = x1 untuk iterasi berikutnya xL = xL lamasimulasi pengerjaan soal di
 +
 +
buku chapra. berikut adalah soal beserta penyelesaian yang ada di buku
 +
 +
[[File:Opt_GSP001.png|600px|thumb|center]]
 +
 +
Lalu berikut script pada open modelicanya
 +
 +
[[File:Opt_GSP002.png|600px|thumb|center]]
 +
 +
[[File:Opt_GSP003.png|600px|thumb|center]]
 +
 +
[[File:Opt_GSP04.jpg]]
 +
 +
Lalu hasilnya adalah sebagai berikut.
 +
 +
[[File:Opt_GSP005.png|600px|thumb|center]]
 +
 +
[[File:Opt_GSP006.png|600px|thumb|center]]
 +
 +
=''' Tugas Besar Metode Numerik '''=
 +
 +
Pada tugas besar kali ini kami semua diperintahkan untuk menemukan cost yang paling optimal dengan variasi luas penampang pada batang dan jenis material berdasarkan modulus elastisitas nya dari soal berikut :
 +
 +
[[File:Tubes_GSP001.jpg|600px|thumb|center]]
 +
 +
[[File:Tubes_GSP002.jpg|600px|thumb|center]]
 +
 +
'''Constraint:'''
 +
 +
- Spesifikasi L (Panjang) dan geometri rangka truss
 +
 +
- Gaya beban terhadap struktur (1000 N dan 2000 N)
 +
 +
 +
'''Asumsi:'''
 +
 +
- Variasi Stiffness terikat dengan variabel area. Memvariasikan Elastisitas tergolong sulit karena setiap material memiliki range yang tidak teratur dan dalam satu material yang sejenis (struktur biaya tetap) tidak terjadi perubahan nilai elastisitas yang berbanding lurus dengan perubahan biaya.
 +
 +
- Beban akan terdistribusi hanya pada point penghubung (karena bersifat truss)
 +
 +
'''Kode Modelica Pendukung:'''
 +
 +
{| class="wikitable"
 +
|-
 +
| style='border-style: none  none  solid  solid;' |
 +
''Trusses Modelling''
 +
 +
model Trusses_3D_Tugas_Besar_Safety
 +
 +
//define initial variable
 +
parameter Integer Points=size(P,1);  //Number of Points
 +
parameter Integer Trusses=size(C,1); //Number of Trusses
 +
parameter Real Yield=250e6;          //Yield Strength (Pa)  Material ASTM A36
 +
parameter Real Area=3.75E-04;        //Area L Profile (0.04 x 0.04 x 0.005) (m2)
 +
parameter Real Elas=2e11;            //Elasticity ASTM A36  (Pa)
 +
 +
//define connection
 +
parameter Integer C[:,2]=      [1,5;
 +
                                2,6;
 +
                                3,7;
 +
                                4,8;
 +
                                5,6;  //1st floor
 +
                                6,7;  //1st floor
 +
                                7,8;  //1st floor
 +
                                5,8;  //1st floor
 +
                                5,9;
 +
                                6,10;
 +
                                7,11;
 +
                                8,12;
 +
                                9,10; //2nd floor
 +
                                10,11;//2nd floor
 +
                                11,12;//2nd floor
 +
                                9,12; //2nd floor
 +
                                9,13;
 +
                                10,14;
 +
                                11,15;
 +
                                12,16;
 +
                                13,14;//3rd floor
 +
                                14,15;//3rd floor
 +
                                15,16;//3rd floor
 +
                                13,16];//3rd floor
 +
                                                             
 +
//define coordinates (please put orderly)
 +
parameter Real P[:,6]=[0.3,-0.375,0,1,1,1;          //1
 +
                            -0.3,-0.375,0,1,1,1;    //2
 +
                            -0.3,0.375,0,1,1,1;    //3
 +
                            0.3,0.375,0,1,1,1;      //4
 +
                           
 +
                            0.3,-0.375,0.6,0,0,0;  //5
 +
                            -0.3,-0.375,0.6,0,0,0;  //6
 +
                            -0.3,0.375,0.6,0,0,0;  //7
 +
                            0.3,0.375,0.6,0,0,0;    //8
 +
                           
 +
                            0.3,-0.375,1.2,0,0,0;  //9
 +
                            -0.3,-0.375,1.2,0,0,0;  //10 
 +
                            -0.3,0.375,1.2,0,0,0;  //11
 +
                            0.3,0.375,1.2,0,0,0;    //12
 +
                           
 +
                            0.3,-0.375,1.8,0,0,0;  //13
 +
                            -0.3,-0.375,1.8,0,0,0;  //14
 +
                            -0.3,0.375,1.8,0,0,0;  //15
 +
                            0.3,0.375,1.8,0,0,0];  //16
 +
                           
 +
//define external force (please put orderly)
 +
parameter Real F[Points*3]={0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,-500,
 +
                            0,0,-1000,
 +
                            0,0,-1000,
 +
                            0,0,-500};
 +
 +
//solution
 +
Real displacement[N], reaction[N];
 +
Real check[3];
 +
 +
Real stress1[Trusses];
 +
Real safety[Trusses];
 +
Real dis[3];
 +
Real Str[3];
 +
 +
protected
 +
parameter Integer N=3*Points;
 +
Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3];
 +
Real err=10e-10, ers=10e-6;
 +
 +
algorithm
 +
//Creating Global Matrix
 +
G:=id;
 +
for i in 1:Trusses loop
 +
for j in 1:3 loop
 +
  q1[j]:=P[C[i,1],j];
 +
  q2[j]:=P[C[i,2],j];
 +
end for;
 +
     
 +
    //Solving Matrix
 +
    L:=Modelica.Math.Vectors.length(q2-q1);
 +
    cx:=(q2[1]-q1[1])/L;
 +
    cy:=(q2[2]-q1[2])/L;
 +
    cz:=(q2[3]-q1[3])/L;
 +
    X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
 +
                      cy*cx,cy^2,cy*cz;
 +
                      cz*cx,cz*cy,cz^2];
 +
 +
    //Transforming to global matrix
 +
    g:=zeros(N,N);
 +
    for m,n in 1:3 loop
 +
      g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
 +
      g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
 +
      g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
 +
      g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
 +
    end for; 
 +
 +
G_star:=G+g;
 +
G:=G_star;
 +
end for;
 +
 +
//Implementing boundary
 +
for x in 1:Points loop
 +
  if P[x,4] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[(x*3)-2,a]:=0;
 +
      G[(x*3)-2,(x*3)-2]:=1;
 +
    end for;
 +
  end if;
 +
  if P[x,5] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[(x*3)-1,a]:=0;
 +
      G[(x*3)-1,(x*3)-1]:=1;
 +
    end for;
 +
  end if;
 +
  if P[x,6] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[x*3,a]:=0;
 +
      G[x*3,x*3]:=1;
 +
    end for;
 +
  end if;
 +
end for;
 +
 +
//Solving displacement
 +
displacement:=Modelica.Math.Matrices.solve(G,F);
 +
 +
//Solving reaction
 +
reaction:=(G_star*displacement)-F;
 +
 +
//Eliminating float error
 +
for i in 1:N loop
 +
reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
 +
displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
 +
end for;
 +
 +
//Checking Force
 +
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
 +
check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))});
 +
check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)});
 +
 
 +
for i in 1:3 loop
 +
  check[i] := if abs(check[i])<=ers then 0 else check[i];
 +
end for;
 +
 +
//Calculating stress in each truss
 +
for i in 1:Trusses loop
 +
for j in 1:3 loop
 +
  q1[j]:=P[C[i,1],j];
 +
  q2[j]:=P[C[i,2],j];
 +
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]);
 +
end for;
 +
     
 +
    //Solving Matrix
 +
    L:=Modelica.Math.Vectors.length(q2-q1);
 +
    cx:=(q2[1]-q1[1])/L;
 +
    cy:=(q2[2]-q1[2])/L;
 +
    cz:=(q2[3]-q1[3])/L;
 +
    X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
 +
                cy*cx,cy^2,cy*cz;
 +
                cz*cx,cz*cy,cz^2];
 +
   
 +
    Str:=(X*dis);
 +
    stress1[i]:=Modelica.Math.Vectors.length(Str);
 +
end for;
 +
 +
//Safety factor
 +
for i in 1:Trusses loop
 +
  if stress1[i]>0 then
 +
    safety[i]:=Yield/stress1[i];
 +
  else
 +
    safety[i]:=0;
 +
  end if;
 +
end for;
 +
 +
end Trusses_3D_Tugas_Besar_Safety;
 +
 +
 +
| style='border-style: solid solid none  none;'  |
 +
''Curve Fitting Function''
 +
 +
function Curve_Fitting
 +
 +
input Real X[:];
 +
input Real Y[size(X,1)];
 +
input Integer order=2;
 +
output Real Coe[order+1];
 +
 +
protected
 +
Real Z[size(X,1),order+1];
 +
Real ZTr[order+1,size(X,1)];
 +
Real A[order+1,order+1];
 +
Real B[order+1];
 +
 +
algorithm
 +
 +
for i in 1:size(X,1) loop
 +
  for j in 1:(order+1) loop
 +
  Z[i,j]:=X[i]^(order+1-j);
 +
  end for;
 +
end for;
 +
ZTr:=transpose(Z);
 +
 +
A:=ZTr*Z;
 +
B:=ZTr*Y;
 +
Coe:=Modelica.Math.Matrices.solve(A,B);
 +
 +
end Curve_Fitting;
 +
|}
 +
 +
{| class="wikitable"
 +
|-
 +
| style='border-style: none  none  solid  solid;' |
 +
''model CurveFitting''
 +
 +
parameter Real X[3]={190e9,195e9,200e9}; // Input variabel X adalah data bebas
 +
parameter Real Y[3]={7850,8020,8075};  // Input variabel Y adalah data berikat
 +
 +
Real Coe[3];
 +
 +
algorithm
 +
Coe:=Curve_Fitting(X,Y,2);
 +
 +
end CurveFitting;
 +
 +
|}
 +
 +
Modeling Trusses digunakan untuk mencari beberapa parameter seperti stress dan defleksi.
 +
 +
Sedangkan cuve fitting digunakan untuk mencari data - data yang belum didapatkan. Sama halnya seperti sistem regresi linear.
 +
 +
Dalam mencari curve fitting untuk material lock, maka input X adalah area dari siku pada setiap dimensi sedangkan Y adalah harga perkilogram dari siku. Berikut kodingan dan hasilnya.
 +
 +
Berikut coding dari curve fitting untuk mencari harga perkilogram dari material lock ASTM A36
 +
 +
[[File:Tubes_GSP006.jpg|600px|thumb|center]]
 +
 +
Dan berikut hasil dari coefficient
 +
 +
[[File:Tubes_GSP007.jpg|600px|thumb|center]]
 +
 +
Berikut coding dari curve fitting untuk mencari harga perkilogram dari arealock pada dimensi 40 mm x 40 mm x 5 mm untuk material SS400, SS 304, SS316
 +
 +
[[File:Tubes_GSP008.jpg|600px|thumb|center]]
 +
 +
Dan berikut hasil dari coefficient
 +
 +
[[File:Tubes_GSP009.jpg|600px|thumb|center]]
 +
 +
Berikut coding dari curve fitting untuk mencari density dari arealock pada dimensi 40 mm x 40 mm x 5 mm untuk material SS400, SS 304, SS316
 +
 +
[[File:Tubes_GSP010.jpg|600px|thumb|center]]
 +
 +
Dan berikut hasil dari coefficient
 +
 +
[[File:Tubes_GSP011.jpg|600px|thumb|center]]
 +
 +
Berikut coding dari curve fitting untuk mencari yield dari arealock pada dimensi 40 mm x 40 mm x 5 mm untuk material SS400, SS 304, SS316
 +
 +
[[File:Tubes_GSP012.jpg|600px|thumb|center]]
 +
 +
Dan berikut hasil dari coefficient
 +
 +
[[File:Tubes_GSP013.jpg|600px|thumb|center]]
 +
 +
Saat sudah melakukan curve fitting, maka optimasi kan. Berikut Coding Optimasi saaat di material lock.
 +
 +
model Opt_Gold
 +
 +
parameter Real xd[:]={111e-6,141e-6,171e-6,231e-6,304e-6,375e-6,344e-6,425e-6}; //Material Lock masukkin Area
 +
parameter Real yd[size(xd,1)]={269.3e-6,269.4e-6,269.6e-6,269.7e-6,269.8e-6,269.7e-6,269.8e-6,269.6e-6};//Ratio
 +
parameter Real xlo=111e-6;// x Low pada variabel x
 +
parameter Real xhi=425e-6; // x high pada variabel x
 +
parameter Integer N=100; // maximum iteration
 +
parameter Real es=0.0001; // maximum error
 +
 +
Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3];
 +
Real xopt,  fx;
 +
protected
 +
Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
 +
 +
algorithm
 +
xl := xlo;
 +
xu := xhi;
 +
y  := Curve_Fitting(xd,yd);
 +
 +
for i in 1:N loop
 +
d:= R*(xu-xl);
 +
x1[i]:=xl+d;
 +
x2[i]:=xu-d;
 +
f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3];
 +
f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
 +
xint:=xu-xl;
 +
 +
if f1[i]>f2[i] then
 +
  xl:=x2[i];
 +
  xopt:=x1[i];
 +
  fx:=f1[i];
 +
  else
 +
    xu:=x1[i];
 +
    xopt:=x2[i];
 +
    fx:=f2[i];
 +
end if;
 +
 +
ea[i]:=(1-R)*abs((xint)/xopt);
 +
if ea[i]<es then
 +
  break;
 +
end if;
 +
end for;
 +
 +
Berikut hasil dari optimasi material lock
 +
 +
[[File:Tubes_GSP014.jpg|1000px|thumb|center]]
 +
 +
Hasil optimasi menyatakan dimensi yang digunakan adalah 40 mm x 40 mm x 4 mm
 +
 +
Saat sudah melakukan curve fitting, maka optimasi kan. Berikut Coding Optimasi saaat di area lock.
 +
 +
model Opt_Gold
 +
 +
parameter Real xd[:]={190e9,191e9,192e9,193e9,194e9,195e9,196e9,197e9}; //Area Lock masukkin Elasticity
 +
parameter Real yd[size(xd,1)]={2.19e-4,1.02e-4,6.50e-5,4.77e-5,4.77e-5,3.3e-5,2.99e-5,284e-5};//Ratio
 +
parameter Real xlo=190e9;// x Low pada variabel x
 +
parameter Real xhi=197e9; // x high pada variabel x
 +
parameter Integer N=100; // maximum iteration
 +
parameter Real es=0.0001; // maximum error
 +
 +
Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3];
 +
Real xopt,  fx;
 +
protected
 +
Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
 +
 +
algorithm
 +
xl := xlo;
 +
xu := xhi;
 +
y  := Curve_Fitting(xd,yd);
 +
 +
for i in 1:N loop
 +
d:= R*(xu-xl);
 +
x1[i]:=xl+d;
 +
x2[i]:=xu-d;
 +
f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3];
 +
f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
 +
xint:=xu-xl;
 +
 +
if f1[i]>f2[i] then
 +
  xl:=x2[i];
 +
  xopt:=x1[i];
 +
  fx:=f1[i];
 +
  else
 +
    xu:=x1[i];
 +
    xopt:=x2[i];
 +
    fx:=f2[i];
 +
end if;
 +
 +
ea[i]:=(1-R)*abs((xint)/xopt);
 +
if ea[i]<es then
 +
  break;
 +
end if;
 +
end for;
 +
 +
end Opt_Gold;
 +
 +
Berikut hasil dari optimasi area lock
 +
 +
[[File:Tubes_GSP015.jpg|1000px|thumb|center]]
 +
 +
Hasil optimasi menyatakan material yang digunakan adalah ASTM A36 atau SS 400.
 +
 +
Data - data yang didapatkan diletakan di excel dan untuk material lock dengan material ASTM A36/ SS400 adalah sebagai berikut.
 +
 +
[[File:Tubes_GSP003.jpg|1000px|thumb|center]]
 +
 +
Lalu untuk area lock data yang didapatkan seperti berikut
 +
 +
[[File:Tubes_GSP0004.jpg|1000px|thumb|center]]
 +
 +
'''Kesimpulan'''
 +
 +
Dari tugas besar melalui metode numerik, didapatkan hasil bahwa material yang digunakan adalah ASTM A36/SS 400 dengan dimensi 40 mm x 40 mm x 4mm dengan harga materialnya adalah Rp 281.762,-
 +
 +
 +
=''' UAS (Ujian Akhir Semester)'''=
 +
 +
Pada tanggal 13 januari 2021 diadakan UAS. Berikut Jawaban UAS.
 +
 +
Jawaban No.1
 +
 +
Membuat urutan langkah-langkah (prosedur) pemodelan numerik untuk optimasi struktur tersebut. Disini dijelaskan menggunakan flowchart.
 +
 +
[[File:UAS_GSP_001.jpg|500px|center]]
 +
 +
Jawaban Nomor 2
 +
 +
menjelaskan tujuan dari pemodelan numerik soal no 1 diatas, beserta hukum/dalil (fisika) yang dipakai dan asumsi-asumsi yang akan digunakan dalam perhitungan
 +
 +
[[File:UAS_GSP_002.jpg|500px|center]]
 +
 +
Jawaban Nomor 3
 +
 +
Untuk pemodelan numerik analisis strukturnya nya gunakan pendekatan 1D truss dgn membagi kolum (tiang) water tower kedalam 3 elemen (1D). a). Susunlah persamaan aljabar kesetimbangan statik setiap elemen tsb. (matriks kesetimbangan lokal) b) Matriks kesetimbangan global
 +
 +
[[File:UAS_GSP_003.jpg|500px|center]]
 +
 +
Jawaban Nomor 4,5,6
 +
 +
Susun urutan langkah-langkah (pseudocode) perhitungan matriks kesetimbangan global soal no 3 termasuk pengecekan kesalahan (verifikasi) perhitungannya
 +
 +
Tulis dan jelaskan fungsi objektif dan constraint untuk optimasi struktur water tower tersebut
 +
 +
Tuliskan asumsi nilai-nilai parameter dan variable untuk menghitung displacement, restraint dan stress utk model struktur water tower dgn 3 elemnt 1 D diatas
 +
 +
Gunakan program modelica anda untuk menghitung displacement, restraint dan stress utk model struktur water tower dgn 3 element 1 D berdasarkan asumsi no 6
 +
 +
[[File:UAS_GSP_004-007.jpg|500px|center]]
 +
 +
Codingan
 +
---
 +
 +
class UAS_Gandes
 +
 +
parameter Real [:,5] inisiasi = [1,1, 2,  40, 28.5e6, 480;
 +
                                  1,1, 3,  40, 28.5e6, 480;
 +
                                  1,1, 4,  40, 28.5e6, 480];
 +
                                 
 +
                                 
 +
  parameter Integer [:,2] node = [1, 2;
 +
                                1, 3;
 +
                                1, 4];
 +
           
 +
  parameter Integer y = size(node,1);
 +
 +
  parameter Integer x = 2*(size(node_load,1));
 +
 +
  parameter Integer z = size(Boundary,1);
 +
 +
  parameter Integer [:] Boundary = {3};
 +
                             
 +
  parameter Real [:,3] node_load = [1, 0, 2503621.3356 ;
 +
                                  2, 0, 0;
 +
                                  3, 0, 0];                                 
 +
  parameter Real [2*(size(node_load,1))] load = {0,2503621.3356,0,0,0,0,0,0};                             
 +
  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)};
 +
  Ke = StiffnessMatrixElement(inisiasi);
 +
  Kg = StiffnessMatrixGlobal(node, x, y, Ke);
 +
  KgTot = SumStiffnessMatrixGlobal(x, y, Kg);
 +
  KgB = BoundaryStiffnessMatrixGlobal(x, z, KgTot, Boundary);
 +
  U = GaussJordan(x, KgB, load);
 +
  R = ReactionForce(x, KgTot, U, load);
 +
 +
class UAS_Gandes
 +
 +
Pada nomor 7 error saat disimulasikan.
 +
 +
Dan karena dikasih waktu untuk memperbaiki oleh pak DAI, berikut hasil perbaikan saya.
 +
 +
[[File:UAS_GSP_007a.jpg|500px|center]]
 +
 +
[[File:UAS_GSP_007b.jpg|500px|center]]

Latest revision as of 22:19, 14 January 2021

BIODATA DIRI

Gandes Satria Pratama.S1 Teknik Mesin Ekstensi 2019.Universitas Indonesia

Assallammualaiakum Warrahmatullahi Wabarakatuh.

Alhamdulillah, segala puji bagi Allah SWT Tuhan semesta alam dan sholawat beserta salam kepada Nabi Muhammad SAW.

Nama  : Gandes Satria Pratama

NPM  : 1906435492

Email  : Gandessatria@gmail.com / Gandes.Satria@ui.ac.id

No. Handphone  : 081220792803

Pertemuan 1 (9 November 2020)

Materi sebelum UTS


Materi yang diajarkan sebelum UTS adalah sebagai berikut

1. Deret Taylor dan Deret Mclaurin

2. Pencarian Akar - Akar

Pada Pencarian akar akar ini ada 2 metode yang digunakan, yaitu metode menggunakan Open Methods dan Bracketing Method. Pada open methods diajarkan menggunakan Newton Rhapson, Simple Fix Point dan Secant Method. Sedangkan pada metode bracketing diajarkan menggunakan False methods dan Bisections.

3. Penurunan Numeric Pada penurunan ini kita diajarkan penurunan secara backward, forward dan center.

4. Regresi Linear dan Interpolasi

5. Gauss-Jordan dan Aljabar

Tutorial Menggunakan OpenModelica


Pada pertemuan ini ditugaskan untuk mempelajari dan mengenal software OpenModelica. Pada tugas ini saya mencoba menggunakan open modelica dalam menyelesaikan soal thermal resistance. Berikut ini adalah soal dari thermal resistance beserta hasilnya.

1.Asoal.jpg

Asoal.jpg

Dan berikut ini adalah coding openmodelica dan hasilnya.

Mode1.jpg

Mode2.jpg

Mode3.jpg

Dan berikut link video tutorial dalam menggunakan openmodelica.

https://www.youtube.com/watch?v=0ECIS6ybP9w&t=7s

Pertemuan 2 (16 November 2020)

Latihan 1 dengan membuat program kecil dimana persamaannya y = x + 10 lalu di running dengan openmodelica. lalu mencoba dengan merubah x dan memastikan bahwa nilai sesuai.

Latih1a.jpg

Latih1b.jpg

Lalu membuat latihan 2 bagaimana mencari mean. Berikut hasil open modelica yang saya lakukan.

Latih2a.jpg

Latih2b.jpg

Lalu kita mempelajari menggunakan function mode. Dimana function mode dapat digunakan pada equation pada class.

Latih3a.jpg

contoh coding pada function mode.

Latih3b.jpg

Function dimasukan kepada equation di class mode.

Latih3c.jpg

Hasil dari simulasi class mode.

Latihan Tugas Minggu 2


Pada minggu ini pak dai memberikan tugas untuk menyelesaikan aljabar menggunakan open modelica. Saya mencoba melakukan dengan persamaan sebagai berikut.

W2.1.jpeg

Lalu saya melakukan coding di modelica seperti berikut

W2.2.jpeg

Lalu hasilnya menjadi seperti ini

W2.3.jpeg

Dapat dilihat hasil dari foto pertama dengan hasil foto diatas nilai x1, x2, x3, x4 sama dan sesuai.

Pertemuan 3 (23 November 2020)

Pada pertemuan ini, memperdalami penggunaan openmodelica untuk penyelesaian matriks. Penyelesaiannya tugasnya seperti berikut berdasarkan contoh sebagai berikut.

W3.1.jpg

W3.2.jpg

Lalu pada open modelica buka class and function sheet lalu masukan coding seperti dibawah ini.

W3.3.jpg

W3.4.jpg

Dan berikut hasilnya.

W3.5.jpg

Hasilnya sama seperti dengan dibuku.

TUGAS PERTEMUAN 3


Berikut tugas yang diberikan pada pertemuan ini

Beam1.jpg

Lalu kita tentukan node pada sistem tersebut. Sesuai gambar node pada sistem tersebut seperti tabel dibawah ini.

Beam2.jpg

Lalu tentukan persamaan 'k'. karena pada beam 1,3,4,6 memiliki karakteristik yang sama. Maka dikelompokan menjadi k(1,3,4,6) dan k(2,5)

Beam3.jpg

lalu masukan nilai k ke matriks seperti dibawah ini

Beam4.jpg

karena sudut dari beam 1,3,6 = 0, sama maka matriks akan seperti ini. dan masukan ke matriks global maka akan jadi seperti ini. Lakukan hal yang sama pada setiap beamnya.

Beam5.jpg

Beam6.jpg

Beam7.jpg

Untuk beam 4 gunakan persamaan ini

Beam8.jpg

Untuk beam 2 dan 5 matriknya seperti ini.

Beam9.jpg

Beam10.jpg

Beam11.jpg

Lalu semua matriks K 1 sampai K6 global ditambahkan menjadi matriks berikut dan lakukan eliminasi pada matriks

Beam12.jpg

Lalu karena U1x, U1y, U3x dan U3y = 0 maka dapat disederhanakan menjadi seperti ini

Beam13.jpg

Lalu akan didapatkan hasil U seperti ini.

Beam14.jpg

Lalu cari gaya gaya reaksinya

Beam15.jpg

dan hasil akan seperti ini

Beam16.jpg

Dan berikut penyelesaiannya menggunakan Open Modelica. Berikut pada saat mencari K global

Beam17.jpg

Berikut koding mencari R

Beam18.jpg

dan berikut hasilnya

Beam19.jpg

Terjadi sedikit perbedaan karena pada dibuku ada nilai yang dibulatkan.

Pertemuan 4 (30 November 2020)

Quiz 2


Q001.jpg

Q002.jpg

Lalu flow perhitungannya

Q003.jpg

Nomor 4


Hal yang harus dilakukan pertama adalah menentukan node padasetiap batang dan menentukan nilai kekakuan pada batang. Lalu mencari K lokal di setiap batang. Satukan K lokal setiap batang menjadi K global.

2D01.jpg

2D02.jpg

Pada open modelica mencari ke kakuan setiap batang dan akan menemukan K lokal.

2D03.jpg

2D04.jpg

Lalu hasil K lokal digabungkan menjadi K global pada excel

ExKG.jpg

Selanjutnya menghitung U dan R pada open modelica

2D05.jpg

2D06.jpg

2D07.jpg

Dan berikut Hasil R dan Unya

2D08.jpg

Nomor 8


Untuk soal nomor 8 saya menggunakan coding dari josiah enrico. Dengan koding seperti berikut

GSOQ8.1.jpg

GSOQ8.2.jpg

GSOQ8.3.jpg

Dan menghasilkan nilai seperti ini

GSOQ8.4.jpg

Tapi menurut saya ada yang harus diperbaiki karena cosx, cos y dan cos z hanya 1 sedangkan cos dimasing sumbu harusnya ada 3. Jadi secara teoritis hasilnya akan salah. Saya akan mencoba mencari tahu bagaimana melakukan proses loop pada cos x, cos y dan cos z.

Pertemuan 5 (7 Desember 2020)

Pada pertemuan ke 5 pak dai menyuruh untuk belajar dengan berbagai macam fungsi di open modelica. Dan juga pak dai menyuruh dengan menyelesaikan soal dengan menggunakan berbagai rumus di open modelica seperti

-proses loooping

-data array

-fungsi if

-class dan memanggil function dalam modelica

Selanjutnya disuruh memahami koding yang dibuat oleh Ahmad Mohammad Fahmi.

TUGAS 4

GSPTugas4.jpg

Pada tugas ini saya bersama teman - teman yang lain melakukan diskusi dengan Ahmad Mohammad Fahmi dan cukup memahami alur dari pengerjaan.

1. Langkah 1 buat Class dengan memasukan semua parameter dan semua equation untuk menyelesaikan permasalahan.

GSPW5T41.jpg

GSPW5T42.jpg

GSPW5T43.jpg

2. Lalu membuat function matriks elemen

GSPW5T44.jpg

GSPW5T45.jpg

3. Lalu hasil dari matriks elemen di konversikan menjadi matriks global

GSPW5T46.jpg

GSPW5T47.jpg

4. Lalu tambahkan semua matriks global setiap elemen menjadi 1 matriks global dari semua elemen dengan fungsi sum

GSPW5T47.jpg

5. Cek setiap boundary di setiap poin

GSPW5T48.jpg

GSPW5T49.jpg

GSPW5T4910.jpg

GSPW5T4911.jpg

GSPW5T4912.jpg

6. Lalu lakukan gauss jordan untuk mendapatkan K global Boundary

GSPW5T4913.jpg

7. Hitung Reaction Force

GSPW5T4914.jpg

8. Lakukan check force

GSPW5T4915.jpg

9. Dan berikut Hasilnya

GSPW5T4916.jpg

Pada koding ini saya masih belum terlalu mengerti fungsi dari boundary dan check force. Yang nantinya akan saya pelajari lebih lanjut

Pertemuan 6 (14 Desember 2020)

Assalamu'alaikum wr.wb. pada pertemuan ini pak DAI menginstruksikan mahasiswanya untuk melakukan muhasabah diri. Muhasabah yang dilakukan dengan terkait dengan kemampuan dalam melakukan metode numerik secara individu. Muhasabah ini juga membuat para mahasiswa menilai diri sendiri berdasarkan kemampuan individual pemahaman metode numerik selama ini.

Selanjutnya Christo menjelaskan konsep berpikir dalam melakukan metode numerik dengan alur berfikir mengenai soal-soal yang telah diberikan dan menjelaskannya ke teman-teman yang ada di kelas menggunakan software OpenModelica. Lalu Enrico dan Fahmi menjelaskan perbedaan dari konsep koding mereka. Selanjutnya pak Dai meminta kita agar mengkombinasikan koding dari josiah dan fahmy untuk tugas besar 2 kelas secara bersama - sama.

Pertemuan 7 (21 Desember 2020)

Bu Candra untuk mengajari kami terkait optimisasi. Optimisasi adalah suatu cara untuk mendapatkan yang paling optimal dari suatu permasalahan. Optimasi yang dijelaskan oleh Bu Chandra adalah mengenai optimasi Bracket Optimization using golden ratio. Penerapan optimasi menggunakan golden ratio ini diharapkan dapat diaplikasikan dalam mengerjakan tugas besar dalam menentukan stress maksimum yang masih saftey pada struktur dan harga yang dikeluarkan untuk digunakan pada struktur secara keseluruhan. Untuk hal tersebut, kekuatan material harus lebih kuat dari stress dari beban yaitu stress dari beban tersebut tidak boleh lebih besar 1/2 kali nya dari kekuatan material. Dalam optimisasi tersebut harus ada fungsi objektif dan ada konstrain/batasan/interval. Kemudian kami melakukan

Optimasi merupakan cara untuk mendapatkan nilai maksimum atau minimum dari suatu permasalahan. Optimasi yang dilakukan bergantung pada penentuan dua titik(misal xL dan xU) sehingga terdapat satu nilai maksimum atau minimum dari fungsi tersebut pada selang nilai xL dan xU. Berikut adalah langkah-langkah dalam menentukan nilai maksimum dari sebuah fungsi:

1. Menentukan batasan titik awal terendah (xL) dan tertinggi (xH)

2. Mendapatkan nilai x1 dan x2 dari golden ratio (d)

3. Menentukan xL dan xH berdasarkan nilai batasan maksimum dan minimal baru

4. Mendapatkan nilai x1 dan x2 baru lanjutkan langkah tersebut hingga mendapatkan nilai maksimum dari fungsi tersebut

selanjutnya untuk dapat menentukan nilai x1 dan x2 membutuhkan persamaan berikut:

d = akar5 - 1/2 x (xu-xl)

x1 = x1 + d

x2 = xu - d


Dalam melakukan optimasi sebuah fungsi dan menentukan nilai xL dan xU baru harus memeperhatikan syarat berikut:

- f(x1) > f(x2), domain sebelah kiri x2 dapat dieliminasi xL = x2 untuk iterasi berikutnya xu = xu lama

- f(x2) > f(x1), domain x sebelah kanan x1 dapat dieliminasi xu = x1 untuk iterasi berikutnya xL = xL lamasimulasi pengerjaan soal di

buku chapra. berikut adalah soal beserta penyelesaian yang ada di buku

Opt GSP001.png

Lalu berikut script pada open modelicanya

Opt GSP002.png
Opt GSP003.png

Opt GSP04.jpg

Lalu hasilnya adalah sebagai berikut.

Opt GSP005.png
Opt GSP006.png

Tugas Besar Metode Numerik

Pada tugas besar kali ini kami semua diperintahkan untuk menemukan cost yang paling optimal dengan variasi luas penampang pada batang dan jenis material berdasarkan modulus elastisitas nya dari soal berikut :

Tubes GSP001.jpg
Tubes GSP002.jpg

Constraint:

- Spesifikasi L (Panjang) dan geometri rangka truss

- Gaya beban terhadap struktur (1000 N dan 2000 N)


Asumsi:

- Variasi Stiffness terikat dengan variabel area. Memvariasikan Elastisitas tergolong sulit karena setiap material memiliki range yang tidak teratur dan dalam satu material yang sejenis (struktur biaya tetap) tidak terjadi perubahan nilai elastisitas yang berbanding lurus dengan perubahan biaya.

- Beban akan terdistribusi hanya pada point penghubung (karena bersifat truss)

Kode Modelica Pendukung:

Trusses Modelling

model Trusses_3D_Tugas_Besar_Safety

//define initial variable parameter Integer Points=size(P,1); //Number of Points parameter Integer Trusses=size(C,1); //Number of Trusses parameter Real Yield=250e6; //Yield Strength (Pa) Material ASTM A36 parameter Real Area=3.75E-04; //Area L Profile (0.04 x 0.04 x 0.005) (m2) parameter Real Elas=2e11; //Elasticity ASTM A36 (Pa)

//define connection parameter Integer C[:,2]= [1,5;

                               2,6;
                               3,7;
                               4,8;
                               5,6;  //1st floor
                               6,7;  //1st floor
                               7,8;  //1st floor
                               5,8;  //1st floor
                               5,9;
                               6,10;
                               7,11;
                               8,12;
                               9,10; //2nd floor
                               10,11;//2nd floor 
                               11,12;//2nd floor
                               9,12; //2nd floor
                               9,13;
                               10,14;
                               11,15;
                               12,16;
                               13,14;//3rd floor
                               14,15;//3rd floor
                               15,16;//3rd floor
                               13,16];//3rd floor
                                                             

//define coordinates (please put orderly) parameter Real P[:,6]=[0.3,-0.375,0,1,1,1; //1

                           -0.3,-0.375,0,1,1,1;    //2
                           -0.3,0.375,0,1,1,1;     //3
                           0.3,0.375,0,1,1,1;      //4
                           
                           0.3,-0.375,0.6,0,0,0;   //5
                           -0.3,-0.375,0.6,0,0,0;  //6
                           -0.3,0.375,0.6,0,0,0;   //7
                           0.3,0.375,0.6,0,0,0;    //8
                           
                           0.3,-0.375,1.2,0,0,0;   //9
                           -0.3,-0.375,1.2,0,0,0;  //10  
                           -0.3,0.375,1.2,0,0,0;   //11
                           0.3,0.375,1.2,0,0,0;    //12
                           
                           0.3,-0.375,1.8,0,0,0;   //13
                           -0.3,-0.375,1.8,0,0,0;  //14
                           -0.3,0.375,1.8,0,0,0;   //15
                           0.3,0.375,1.8,0,0,0];   //16
                           

//define external force (please put orderly) parameter Real F[Points*3]={0,0,0,

                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,0, 
                           0,0,-500, 
                           0,0,-1000, 
                           0,0,-1000, 
                           0,0,-500}; 

//solution Real displacement[N], reaction[N]; Real check[3];

Real stress1[Trusses]; Real safety[Trusses]; Real dis[3]; Real Str[3];

protected parameter Integer N=3*Points; Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3]; Real err=10e-10, ers=10e-6;

algorithm //Creating Global Matrix G:=id; for i in 1:Trusses loop

for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
end for;
      
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
                     cy*cx,cy^2,cy*cz;
                     cz*cx,cz*cy,cz^2];

   //Transforming to global matrix
   g:=zeros(N,N); 
   for m,n in 1:3 loop
     g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
     g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
   end for;  

G_star:=G+g;
G:=G_star;

end for;

//Implementing boundary for x in 1:Points loop

 if P[x,4] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-2,a]:=0;
     G[(x*3)-2,(x*3)-2]:=1;
   end for;
 end if;
 if P[x,5] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-1,a]:=0;
     G[(x*3)-1,(x*3)-1]:=1;
   end for;
 end if;
 if P[x,6] <> 0 then
   for a in 1:Points*3 loop
     G[x*3,a]:=0;
     G[x*3,x*3]:=1;
   end for;
 end if;

end for;

//Solving displacement displacement:=Modelica.Math.Matrices.solve(G,F);

//Solving reaction reaction:=(G_star*displacement)-F;

//Eliminating float error for i in 1:N loop

reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];

end for;

//Checking Force check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))}); check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))}); check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)});

for i in 1:3 loop

 check[i] := if abs(check[i])<=ers then 0 else check[i];

end for;

//Calculating stress in each truss for i in 1:Trusses loop

for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]);
end for;
      
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
                cy*cx,cy^2,cy*cz;
                cz*cx,cz*cy,cz^2];
   
   Str:=(X*dis);
   stress1[i]:=Modelica.Math.Vectors.length(Str);

end for;

//Safety factor for i in 1:Trusses loop

 if stress1[i]>0 then
   safety[i]:=Yield/stress1[i];
 else
   safety[i]:=0;
 end if; 

end for;

end Trusses_3D_Tugas_Besar_Safety;


Curve Fitting Function

function Curve_Fitting

input Real X[:];
input Real Y[size(X,1)];
input Integer order=2;
output Real Coe[order+1];

protected
Real Z[size(X,1),order+1];
Real ZTr[order+1,size(X,1)];
Real A[order+1,order+1];
Real B[order+1];

algorithm

for i in 1:size(X,1) loop
 for j in 1:(order+1) loop
 Z[i,j]:=X[i]^(order+1-j);
 end for;
end for;
ZTr:=transpose(Z);

A:=ZTr*Z;
B:=ZTr*Y;
Coe:=Modelica.Math.Matrices.solve(A,B);

end Curve_Fitting;

model CurveFitting

parameter Real X[3]={190e9,195e9,200e9}; // Input variabel X adalah data bebas parameter Real Y[3]={7850,8020,8075}; // Input variabel Y adalah data berikat

Real Coe[3];

algorithm Coe:=Curve_Fitting(X,Y,2);

end CurveFitting;

Modeling Trusses digunakan untuk mencari beberapa parameter seperti stress dan defleksi.

Sedangkan cuve fitting digunakan untuk mencari data - data yang belum didapatkan. Sama halnya seperti sistem regresi linear.

Dalam mencari curve fitting untuk material lock, maka input X adalah area dari siku pada setiap dimensi sedangkan Y adalah harga perkilogram dari siku. Berikut kodingan dan hasilnya.

Berikut coding dari curve fitting untuk mencari harga perkilogram dari material lock ASTM A36

Tubes GSP006.jpg

Dan berikut hasil dari coefficient

Tubes GSP007.jpg

Berikut coding dari curve fitting untuk mencari harga perkilogram dari arealock pada dimensi 40 mm x 40 mm x 5 mm untuk material SS400, SS 304, SS316

Tubes GSP008.jpg

Dan berikut hasil dari coefficient

Tubes GSP009.jpg

Berikut coding dari curve fitting untuk mencari density dari arealock pada dimensi 40 mm x 40 mm x 5 mm untuk material SS400, SS 304, SS316

Tubes GSP010.jpg

Dan berikut hasil dari coefficient

Tubes GSP011.jpg

Berikut coding dari curve fitting untuk mencari yield dari arealock pada dimensi 40 mm x 40 mm x 5 mm untuk material SS400, SS 304, SS316

Tubes GSP012.jpg

Dan berikut hasil dari coefficient

Tubes GSP013.jpg

Saat sudah melakukan curve fitting, maka optimasi kan. Berikut Coding Optimasi saaat di material lock.

model Opt_Gold

parameter Real xd[:]={111e-6,141e-6,171e-6,231e-6,304e-6,375e-6,344e-6,425e-6}; //Material Lock masukkin Area parameter Real yd[size(xd,1)]={269.3e-6,269.4e-6,269.6e-6,269.7e-6,269.8e-6,269.7e-6,269.8e-6,269.6e-6};//Ratio parameter Real xlo=111e-6;// x Low pada variabel x parameter Real xhi=425e-6; // x high pada variabel x parameter Integer N=100; // maximum iteration parameter Real es=0.0001; // maximum error

Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3]; Real xopt, fx; protected Real d, xl, xu, xint, R=(5^(1/2)-1)/2;

algorithm xl := xlo; xu := xhi; y  := Curve_Fitting(xd,yd);

for i in 1:N loop

d:= R*(xu-xl);
x1[i]:=xl+d;
x2[i]:=xu-d;
f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3];
f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
xint:=xu-xl;

if f1[i]>f2[i] then
  xl:=x2[i];
  xopt:=x1[i];
  fx:=f1[i];
  else
    xu:=x1[i];
    xopt:=x2[i];
    fx:=f2[i];
end if;

ea[i]:=(1-R)*abs((xint)/xopt);
if ea[i]<es then
  break;
end if;

end for;

Berikut hasil dari optimasi material lock

Tubes GSP014.jpg

Hasil optimasi menyatakan dimensi yang digunakan adalah 40 mm x 40 mm x 4 mm

Saat sudah melakukan curve fitting, maka optimasi kan. Berikut Coding Optimasi saaat di area lock.

model Opt_Gold

parameter Real xd[:]={190e9,191e9,192e9,193e9,194e9,195e9,196e9,197e9}; //Area Lock masukkin Elasticity parameter Real yd[size(xd,1)]={2.19e-4,1.02e-4,6.50e-5,4.77e-5,4.77e-5,3.3e-5,2.99e-5,284e-5};//Ratio parameter Real xlo=190e9;// x Low pada variabel x parameter Real xhi=197e9; // x high pada variabel x parameter Integer N=100; // maximum iteration parameter Real es=0.0001; // maximum error

Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3]; Real xopt, fx; protected Real d, xl, xu, xint, R=(5^(1/2)-1)/2;

algorithm xl := xlo; xu := xhi; y  := Curve_Fitting(xd,yd);

for i in 1:N loop

d:= R*(xu-xl);
x1[i]:=xl+d;
x2[i]:=xu-d;
f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3];
f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
xint:=xu-xl;

if f1[i]>f2[i] then
  xl:=x2[i];
  xopt:=x1[i];
  fx:=f1[i];
  else
    xu:=x1[i];
    xopt:=x2[i];
    fx:=f2[i];
end if;

ea[i]:=(1-R)*abs((xint)/xopt);
if ea[i]<es then
  break;
end if;

end for;

end Opt_Gold;

Berikut hasil dari optimasi area lock

Tubes GSP015.jpg

Hasil optimasi menyatakan material yang digunakan adalah ASTM A36 atau SS 400.

Data - data yang didapatkan diletakan di excel dan untuk material lock dengan material ASTM A36/ SS400 adalah sebagai berikut.

Tubes GSP003.jpg

Lalu untuk area lock data yang didapatkan seperti berikut

Tubes GSP0004.jpg

Kesimpulan

Dari tugas besar melalui metode numerik, didapatkan hasil bahwa material yang digunakan adalah ASTM A36/SS 400 dengan dimensi 40 mm x 40 mm x 4mm dengan harga materialnya adalah Rp 281.762,-


UAS (Ujian Akhir Semester)

Pada tanggal 13 januari 2021 diadakan UAS. Berikut Jawaban UAS.

Jawaban No.1

Membuat urutan langkah-langkah (prosedur) pemodelan numerik untuk optimasi struktur tersebut. Disini dijelaskan menggunakan flowchart.

UAS GSP 001.jpg

Jawaban Nomor 2

menjelaskan tujuan dari pemodelan numerik soal no 1 diatas, beserta hukum/dalil (fisika) yang dipakai dan asumsi-asumsi yang akan digunakan dalam perhitungan

UAS GSP 002.jpg

Jawaban Nomor 3

Untuk pemodelan numerik analisis strukturnya nya gunakan pendekatan 1D truss dgn membagi kolum (tiang) water tower kedalam 3 elemen (1D). a). Susunlah persamaan aljabar kesetimbangan statik setiap elemen tsb. (matriks kesetimbangan lokal) b) Matriks kesetimbangan global

UAS GSP 003.jpg

Jawaban Nomor 4,5,6

Susun urutan langkah-langkah (pseudocode) perhitungan matriks kesetimbangan global soal no 3 termasuk pengecekan kesalahan (verifikasi) perhitungannya

Tulis dan jelaskan fungsi objektif dan constraint untuk optimasi struktur water tower tersebut

Tuliskan asumsi nilai-nilai parameter dan variable untuk menghitung displacement, restraint dan stress utk model struktur water tower dgn 3 elemnt 1 D diatas

Gunakan program modelica anda untuk menghitung displacement, restraint dan stress utk model struktur water tower dgn 3 element 1 D berdasarkan asumsi no 6

UAS GSP 004-007.jpg

Codingan ---

class UAS_Gandes

parameter Real [:,5] inisiasi = [1,1, 2, 40, 28.5e6, 480;

                                 1,1, 3,  40, 28.5e6, 480;
                                 1,1, 4,  40, 28.5e6, 480];
                                 
                                 
  parameter Integer [:,2] node = [1, 2;
                                1, 3;
                                1, 4];
           
  parameter Integer y = size(node,1);

  parameter Integer x = 2*(size(node_load,1));

  parameter Integer z = size(Boundary,1);

  parameter Integer [:] Boundary = {3};
                             
  parameter Real [:,3] node_load = [1, 0, 2503621.3356 ;
                                  2, 0, 0;
                                  3, 0, 0];                                  
  parameter Real [2*(size(node_load,1))] load = {0,2503621.3356,0,0,0,0,0,0};                              
  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)};
  Ke = StiffnessMatrixElement(inisiasi);
  Kg = StiffnessMatrixGlobal(node, x, y, Ke);
  KgTot = SumStiffnessMatrixGlobal(x, y, Kg);
  KgB = BoundaryStiffnessMatrixGlobal(x, z, KgTot, Boundary);
  U = GaussJordan(x, KgB, load);
  R = ReactionForce(x, KgTot, U, load); 

class UAS_Gandes

Pada nomor 7 error saat disimulasikan.

Dan karena dikasih waktu untuk memperbaiki oleh pak DAI, berikut hasil perbaikan saya.

UAS GSP 007a.jpg
UAS GSP 007b.jpg