Difference between revisions of "Metnum03-Dendy Dwi Rohma P J"
(→Pertemuan 4) |
(→Jawaban UAS) |
||
(26 intermediate revisions by the same user not shown) | |||
Line 185: | Line 185: | ||
==='''Quiz_1_Truss3D'''=== | ==='''Quiz_1_Truss3D'''=== | ||
+ | |||
+ | [[File:1_FBD_3D_DendyDwi.jpg]] | ||
+ | |||
+ | [[File:2_FBD_3D_DendyDwi.jpg]] | ||
+ | |||
+ | [[File:3_Element1_3D_Dendy.jpg]] | ||
+ | |||
+ | [[File:4_Element2_3D_Dendy.jpg]] | ||
+ | |||
+ | [[File:5_Element3_3D_Dendy.jpg]] | ||
+ | |||
+ | = Pertemuan 5 = | ||
+ | =='''Tugas Metode Numerik'''== | ||
+ | |||
+ | [[File:Soal3D.jpeg|400px|center]] | ||
+ | |||
+ | [[File:1 Class.jpg|600px|center]] | ||
+ | |||
+ | [[File:2 U.jpg|300px|center]] | ||
+ | |||
+ | [[File:3 R.jpg|300px|center]] | ||
+ | |||
+ | [[File:4 F.jpg|300px|center]] | ||
+ | |||
+ | = Tugas Besar = | ||
+ | |||
+ | '''Soal''' | ||
+ | |||
+ | -Temukan Cost sebagai dengan variasi area dan material | ||
+ | |||
+ | '''Geometri Pemodelan dan Load''' | ||
+ | |||
+ | [[File:1-Soal-Tubes.jpg|300px|center]] | ||
+ | |||
+ | '''Diketahui''' | ||
+ | |||
+ | - 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) | ||
+ | |||
+ | [[File:Langkah Pengerjaan.jpg|500px|center]] | ||
+ | |||
+ | {| 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; | ||
+ | |||
+ | |} | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | | style='border-style: none none solid solid;' | | ||
+ | ''Optimasi Gold Area'' | ||
+ | |||
+ | 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; | ||
+ | |||
+ | |} | ||
+ | |||
+ | [[File:Optimasi Gold Area.jpg]] | ||
+ | |||
+ | [[File:Material Lock Rev2.jpg]] | ||
+ | |||
+ | Nilai optimasi berdasarkan openmodelica pada Area Lock digunakan untuk menentukan penggunaan dimensi Siku L yang paling efisien berdasarkan asumsi penggunaan material simulasi (ASTM A36). Berdasarkan simulasi optimasi golden ratio openmodelica didapatkan luasan area paling efektif adalah 0.00030343. Apabila dicocokan dengan dimensi material yang dipilih maka didaptkankan area 0.00030343m^2 akan sama dengan dimensi siku L 40x40x4 mm. | ||
+ | |||
+ | Kesimpulannya berdasarkan optimasi golden rasio menggunakan openmodelica didapatkan dimensi material yang paling effisien adalah 40x40x4mm lalu kemudian dilakukan pemilihan material dengan mengguanakan optimasi golden ratio. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | | style='border-style: none none solid solid;' | | ||
+ | ''Optimasi Gold Material'' | ||
+ | |||
+ | model Opt_Gold_Mat | ||
+ | |||
+ | 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; | ||
+ | |||
+ | end Opt_Gold_Mat; | ||
+ | |||
+ | |} | ||
+ | |||
+ | [[File:Optimasi Gold Material.jpg]] | ||
+ | |||
+ | [[File:Area Lock Rev2.jpg]] | ||
+ | |||
+ | Nilai optimasi E didapatkan berdasarkan simulasi menggunakan openmodelica adalah E = 196.987GPa. Kemudian nilai E ini digunakan untuk mencocokan 3 material yang sudah kita pilih (SS400, SS304, dan SS316). Nilai E optimasi dicocokan dengan nilai E material dipasaran yang kita pilih. | ||
+ | |||
+ | Kesimpulan berdasarkan optimasi dengan golden ratio didapatkan material yang paling efisien (low cost) dalam rancangan rak adalah SS304 dengan dimensi (40x40x4 mm). | ||
+ | |||
+ | |||
+ | = '''UAS''' = | ||
+ | |||
+ | ==Jawaban UAS== | ||
+ | |||
+ | [[File:Jawaban_UAS03_1.jpg|600px|center]] | ||
+ | |||
+ | [[File:Jawaban_UAS03_2.jpg|600px|center]] | ||
+ | |||
+ | [[File:Jawaban_UAS03_3.jpg|600px|center]] | ||
+ | |||
+ | [[File:Jawaban_UAS03_4.jpg|600px|center]] | ||
+ | |||
+ | [[File:Jawaban_UAS03_5.jpg|center]] |
Latest revision as of 02:39, 14 January 2021
Assalamualaikum Warahmatullahi Wabarakatuh
Nama:Dendy Dwi Rohma P J
NPM: 1906435473
Pertemuan 1
1. Tugas_01_MetodeNumerik03
Dalam mencari nilai suatu akar dari suatu persamaan atau permasalahan yang ada, berbagai macam cara dan metode, berikut ini bermacam-macam metode yang dapat kita gunakan dalam mencari nilai suatu akar persamaan :
1. Metode Bagi dua (Bisection)
2. Metode False Position
3. Metode Secant
4. Metode Iterasi Titik Tetap
5. Metode Newton Raphson
Dalam kesempatan kali ini saya akan membahas tentang metode secant.
Pengertian Metode Secant
Metode secant merupakan perbaikan dari metode regula-falsi dan newton raphson dimana kemiringan dua titik dinyatakan sacara diskrit, dengan mengambil bentuk garis lurus yang melalui satu titik.Tujuan dan Fungsi Tujuan metode secant adalah untuk menyelesaikan masalah yang terdapat pada metode Newton-Raphson yang terkadang sulit mendapatkan turunan pertama yaitu f'(x). Fungsi metode secant adalah untuk menaksirkan akar dengan menggunakan diferensi daripada turunan untuk memperkirakan kemiringan/slope.
Algoritma Metode Secant 1. Definisikan fungsi F(x) 2. Definisikan torelansi error (e) dan iterasi maksimum (n) 3. Masukkan dua nilai pendekatan awal yang di antaranya terdapat akar yaitu x0 dan x1,sebaiknya gunakan metode tabel atau grafis untuk menjamin titik pendakatannya adalah titik pendekatan yang konvergensinya pada akar persamaan yang diharapkan.
SOAL 1
Cari Akar Persamaan dari Persamaan f(x) dengan Metode Secant Method pada Literasi ke 4? f(x) = 3x^3 -x -1
Asumsi:
x0 = -1 x = 1
Penjelasan menganai pemrograman Secant Method menggunakan OpenModelica terlampir dalam Link dibawah ini:
Link Youtube : https://www.youtube.com/watch?v=Bk_QtrInpks
Pertemuan 2
Melakukan latihan mencari nilai mean dari persamaan dan data sederhana.
PR Eliminasi Gauss
Pertemuan 3
3. Tugas_03_MetodeNumerik03
MASS SPRING ANALYSIS MATRIX
TRUSS ANALYSIS MATRIX
Tugas kali ini disuruh mencari nilai defleksi/dX/U pada suatu truss yang disusun dan dikenai pembebanan dan tumpuan seperti pada soal dibawah ini. Lalu kemudian setelah kita menemukan nilai U lalu digunakan untuk mencari reaksi gaya (R) pada setiap elemen truss.
Berdasarkan susunan truss diatas, kita harus mampu menjabarkan setiap beam/ truss menjadi notasi element, tumpuan menjadi notasi node dan sudut element terhadap garis refrensi yg kita pilih (saya menggunakan X positif sbg sb.0 deg). Lalu setelah dilakukan penjabaran berdasarkan element, node dan sudut didapatkan Tabel 2.1 sebagai hubungannya.
Setelah itu dilakukan perkalian untuk mencari nilai kekakuan setiap truss/ element dengan rumus k=A.E/L. Namun sebelumnya dilakukan pengelompokan berdasarkan panjang batang/truss lalu didapatkan batang dengan panjang yang sama (1,3,4,6) dan batang (2,5). Namun untuk mendapatkan nilai K lokal nilai k(kekakuan) harus terlebih dahulu dikalikan dengan rumus K lokal dalam bentuk matrix 4x4.
Nah rumus K^e atau K lokal menurut pemahaman saya dapat berbeda-beda tergantung dengan susunan dari truss (sudut yang terbentuk dari sb. refrensi yang kita gunakan) atau batang dan tumpuan yang kita gunakan. Lalu untuk nilai k (kekakuan) hanya dipengaruhi dari cross section area (A), elastisitas (E) dan panjang batang (L)
Analisa Batang 4
Analisa batang pada contoh soal ini jg dapat dikelompokan berdasarkan panjang batangnya. Jadi untuk analisa pertama batang (1,3,4,6) dan batang (2 dan 5). Pada batang (1,3,dan 6) memiliki sudut refrensi yang sama yaitu 0 derajat, namun ketiga element ini memiliki node yang berbeda sehingga akan berpengaruh pada peletakan hasil matrix 4x4 pada matrix global (K^G) 10x10.
Pada gambar dibawah ini hasil K^e (K lokal) dimasukan ke dalam matrix 10x10 K^G berdasarkan node arah sb. X dan sb. Y.
Analisa Batang 2
Kemudian dilakukan analisa batang (2 dan 5) dengan cara yang sama seperti gambar diatas dengan mengunakan rumus matrix K (4x4). Namun pada element 2 dan 5 hanya berbeda pada penggunaan sudut berdasarkan sumbu refrensi (element 2 : 135deg, element 5 : 45deg).
Pada gambar dibawah ini hasil K^e (K lokal) dimasukan ke dalam matrix 10x10 K^G berdasarkan node arah sb. X dan sb. Y.
Analisa Batang 5
Kemudian dilakukan penjumlahan matrik tersebut menjadi matrik global.
Didapatkan hasil penjumlahan matrik lokal tersebut menjadi matrik global dengan jumlah 10x10.
Kemudian dilakukan batasan masalah seperti ada atau tidaknya fix point pada suatu susunan model truss. Berdasarkan soal didapatkan pada node 1 dan 3 adalah nilai U adalah 0 (U1x, U1y, U3x, U3y). Karena apabila tidak dilakukan permisalan maka susunan trus akan berotasi bila dikenai gaya.
Berdasarkan rumus F=K.dX (F=K.U) kita disuruh untuk mencari nilai U pada tiap node berdasarkan sb. x dan sb. y. Maka untuk mencarinya kita dapat memanggil fungsi solve (A.x=B) untuk mencari nilai x atau U. Dengan memasukan koding 6x6 dibawah ini akan didapatkan nilai U pada node (2,4,5) berdasarkan sb.x dan sb.y.
Didapatkan nilai U adalah sama seperti contoh dibuku.
Analisa Reaksi Gaya pada Setiap Node
Pada analisa ini kita harus menuliskan kembali hasil perhitungan sebelumnya U kedalam parameter matriknya. Rumus reaksi adalah R = [K]^G.{U}-{F}. Dapat dikatakan bahwa R adalah reaksi yang terjadi pada setiap node dengan arah sb.x dan sb.y. Dengan metode matrik ini iibaratnya seperti perhitungan manual (FBD) gaya-gaya yang terjadi pada setiap titik tumpuan berdasarkan arah sumbu kerja (2D yaitu x,y).
Pada U semua node, didaptkan bahwa nilai pada node 1 dan 3 adalah tetap 0 pada matix K^G untuk mencari nilai R seperti dibawah ini.
Untuk programnya hanya perlu mengalikan fungsi R=(K*U)-F seperti biasa. Tidak perlu memanggil program solve (gauss).
Kemudian untuk reaksi gayanya didapatkan nilai seperti ploting dibawah ini, dan dilakukan pembulatan pada node (3,4,5) karena nilai gayanya sangat kecil.
Pertemuan 4
Quiz_1_MetodeNumerik03
Quiz_1_Truss2D
Quiz_1_Truss3D
Pertemuan 5
Tugas Metode Numerik
Tugas Besar
Soal
-Temukan Cost sebagai dengan variasi area dan material
Geometri Pemodelan dan Load
Diketahui
- 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)
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; |
Optimasi Gold Area 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; |
Nilai optimasi berdasarkan openmodelica pada Area Lock digunakan untuk menentukan penggunaan dimensi Siku L yang paling efisien berdasarkan asumsi penggunaan material simulasi (ASTM A36). Berdasarkan simulasi optimasi golden ratio openmodelica didapatkan luasan area paling efektif adalah 0.00030343. Apabila dicocokan dengan dimensi material yang dipilih maka didaptkankan area 0.00030343m^2 akan sama dengan dimensi siku L 40x40x4 mm.
Kesimpulannya berdasarkan optimasi golden rasio menggunakan openmodelica didapatkan dimensi material yang paling effisien adalah 40x40x4mm lalu kemudian dilakukan pemilihan material dengan mengguanakan optimasi golden ratio.
Optimasi Gold Material model Opt_Gold_Mat 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; end Opt_Gold_Mat; |
Nilai optimasi E didapatkan berdasarkan simulasi menggunakan openmodelica adalah E = 196.987GPa. Kemudian nilai E ini digunakan untuk mencocokan 3 material yang sudah kita pilih (SS400, SS304, dan SS316). Nilai E optimasi dicocokan dengan nilai E material dipasaran yang kita pilih.
Kesimpulan berdasarkan optimasi dengan golden ratio didapatkan material yang paling efisien (low cost) dalam rancangan rak adalah SS304 dengan dimensi (40x40x4 mm).