Difference between revisions of "Metnum03-Ahmad Farras"
Ahmad Farras (talk | contribs) |
Ahmad Farras (talk | contribs) |
||
(32 intermediate revisions by the same user not shown) | |||
Line 88: | Line 88: | ||
-kx2 + kx3=m3g .......(3) | -kx2 + kx3=m3g .......(3) | ||
− | + | ||
− | [[File: | + | |
+ | == Tugas 3 Metode Numerik == | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras15.JPG|centre|500px|center]] | ||
Hitung defleksi yang terjadi pada tiap elemen, dan gaya reaksinya! | Hitung defleksi yang terjadi pada tiap elemen, dan gaya reaksinya! | ||
Mengubah problem menjadi node dan elemen | Mengubah problem menjadi node dan elemen | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras29.JPG|centre|500px|center]] |
Asumsikan solusi yang mendekati sifat elemen | Asumsikan solusi yang mendekati sifat elemen | ||
Menentukan nilai konstanta kekakuan/stiffness constant dari elemen | Menentukan nilai konstanta kekakuan/stiffness constant dari elemen | ||
− | - Elemen 1,3,4,6 | + | - Elemen 1,2,3,4,5,6 |
− | [[File: | + | [[File:Openmodelicaahmadfarras16.JPG|centre|500px|center]] |
− | |||
− | |||
Membuat persamaan untuk elemen | Membuat persamaan untuk elemen | ||
Line 105: | Line 106: | ||
Karena orientasi elemen 1,3,6 searah dengan sumbu X global, maka koordinat local sejajar dengan koordinat global | Karena orientasi elemen 1,3,6 searah dengan sumbu X global, maka koordinat local sejajar dengan koordinat global | ||
Sehingga persamaan matrix umum untuk kekakuan batangnya adalah | Sehingga persamaan matrix umum untuk kekakuan batangnya adalah | ||
− | + | [[File:Openmodelicaahmadfarras17.JPG|centre|500px|center]] | |
[K] adalah matrix untuk kekakuan k, dan (e) adalah elemen yang akan dianalisa | [K] adalah matrix untuk kekakuan k, dan (e) adalah elemen yang akan dianalisa | ||
Lalu diaplikasikan pada elemen 1,3,6 | Lalu diaplikasikan pada elemen 1,3,6 | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras18.JPG|centre|500px|center]] |
Posisi di dalam matriks global untuk elemen 1,3,6 dengan θ=0° adalah | Posisi di dalam matriks global untuk elemen 1,3,6 dengan θ=0° adalah | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras19.JPG|centre|500px|center]] |
Analisis Elemen 4 | Analisis Elemen 4 | ||
Karena elemen 4 sejajar dengan sumbu Y global, maka θ=90° | Karena elemen 4 sejajar dengan sumbu Y global, maka θ=90° | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras20.JPG|centre|500px|center]] |
Posisi elemen 4 dalam matriks global adalah | Posisi elemen 4 dalam matriks global adalah | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras21.JPG|centre|500px|center]] |
Analisis Elemen 2,5 | Analisis Elemen 2,5 | ||
Untuk elemen 2 dan 5 memiliki sudut terhadap sumbu koordinat global, θ=135° | Untuk elemen 2 dan 5 memiliki sudut terhadap sumbu koordinat global, θ=135° | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras22.JPG|centre|500px|center]] |
Posisi elemen 2 dan 5 dalam matriks global adalah | Posisi elemen 2 dan 5 dalam matriks global adalah | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras23.JPG|centre|500px|center]] |
Menyusun dan menggabungkan matriks elemen-elemen | Menyusun dan menggabungkan matriks elemen-elemen | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras24.JPG|centre|500px|center]] |
Menerapkan kondisi batas dan beban | Menerapkan kondisi batas dan beban | ||
Pada kasus ini, kondisi batas untuk node 1 dan 3 adalah fixed maka untuk Ux1 Ux3 Uy1 Uy3 adalah 0 diakrenakan tidak ada defleksi yang terjadi pada kasus berikut, sehingga | Pada kasus ini, kondisi batas untuk node 1 dan 3 adalah fixed maka untuk Ux1 Ux3 Uy1 Uy3 adalah 0 diakrenakan tidak ada defleksi yang terjadi pada kasus berikut, sehingga | ||
Kondisi diatas menyatakan bahwa beban eksternal diberikan pada node 4 dan 5, sehingga | Kondisi diatas menyatakan bahwa beban eksternal diberikan pada node 4 dan 5, sehingga | ||
− | [[File: | + | menjadi matriks 6x6 sebagai berikut |
+ | [[File:Openmodelicaahmadfarras25.JPG|centre|500px|center]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
pada hasil diatas saya menggunakan openmodelica untuk mendapatkan hasil defleksi pada kolom 1,2,5,6 yang programnya sebagai berikut | pada hasil diatas saya menggunakan openmodelica untuk mendapatkan hasil defleksi pada kolom 1,2,5,6 yang programnya sebagai berikut | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras10.JPG|centre|500px|center]] |
+ | Dengan menggunakan function sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras11.JPG|centre|500px|center]] | ||
Setelah menggunakan modelica untuk mencari solusi, U,yaitu defleksi elemen yang ditinjau dari koordinat global didapatkan nilai sebagai berikut | Setelah menggunakan modelica untuk mencari solusi, U,yaitu defleksi elemen yang ditinjau dari koordinat global didapatkan nilai sebagai berikut | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras26.JPG|centre|500px|center]] |
Perlu diingat bahwa defleksi ini ditinjau dari koordinat global | Perlu diingat bahwa defleksi ini ditinjau dari koordinat global | ||
− | + | Untuk mendapatkan nilai Gaya Reaksi kita dapat menggunakan metode berikut: | |
− | Karena pada soal ingin mencari gaya reaksi, maka perlu dilakukan perhitungan pada gaya reaksi dengan persamaan | + | Karena pada soal ingin mencari gaya reaksi, maka perlu dilakukan perhitungan pada gaya reaksi dengan persamaan berikut |
Dengan menerapkan Matriks yang kita ketahui [K], {U} dan {F}, maka didapatkan | Dengan menerapkan Matriks yang kita ketahui [K], {U} dan {F}, maka didapatkan | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras27.JPG|centre|500px|center]] |
Pada permasalahan ini saya mencoba program dengan openmodelica berikut program yang saya buat. | Pada permasalahan ini saya mencoba program dengan openmodelica berikut program yang saya buat. | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras13.JPG|centre|500px|center]] |
Pada kasus ini jika kita memasukkan angka yang sudah dibulatkan pada buku akan menghasilkan angka sebagai berikut | Pada kasus ini jika kita memasukkan angka yang sudah dibulatkan pada buku akan menghasilkan angka sebagai berikut | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras12.JPG|centre|500px|center]] |
+ | Nilai yang ada pada buku sebagai berikut. | ||
+ | [[File:Openmodelicaahmadfarras28.JPG|centre|500px|center]] | ||
Jika kita menggunakan angka yang kita dapat pada program defleksi maka angkanya akan sebagai berikut: | Jika kita menggunakan angka yang kita dapat pada program defleksi maka angkanya akan sebagai berikut: | ||
− | [[File: | + | [[File:Openmodelicaahmadfarras30.JPG|centre|500px|center]] |
− | jadi dapat disimpulkan pembulatan pada metode numerik lebih baik dihindarkan untuk mendapatkan hasil yang lebih akurat | + | jadi dapat disimpulkan pembulatan pada metode numerik lebih baik dihindarkan untuk mendapatkan hasil yang lebih akurat sebagai berikut |
+ | [[File:Openmodelicaahmadfarras31.JPG|centre|500px|center]] | ||
+ | |||
+ | == Quiz 01 == | ||
+ | Berikut soal nomor 1 | ||
+ | [[File:Openmodelicaahmadfarras33.jpg|centre|500px|center]] | ||
+ | Berikut soal nomor 2 | ||
+ | [[File:Openmodelicaahmadfarras34.jpg|centre|500px|center]] | ||
+ | Berikut Flowchart penyelesaian dari nomor 1 dan 2 sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras32.jpg|centre|500px|center]] | ||
+ | Jawab | ||
+ | Untuk nomor 1 kita menulis diketahui sebagai berikut: | ||
+ | [[File:Openmodelicaahmadfarras55.jpg|centre|500px|center]] | ||
+ | untuk mencari K lokal saya mempunyai fungsi sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras37.jpg|centre|500px|center]] | ||
+ | dengan class sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras35.jpg|centre|500px|center]] | ||
+ | [[File:Openmodelicaahmadfarras36.jpg|centre|500px|center]] | ||
+ | Menghasilkan K lokal sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras40.jpg|centre|500px|center]] | ||
+ | [[File:Openmodelicaahmadfarras41.jpg|centre|500px|center]] | ||
+ | [[File:Openmodelicaahmadfarras42.jpg|centre|500px|center]] | ||
+ | Setalah itu Kita mencari Defleksi pada soal di atas sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras39.jpg|centre|500px|center]] | ||
+ | dengan menggynakan fungsi gauss jordan sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras38.jpg|centre|500px|center]] | ||
+ | menghasilkan defleksi sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras43.jpg|centre|500px|center]] | ||
+ | Setelah itu kita mencari reaction yang ada dengan cara sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras44.jpg|centre|500px|center]] | ||
+ | dengan hasil sebagai berikut : | ||
+ | [[File:Openmodelicaahmadfarras45.jpg|centre|500px|center]] | ||
+ | |||
+ | |||
+ | Untuk nomor 2 kita menulis diketahui sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras57.jpg|centre|500px|center]] | ||
+ | untuk mencari K lokal saya mempunyai fungsi sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras47.jpg|centre|500px|center]] | ||
+ | dengan class sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras46.jpg|centre|500px|center]] | ||
+ | Menghasilkan K lokal sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras48.jpg|centre|250px|center]][[File:Openmodelicaahmadfarras49.jpg|centre|250px|center]][[File:Openmodelicaahmadfarras50.jpg|centre|250px|center]] | ||
+ | Setalah itu Kita mencari Defleksi pada soal di atas sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras53.jpg|centre|500px|center]] | ||
+ | dengan menggynakan fungsi gauss jordan sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras56.jpg|centre|500px|center]] | ||
+ | menghasilkan defleksi sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras54.jpg|centre|500px|center]] | ||
+ | Setelah itu kita mencari reaction yang ada dengan cara sebagai berikut | ||
+ | [[File:Openmodelicaahmadfarras52.jpg|centre|500px|center]] | ||
+ | dengan hasil sebagai berikut : | ||
+ | [[File:Openmodelicaahmadfarras51.jpg|centre|500px|center]] | ||
+ | |||
+ | == Tugas 05 == | ||
+ | |||
+ | [[File:soal3.jpeg|centre|600px]] | ||
+ | Diketahui pada soal yang tergambar diatas,tahapan pertama kita harus mencari sudut cos x cos y cos z dan L pada gambar tersebut.Disini saya membuat class khusus untuk mendapatkan nilai - nilai yang dicari diatas untuk mengurangi kesalahan perhitungan secara manual dengan class sebagai berikut | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras58.jpg|centre|500px|center]] | ||
+ | [[File:Openmodelicaahmadfarras59.jpg|centre|500px|center]] | ||
+ | |||
+ | dan mendapatkan hasil sebagai berikut: | ||
+ | Berikut ialah untuk L setiap batangnya | ||
+ | [[File:Openmodelicaahmadfarras60.jpg|centre|500px|center]] | ||
+ | Berikut ialah cos x,y,z yang dibutuhkan : | ||
+ | [[File:Openmodelicaahmadfarras61.jpg|centre|500px|center]] | ||
+ | setelah itu saya menggunakan class dan function yang diajarkan oleh ahmad muhammad fahmi yaitu 1 class dengan 6 fungsi pembantunya,berikut ialah class yang dibuat : | ||
+ | [[File:Openmodelicaahmadfarras62.jpg|centre|500px|center]] | ||
+ | Pada soal ini boundarynya sangat berbeda dikarenakan setiap batangnya ada yang dapat menjadi fix di sumbu xyz,xy,dan x | ||
+ | setelah itu tahap kedua ialah kita mencari K lokal di setiap elmentnya dengan fungsi berikut: | ||
+ | [[File:Openmodelicaahmadfarras63.jpg|centre|500px|center]] | ||
+ | Setelah mendapatkan K lokal sebagai variabel baru kita harus menempatkan K lokal ke K global agar nantinya bisa di satukan menjadi K global total dengan fungsi sebagai berikut: | ||
+ | [[File:Openmodelicaahmadfarras64.jpg|centre|500px|center]] | ||
+ | yang dimana pada fungsi ini menghasilkan KG1,KG2,KG3,KG4,KG5 dan KG6 | ||
+ | dapat dilihat pada hasil ditandai oleh kg yang dimana (melambangkan elment berapa,baris keberapa,kolom keberapa) | ||
+ | Setelah itu kita menjumlahkan KG1 sampai KG6 dengan fungsi sebagai berikut: | ||
+ | [[File:Openmodelicaahmadfarras65.jpg|centre|500px|center]] | ||
+ | setelah itu kita mendapatkan KG total yang digunakan untuk mencari displacement dan Reaction force dari gambar diatas,tetapi sebelum memasukkan kesana kita harus memberi batasan yang dimana pada soal ini pada node 1 sumbu XYZ = 0,pada node 4 XY = 0 dan pada node 3 X = 0 tetapi saya menggunakan fungsi yang diberikan oleh ahmad muhammad fahmi untuk mengerjakan soal nomor 8 yang dimana dianggap pada node 1,3,4 ialah 0,berikut fungsinya: | ||
+ | [[File:Openmodelicaahmadfarras66.jpg|centre|500px|center]] | ||
+ | Lalu hasil dari KG total yang diberi boundary dimasukkan ke persamaan gauss jordan yang dimana function dari gauss jordan menggunakan function bawaan dari open modelica sebagai berikut. | ||
+ | [[File:Openmodelicaahmadfarras67.jpg|centre|500px|center]] | ||
+ | berikut ialah hasilnya. | ||
+ | [[File:Openmodelicaahmadfarras68.jpg|centre|500px|center]] | ||
+ | == Tugas Besar Metode Numerik == | ||
+ | |||
+ | '''Objektif:''' | ||
+ | |||
+ | - Mengoptimasi harga pembuatan rangka truss sederhana dengan memvariasi dimensi dan elastisitas material. | ||
+ | |||
+ | |||
+ | '''Geometri dan Load''' | ||
+ | |||
+ | [[File:Tugas Besar Metnum Geometri Jos.jpg|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) | ||
+ | -sumber data :https://harga.web.id/info-harga-besi-siku-per-kg-dan-per-batang-di-pasaran.info | ||
+ | https://mitarcahyaabadai.wordpress.com/daftar-harga-besi-siku-2018/ | ||
+ | |||
+ | Pertama kita mengasumsikan elastisitas konstan maka dapat disimpulkan bahwa materialnya sama tetapi dengan menvariasikan ukuran dari material yang diasumsikan,setelah itu mencari stress yang terjadi pada material yang kita asumsikan dengan menggunakan program berikut | ||
+ | |||
+ | ---- | ||
+ | *Untuk perhitungan displacement, reaction force, dan stress | ||
+ | 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=215e6; //Yield Strength (Pa) | ||
+ | parameter Real Area=0.000224; //Area L Profile (Dimension=0.03, Thickness=0,004) (m2) | ||
+ | parameter Real Elas=193e9; //Elasticity SS 304 (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-4; | ||
+ | |||
+ | 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; | ||
+ | |||
+ | |||
+ | |||
+ | lalu membuat excel yang berisikan tentang data material yang akan digunakann dan harga dari material tersebut: | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras74.jpg|centre|1000px|center]] | ||
+ | |||
+ | untuk mendapatkan curve fitting kami diajarkan oleh josiah ahmad dan cristo untuk menggunakan fungsi berikut dengan class yang kami buat sendiri yang dimana sumbu x ialah area dan y adalah harga per kg dari batang tersebut.Disini kami mengasumsikan Elastisitas yang konstan | ||
+ | ---- | ||
+ | *Untuk perhitungan curve fitting dengan model berikut : | ||
+ | model CurveFitting | ||
+ | |||
+ | parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area | ||
+ | parameter Real Y[6]={7702,7833,7664,7708,7927,7805}; // harga per kg | ||
+ | |||
+ | Real Coe[3]; | ||
+ | |||
+ | algorithm | ||
+ | Coe:=Curve_Fitting(X,Y,2); | ||
+ | |||
+ | end CurveFitting; | ||
+ | model CurveFitting | ||
+ | |||
+ | dan curve fitting di rasio dan area dengan pemodelan berikut | ||
+ | |||
+ | //model CurveFitting | ||
+ | |||
+ | parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area | ||
+ | parameter Real Y[6]={7702,7833,7664,7708,7927,7805}; // ratio | ||
+ | |||
+ | Real Coe[3]; | ||
+ | |||
+ | algorithm | ||
+ | Coe:=Curve_Fitting(X,Y,2); | ||
+ | |||
+ | end CurveFitting; | ||
+ | |||
+ | |||
+ | lalu optimasi dengan golden rasio dengan program yang diajarkan oleh fahmi cristo dan josiah sebagai berikut | ||
+ | |||
+ | model optgold | ||
+ | parameter Real y [3]={1.06393e-24,-4.20893e-13,0.0416299}; | ||
+ | parameter Real xlo=190e9; | ||
+ | parameter Real xhi=201e9; | ||
+ | parameter Integer N=10; // maximum iteration | ||
+ | parameter Real es=0.0001; // maximum error | ||
+ | |||
+ | Real f1[N], f2[N], x1[N], x2[N], ea[N]; | ||
+ | Real xopt, fx; | ||
+ | protected | ||
+ | Real d, xl, xu, xint, R=(5^(1/2)-1)/2; | ||
+ | |||
+ | algorithm | ||
+ | xl := xlo; | ||
+ | xu := xhi; | ||
+ | |||
+ | 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 optgold; | ||
+ | |||
+ | dari material lock menghasilkan xopt sebagai berikut: | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras75.jpg|centre|1000px|center]] | ||
+ | |||
+ | maka dari hasil diatas yang paling optimal dari area ialah 20 x 20 x 3 mm | ||
+ | |||
+ | Pada excel yang kedua kita mengasumsikan dengan area yang sudah di optimasi sebesar 20 x 20 x 3 mm kita dapat mengasumsikan elastisitas dari material material yang kita pilih,disini saya menggunakan 3 material sebagai pembanding dalam perhitungan tersebut,berikut ialah excel area fix yang dibuat. | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras76.jpg|centre|1000px|center]] | ||
+ | |||
+ | untuk perhitungan curve fitting di cost/kg,density dibandingkan dengan variabel bebas elastisitas dengan program berikut | ||
+ | |||
+ | //model CurveFitting | ||
+ | |||
+ | parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area | ||
+ | parameter Real Y[6]={7702,7833,7664,7708,7927,7805}; // ratio | ||
+ | |||
+ | Real Coe[3]; | ||
+ | |||
+ | algorithm | ||
+ | Coe:=Curve_Fitting(X,Y,2); | ||
+ | |||
+ | end CurveFitting; | ||
+ | |||
+ | lalu setelah mendapatkan curve fitting dari elastisitas dengan ratio kita dapat optimasi dengan golden rasio dengan program yang diajarkan oleh fahmi cristo dan josiah sebagai berikut: | ||
+ | |||
+ | model optgold | ||
+ | parameter Real y [3]={1.06393e-24,-4.20893e-13,0.0416299}; | ||
+ | parameter Real xlo=190e9; | ||
+ | parameter Real xhi=201e9; | ||
+ | parameter Integer N=10; // maximum iteration | ||
+ | parameter Real es=0.0001; // maximum error | ||
+ | |||
+ | Real f1[N], f2[N], x1[N], x2[N], ea[N]; | ||
+ | Real xopt, fx; | ||
+ | protected | ||
+ | Real d, xl, xu, xint, R=(5^(1/2)-1)/2; | ||
+ | |||
+ | algorithm | ||
+ | xl := xlo; | ||
+ | xu := xhi; | ||
+ | |||
+ | 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 optgold; | ||
+ | |||
+ | dari hasil optimasi didapatkan hasil sebagai berikut | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras77.jpg|centre|1000px|center]] | ||
+ | |||
+ | maka dari hasil diatas yang paling optimal dari material yang dapat digunakan ialah ss400 | ||
+ | |||
+ | |||
+ | == UAS Metode Numerik == | ||
+ | |||
+ | '''nomor 1''' | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras78.jpeg|centre|1000px|center]] | ||
+ | |||
+ | '''nomor 2''' | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras79.jpeg|centre|1000px|center]] | ||
+ | |||
+ | '''nomor 3''' | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras80.jpeg|centre|1000px|center]] | ||
+ | |||
+ | '''nomor 4''' | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras81.jpeg|centre|1000px|center]] | ||
+ | |||
+ | '''nomor 5 6 7''' | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras82.jpeg|centre|1000px|center]] | ||
+ | |||
+ | [[File:Openmodelicaahmadfarras100.jpg|centre|1000px|center]] |
Latest revision as of 20:31, 14 January 2021
Assalamualaikum wrwb
Nama Ahmad Farras NPM 1906435435
Contents
Pertemuan pertama 9 November 2020
Disini Bapak Indra memberi tugas untuk membuat open modelica dengan materi yang sudah dipelajari sebelum UTS Berikut video yang terkait yang telah saya buat
https://www.youtube.com/watch?v=XSdRoteD3d4
Pertemuan Kedua 16 November 2020
Pada pertemua ini Bapak Indra memberi tugas untuk membuat suatu program sederhana yang dimana program tersebut di koding pada openmodelica,Berikut ialah penjelasan menggunakan openmodelica untuk mencari mean pada suatu data:
1.Menginput data,nilai yang dicari dan equation yang digunakan
Disini kita menginput data data yang dibutuhkan pada persoalan ini saya mengambil sampel 21 data.Hal tersebut kita masukan ke parameter real seperti gambar diatas.Parameter real digunakan untuk memberi informasi data yang diketahui.Setelah itu menulis "real" untuk angka yang dicari.Setelah data yang diketahui dan ditanyakan sudah dilakukan maka kita langsung menulis equation yang dimana equation pada data ini ialah
xbar=(x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20+x21)/n;
2.Mengecek dari program yang kita buat
Pada step ini kita mengecek apakah program kita apakah sudah bisa disimulasi atau tidak bisa disimulasi
3.Jika bisa maka langsung mengeklik tombol "simulate"
4.Berikut hasil dari nilai rata rata dari data yang saya buat
Tugas 2
Persamaan aljabar simultan tersebut dapat diselesaikan dengan matematik secara umum seperti Gauss Elimination, atau menggunakan metode lain seperti Gauss Elimination yang melibatkan matriks,atau Gauss Seidel.Pada persoalan dibawah ini saya akan menggunakan metode Gauss Elimination untuk menyelesaikan persamaan berikut.
10x1 - x2 +2x3=6
-x1+11x2-x3+3x4=25
2x1-x2+10x3-x4=-11
3x2-x3+8x4=15
Gauss Elimination adalah algoritme yang digunakan untuk menyelesaikan persamaan linear. Metode ini melibatkan perubahan bentuk sistem persamaan menjadi bentuk matriks. Setelah mengubah sistem dalam bentuk matriks,dilakukan pengurangan baris dengan mengganti posisi baris, dan/atau melakukan operasi penjumlahan dan pengurangan antar baris.
Pada aplikasi OpenModelica terdapat model untuk menyelesaikan permasalahan aljabar simultan dengan menggunakan metode Gauss Elimination.Berikut ialah model yang saya buat dengan software OpenModelica:
Saya menggunakan perintah yang ada di library modelica yaitu "Modelica.Math.Matrices.solve(A,b)" untuk menyelesaikan sistem persamaan linier eliminasi gauss yang ada diatas.Setelah melakukan pengecekan dan melakukan simulasi terhadap model yang telah saya buat,selanjutnya melakukan plotting terhadap hasil simulasi tersebut. Berikut adalah hasil plotting dari simulasi persamaan diatas:
hasil X yang dihasilkan dari penyelesaian persamaan diatas ialah (1,-2,1,1)
Pertemuan ketiga 23 November 2020
Pada perkuliahan ini Pak dai meyuruh kita mencoba untuk menghitung sistem spring berikut
Untuk penjabaran gaya-gaya yang bekerja pada masing-masing massa adalah sebagai berikut
Selanjutnya untuk massa 1=
1.) Subjek Massa 1
2K(x2-x1)-Kx1+m1g= m d^2 x1/dt^2 dikarenakan tidak adanya percepatan pada sistem maka m d^2 x1/dt^2 =0
3kx1 - 2kx2=m1g ......(1)
2.) Subjek Massa 2
k(x3-x2) - (2k(x2-x1))+m2g=0
-kx3 + 3kx2-2kx1=m2g ......(2)
3.) Subjek Massa 3
-k(x3-x2) +m3g=0
-kx2 + kx3=m3g .......(3)
Tugas 3 Metode Numerik
Hitung defleksi yang terjadi pada tiap elemen, dan gaya reaksinya!
Mengubah problem menjadi node dan elemen
Asumsikan solusi yang mendekati sifat elemen Menentukan nilai konstanta kekakuan/stiffness constant dari elemen - Elemen 1,2,3,4,5,6
Membuat persamaan untuk elemen Analisis Elemen 1,3,6 Karena orientasi elemen 1,3,6 searah dengan sumbu X global, maka koordinat local sejajar dengan koordinat global Sehingga persamaan matrix umum untuk kekakuan batangnya adalah
[K] adalah matrix untuk kekakuan k, dan (e) adalah elemen yang akan dianalisa
Lalu diaplikasikan pada elemen 1,3,6
Posisi di dalam matriks global untuk elemen 1,3,6 dengan θ=0° adalah
Analisis Elemen 4 Karena elemen 4 sejajar dengan sumbu Y global, maka θ=90°
Posisi elemen 4 dalam matriks global adalah
Analisis Elemen 2,5 Untuk elemen 2 dan 5 memiliki sudut terhadap sumbu koordinat global, θ=135°
Posisi elemen 2 dan 5 dalam matriks global adalah
Menyusun dan menggabungkan matriks elemen-elemen
Menerapkan kondisi batas dan beban Pada kasus ini, kondisi batas untuk node 1 dan 3 adalah fixed maka untuk Ux1 Ux3 Uy1 Uy3 adalah 0 diakrenakan tidak ada defleksi yang terjadi pada kasus berikut, sehingga Kondisi diatas menyatakan bahwa beban eksternal diberikan pada node 4 dan 5, sehingga
menjadi matriks 6x6 sebagai berikut
pada hasil diatas saya menggunakan openmodelica untuk mendapatkan hasil defleksi pada kolom 1,2,5,6 yang programnya sebagai berikut
Dengan menggunakan function sebagai berikut
Setelah menggunakan modelica untuk mencari solusi, U,yaitu defleksi elemen yang ditinjau dari koordinat global didapatkan nilai sebagai berikut
Perlu diingat bahwa defleksi ini ditinjau dari koordinat global
Untuk mendapatkan nilai Gaya Reaksi kita dapat menggunakan metode berikut:
Karena pada soal ingin mencari gaya reaksi, maka perlu dilakukan perhitungan pada gaya reaksi dengan persamaan berikut
Dengan menerapkan Matriks yang kita ketahui [K], {U} dan {F}, maka didapatkan
Pada permasalahan ini saya mencoba program dengan openmodelica berikut program yang saya buat.
Pada kasus ini jika kita memasukkan angka yang sudah dibulatkan pada buku akan menghasilkan angka sebagai berikut
Nilai yang ada pada buku sebagai berikut.
Jika kita menggunakan angka yang kita dapat pada program defleksi maka angkanya akan sebagai berikut:
jadi dapat disimpulkan pembulatan pada metode numerik lebih baik dihindarkan untuk mendapatkan hasil yang lebih akurat sebagai berikut
Quiz 01
Berikut soal nomor 1
Berikut soal nomor 2
Berikut Flowchart penyelesaian dari nomor 1 dan 2 sebagai berikut
Jawab Untuk nomor 1 kita menulis diketahui sebagai berikut:
untuk mencari K lokal saya mempunyai fungsi sebagai berikut
dengan class sebagai berikut
Menghasilkan K lokal sebagai berikut
Setalah itu Kita mencari Defleksi pada soal di atas sebagai berikut
dengan menggynakan fungsi gauss jordan sebagai berikut
menghasilkan defleksi sebagai berikut
Setelah itu kita mencari reaction yang ada dengan cara sebagai berikut
dengan hasil sebagai berikut :
Untuk nomor 2 kita menulis diketahui sebagai berikut
untuk mencari K lokal saya mempunyai fungsi sebagai berikut
dengan class sebagai berikut
Menghasilkan K lokal sebagai berikut
Setalah itu Kita mencari Defleksi pada soal di atas sebagai berikut
dengan menggynakan fungsi gauss jordan sebagai berikut
menghasilkan defleksi sebagai berikut
Setelah itu kita mencari reaction yang ada dengan cara sebagai berikut
dengan hasil sebagai berikut :
Tugas 05
Diketahui pada soal yang tergambar diatas,tahapan pertama kita harus mencari sudut cos x cos y cos z dan L pada gambar tersebut.Disini saya membuat class khusus untuk mendapatkan nilai - nilai yang dicari diatas untuk mengurangi kesalahan perhitungan secara manual dengan class sebagai berikut
dan mendapatkan hasil sebagai berikut: Berikut ialah untuk L setiap batangnya
Berikut ialah cos x,y,z yang dibutuhkan :
setelah itu saya menggunakan class dan function yang diajarkan oleh ahmad muhammad fahmi yaitu 1 class dengan 6 fungsi pembantunya,berikut ialah class yang dibuat :
Pada soal ini boundarynya sangat berbeda dikarenakan setiap batangnya ada yang dapat menjadi fix di sumbu xyz,xy,dan x setelah itu tahap kedua ialah kita mencari K lokal di setiap elmentnya dengan fungsi berikut:
Setelah mendapatkan K lokal sebagai variabel baru kita harus menempatkan K lokal ke K global agar nantinya bisa di satukan menjadi K global total dengan fungsi sebagai berikut:
yang dimana pada fungsi ini menghasilkan KG1,KG2,KG3,KG4,KG5 dan KG6 dapat dilihat pada hasil ditandai oleh kg yang dimana (melambangkan elment berapa,baris keberapa,kolom keberapa) Setelah itu kita menjumlahkan KG1 sampai KG6 dengan fungsi sebagai berikut:
setelah itu kita mendapatkan KG total yang digunakan untuk mencari displacement dan Reaction force dari gambar diatas,tetapi sebelum memasukkan kesana kita harus memberi batasan yang dimana pada soal ini pada node 1 sumbu XYZ = 0,pada node 4 XY = 0 dan pada node 3 X = 0 tetapi saya menggunakan fungsi yang diberikan oleh ahmad muhammad fahmi untuk mengerjakan soal nomor 8 yang dimana dianggap pada node 1,3,4 ialah 0,berikut fungsinya:
Lalu hasil dari KG total yang diberi boundary dimasukkan ke persamaan gauss jordan yang dimana function dari gauss jordan menggunakan function bawaan dari open modelica sebagai berikut.
berikut ialah hasilnya.
Tugas Besar Metode Numerik
Objektif:
- Mengoptimasi harga pembuatan rangka truss sederhana dengan memvariasi dimensi dan elastisitas material.
Geometri dan Load
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) -sumber data :https://harga.web.id/info-harga-besi-siku-per-kg-dan-per-batang-di-pasaran.info
https://mitarcahyaabadai.wordpress.com/daftar-harga-besi-siku-2018/
Pertama kita mengasumsikan elastisitas konstan maka dapat disimpulkan bahwa materialnya sama tetapi dengan menvariasikan ukuran dari material yang diasumsikan,setelah itu mencari stress yang terjadi pada material yang kita asumsikan dengan menggunakan program berikut
- Untuk perhitungan displacement, reaction force, dan stress
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=215e6; //Yield Strength (Pa) parameter Real Area=0.000224; //Area L Profile (Dimension=0.03, Thickness=0,004) (m2) parameter Real Elas=193e9; //Elasticity SS 304 (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-4; 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;
lalu membuat excel yang berisikan tentang data material yang akan digunakann dan harga dari material tersebut:
untuk mendapatkan curve fitting kami diajarkan oleh josiah ahmad dan cristo untuk menggunakan fungsi berikut dengan class yang kami buat sendiri yang dimana sumbu x ialah area dan y adalah harga per kg dari batang tersebut.Disini kami mengasumsikan Elastisitas yang konstan
- Untuk perhitungan curve fitting dengan model berikut :
model CurveFitting
parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area parameter Real Y[6]={7702,7833,7664,7708,7927,7805}; // harga per kg
Real Coe[3];
algorithm Coe:=Curve_Fitting(X,Y,2);
end CurveFitting; model CurveFitting
dan curve fitting di rasio dan area dengan pemodelan berikut
//model CurveFitting
parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area parameter Real Y[6]={7702,7833,7664,7708,7927,7805}; // ratio
Real Coe[3];
algorithm Coe:=Curve_Fitting(X,Y,2);
end CurveFitting;
lalu optimasi dengan golden rasio dengan program yang diajarkan oleh fahmi cristo dan josiah sebagai berikut
model optgold parameter Real y [3]={1.06393e-24,-4.20893e-13,0.0416299}; parameter Real xlo=190e9; parameter Real xhi=201e9; parameter Integer N=10; // maximum iteration parameter Real es=0.0001; // maximum error
Real f1[N], f2[N], x1[N], x2[N], ea[N]; Real xopt, fx; protected Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
algorithm xl := xlo; xu := xhi; 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 optgold;
dari material lock menghasilkan xopt sebagai berikut:
maka dari hasil diatas yang paling optimal dari area ialah 20 x 20 x 3 mm
Pada excel yang kedua kita mengasumsikan dengan area yang sudah di optimasi sebesar 20 x 20 x 3 mm kita dapat mengasumsikan elastisitas dari material material yang kita pilih,disini saya menggunakan 3 material sebagai pembanding dalam perhitungan tersebut,berikut ialah excel area fix yang dibuat.
untuk perhitungan curve fitting di cost/kg,density dibandingkan dengan variabel bebas elastisitas dengan program berikut
//model CurveFitting
parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area parameter Real Y[6]={7702,7833,7664,7708,7927,7805}; // ratio
Real Coe[3];
algorithm Coe:=Curve_Fitting(X,Y,2);
end CurveFitting;
lalu setelah mendapatkan curve fitting dari elastisitas dengan ratio kita dapat optimasi dengan golden rasio dengan program yang diajarkan oleh fahmi cristo dan josiah sebagai berikut:
model optgold parameter Real y [3]={1.06393e-24,-4.20893e-13,0.0416299}; parameter Real xlo=190e9; parameter Real xhi=201e9; parameter Integer N=10; // maximum iteration parameter Real es=0.0001; // maximum error
Real f1[N], f2[N], x1[N], x2[N], ea[N]; Real xopt, fx; protected Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
algorithm xl := xlo; xu := xhi; 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 optgold;
dari hasil optimasi didapatkan hasil sebagai berikut
maka dari hasil diatas yang paling optimal dari material yang dapat digunakan ialah ss400
UAS Metode Numerik
nomor 1
nomor 2
nomor 3
nomor 4
nomor 5 6 7