Metnum03-Bagus Rangin

From ccitonlinewiki
Revision as of 10:57, 5 January 2021 by Rangin.bagus (talk | contribs)
Jump to: navigation, search

بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيْمِ


  Assalamualaikum.Wr.Wb. Page di wiki ini menjadi jurnal proses belajar saya pribadi selama belajar di kelas Metoda Numerik 3 setelah UTS. semoga media ini menjadi perantara saya mendapatkan ilmu. aamiin

1.MATERI METODE NUMERIK SEBELUM UTS


Sebelum menjelaskan materi apa saja yang saya pelajari sebelum UTS, alangkah lebih baiknya saya mmenjelaskan penjelasan saya secara garis besar mengenai metode numerik ini. menurut pemahaman saya sejauh ini metode numerik adalah salah satu cara penyelesaian matematika yang memanfaatkan perhitungan berulang dan pendekatan terhadap suatu nilai dalam mencari persamaan,turunan,integral, maupun data. dalam metoda numerik ini seringkali digunakan asumsi terlebih dahulu dan dengan perhitungan yang berulang maka didapatkan nilai yang mendekati eksak. walaupun tidak selalu dalam prakteknya dilakukan perhitungan berulang, namun menurut hemat saya iterasi dalam metode numerik dapat meningkatkan akurasi dari suatu nilai yang dicari.

Sebagai contoh, Interpolasi. Interpolasi adalah proses mencari sebuah data dengan memanfaatkan data sebelum dan sesudahnya. sebenarnya data yang dihasilkan dari proses interpolasi bukanlah data eksak sebenarnya. namun data yang didapatkan dari metoda interpolasi tersebut lah yang paling mendekati dengan melihat pola variabel dan hasil dari data sebelum dan sesudahnya.

Contoh lain dalam Roots of Equation. metode Bracketing Method contohnya. untuk mencari akar dari sebuah persamaan, kita akan diberikan range nilai dari akar tersebut. namun setelah melakukan perhitungan terus menerus maka range tersebut akan semakin kecil sehingga semakin mendekati suatu nilai. hingga akhirnya error atau dx nya semakin kecil hingga error yang diperbolehkan sebelumnya. semakin banyak kita melakukan iterasi maka semakin mendekati sebuah nilai hasilnya.


Sebelum UTS, Kelas Metode Numerik 3 diampu oleh Pak Engkos. dengan bantuan referensi buku Numerical Method For Engineers karya Steven Chapra, kami mempelajari beberapa chapter diantaranya :

1. Part One - Chapter 4 tentang Truncation Error

2. Part TWO (Tentang Roots of Equation) - Bracketing method, Open method, dan Roots of Polynomials

3. Chapter 9 - Gauss Elimination

4. Part five (Curve Fitting) - Least Square dan Interpolation

5. Part Six ( Numerical Differentiation) - Forward, mid, dan backward method

Dari beberapa bagian tersebut akan saya jelaskan lebih lanjut lagi dibawah mengenai apa saja yang telah saya pelajari sampai dengan UTS.

    2.Roots of Equation
Roots of equations.jpg

Pada dasarnya Roots of Equation dalam metode numerik adalah proses mencari akar-akar dari sebuah persamaan. jika dalam metode eksak terkadang sulit untuk mencari akar persamaan, metode numerik ini dapat membantu untuk mencari nilai nya. saat proses belajar kemarin, kami mencoba mencari akar-akar persamaan menggunakan bantuan microsoft excel untuk mencari akar persamaan nya.

Untuk mencari akar sendiri ada dua garis besar yaitu Open Method dan Bracketing method.

Bracketing Method.seperti nama nya, Bracketing method menggunakan kurungan (atau bisa dibilang dua titik yang mengapit nilai) untuk mencari nilai nya. seiring dilakukanya iterasi, maka kurungan tersebut akan semakin kecil dan semakin mendekati nilai sebenarnya. sebagai contoh, suatu akar adalah 5, Bracket akan dibuat pada titik 1 dan 10 dan seiring dilakukanya iterasi berulang maka kurung tersebut akan menjadi 2&9; 3&7; 4&6; 4,5&5,5 dst.. Bracketing method terbagi menjadi 3 yaitu :

a. Bisection Method : disebut juga metode Bagi-Dua dilakukan dengan terlebih dahulu memilih bagian mana akar berada. dan setelah dilakukan perhitungan dicari bagian mana yang mengandung akar (bagian ini menjadi interval baru). bagian yang tidak mengandung akar dibuang. misal diasumsikan bahwa fungsi f(x) mengandung akar, fungsi kontinyu pada (a,b) dan f(a)f(b)<0 ini berarti f(x) memiliki akar pada interval (a,b). kemudian didefinisikan titik tengah yaitu c= (a+b)/2. lalu dicek pada bagian mana yang mengandung akar, cara mengeceknya adalah dengan mencari apakah f(a).f(c)<0 atau f(b).f(c)< 0. setelah dihitung, maka nilai yang menghasilkan <0 adalah yang mengandung akar (contoh f(a) dan f(c)). sehingga titik a dan c lah yang menjadi interval baru. proses tersebut dilakukan berkali-kali hingga didapatkan error yang sangat kecil atau toleransi yang diinginkan. Pada saat menggunakan teknik ini, kemarin kami menggunakan bantuan microsoft excel.

Berikut adalah salah satu contoh excel dari Bisection Method

Bisection.png


b. False Position Metode false position atau sering disebut metode titik palsu adalah bentuk modifikasi dari bentuk bagi dua yang dinilai kurang efisien dalam menentukan titik nilai. Metode ini menggunakan pengertian grafis dengan menghubungkan nilai dari kedua titik dengan sebuah garis. Garis tersebut akan memotong di sumbu-x dan akan menjadi taksiran akar yang akan diperbaiki ( semakin mendekati nilai sebenarnya setelah dilakukan perhitungan berulang)

Falseposition.png

Dengan rumus mencari false position/Xr sebagai berikut:

False.png

Pada saat kemari, file excel saya untuk formula false position ini hilang namun berikut contoh formula excel yang saya dapatkan diinternet

False1.png

Open Method berbeda dengan bracketing method, open method hanya memerlukan 1 namun terkadang 2 nilai x perkiraan yang tidak mengurung akar persamaan sebenarnya. saat perhitungan divergen, maka nilai akan menjauhi akar sebenarnya. Namun saat perhitungan konvergen, akar akan ditemukan lebih cepat daripada bracketing method. Open method ini dibagi menjadi 3 metode yaitu : simple fixed point, Newton-Rhapson, dan Secant.

a. Simple Point

b. Newton-Rhapson

c. Secant



Tugas 1, video pembelajaran modelica


Minggu kemarin, Pak Dai memberikan tugas untuk mempelajari modelica dan membuat video tentang pembelajaran nya dan diupload di youtube. berikut hasil video saya dapat dilihat melalui tautan dibawah. Part 1 - https://youtu.be/jqawTQHJBXU Part 2 - https://youtu.be/9pk7_Mm3Yn8



Pertemuan ke-2 Metnum 03(16/11/2020)


Pada pertemuan kali ini, pertama-tama setiap mahasiswa melaporkan hasil belajarnya mengenai modelica, bagaimana penggunaan dasarnya hingga operasi penggunaan nya.Pak Dai menugaskan di kelas untuk mencoba membuat 2 kelas dengan fungsi class dan class biasa. class function tersebut diisi algoritma untuk y=x+10 yang dimana function tersebut akan dipanggil kembali di class yang satu lagi. pada class yang biasas didefinisikan parameter bahwa x=2 dan y real. pada equation function tadi dipanggil sehingga persamaan equation nya menjadi y= function(x) + 10. sehingga saat di running saya mendapatkan hasil 22. kesalahan dasar saya saat menggunakan modelica adalah lupa nya penggunaan semicolon dan juga lupa mendefinisikan parameter seperti y real.

setelah itu, pak dai menugaskan untuk mencoba membuat model sederhana untuk mencari rata2. gambar-gambar dibawah menunjukan hasil percobaan saya. saya mendefinisikan variabel nya berupa x1, x2, x3, x4, dan x5. dan pada bagian equation terlihat saya menulis y=(x1+x2+x3+x4+x5)/5. dan setelah di running pada gambar bawahnya terlihat hasilnya bahwa y(rata-rata) nya hasilnya 3.

Modelicabro.png

Percobaan sederhana modelica (tugas dari pak dai) untuk membuat program mencari rata rata dari beberapa data. saya menggunakan x1-x5.

Modelicabro12.png

Dan berikut hasilnya setelah dirunning, dapat dilihat rata-rata nya (y) sebesar 3

Modelicabro13.png

Lalu untuk selanjutnya pak dai memberikan kita semua tugas untuk membuat model modelica lagi untuk membuat class dengan type function untuk menyelesaikan persamaan-persamaan aljabar simultan ( metoda gauss elimination, gauss seidl, dll...) dan sebuah class function untuk menjalankan fungsi tersebut. tidak lupa juga untuk menggunakan looping dan variable arrays...



Tugas02- Gauss Elimination


Pada pertemuan 2 kemarin, seperti yang telah dijelaskan sebelumnya, pak Dai memberi kami tugas untuk menyelesaikan salah satu persamaan linear simultan dengan open modelica. saya memilih untuk mengerjakan Metode Gauss Elimination sebagai objek percobaan saya didalam penyelesaian modelica. pertama-tama saya mencari soal tentang 3 persamaan linear 3 variable yang nantinya akan diubah menjadi matriks 3x3 dengan persamaan A*B=C. dimana matriks A[3x3], B[3], dan C[3]. soulusi yang dicari adalah pada nilai B1,B2, dan B3.

berikut soal nya...

Soalgauss.png

Setelah itu, persamaan2 tersebut dibuat dalam bentuk matriks sebelum diselesaikan menggunakan gauss, seperti ini...

Soalgauss1.png

sesuai dengan perintah pak dai, kita dianjurkan membuat 2 kelas dalam modelica. yang ertama adalah kelas function dimana kita memasukan fungsi algoritma nya. dan kelas yang kedua adalah class dimana nanti function tadi di recall dan dimasukan variable nya lalu solve dilakukan..

Function Class

Soalgauss2.png

function class diisi dengan mendeclare nilai input,outputdan logartima dimana input  : A[3,3] dan C[3]

output  : B[3]

Logaritma : B:=Modelica.Math.Matrices.solve(A,C)

  • logaritma menggunakan fungsi yang sudah ada didalam modelica yaitu fungsi matrices untuk gauss elimination.

Class gauss elimination

Soalgauss3.png

dalam kelas ini, fungsi tadi yang bernama "fungsii" direcall pada kolom equation dengan memasukan A&C sebagai inputnya dan B outputnya. namun sebelum itu terlebih dahulu saya mendeclare nilai2 inputanya tadi seperti digambar atas tersebut.

Hasil

Soalgauss4.png

setelah itu, kita dapat melakukan plotting dan mendapatkan hasilnya. dari gambar tersebut kita dapat mengetahui nilai dari B adalah = -3, 2, -1.

Note: arahan dari pak dai untuk menggunakan looping dan arrays masih belum dapat saya lakukan karena masih saya pelajari dan belum betuk-betul saya pahami. sumber yang saya pelajari tidak secara langsung mencontohkan aplikasinya pada eliminasi gauss. mungkin kedepanya saya akan dapat melakukan itu.



Pertemuan 3 : 23/11/2020


Pada pertemuan ke 3 ini, pak dai memberikan tugas didalam kelas untuk menyelesaikan persoalan sistem pegas yang ada dalam contoh buku Numerical Method for Engineer 7th pada persoalan 12.11. Dimana contoh strukturnya adalah sebagai berikut.

Pegasku.png

dan dari fenomena diatas, saya jabarkan dalam model persamaan matematika sehingga didapatkan persamaan matriksnya, berikut penjabaranya semoga tulisanya dapat terbaca jelas.

Persamaanpegas.jpg

Setelah itu didapatkan persamaan matriks k nya. Lalu seperti tugas yang kemarin, saya menggunakan dua kelas yaitu kelas function dan satu lagi class. maka dengan pola yang sama, INPUT nya matriks K, dan W. dan OUTPUTnya berupa value dari displacement x. berikut footage nya dari function,class, dan hasil plottingnya.

Siganteng.png
Siganteng1.png
Siganteng2.png

setelah saya masukan input value berupa K=10N/m , W1=10N, W2=20N, W3= 30N. Saya mendapatkan displacement berupa X1=6, K2=8,5, K3=11,5.



Tugas 3: menyelesaikan kasus Truss dengan open modelica


Pada pertemuan kemarin Pak Dai memberikan tugas pada kami untuk menyelesaikan tugas persoalan aplikasi dari statika struktur berupa trusses yang rumit seperti soal dibawah:

Soaltruss.png

untuk menylesaikanya dalam bentuk modelica ada beberapa hal yang harus dilakukan, berikut langkah2nya:

Merubah elemen-elemen menjadi kode dalam modelica seperti

T3 1.png

2. Menentukan Stiffnes atau kekakuan dari setiap batang, dikarenakan kekakuan setiap batang belum diketahui, maka dari itu dengan rumus K=AE/L dengan luas penampang A , modulus elastisitas E, dimasukan nilai nilai yang ada sehingga

T3 2.png

3. setelah mendapatkan itu, kita harus mendapatkan persmaan global dari elemen berupa matriks K seperti

T3 3.png

4. Menentukan persamaan untuk elemen, setelah mendapatkan persamaan2 tadi maka kita harus membuat persamaan untuk tiap elemen nya. (pada persamaan tadi K untuk kekakuan dan e untuk elemen)

K1global.png K3global.png K6global.png K4global.png

K2global.png K5global.png

setelah itu kita harus menyusun dan menggabungkan matriks untuk elemen2 tadi dengan Rumus [K]G= [K1]+[K2]+[K3]+[K4]+[K5]+[K6]

Metnum radit 8 4 1.png

5.setelah itu berikut penyelesaian yang saya lanjutkan di modelica:

T3 4.png
(untuk mendapatkan U)
T3 5.png
T3 6.png
T3 7.png

hasil dari plotting tidak dilampirkan karena data2 terlalu panjang sehingga sulit di screenshot.

6.setelah diselesaikan dengan modelica didapatkan nilai hasil untuk gaya reaksi (dengan menggunakan rumus {R}=[K]G{u}-{F}

T3 9.png

6. Mendapatkan gaya internal dan normal stress untuk menghitung normal sterss, perlu dilakukan perubahan hasil defleksi dari matriks koordinat global ke koordinat local. berikut contoh matriksnya.

T3 10.png

dengan penjelasan [u] : Koordinat local [U] : Koordinat global [T] : Matriks translasi

dan setelah itu penyelesaian dilakukan oleh modelica.



QUIZ Metnum


soal yang dijadikan quiz adalah soal no 4 dan 8. untuk flowchartnya, langkah yang dilakukan sama sehingga ada satu flowchart dan detail pengerjaan nya dijelaskan masing2 nomer

Quiz Rangin 1.jpg
Quiz Rangin 2.jpg
Quiz Rangin 3.jpg


Setelah itu pak Dai menginstruksikan kami untuk membuat modeling kasus tersebut dalam modelica. setelah memahami penyelesaian matematisnya berikut langkah yang saya tempuh untuk memproses persoalan tersebut:

Pertama, saya membuat penyelesaian untuk K lokal nya:

Klokal2D.png
Klokal2D2.png
Klokal3.png

dan dari hasil tersebut saya mendapatkan hasil sebagai berikut

Klokalhasil.png

Pertemuan 5 : 7/12/2020


Pada pertemuan kali ini, kami membahas tentang soal quiz yang pada minggu sebelumnya diberikan. kita mempelakari soal ini dan diterapkan pada openmodelica untuk lebih memahami aplikasi dari OpenModelica dalam penyelesaian persoalan teknik real. pada pertemuan ini Ahmad Mohammad Fahmi menjelaskan pengerjaan kuis tersebut dengan modelling buatan nya. beberapa hal yang fahmi jelaskan adalah

-melakukan proses loooping

-membuat data dalam bentuk array

-menggunakan fungsi if

-class dan function dalam modelica

saya juga mengajukan beberapa pertanyaan kepada fahmi dikarenakan pada penjelasan banyak hal dan istilah baru yang saya ketahui

setelah itu, pak Dai memberi tugas kepada kami semua untuk memahami program fahmi dan mencobanya, sert memberi feedback berupa saran dan kritikan terkait modelling fahmi.



Tugas 4 - 3D Trusses


Brtugas4.png

dari tugas tersebut, saya coba memahami secara matematis dan melakukan flowchart seperti pertemuan sebelumnya

seperti:

1. menentukan input A,E,L,teta,node dll

2.membuat matriks stifness matriks untuk tiap elemen

3. mengubah matriks elemen ke matriks global

4. menghitung Kg Total

dan tahapan lainya..

setelah itu membuat class pada open modelica yaitu
1. Class soal
2. Function Stiffness Matrix elemen
3. Function Stiffness Matrix Global
4. Function Sum Stiffness Matrix Global
5. Function Check Force (  memastikan perhitungan benar atau tidak ( force total harus sama dengan 0)).
6. Boundary Stiffness Matrix Global
7. Gaus Jordan (U)
8.Reaction Force



Pertemuan 7


Pada pertemuan ini kami dijelaskan mengenai optimization yaitu bracket optimization melalui golden method, penjelasan dilakukan melalui ppt dan pptnya dishare melalui whatsapp grup. secara singkat metode ini digunakan untuk mengetahui nilai maksimum minimum lokal dan maksimum minimum global.

Brpertemuan7.png



Muhasabah Diri


Muhasabah diri saya mengenai pengetahuan saya selama belajar metode numerik dari awal tersusun dari beberapa parameter, yang pertama : seberapa saya paham mengenai hal yang diajarkan

kedua : seberapa saya bisa mengaplikasikanya dalam bentuk masalah ( soal atau modelica)

ketiga : seberapa besar usaha saya untuk belajar lebih mengerti metode numerik

dari awal belajar metode numerik saya selalu berusaha mengikuti kelas dan ikut aktif dalam kelas agar lebih memperdalam pemahaman saya. sejauh belajar metode numerik saya mempelajari semua yang telah diajari dengan referensi buku dan kuliah yang saya ikuti.

dan setelah mencoba menggunakan modelica, pada pertemuan awal-awal saya baru mengetahui tentang per codingan. awalnya saya bisa mengikuti saat awal belajar penerapan metode numerik yg dipelajari sebelumnya, seperti mencari mean, mencari bracketing methods, mencoba memanggil fungsi terpisah, dll.

namun disaat langsung menerapkan pada fenomena trusses, saya agak kesulitan karena tidak paham awalnya. saya memahami fenomena fisiknya namun saya masih sulit untuk mengerjakan sendiri karena seringkali bingung apa coding yang harus dibangun. namun saat mendengarkan ahmad atau pak dai menjelaskan, saya bisa mengikuti. namun saat akan menjelaskan sendiri atau mengerjakan nya, seringkali saya merasa kesulitan mengartikan fenomena fisik ke coding modelica



PROGRESS TUGAS BESAR METODE NUMERIK


Untuk akhir dari Pembelajaran Metode Numerik menggunakan OpenModelica, kami ditugaskan untuk merancang satu tugas besar. Tugas ini adalah aplikasi Openmodelica dalam kasus optimasi trusses. Secara garis besar, kasus trusses yang sudah ditentukan dilakukan pemodelan melalui coding modelica, setelah itu mulai lah pross optimasi menggunakan program modelica pula. Untuk kasus yang digunakan, ditentukan oleh Pak Dai secara langsung. berikut gambar kasus desain rangka sederhana yang akan dioptimasi:

Brtubes.png
Brtubes2.png

Dalam kasus tersebut dapat dilihat berupa rangka berbentuk tray dengan 4 lantai. Dalam rangka tersebut lalu diaplikasikan beban sebesar 1000 N dan 2000 N pada sisi lainya. Dimensi yang dianjurkan adalah Panjang = 0.6 m, Lebar = 0.75 m, dan tinggi = 1.8 m. Beban diaplikasikan pada lebar rangka dengan panjang 0.75m. Tugas kita adalah mengoptimasikan desain tersebut dengan mempertimbangkan sisi efisiensi ekonomi dengan tetap mempertimbangkan safety factor yang wajar. Untuk optimasi sendiri, nantinya akan dilakukan dengan metode curve-fitting seperti least square polynomial. Pada tugas ini, kami pula harus menentukan jenis material dan luas penampang yang akan diaplikasikan. Material dan jenis penampang akan berpengaruh nantinya terhadap harga produk.

Proses pemodelan dari rangka ini dilakukan menggunakan program OpenModelica. 3 kelas kami sepakat untuk menggunakan coding rancangan Josiah, Ahmad Fahmi, serta Christo dalam hal pemodelan serta optimasinya. Nantinya, kami secara individu akan menganalisa design rangka, optimasi, dan materialnya. Namun, Karena banyak darikami yang belum begitu paham secara detail terhadap pemodelan ini, kami melakukan diskusi secara daring sebanyak 2 kali dengan teman2 perancang Pemodelan Modelica. Pada pertemuan tersebut, saya jadi lebih memahami program yang akan kami pakai, sebenarnya program final yang akan diambil adalah program ide josiah yang programnya lebih singkat namun ternyata pemahaman nya lebih rumit. Berikut dokumentasi pertemuan diskusi pertama dan kedua yang saya hadiri.

Pertemuan diskusi 1

Brdiskusi.jpg

Pertemuan diskusi 2

Brdiskusi2.png

Pada pertemuan pertama, saya mulai memahami program modeling yang digunakan. terdapat input yang dapat kita sesuaikan dengan analisis kita yaitu: Parameter Elastisitas (berkaitan dengan material yang digunakan), parameter luas penampang, bentuk design rangka (yang dikonversikan menjadi parameter no point, trusses, serta definisi koordinat dan connection nya).

Dalam tahap pendeklarasian, kita harus mendefinisikan point sambungan serta jumlah trusses, point dan jumlah sambungan ini akan seiring dengan bentuk design kita (penggunaan inventor atau sketsa tangan akan mempermudah sebelum pemodelan dibuat). setelah itu diperlukan elemen area berupa satuan luas. setelah itu parameter elastisitas diperlukan sesuai material yang digunakan, untuk ujicoba pertama, digunakan material SS304 dengan elastisitas 193 x 10^9 N/m^2. Hal-hal tadi adalan pendeklarasian dari komponen dasar pemodelan. Berikut bentuk pemodelan dalam aplikasi Open Modelica nya :

 //define initial variable
parameter Integer Points=16; //Number of Points
parameter Integer Trusses=24; //Number of Trusses
parameter Real Area=0.000224;   //Area L Profile (Dimension=0.03, Thickness=0,004) 
parameter Real Elas=193e9;     //Elasticity SS 304

Setelah Komponen dasar pemodelan dideklarasikan, dilakukan pendefinisian connection & koordinat trusses.

Untuk define connection, dibuat kumpulan matriks 1x2 yang berisi 2 nama truss yang dihubungkan. untuk mempermudah pemahaman, susunan koneksi rangka dibangun berdasarkan tingkatan rangka pada desain, seperti lantai 1, 2 , 3 dll. koneksi-koneksi yang ada akan bervariasi sesuai dengan desain dari rangka nya.

Berikut contoh pemodelan Connection yang ada pada program:

 //define connection
parameter Integer C[Trusses,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

Selanjutnya, kita diharuskan untuk menuliskan koordinat dari point connection tadi. Berhubung model yang kita buat tadi dalam bentuk 3 dimensi, maka Pendefinisian ada ditulis dalam matriks 1x3 dimana setiap nilai menunjukan jarak dari titik referensi 0,0,0 . bentuk matriksnya seperti [rx.ry.rz]. untuk setiap lantai, ada 4 titik poin, sehingga total ada 16 point pada desain rangka yang diberikan. berikut coding untuk mendefinisikan koordinat point

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

Setelah itu, dituliskan definisi terhadap beban yang diaplikasikan. beban yang diaplikasikan adalah 2000N dan 1000N tepat ditengah kedua rangka paling atas seperti gambar. Namun, karena analisa ini dilakukan berdasarkan point connection, maka beban ditulis berdasarkan beban yang dirasakan oleh point, maka beban menjadi masing-masing 500,500,1000, dan 1000. Beban dituliskan dalam bentuk matriks 1x3 untuk setiap truss dari lantai satu ke lantai 3. berikut coding untuk mendefinisikan aplikasi beban pada model trusses:

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

Terakhir, dalam tahap pendeklarasian, diperlukan komponen komponen perhitungan seperti displacement, reaction, stress, safety, dll. codingnya seperti ini:

Real displacement[N], reaction[N];
Real check[3];
Real stress1[Trusses];
Real safety[Trusses];
Real dis[3];
Real Str[3];

Saat masuk tahap perhitungan, diperlukan pendeklarasian pula untuk notasi-notasi yang dipakai. dalam pembuatab global matriks diperlukan notasi notasi baru, Nantinya ada matriks X (matriks 3x3 hasil kali A*Elastisitas/L dikali dengan matriks). lalu ada notasi cx,cy,cz, untuk membantu perhitungan matriks global. dan juga matriks q1 dan q2 [1x3] yang akan menjadi variable yang mempermudah proses perhitungan matriks global.Tidak lupa juga error untuk validasi nya. berikut codingnya

parameter Integer N=3*Points;
Integer boundary[3*size(b,1)]=cat(1,(3*b).-2,(3*b).-1,3*b);
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-4;

Lalu mulailah algoritma pembentukan Global matriks dengan notasi G. pada proses ini dilakukan looping notasi i dan j yang akan mengisi variable q1 dan q2. loop i akan memanggil matriks trusses (connection) pada kolom 1. sedangkan j, akan looping untuk angka 1 sampai 3. Hingga q berada dalam fungsi j menjadi q[j].

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

L diselesaikan dengan menentukan jarak vektor. notasi cx,cy,cz, membantu saat dibuat matriks u. notasi cx sebenarnya menjadi semacam jalan meringkas dibentuknya matriks stifness.

selanjutnya perhitungan menggunakan coding berikut:

   //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 i in boundary loop
for j in 1:N loop
  G[i,j]:=id[i,j];
end for;
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]:=Elas/stress1[i];
 else
   safety[i]:=0;
 end if; 
end for;
end Trusses_3D_Tugas_Besar_Safety;

lalu, nilai yang kita cari dari pemodelan ini adalah reaction force, stress, displacement, dan yang terpenting safety factor ( yield/ stress)

berikut hasil nilai dari simulasi nya

Brdisplacement.png
Brreaction.png
Brsafety.png
Brstress.png

OPTIMASI optimasi berupa metode yang digunakan demi mendapatkan nilai yang maksimal dari rasio rasio yang ada, dalam hal ini kami membuat curve fitting antara rasio safety factor dengan harga material:

secara garis besar, josiah mengajarkan kami seperti berikut:

Untuk nilai elastisitas/material yang sama, langkahnya sebagai berikut:

Mencari data yield strength dan elasticity dari material yang dipilih Mencari harga truss sesuai dengan material. Menghitung nilai safety factor. Membuat rasio (efficiency) dari safety factor dengan total cost. Membuat persamaan (mencari Coe) antara rasio dengan area menggunakan curve-fitting. Melakukan optimasi menggunakan metode golden section.

Untuk luas penampang yang sama, langkahnya sebagai berikut:

Mendefinisikan luas penampang yang sama untuk seluruh variasi material. Mencari harga untuk 3 jenis variasi material. Menghitung nilai safety factor pada 3 variasi truss. Membuat rasio antara safety factor dengan total cost. Membuat persamaan (mencari Coe) antara rasio dengan area menggunakan curve-fitting. Melakukan optimasi menggunakan metode golden section.

namun saya masih belum mengerti untuk penggunaan golden section.

untuk optimasi curve fitting nya, menggunakanaplikasi modeilca. aprogram ini dibuat oleh josiah dan sudah saya usahakan pahami, namun dari awal saya paham curve fitting dengan aplikasi excel yang diajarkan oleh Prof. Engkos. berikut programing curve fitting nya:

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);
//Coe:=fill(2,size(Coe,1));

end Curve_Fitting; /* for i in 1:3 loop

for j in 1:Points loop
 R[j]:=reaction[3*(j-1)+i];
end for;
Sur[i]:=sum(R);
end for;
*/

untuk tahap selanjutnya, dilakukan tahap optimasi dengan variable : panjang, tebal, jenis material dan harga nya. Namun, untuk percobaan kali ini, saya memakai material dan profil yang tetap yaitu profil siku. serta harga nya dalam satuan 6m. untuk materialnya, saya menggunakan SS316L dengan panjang 6m. harga saya referensikan dari situs penjual besi wijaya makmur.

dibawah ini ada contoh pembuatan tabel dari asistensi dengan josiah

dilakukan pengklasifikasian material dari dimensi dan tebalnya, setelah itu dilakukan simulasi dengan pemodelan tadi sehingga didapatkan safety factor.


nantinya akan dibuat curve-fitting dari rasio SF-Cost dengan area dan elastisity dengan cost.

Brexcel.png

dan berikut detail data yang saya buat dalam excel:

Brexcel1.png

setelah satu per satu data dimasukan ke openmodelica dan di running, maka didapatkan hasil seperti dibawah. hasil dibawah didapatkan nilai stress, safety factor, serta rasio antara safety factor dengan cost. nilai2 tersebut adalah nilai yang nantinya akan dilakukan curve fitting. dapat dicatat hasil simulasi ini adalah hasil simulasi untuk Elastisitas tetap (material yang sama dengan variasi area dan harga)

Brhasilsimulasi.png

setelah didapatkan data tersebut, langkah selanjutnya dalah melakukan optimasi. namun pertama-tama saya melakukan proses curve fitting. curve fitting akan menghasilkan fungsi polinomial dari data-data yang ada. untuk curve fitting, saya mencari fungsinya melalui website Online Curve Fitting. dan hasil curve fitting saya kembalikan lagi kepada excel untuk diolah kembali ke langkah selanjutnya

Brcurvefitting.png

dan setelah hasil curve fitting didapatkanlah rumus =0.00002338565+(X*0.004578001)-(X^2*4.554085). dan bentuk hasil data serta grafiknya seperti ini.

Brhasilcf.png