Difference between revisions of "Metnum03-Ahmad Farras"

From ccitonlinewiki
Jump to: navigation, search
Line 495: Line 495:
 
   model CurveFitting
 
   model CurveFitting
  
 +
dan curve fitting di rasio dan area dengan pemodelan berikut
  
 +
//model CurveFitting
  
Pada excel yang kedua kita mengasumsikan dengan area yang kosntan 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.
+
  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:Openmodelicaahmadfarras71.jpg|centre|500px|center]]
 
[[File:Openmodelicaahmadfarras71.jpg|centre|500px|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:Openmodelicaahmadfarras71.jpg|centre|500px|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

Revision as of 21:59, 4 January 2021

Assalamualaikum wrwb

Nama Ahmad Farras NPM 1906435435

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

Openmodelicaahmadfarras1.JPG

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

Openmodelicaahmadfarras2.JPG

Pada step ini kita mengecek apakah program kita apakah sudah bisa disimulasi atau tidak bisa disimulasi

3.Jika bisa maka langsung mengeklik tombol "simulate"

Openmodelicaahmadfarras3.JPG

4.Berikut hasil dari nilai rata rata dari data yang saya buat

Openmodelicaahmadfarras4.JPG


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:

data yang dimasukkan

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

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

Openmodelicaahmadfarras15.JPG

Hitung defleksi yang terjadi pada tiap elemen, dan gaya reaksinya!

Mengubah problem menjadi node dan elemen

Openmodelicaahmadfarras29.JPG

Asumsikan solusi yang mendekati sifat elemen Menentukan nilai konstanta kekakuan/stiffness constant dari elemen - Elemen 1,2,3,4,5,6

Openmodelicaahmadfarras16.JPG

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

Openmodelicaahmadfarras17.JPG

[K] adalah matrix untuk kekakuan k, dan (e) adalah elemen yang akan dianalisa

Lalu diaplikasikan pada elemen 1,3,6

Openmodelicaahmadfarras18.JPG


Posisi di dalam matriks global untuk elemen 1,3,6 dengan θ=0° adalah

Openmodelicaahmadfarras19.JPG

Analisis Elemen 4 Karena elemen 4 sejajar dengan sumbu Y global, maka θ=90°

Openmodelicaahmadfarras20.JPG

Posisi elemen 4 dalam matriks global adalah

Openmodelicaahmadfarras21.JPG

Analisis Elemen 2,5 Untuk elemen 2 dan 5 memiliki sudut terhadap sumbu koordinat global, θ=135°

Openmodelicaahmadfarras22.JPG

Posisi elemen 2 dan 5 dalam matriks global adalah

Openmodelicaahmadfarras23.JPG

Menyusun dan menggabungkan matriks elemen-elemen

Openmodelicaahmadfarras24.JPG

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
Openmodelicaahmadfarras25.JPG


pada hasil diatas saya menggunakan openmodelica untuk mendapatkan hasil defleksi pada kolom 1,2,5,6 yang programnya sebagai berikut

Openmodelicaahmadfarras10.JPG

Dengan menggunakan function sebagai berikut

Openmodelicaahmadfarras11.JPG

Setelah menggunakan modelica untuk mencari solusi, U,yaitu defleksi elemen yang ditinjau dari koordinat global didapatkan nilai sebagai berikut

Openmodelicaahmadfarras26.JPG


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

Openmodelicaahmadfarras27.JPG
Pada permasalahan ini saya mencoba program dengan openmodelica berikut program yang saya buat.
Openmodelicaahmadfarras13.JPG

Pada kasus ini jika kita memasukkan angka yang sudah dibulatkan pada buku akan menghasilkan angka sebagai berikut

Openmodelicaahmadfarras12.JPG

Nilai yang ada pada buku sebagai berikut.

Openmodelicaahmadfarras28.JPG

Jika kita menggunakan angka yang kita dapat pada program defleksi maka angkanya akan sebagai berikut:

Openmodelicaahmadfarras30.JPG

jadi dapat disimpulkan pembulatan pada metode numerik lebih baik dihindarkan untuk mendapatkan hasil yang lebih akurat sebagai berikut

Openmodelicaahmadfarras31.JPG

Quiz 01

Berikut soal nomor 1

Openmodelicaahmadfarras33.jpg

Berikut soal nomor 2

Openmodelicaahmadfarras34.jpg

Berikut Flowchart penyelesaian dari nomor 1 dan 2 sebagai berikut

Openmodelicaahmadfarras32.jpg

Jawab Untuk nomor 1 kita menulis diketahui sebagai berikut:

Openmodelicaahmadfarras55.jpg

untuk mencari K lokal saya mempunyai fungsi sebagai berikut

Openmodelicaahmadfarras37.jpg

dengan class sebagai berikut

Openmodelicaahmadfarras35.jpg
Openmodelicaahmadfarras36.jpg

Menghasilkan K lokal sebagai berikut

Openmodelicaahmadfarras40.jpg
Openmodelicaahmadfarras41.jpg
Openmodelicaahmadfarras42.jpg

Setalah itu Kita mencari Defleksi pada soal di atas sebagai berikut

Openmodelicaahmadfarras39.jpg

dengan menggynakan fungsi gauss jordan sebagai berikut

Openmodelicaahmadfarras38.jpg

menghasilkan defleksi sebagai berikut

Openmodelicaahmadfarras43.jpg

Setelah itu kita mencari reaction yang ada dengan cara sebagai berikut

Openmodelicaahmadfarras44.jpg

dengan hasil sebagai berikut :

Openmodelicaahmadfarras45.jpg


Untuk nomor 2 kita menulis diketahui sebagai berikut

Openmodelicaahmadfarras57.jpg

untuk mencari K lokal saya mempunyai fungsi sebagai berikut

Openmodelicaahmadfarras47.jpg

dengan class sebagai berikut

Openmodelicaahmadfarras46.jpg

Menghasilkan K lokal sebagai berikut

Openmodelicaahmadfarras48.jpg
Openmodelicaahmadfarras49.jpg
Openmodelicaahmadfarras50.jpg

Setalah itu Kita mencari Defleksi pada soal di atas sebagai berikut

Openmodelicaahmadfarras53.jpg

dengan menggynakan fungsi gauss jordan sebagai berikut

Openmodelicaahmadfarras56.jpg

menghasilkan defleksi sebagai berikut

Openmodelicaahmadfarras54.jpg

Setelah itu kita mencari reaction yang ada dengan cara sebagai berikut

Openmodelicaahmadfarras52.jpg

dengan hasil sebagai berikut :

Openmodelicaahmadfarras51.jpg

Tugas 05

Soal3.jpeg

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

Openmodelicaahmadfarras58.jpg
Openmodelicaahmadfarras59.jpg

dan mendapatkan hasil sebagai berikut: Berikut ialah untuk L setiap batangnya

Openmodelicaahmadfarras60.jpg

Berikut ialah cos x,y,z yang dibutuhkan :

Openmodelicaahmadfarras61.jpg

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 :

Openmodelicaahmadfarras62.jpg

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:

Openmodelicaahmadfarras63.jpg

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:

Openmodelicaahmadfarras64.jpg

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:

Openmodelicaahmadfarras65.jpg

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:

Openmodelicaahmadfarras66.jpg

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.

Openmodelicaahmadfarras67.jpg

berikut ialah hasilnya.

Openmodelicaahmadfarras68.jpg

Tugas Besar Metode Numerik

Objektif:

- Mengoptimasi harga pembuatan rangka truss sederhana dengan memvariasi dimensi dan elastisitas material.


Geometri dan Load

Tugas Besar Metnum Geometri Jos.jpg


Constraint:

- Spesifikasi L (Panjang) dan geometri rangka truss

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


Asumsi:

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

- Beban akan terdistribusi hanya pada point penghubung (karena bersifat truss) -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:

Openmodelicaahmadfarras69.jpg

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:

Openmodelicaahmadfarras71.jpg

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.

Openmodelicaahmadfarras71.jpg

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