Difference between revisions of "Mentum03-Muhammad Rio Hidayah"

From ccitonlinewiki
Jump to: navigation, search
(Tugas Besar Metode Numerik)
(Tugas Besar Metode Numerik)
Line 74: Line 74:
  
 
model Trusses_3D_Tugas_Besar_Safety
 
model Trusses_3D_Tugas_Besar_Safety
 
+
//define initial variable
+
//define initial variable
parameter Integer Points=size(P,1); //Number of Points
+
parameter Integer Points=size(P,1); //Number of Points
parameter Integer Trusses=size(C,1); //Number of Trusses
+
parameter Integer Trusses=size(C,1); //Number of Trusses
parameter Real Yield=275e6; //Yield Strength (Pa)
+
parameter Real Yield=275e6; //Yield Strength (Pa)
parameter Real Area=0.000224;  //Area L Profile (Dimension=0.03, Thickness=0,004) (m2)
+
parameter Real Area=0.000224;  //Area L Profile (Dimension=0.03, Thickness=0,004) (m2)
parameter Real Elas=193e9;    //Elasticity SS 302  (Pa)
+
parameter Real Elas=193e9;    //Elasticity SS 302  (Pa)
 
+
//define connection
+
//define connection
parameter Integer C[:,2]=[1,5;  
+
parameter Integer C[:,2]=[1,5;  
                          2,6;
+
                          2,6;
                          3,7;
+
                          3,7;
                          4,8;
+
                          4,8;
                          5,6;  //1st floor
+
                          5,6;  //1st floor
                          6,7;  //1st floor
+
                          6,7;  //1st floor
                          7,8;  //1st floor
+
                          7,8;  //1st floor
                          5,8;  //1st floor
+
                          5,8;  //1st floor
                          5,9;
+
                          5,9;
                        6,10;
+
                          6,10;
                        7,11;
+
                          7,11;
                        8,12;
+
                          8,12;
                        9,10; //2nd floor
+
                          9,10; //2nd floor
                        10,11;//2nd floor  
+
                          10,11;//2nd floor  
                        11,12;//2nd floor
+
                          11,12;//2nd floor
                          9,12; //2nd floor
+
                          9,12; //2nd floor
                          9,13;
+
                          9,13;
                        10,14;
+
                          10,14;
                        11,15;
+
                          11,15;
                        12,16;
+
                          12,16;
                        13,14;//3rd floor
+
                          13,14;//3rd floor
                        14,15;//3rd floor
+
                          14,15;//3rd floor
                        15,16;//3rd floor
+
                          15,16;//3rd floor
                        13,16];//3rd floor
+
                        13,16];//3rd floor
                                                             
+
                                                             
//define coordinates (please put orderly)
+
//define coordinates (please put orderly)
parameter Real P[:,6]=[0.3,-0.375,0,1,1,1;    //1
+
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;    //2
                      -0.3,0.375,0,1,1,1;    //3
+
                        -0.3,0.375,0,1,1,1;    //3
                      0.3,0.375,0,1,1,1;      //4
+
                        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
 
                            
 
                            
                      0.3,-0.375,0.6,0,0,0;  //5
+
//define external force (please put orderly)
                      -0.3,-0.375,0.6,0,0,0;  //6
+
parameter Real F[Points*3]={0,0,0,
                      -0.3,0.375,0.6,0,0,0;  //7
+
                            0,0,0,
                      0.3,0.375,0.6,0,0,0;    //8
+
                            0,0,0,  
                           
+
                            0,0,0,
                      0.3,-0.375,1.2,0,0,0;  //9
+
                            0,0,0,  
                      -0.3,-0.375,1.2,0,0,0;  //10 
+
                            0,0,0,
                      -0.3,0.375,1.2,0,0,0;  //11
+
                            0,0,0,  
                      0.3,0.375,1.2,0,0,0;   //12
+
                            0,0,0,
                           
+
                            0,0,0,  
                      0.3,-0.375,1.8,0,0,0;  //13
+
                            0,0,0,
                      -0.3,-0.375,1.8,0,0,0;  //14
+
                            0,0,0,  
                      -0.3,0.375,1.8,0,0,0;   //15
+
                            0,0,0,
                      0.3,0.375,1.8,0,0,0];  //16
+
                            0,0,-500,  
                         
+
                            0,0,-1000,
//define external force (please put orderly)
+
                            0,0,-1000,  
parameter Real F[Points*3]={0,0,0,
+
                            0,0,-500};  
                            0,0,0,  
+
                            0,0,0,  
+
//solution
                            0,0,0,  
+
Real displacement[N], reaction[N];
                            0,0,0,  
+
Real check[3];
                            0,0,0,  
+
                            0,0,0,  
+
Real stress1[Trusses];
                            0,0,0,  
+
Real safety[Trusses];
                            0,0,0,  
+
Real dis[3];
                            0,0,0,
+
Real Str[3];
                            0,0,0,
+
 
                            0,0,0,
+
protected
                            0,0,-500,
+
parameter Integer N=3*Points;
                            0,0,-1000,
+
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];
                            0,0,-1000,  
+
Real err=10e-10, ers=10e-4;
                            0,0,-500};  
+
 
+
algorithm
//solution
+
//Creating Global Matrix
Real displacement[N], reaction[N];
+
G:=id;
Real check[3];
+
for i in 1:Trusses loop
 
+
  for j in 1:3 loop
Real stress1[Trusses];
+
  q1[j]:=P[C[i,1],j];
Real safety[Trusses];
+
  q2[j]:=P[C[i,2],j];
Real dis[3];
+
   end for;
Real Str[3];
+
     
 +
    //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;
 
   
 
   
protected
+
//Calculating stress in each truss
parameter Integer N=3*Points;
+
for i in 1:Trusses loop
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
 
  for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
+
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],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;
 
  end for;
     
+
     
  //Solving Matrix
+
    //Solving Matrix
  L:=Modelica.Math.Vectors.length(q2-q1);
+
    L:=Modelica.Math.Vectors.length(q2-q1);
  cx:=(q2[1]-q1[1])/L;
+
    cx:=(q2[1]-q1[1])/L;
  cy:=(q2[2]-q1[2])/L;
+
    cy:=(q2[2]-q1[2])/L;
  cz:=(q2[3]-q1[3])/L;  
+
    cz:=(q2[3]-q1[3])/L;  
  X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
+
    X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
                    cy*cx,cy^2,cy*cz;
+
                cy*cx,cy^2,cy*cz;
                    cz*cx,cz*cy,cz^2];
+
                cz*cx,cz*cy,cz^2];
 
+
   
  //Transforming to global matrix
+
    Str:=(X*dis);
  g:=zeros(N,N);  
+
    stress1[i]:=Modelica.Math.Vectors.length(Str);
  for m,n in 1:3 loop
+
end for;
    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];
+
//Safety factor
    g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
+
for i in 1:Trusses loop
    g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
+
  if stress1[i]>0 then
  end for;
+
    safety[i]:=Yield/stress1[i];
 
+
  else
  G_star:=G+g;
+
    safety[i]:=0;
  G:=G_star;
+
  end if;  
end for;
+
  end for;
 +
   
 +
end Trusses_3D_Tugas_Besar_Safety;
  
//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
+
lalu membuat excel yang berisikan tentang data material yang akan digunakann dan harga dari material tersebut:
reaction:=(G_star*displacement)-F;
 
  
//Eliminating float error
+
[[File:Tugas Besar 1 Rifqidwitama.jpg|center]]
for i in 1:N loop
+
[[File:Tugas Besar 2 Rifqidwitama.jpg|center]]
reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
+
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
displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
+
----
end for;
+
*Untuk perhitungan curve fitting dengan model berikut :
 +
//model CurveFitting
  
//Checking Force
+
  parameter Real X[6]={141e-6,375e-6,384e-6,575e-6,931e-6,864e-6}; //area
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
+
  parameter Real Y[6]={7702,7833,7664,7708,7927,7805};           // harga per kg
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
+
   Real Coe[3];
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
+
  algorithm
for i in 1:Trusses loop
+
  Coe:=Curve_Fitting(X,Y,2);
if stress1[i]>0 then
 
  safety[i]:=Yield/stress1[i];
 
else
 
  safety[i]:=0;
 
end if;
 
end for;
 
  
end Trusses_3D_Tugas_Besar_Safety;
+
  end CurveFitting;
 +
  model CurveFitting

Revision as of 12:54, 4 January 2021

BIODATA DIRI

Foto Muhammad Rio.jpg

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


Assalamualaikum wr.wb.

Perkenalkan,

Nama :Muhammad Rio Hidayah

NPM  :1706070715

Pertemuan 1 (9 November 2020)

Ketika saya menjalani pembelajaran Metode Numerik dengan Bapak Engkos di saat sebelum UTS, saya mempelajari dasar2 konversi dan penyelesaian masalah-masalah analitik dengan metode yang dapat dipahami dan diselesaikan oleh program komputasi. Beberapa diantaranya yaitu penggunaan Matriks dan pseudocode.


Di hari pertama pembelajaran bersama Pak Dai, saya dan kawan-kawan diminta untuk menginstall aplikasi Modelica untuk digunakan dalam pembelajaran berikutnya. Selain itu, kami diminta untuk mempelajari dan mencoba sendiri aplikasi tersebut. Dari yang saya coba, saya dapat menyimpulkan bahwa Modelica merupakan aplikasi yang terbilang cukup lawas, namum memiliki kemampuan penyelesaian masalah analitik yang baik, dikarenakan jumlah function dan library yang sangat memadai.

Pertemuan 2 (16 November 2020)

Pada pertemuan ini, diberikan latihan yaitu membuat program sederhana didalam Modelica untuk mencari rata-rata nilai dari 5 angka.

5 angka tersebut adalah 300, 350, 400, 450, dan 500.

Berikut kode pemograman dari program tersebut

Metnum M.Rio Pertemuan 2 1.PNG

Pertemuan 3 (23 November 2020)

Tugas 3

Diberikan tugas yaitu menyelesaikan sebuah persoalan mengenai defleksi dan gaya reaksi dari suatu sistem yang ada di buku menggunakan Modelica.

Berikut coding class yang digunakan

Metnum Tugas 3 M.Rio Hidayah Foto 1.JPG


Metnum Tugas 3 M.Rio Hidayah RumusReaksi.JPG

Pertemuan 4 (30 November 2020)

Quiz 1

Pada Pertemuan kali ini, diberikan sebuah persoalan yang dijadikan quiz.

Berikut soalnya

Metnum Soal Quiz 1 M.Rio.jpg

Dalam pengerjaan soal tersebut, diperlukan sebuah proses yang runtun. Proses tersebut dapat dijelaskan dalam bentuk flowchart. Berikut flowchart dari pengerjaan soal tersebut Metnum Quiz 1 Flowchart M.Rio.jpg

Pertemuan 5 (7 Desember 2020)

Pertemuan 6 (14 Desember 2020)

Tugas Besar Metode Numerik

Tujuan : Mengoptimalkan harga pembuatan ranka truss sederhana dengan menvariasikan dimensi dan elastisitas material

Tugas Besar Metnum Geometri Jos.jpg

Constrain

- Spesifikasi L (Panjang) dan geometri rangka truss

- Gaya beban diberikan kepada struktur (1000 N dan 2000 N)


Asumsi


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=275e6; //Yield Strength (Pa)
parameter Real Area=0.000224;   //Area L Profile (Dimension=0.03, Thickness=0,004) (m2)
parameter Real Elas=193e9;     //Elasticity SS 302  (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:

Tugas Besar 1 Rifqidwitama.jpg
Tugas Besar 2 Rifqidwitama.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