Difference between revisions of "Reza Adyanto"

From ccitonlinewiki
Jump to: navigation, search
(Tugas Besar)
(Tugas Besar)
Line 310: Line 310:
 
                         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
Line 331: Line 330:
 
                       -0.3,-0.375,1.8,0,0,0;  //14
 
                       -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;  //15
                       0.3,0.375,1.8,0,0,0];  //16
+
                       0.3,0.375,1.8,0,0,0];  //16                        
                         
 
 
  //define external force (please put orderly)
 
  //define external force (please put orderly)
 
  parameter Real F[Points*3]={0,0,0,
 
  parameter Real F[Points*3]={0,0,0,
Line 350: Line 348:
 
                             0,0,-1000,  
 
                             0,0,-1000,  
 
                             0,0,-500};  
 
                             0,0,-500};  
 
 
  //solution
 
  //solution
 
  Real displacement[N], reaction[N];
 
  Real displacement[N], reaction[N];
 
  Real check[3];
 
  Real check[3];
 
 
  Real stress1[Trusses];
 
  Real stress1[Trusses];
 
  Real safety[Trusses];
 
  Real safety[Trusses];
 
  Real dis[3];
 
  Real dis[3];
 
  Real Str[3];
 
  Real Str[3];
 
 
  protected
 
  protected
 
  parameter Integer N=3*Points;
 
  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 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;
 
  Real err=10e-10, ers=10e-4;
 
 
  algorithm
 
  algorithm
 
  //Creating Global Matrix
 
  //Creating Global Matrix
Line 372: Line 366:
 
   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];
  end for;
+
  end for;    
     
 
 
   //Solving Matrix
 
   //Solving Matrix
 
   L:=Modelica.Math.Vectors.length(q2-q1);
 
   L:=Modelica.Math.Vectors.length(q2-q1);
Line 382: Line 375:
 
                     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
 
   //Transforming to global matrix
 
   g:=zeros(N,N);  
 
   g:=zeros(N,N);  
Line 391: Line 383:
 
     g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
 
     g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
 
   end for;   
 
   end for;   
 
 
  G_star:=G+g;
 
  G_star:=G+g;
 
  G:=G_star;
 
  G:=G_star;
 
  end for;
 
  end for;
 
 
  //Implementing boundary
 
  //Implementing boundary
 
  for x in 1:Points loop
 
  for x in 1:Points loop
Line 417: Line 407:
 
  end if;
 
  end if;
 
  end for;
 
  end for;
 
 
  //Solving displacement
 
  //Solving displacement
 
  displacement:=Modelica.Math.Matrices.solve(G,F);
 
  displacement:=Modelica.Math.Matrices.solve(G,F);
 
 
  //Solving reaction
 
  //Solving reaction
 
  reaction:=(G_star*displacement)-F;
 
  reaction:=(G_star*displacement)-F;
 
 
  //Eliminating float error
 
  //Eliminating float error
 
  for i in 1:N loop
 
  for i in 1:N loop
Line 429: Line 416:
 
  displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
 
  displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
 
  end for;
 
  end for;
 
 
  //Checking Force
 
  //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[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[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)});
 
  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
 
  for i in 1:3 loop
 
  check[i] := if abs(check[i])<=ers then 0 else check[i];
 
  check[i] := if abs(check[i])<=ers then 0 else check[i];
 
  end for;
 
  end for;
 
 
  //Calculating stress in each truss
 
  //Calculating stress in each truss
 
  for i in 1:Trusses loop
 
  for i in 1:Trusses loop
Line 445: Line 429:
 
   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]);
 
   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);
Line 454: Line 437:
 
   X:=(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];  
 
+
   Str:=(X*dis);  
   Str:=(X*dis);
 
 
   stress1[i]:=Modelica.Math.Vectors.length(Str);
 
   stress1[i]:=Modelica.Math.Vectors.length(Str);
 
  end for;
 
  end for;
 
 
  //Safety factor
 
  //Safety factor
 
  for i in 1:Trusses loop
 
  for i in 1:Trusses loop
Line 468: Line 449:
 
  end if;  
 
  end if;  
 
  end for;
 
  end for;
 
 
 
  end TugasBesar_Trusses_3d_Safety;
 
  end TugasBesar_Trusses_3d_Safety;
  
Line 475: Line 454:
  
 
  function TugasBesar_Curve_Fitting
 
  function TugasBesar_Curve_Fitting
 
 
  input Real X[:];
 
  input Real X[:];
 
  input Real Y[size(X,1)];
 
  input Real Y[size(X,1)];
 
  input Integer order=2;
 
  input Integer order=2;
 
  output Real Coe[order+1];
 
  output Real Coe[order+1];
 
 
  protected
 
  protected
 
  Real Z[size(X,1),order+1];
 
  Real Z[size(X,1),order+1];
Line 486: Line 463:
 
  Real A[order+1,order+1];
 
  Real A[order+1,order+1];
 
  Real B[order+1];
 
  Real B[order+1];
 
 
  algorithm
 
  algorithm
 
 
  for i in 1:size(X,1) loop
 
  for i in 1:size(X,1) loop
 
  for j in 1:(order+1) loop
 
  for j in 1:(order+1) loop
Line 495: Line 470:
 
  end for;
 
  end for;
 
  ZTr:=transpose(Z);
 
  ZTr:=transpose(Z);
 
 
  A:=ZTr*Z;
 
  A:=ZTr*Z;
 
  B:=ZTr*Y;
 
  B:=ZTr*Y;
 
  Coe:=Modelica.Math.Matrices.solve(A,B);
 
  Coe:=Modelica.Math.Matrices.solve(A,B);
 
 
  end TugasBesar_Curve_Fitting;
 
  end TugasBesar_Curve_Fitting;
  
Line 508: Line 481:
 
  parameter Real yd[:]={3.79387E-05,3.76909E-05,4.01305E-05,4.20011E-05,4.52247E-05};
 
  parameter Real yd[:]={3.79387E-05,3.76909E-05,4.01305E-05,4.20011E-05,4.52247E-05};
 
  parameter Real xlo=171e-6;
 
  parameter Real xlo=171e-6;
  parameter Real xhi=121e-5;  
+
  parameter Real x hi=121e-5;  
 
  parameter Integer N=10; // maximum iteration
 
  parameter Integer N=10; // maximum iteration
 
  parameter Real es=0.0001; // maximum error
 
  parameter Real es=0.0001; // maximum error
 
 
  Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3];
 
  Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3];
 
  Real xopt,  fx;
 
  Real xopt,  fx;
 
  protected
 
  protected
 
  Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
 
  Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
 
 
  algorithm
 
  algorithm
 
 
  xl := xlo;  
 
  xl := xlo;  
 
  xu := xhi;
 
  xu := xhi;
 
  y  := TugasBesar_Curve_Fitting(xd,yd);
 
  y  := TugasBesar_Curve_Fitting(xd,yd);
 
 
  for i in 1:N loop
 
  for i in 1:N loop
 
  d:= R*(xu-xl);
 
  d:= R*(xu-xl);
Line 530: Line 499:
 
  f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
 
  f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
 
  xint:=xu-xl;
 
  xint:=xu-xl;
 
 
  if f1[i]>f2[i] then  
 
  if f1[i]>f2[i] then  
 
   xl:=x2[i];
 
   xl:=x2[i];
Line 540: Line 508:
 
     fx:=f2[i];
 
     fx:=f2[i];
 
  end if;
 
  end if;
 
 
  ea[i]:=(1-R)*abs((xint)/xopt);
 
  ea[i]:=(1-R)*abs((xint)/xopt);
 
  if ea[i]<es then
 
  if ea[i]<es then
Line 546: Line 513:
 
  end if;
 
  end if;
 
  end for;
 
  end for;
 
 
  end TugasBesar_Golden_section;
 
  end TugasBesar_Golden_section;
 
+
Dan didapati list harga
+
Dan didapati list harga
  
 
[[File:Screenshot_(779).png|center]]
 
[[File:Screenshot_(779).png|center]]

Revision as of 00:11, 6 January 2021

Biodata

Reza Adyanto.jpg

Nama  : Reza Adyanto Nugroho

NPM  : 1806201485

TTL  : Leeds, 28 Maret 2000

Tempat Tinggal: Jakarta

Hobi  : olahraga


Assalamualaikum Wr.Wb. Nama saya adalah Reza Adyanto, Saya adalah Mahasiswa Teknik Mesin Universitas Indonesia angkatan 2018. Pada tahun ini (2020) Saya sedang menganmbil mata Kuliah Metode Numerik.







Minggu 1 (11 November 2020)

Pada pertemuan minggu Pertama ini, dijelaskan tujuan-tujuan pembelajaran metode numerik, yaitu: Tujuan:

  • 1.Memahami konsep-konsep dan prinsip-prinsip dasar dalam metode numerik, Contoh:Persamaan aljabar, algorithma, dll.
  • 2.Mengerti aplikasi metode numerik.
  • 3.Mampu menerapkan metode numerik dalam persoalan teknik.
  • 4.Mendapat nilai tambah/adab sehingga kita menjadi orang yang lebih beradab.

Tugas Minggu 1

Untuk tugas pertama, kami diminta mempelajari Open Modelica, yaitu sebuah aplikasi untuk membuat modelling dan simulasi. Aplikasi ini biasa digunakan di bidang industri maupun akademis.

Kemudian Saya mencoba membuat model sederhana yaitu sistem katrol Video pembelajaran dapat diakses di link:

Minggu 2 (18 November 2020)

Pada pertemuan kali ini, Pak Dai membuka pertemuan dengan memberi pembelajaran berupa sebagai manusia, kita harus memiliki perubahan setiap harinya, hari ini harus lebih baik dari hari kemarin. Sebelum memasuki materi pembelajaran metode numerik, Mahasiswa diminta mereview fungsi pembelajaran aljabar linear dan hubungannya dengan metode numerik. Kemudian, menceritakan pengalaman mempelajari aplikasi Open Modelica. Dan dari yang saya pelajari, aplikasi ini dibuat dengan tujuan bahasa pemodelan, bukan coding. Namun, ketika melakukan perhitungan, code yang ditulis harus dalam bahsa C++. Salah satu alasan pemilihan penggunaan aplikasi ini adalah karena Open Modelica dibuat open dan free, yang dimana semua orang boleh menggunakannya. Open Modelica mempunyai beberapa fitur, seperti membuat model, class, connector, expanable connector, record, function, dan lain-lain. Aplikasi ini object oriented, kita bisa membuat beberapa class fungsi dan class eksekusi, kemudian menggabungkannya ke dalam satu model, dengan pembelajaran hari dapat disebut sebagai sistem panggil.

Tugas Minggu 2

Untuk Tugas minggu 2, kami diminta untuk mempeljari kembali openmodelica dan melakukan sistem panggil dengan class dan function. Dan berikut adalah tugas saya, saya menggunakan contoh soal matriks ordo 3x3, dan berikut videonya:

Minggu 3 (25 November 2020)

pertemuan kali ini diawali dengan Pak Dai menanyakan progres belajar mandiri dari mahasiswa yang hadir. Kemudian menlanjutkan dengan dibahas aplikasi metode numerik pada suatu permasalahan. Dengan beberapa metode yang dapat digunakan yaitu Stokastik, CFD, dan FEA. Dalam proses menyelesaikan masalah teknik, angkah yang harus dilakukan adalah melakukan analisis, kemudian membuat model matematis, dengan menggunakan metode numerik untuk melakukan penyelesaian (menggunakan computer), dan mendapatkan solusi dari permasalahan.

Soal 3.1.jpg
Matriks 1.jpg
Matriks 2.jpg

melakukan globe code

Eq 1.jpg

Tugas 3

dan kami diminta untuk mengerjakan soal

Tugas minggu 3.jpeg
Jawab 1.jpg
Jawab 2.jpg
Jawab 3.jpg
Jawab 4.jpg

kemudian setelah didapatkan hasil-hasilnya, untuk mencari displacement, perlu diberikan boundary dan external load (beban tambahan) yang dibuatkan dalam bentuk matriks A.


MessageImage 1606893984890.jpg

Mencari data KG


model truss3_1 parameter Real A=0.001;//luas parameter Real E=200*10^9;//modulus elastisitas parameter Real L1=1;//Panjang batang 1,2 parameter Real L2=1.25;//Panjang batang 4 parameter Real L3=1.6;//panjang batang 3,5 parameter Real t1=0;//sudut batang 1.Node 1 dan 2. parameter Real t2=0;//sudut batang 2. Node 2 dan 3. parameter Real t3=4.04;//sudut batang 3.Node 3 dan 4. parameter Real t4=4.7;//sudut batang 4. Node 2 dan 4. parameter Real t5=5.4;//sudut batang 5. Node 1 dan 4. Real d1[8,8]=[(cos(t1))^2,sin(t1)*cos(t1),-(cos(t1))^2,-sin(t1)*cos(t1),0,0,0,0;

              sin(t1)*cos(t1),(sin(t1))^2,-sin(t1)*cos(t1),-(sin(t1))^2,0,0,0,0;
              -(cos(t1))^2,-sin(t1)*cos(t1),(cos(t1))^2,sin(t1)*cos(t1),0,0,0,0;
              -sin(t1)*cos(t1),-(sin(t1))^2,sin(t1)*cos(t1),(sin(t1))^2,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];           

Real d2[8,8]=[0,0,0,0,0,0,0,0;

             0,0,0,0,0,0,0,0;
             0,0,(cos(t2))^2,sin(t2)*cos(t2),-(cos(t2))^2,-(sin(t2)*cos(t2)),0,0;
             0,0,sin(t2)*cos(t2),(sin(t2))^2,-(sin(t2)*cos(t2)),-(sin(t2))^2,0,0;
             0,0,-(cos(t2))^2,-(sin(t2)*cos(t2)),(cos(t2))^2,sin(t2)*cos(t2),0,0;
             0,0,-(sin(t2)*cos(t2)),-(sin(t2))^2,sin(t2)*cos(t2),(sin(t2))^2,0,0;
             0,0,0,0,0,0,0,0;
             0,0,0,0,0,0,0,0];

Real d3[8,8]=[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,(cos(t3))^2,sin(t3)*cos(t3),-(cos(t3))^2,-sin(t3)*cos(t3);
             0,0,0,0,sin(t3)*cos(t3),(sin(t3))^2,-sin(t3)*cos(t3),-(sin(t3))^2;
             0,0,0,0,-(cos(t3))^2,-sin(t3)*cos(t3),(cos(t3))^2,sin(t3)*cos(t3);
             0,0,0,0,-sin(t3)*cos(t3),-(sin(t3))^2,sin(t3)*cos(t3),(sin(t3))^2];               

Real d4[8,8]=[0,0,0,0,0,0,0,0;

             0,0,0,0,0,0,0,0;
             0,0,(cos(t4))^2,sin(t4)*cos(t4),0,0,-(cos(t4))^2,-sin(t4)*cos(t4);
             0,0,sin(t4)*cos(t4),(sin(t4))^2,0,0,-sin(t4)*cos(t4),-(sin(t4))^2;
             0,0,0,0,0,0,0,0;
             0,0,0,0,0,0,0,0;
             0,0,-(cos(t4))^2,-sin(t3)*cos(t4),0,0,(cos(t4))^2,sin(t4)*cos(t4);
             0,0,-sin(t4)*cos(t4),-(sin(t4))^2,0,0,sin(t4)*cos(t4),(sin(t4))^2];             

Real d5[8,8]=[cos(t5)^2,sin(t5)*cos(t2),0,0,0,0,-(cos(t5))^2,-(sin(t5)*cos(t5));

             sin(t5)*cos(t5),(sin(t5))^2,0,0,0,0,-(sin(t5)*cos(t5)),-(sin(t5))^2;           
             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;   
            -(cos(t5))^2,-(sin(t5)*cos(t5)),0,0,0,0,(cos(t5))^2,sin(t5)*cos(t5);
            -(sin(t5)*cos(t5)),-(sin(t5))^2,0,0,0,0,sin(t5)*cos(t5),(sin(t5))^2];

Real k1; Real k2; Real k3; Real K1[8,8]; Real K2[8,8]; Real K3[8,8]; Real K4[8,8]; Real K5[8,8]; Real KG[8,8];

equation k1=A*E/L1; k2=A*E/L2; k3=A*E/L3; K1=k1*d1; K2=k1*d2; K3=k3*d3; K4=k2*d4; K5=k3*d5; KG=K1+K2+K3+K4+K5;


end truss3_1;


Mencari data U dan R


model Tugas_minggu3 parameter Real A[8,8]=[10^6,0,0,0,0,0,0,0;

                      0,10^6,0,0,0,0,0,0;
                     -2*10^8,0,4*10^8,1.98*10^6,-2*10^8,0,-0.0245566,-1.9*10^6;
                      0,0,1.98*10^6,1.59*10^8,0,0,-1.9*10^6,-1.5*10^8;
                      0,0,0,0,10^6,0,0,0;
                      0,0,0,0,0,10^6,0,0;
                      -5*10^7,6.13*10^7,-0.0245566,-1.5*10^6,-4.8*10^7,-6*10^7,9.88*10^7,1.58*10^6;
                      6.13*10^6,-7.4*10^7,-1.9*10^6,-1.5*10^8,-6*10^7,-7.6*10^7,1.58*10^6,3.11*10^8];//apply boundary

parameter Real B[8]={0,0,-1035.27618,3863.703305,0,0,-1035.27618,3863.703305};//external load parameter Real KG[8,8]=[2.5*10^8,-9.6*10^7,-2*10^8,0,0,0,-5*10^7,6.13*10^7;

                      -6.1*10^7,7.46*10^7,0,0,0,0,6.13*10^7,-7.4*10^7;
                     -2*10^8,0,4*10^8,1.98*10^6,-2*10^8,0,-0.0245566,-1.9*10^6;
                      0,0,1.98*10^6,1.59*10^8,0,0,-1.9*10^6,-1.5*10^8;
                      0,0,-2*10^8,0,2.48*10^8,6.09*10^7,-4.8*10^7,-6*10^7;
                      0,0,0,0,6.09*10^7,7.65*10^7,-6*10^7,-7.6*10^7;
                      -5*10^7,6.13*10^7,-0.0245566,-1.5*10^6,-4.8*10^7,-6*10^7,9.88*10^7,1.58*10^6;
                      6.13*10^7,-7.4*10^7,-1.9*10^6,-1.5*10^8,-6*10^7,-7.6*10^7,1.58*10^6,3.11*10^8];                         

parameter Real F[8]={0,0,-1035.27618,3863.703305,0,0,-1035.27618,3863.703305};//force Real U[8];//displacement Real R[8];//reaction equation U=truss3_1(A,B); R=(KG*U)-F; end Tugas_minggu3;

Minggu 4 (2 Desember 2020)

Pada pertemuan Kali ini, kami satu kelas mem-review pr yang pada minggu ke-3 sudah diberikan, =masing-masing dari kami ditanyakan mengenai PR masing-masing. Untuk PR yang saya kerjakan, saya rasa masinh banyak kekurangan dikarenakan masih banyak hal yang harus dimasukkan secara manual.


Kuis Class Diagram & Flow Chart

Dan pada minggu ini, kami kuis membuat flowchart dan class diagram dari coding penyelesaian truss milik Josiah. Terdapat 5 coding yaitu penyelesaian truss, matriks kekakuan lokal, matriks kekakuan global, matriks reaksi truss, dan Gauss Jordan untuk mendapat nilai displacement.


Kuis 1 .jpg
Kuis 2.jpg
Kuis 3.jpg

Tugas 4

PR No. 8

Prno8.png

Pr minggu ini adalah 3D Truss, dimulai dengan membuat class diagram dan flow chat seperti pada tugas sebelumnya

Pr no 8 1.jpg

kemudian langkah berikutnya adalah membuat free body diagram untuk menentukan komponen-komponen data yang tersedia dalam soal. dari data-data yang tersdedia, berikut adalah data yang diperlukan untuk mengerjakan soal ini, node, sudut, luas, modulus elastisitas, dan panjang dari tiap batang. Karena ini merupakan permasalahan 3D, maka sudut akan ada pada arah x, y, dan z. Rumus untuk mencari sudut dan panjang batang saya dapatkan dari buku. Untuk gaya eksternal sendiri dapat dilihat dari gambar, hanya ada pada node 1 di sumbu y. Kemudian data-data yang sudah didapat dibuat ke dalam matriks untuk mempermudah penyelesaiannya menggunakan Open Modellica.

Pr no 8.jpg

berikutnya setelah membuat matriks, mencari nilai k dapat menggunakan rumus k=AE/L. Setelah mendapa nilai k setiap batang, nilai tersebut akan digunakan untuk membuat matriks K elemental (Ke) setiap batang.

1 .png

Kemudian dari matriks 6x6 tersebut dibuat menjadi matriks 12x12 sesuai dengan jumlah batang (3) * jumlah node (4) (3 x 4 = 12).Yang disebut matriks kekakuan global (Kg).

2 .png

Berikutnya, matriks kekakuan global setiap batang dijumlahkan untuk mendapat matriks kekakuan global total(KgTot)

3 .png

Dan kemudian, boundary diterapkan pada matriks kekakuan global total. Pada kasus ini, node 2,3, dan 4 merupakan pinned. Sehingga didapati U2X=U2Y=U2Z=U3X=U3Y=U3Z=U4X=U4Y=U4Z=0.

4 .png
5 .png

mencari nilai displacement(U) lainnya menggunakan eliminasi Gauss Jordan

6 .png

Dan mencari reaction menggunakan persamaan R=Kg*U - F.

7 .png

kemudian dengan materi yang sudah dipelajari pada pertemuan sebelumnya (sistem kelas panggil) Pada class akan diinput data-data yang telah docari pada langkah pertama.

8 .png

berikut, pengecekan modelica sudah successfull, dan siap di simulasi

9 .png
10 .png

Belajar mandiri (16-12-2020)

Pada kesempatan kali ini saya mencoba untuk mempelajari One-Dimensional Unconstrained Optimization, saya mempelajarinya dari video tutorial program optimasi dengan modelica, yang diupload oleh Asisten pada group WA Metnum 02.

diawal saya mencari contoh soal yang diberikan f(x)= 2sinx-x^2/10

Screenshot (738).png

Kemudian saya memplotnya kedalam Excel sesuai dengan yang dicontohkan pada ppt yang sudah di share di group WA Metnum 02

Screenshot (739).png

Berikutnya membuat function f_obj3

Screenshot (740).png

dan juga Model bracket_optimation3

Screenshot (741).png

pada akhirnya memulai simulation, yang mendapatkan hasil seperti berikut.

Screenshot (742).png

Tugas Besar

Objektif dari Tugas ini:

- Mahasiswa diminta untuk Mengoptimasi harga pembuatan rangka truss dengan memvariasi dimensi dan elastisitas material.

Geometry dan Load

Screenshot (762).png

Diketahui: panjang= 0,6 m lebar= 0,75 m tinggi= 1,6 m F1= 2000 N F2= 1000 N

kemudian diasumsikan 1. Beban akan terdistribusi hanya pada node (karena bersifat trusses). 2. Safety factor minimal bernilai 2. 3. Batas displacement 0,001 m sebelum buckling (pada truss paling atas). 4. Ketinggian trusses pada tiap lantai sama yaitu 0,6 m.

berikutnya: Untuk jenis material yang sama: 1. Mencari harga untuk 6 ukuran batang dengan material yang sama yaitu SS304. 2. Mengitung nilai safety factor pada 6 ukuran batang dengan coding awal. 3. Membuat rasio antara safety factor dengan harga total. 4. Membuat persamaan antara rasio (safe/harga) dengan area dengan metode curve fitting. 5. Melakukan optimasi menggunakan metode golden section. Untuk area penampang yang sama: 1. Mencari harga untuk 4 jenis material dengan area penampang yang sama yaitu 171 mm^2. 2. Mengitung nilai safety factor pada 4 jenis batang dengan coding awal. 3. Membuat rasio antara safety factor dengan harga total. 4. Membuat persamaan antara rasio (safe/harga) dengan jenis material dengan metode curve fitting. 5. Melakukan optimasi menggunakan metode golden section.

Data Material, dengan elasticity tetap

Screenshot (778).png

Script Coding yang Digunakan


  • Untuk menghitungan displacement, reaction force, stress, dan safety factor:
model TugasBesar_Trusses_3d_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.000171;   //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 TugasBesar_Trusses_3d_Safety;
  • Untuk menghitung Curve fitting:
function TugasBesar_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 TugasBesar_Curve_Fitting;
*Untuk Mencari Golden Section
model TugasBesar_Golden_section
parameter Real xd[:]={0.001216,0.000864,0.000304,0.000231,0.000171};
parameter Real yd[:]={3.79387E-05,3.76909E-05,4.01305E-05,4.20011E-05,4.52247E-05};
parameter Real xlo=171e-6;
parameter Real x hi=121e-5; 
parameter Integer N=10; // 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  := TugasBesar_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 TugasBesar_Golden_section;

Dan didapati list harga

Screenshot (779).png