Difference between revisions of "Report Tugas Kelompok 4 : Metode Numerik 2019"

From ccitonlinewiki
Jump to: navigation, search
(Optimasi)
 
(34 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
 +
 
Anggota Kelompok:
 
Anggota Kelompok:
 
*Fikridiya Bagusrana (1706036154)
 
*Fikridiya Bagusrana (1706036154)
Line 4: Line 6:
 
*Mochamad Farhan Zidny (1706986391)
 
*Mochamad Farhan Zidny (1706986391)
 
*Andika Ridwan Pratama (1706986302)
 
*Andika Ridwan Pratama (1706986302)
 +
  
 
== Tugas 1 ==
 
== Tugas 1 ==
  
 +
=== Governing Equation ===
 
Berikut adalah governing equation pada mobil yang memiliki percepatan, gesekan, dan hambatan dengan udara.
 
Berikut adalah governing equation pada mobil yang memiliki percepatan, gesekan, dan hambatan dengan udara.
  
Line 27: Line 31:
 
t= v(t) / ((F - (F gesek + F hambat))/m)
 
t= v(t) / ((F - (F gesek + F hambat))/m)
  
 +
=== Pseudocode ===
 +
 +
Berikut adalah pseudocode untuk mencari kecepatan maksimum dan pada waktu berapa.
  
 
[[File:programmobil1.png]]
 
[[File:programmobil1.png]]
 +
 +
=== Program Python ===
 +
 +
Dengan menggunakan metode runge-kutta, berikut adalah program kami dari python
 +
 +
[[File:programmobilrungekutta.png]]
 +
 +
Untuk variable yang digunakan untuk simulasi berupa:
 +
 +
*Power= 500 KW
 +
*Massa= 1500 kg
 +
*Percepatan gravitasi= 9.81 m/s^2
 +
*Koefisien gesek=  0.7
 +
*Massa jenis= 1.2 kg/m^2
 +
*Area= 10 m^2
 +
*Koefisien drag= 0.2
 +
 +
=== Grafik dan Hasil ===
 +
 +
Berikut adalah hasil grafik serta angka kecepatan dan waktu maksimum
 +
 +
[[File:hasilmobil.png]]
  
 
== Tugas 2 ==
 
== Tugas 2 ==
 +
Pada tugas kali ini kami ditugaskan untuk mencari rumus dari gaya hambat menggunakan simulasi CFDSOF. Gaya hambat adalah gaya yang melawan benda saat melewati fluida seperti cairan atau gas. Pada kali ini kami menganalisis gaya hambat sebuah mobil saat melewati udara.
 +
 +
=== Simulasi CFDSOF ===
 +
Untuk mendapatkan gaya hambat untuk setiap kecepatan kami melakukan simulasi di CFDSOF. Untuk variabel kecepatannya ditentukan 5 variabel yaitu:
 +
*5 m/s atau 18 km/h untuk rata-rata kecepatan rush hour dalam kota
 +
*20 m/s atau 72 km/h untuk rata-rata kecepatan non-rush hour dalam kota
 +
*30 m/s atau 108 km/h untuk rata-rata kecepatan pada tol
 +
*45 m/s atau 162 km/h untuk kecepatan maksimal mobil biasa
 +
*55 m/s atau 198 km/h untuk kecepatan maksimal mobil sport
 +
 +
Berikut adalah proses simulasi yang kami lakukan dengan aplikasi CFDSOF
 +
 +
[[File:20191216_191216_0015.jpg | 500px ]]
 +
[[File:20191216_191216_0020.jpg | 500px ]]
 +
[[File:20191216_191216_0021.jpg | 500px ]]
 +
[[File:20191216_191216_0022.jpg | 500px ]]
 +
[[File:20191216_191216_0005.jpg | 500px ]]
 +
[[File:20191216_191216_0006.jpg | 500px ]]
 +
 +
=== Tabel Hasil Data ===
 +
Dari data yang didapatkan dari CFDSOF kami masukkan ke dalam tabel berikut
 +
 +
[[File:tabelcfdsof.png]]
 +
 +
=== Plotting Kurva dan Rumus Hambat ===
 +
Kemudian kami melakukan plotting kecepatan terhadap gaya hambat menjadi sebuah kurva, berikut adalah hasilnya
 +
 +
 +
[[File:grafikcfdsof.png]]
 +
 +
 +
Dari kurva diatas, didapatkan bahwa rumus untuk gaya drag adalah y = 0,0002x3 + 0,013x2 + 0,7353x - 2,6866
 +
 +
Dengan y adalah gaya drag dan x adalah kecepetan, sehingga didapatkan rumus akhir Fd = 0,0002v3 + 0,013v2 + 0,7353v - 2,6866
  
 
== Tugas 3 ==
 
== Tugas 3 ==
 
=== Case Description ===
 
=== Case Description ===
*Airfoil memiliki karakteristik aerodinamis dan merupakan benda yang sering digunakan contohnya pada pesawat
+
Airfoil memiliki karakteristik aerodinamis dan merupakan benda yang sering digunakan contohnya pada pesawat. Thrust pada pesawat berpengaruh pada effisiensi aerodinamis, maka dari itu dibutuhkan Cl/Cd yang kecil. Cl dan Cd tergantung pada angle of attack dari airfoil. Kali ini kita menggunakan airfoil NACA 0012 sebagai objek simulasi. Diasumsikan fluida udara yang melewat air foil steady flow dan incompressible dan simulasi CFD dalam kondisi adiabatic agar simulasi dapat dilakukan dengan lebih mudah.
*Thrust pada pesawat berpengaruh pada effisiensi aerodinamis, maka dari itu dibutuhkan Cl/Cd yang kecil. Cl dan Cd tergantung pada angle of attack dari airfoil.
 
*Airfoil yang digunakan kali ini adalah airfoil NACA 0012
 
*Fluida udara yang melewat air foil steady flow dan incompressible, simulasi CFD dalam kondisi adiabatic
 
  
Kemudian Airfoil yang digunakan dilakukan variasi pada 6 angle of attack yang berbeda berupa (degrees):
+
Kemudian Airfoil yang digunakan dilakukan variasi pada 6 angle of attack yang berbeda berupa:
 
*0  
 
*0  
 
*2  
 
*2  
Line 45: Line 105:
 
*6  
 
*6  
 
*8  
 
*8  
*10  
+
*10
 +
 
 +
 
  
 
=== Simulasi CFD SOF ===
 
=== Simulasi CFD SOF ===
Kemudian dilakukan simulasi airfoil dan didapatkan data sebagai berikut,
+
Dilakukan simulasi airfoil pada 6 sudut tersebut pada aplikas CFD-SOF kemudian didapatkan hasil data sebagai berikut:
  
 
[[File:TabelDrag.png]]
 
[[File:TabelDrag.png]]
 +
[[File:TabelLift.png]]
  
[[File:TabelLift.png]]
+
Menggunakan excel data diatas direpresentasikan dalam bentuk grafik agar dapat melihat kurva. Berikut adalah grafik hasil data:
 +
 
 +
Grafik Drag
  
Kemudian data tersebut direpresentasikan dalam bentuk grafik pada excel,
+
[[File:GrafikDrag1.png]]
  
[[File:GrafikDrag.png]]
+
Grafik Lift
  
 
[[File:GrafikLift.png]]
 
[[File:GrafikLift.png]]
 +
 +
Dengan mencari rumus kurva pada excel, didapatkan rumus drag berupa y = 0,0099x2 - 0,0223x + 1,1466 dan rumus lift berupa y = -0,0203x2 + 0,6021x - 0,0401.
  
 
=== Optimasi ===
 
=== Optimasi ===
Didapatkan rumus drag berupa y = 0,0005x3 + 0,0031x2 + 0,0027x + 1,1357 dan juga rumus lift berupa y = -0,0203x2 + 0,6021x - 0,0401. Dari kedua rumus tersebut kemudian dimasukkan dalam program python dibawah ini:
+
Dari kedua rumus diatas kemudian dimasukkan dalam program python dibawah ini:
  
 +
<nowiki>import numpy as np
 +
from scipy.optimize import minimize
  
    import numpy as np
 
    from scipy.optimize import minimize
 
  
    def calc_drag(x):#drag
+
def calc_drag(x):#drag
 
     x1 = x[0]
 
     x1 = x[0]
 
     drag = 0.0099*x1**2-0.0223*x1**1+1.1466
 
     drag = 0.0099*x1**2-0.0223*x1**1+1.1466
 
     return drag
 
     return drag
  
    def calc_lift(x): #lift
+
def calc_lift(x): #lift
 
     x1 = x[0]
 
     x1 = x[0]
 
     lift = -0.0203*x1**2+0.6021*x1**1-0.0401
 
     lift = -0.0203*x1**2+0.6021*x1**1-0.0401
 
     return lift
 
     return lift
  
    def objective(x): #volume yang diminimalkan
+
def objective(x): #volume yang diminimalkan
 
     return calc_drag(x)
 
     return calc_drag(x)
  
    def constraint1(x): #variable SUDUT yang meminimalkan persamaan garis drag
+
def constraint1(x): #variable SUDUT yang meminimalkan persamaan garis drag
 
     return 90 - calc_drag(x)
 
     return 90 - calc_drag(x)
    def constraint2(x): #variable SUDUT yang meminimalkan persamaan garis lift
+
def constraint2(x): #variable SUDUT yang meminimalkan persamaan garis lift
 
     return 90 - calc_lift(x)
 
     return 90 - calc_lift(x)
  
    con1=({'type':'ineq','fun':constraint1})
+
con1=({'type':'ineq','fun':constraint1})
    con2=({'type':'ineq','fun':constraint2})
+
con2=({'type':'ineq','fun':constraint2})
    cons = (con1,con2)
+
cons = (con1,con2)
  
    x1_guess = 50
+
x1_guess = 50
  
    x0 = np.array([x1_guess])
+
x0 = np.array([x1_guess])
  
    sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})
+
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})
  
    xopt = sol.x
+
xopt = sol.x
    forceopt = -sol.fun
+
forceopt = -sol.fun
  
    dragopt = calc_drag(xopt) # drag optimal
+
dragopt = calc_drag(xopt) # drag optimal
    liftopt = calc_lift(xopt) # lift optimal
+
liftopt = calc_lift(xopt) # lift optimal
  
    print ('sudut optimal = '+str(-xopt[0]))
+
print ('sudut optimal = '+str(-xopt[0]))
    print ('total force optimal = '+str(forceopt))
+
print ('total force optimal = '+str(forceopt))
    print ('drag force optimal = '+str(-dragopt))
+
print ('drag force optimal = '+str(-dragopt))
    print ('lift force optimal = '+str(liftopt))
+
print ('lift force optimal = '+str(liftopt))
  
  
    # In[10]:
+
# In[10]:
  
  
    import numpy as np
+
import numpy as np
    from scipy.optimize import minimize
+
from scipy.optimize import minimize
  
  
    def calc_drag(x):#drag
+
def calc_drag(x):#drag
 
     x1 = x[0]
 
     x1 = x[0]
 
     drag = 0.0099*x1**2-0.0223*x1**1+1.1466
 
     drag = 0.0099*x1**2-0.0223*x1**1+1.1466
 
     return drag
 
     return drag
  
    def calc_lift(x): #lift
+
def calc_lift(x): #lift
 
     x1 = x[0]
 
     x1 = x[0]
 
     lift = -0.0203*x1**2+0.6021*x1**1-0.0401
 
     lift = -0.0203*x1**2+0.6021*x1**1-0.0401
 
     return lift
 
     return lift
  
    def objective(x): #volume yang diminimalkan
+
def objective(x): #volume yang diminimalkan
 
     return calc_lift(x)
 
     return calc_lift(x)
  
    def constraint1(x): #variable SUDUT yang meminimalkan persamaan garis drag
+
def constraint1(x): #variable SUDUT yang meminimalkan persamaan garis drag
 
     return 90 - calc_drag(x)
 
     return 90 - calc_drag(x)
    def constraint2(x): #variable SUDUT yang meminimalkan persamaan garis lift
+
def constraint2(x): #variable SUDUT yang meminimalkan persamaan garis lift
 
     return 90 - calc_lift(x)
 
     return 90 - calc_lift(x)
  
    con1=({'type':'ineq','fun':constraint1})
+
con1=({'type':'ineq','fun':constraint1})
    con2=({'type':'ineq','fun':constraint2})
+
con2=({'type':'ineq','fun':constraint2})
    cons = (con1,con2)
+
cons = (con1,con2)
  
    x1_guess = 50
+
x1_guess = 50
  
    x0 = np.array([x1_guess])
+
x0 = np.array([x1_guess])
  
    sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})
+
sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})
  
    xopt = sol.x
+
xopt = sol.x
    forceopt = -sol.fun
+
forceopt = -sol.fun
  
    dragopt = calc_drag(xopt) # drag optimal
+
dragopt = calc_drag(xopt) # drag optimal
    liftopt = calc_lift(xopt) # lift optimal
+
liftopt = calc_lift(xopt) # lift optimal
  
    print ('sudut optimal = '+str(xopt[0]))
+
print ('sudut optimal = '+str(xopt[0]))
    print ('total force optimal = '+str(-forceopt))
+
print ('total force optimal = '+str(-forceopt))
    print ('drag force optimal = '+str(dragopt))
+
print ('drag force optimal = '+str(dragopt))
    print ('lift force optimal = '+str(liftopt))
+
print ('lift force optimal = '+str(liftopt))</nowiki>
  
 
Kemudian setelah program dijalan didapatkan hasil sebagai berikut:
 
Kemudian setelah program dijalan didapatkan hasil sebagai berikut:
 
+
<nowiki>Optimization terminated successfully.    (Exit mode 0)
    Optimization terminated successfully.    (Exit mode 0)
 
 
             Current function value: 1.1340421717179265
 
             Current function value: 1.1340421717179265
 
             Iterations: 5
 
             Iterations: 5
 
             Function evaluations: 15
 
             Function evaluations: 15
 
             Gradient evaluations: 5
 
             Gradient evaluations: 5
    sudut optimal = -1.1262713580043062
+
sudut optimal = -1.1262713580043062
    total force optimal = -1.1340421717179265
+
total force optimal = -1.1340421717179265
    drag force optimal = -1.1340421717179265
+
drag force optimal = -1.1340421717179265
    lift force optimal = 0.6122776950656171
+
lift force optimal = 0.6122776950656171
    Optimization terminated successfully.    (Exit mode 0)
+
Optimization terminated successfully.    (Exit mode 0)
 
             Current function value: -128.89494468045336
 
             Current function value: -128.89494468045336
 
             Iterations: 7
 
             Iterations: 7
 
             Function evaluations: 24
 
             Function evaluations: 24
 
             Gradient evaluations: 7
 
             Gradient evaluations: 7
    sudut optimal = 95.86991386912578
+
sudut optimal = 95.86991386912578
    total force optimal = -128.89494468045336
+
total force optimal = -128.89494468045336
    drag force optimal = 90.00000073492711
+
drag force optimal = 90.00000073492711
    lift force optimal = -128.89494468045336
+
lift force optimal = -128.89494468045336</nowiki>

Latest revision as of 14:44, 17 December 2019

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ

Anggota Kelompok:

  • Fikridiya Bagusrana (1706036154)
  • Rifky Ramadhan Prakoso (1706036330)
  • Mochamad Farhan Zidny (1706986391)
  • Andika Ridwan Pratama (1706986302)


Tugas 1

Governing Equation

Berikut adalah governing equation pada mobil yang memiliki percepatan, gesekan, dan hambatan dengan udara.

Sebuah mobil memiliki 3 gaya yang bekerja padanya yaitu:

  • F = m*a
  • F gesek = m*g*cf
  • F hambat = 0.5*cd*rho*area*vt^2

Dengan membagi ketiga gaya tersebut dengan massa didapatkan percepatan total

v'(t)= (F - (F gesek + F hambat))/m

Kemudian apabila disubsitusikan ke turunan dari kecepatan terhadap waktu

v'(t)= v(t)/t

dapat dicari waktu dengan cara membagi kecepatan dengan percepatan total, dimana percepatan total adalah turunan dari kecepatan terhadap waktu

t= v(t) / ((F - (F gesek + F hambat))/m)

Pseudocode

Berikut adalah pseudocode untuk mencari kecepatan maksimum dan pada waktu berapa.

Programmobil1.png

Program Python

Dengan menggunakan metode runge-kutta, berikut adalah program kami dari python

Programmobilrungekutta.png

Untuk variable yang digunakan untuk simulasi berupa:

  • Power= 500 KW
  • Massa= 1500 kg
  • Percepatan gravitasi= 9.81 m/s^2
  • Koefisien gesek= 0.7
  • Massa jenis= 1.2 kg/m^2
  • Area= 10 m^2
  • Koefisien drag= 0.2

Grafik dan Hasil

Berikut adalah hasil grafik serta angka kecepatan dan waktu maksimum

Hasilmobil.png

Tugas 2

Pada tugas kali ini kami ditugaskan untuk mencari rumus dari gaya hambat menggunakan simulasi CFDSOF. Gaya hambat adalah gaya yang melawan benda saat melewati fluida seperti cairan atau gas. Pada kali ini kami menganalisis gaya hambat sebuah mobil saat melewati udara.

Simulasi CFDSOF

Untuk mendapatkan gaya hambat untuk setiap kecepatan kami melakukan simulasi di CFDSOF. Untuk variabel kecepatannya ditentukan 5 variabel yaitu:

  • 5 m/s atau 18 km/h untuk rata-rata kecepatan rush hour dalam kota
  • 20 m/s atau 72 km/h untuk rata-rata kecepatan non-rush hour dalam kota
  • 30 m/s atau 108 km/h untuk rata-rata kecepatan pada tol
  • 45 m/s atau 162 km/h untuk kecepatan maksimal mobil biasa
  • 55 m/s atau 198 km/h untuk kecepatan maksimal mobil sport

Berikut adalah proses simulasi yang kami lakukan dengan aplikasi CFDSOF

20191216 191216 0015.jpg 20191216 191216 0020.jpg 20191216 191216 0021.jpg 20191216 191216 0022.jpg 20191216 191216 0005.jpg 20191216 191216 0006.jpg

Tabel Hasil Data

Dari data yang didapatkan dari CFDSOF kami masukkan ke dalam tabel berikut

Tabelcfdsof.png

Plotting Kurva dan Rumus Hambat

Kemudian kami melakukan plotting kecepatan terhadap gaya hambat menjadi sebuah kurva, berikut adalah hasilnya


Grafikcfdsof.png


Dari kurva diatas, didapatkan bahwa rumus untuk gaya drag adalah y = 0,0002x3 + 0,013x2 + 0,7353x - 2,6866

Dengan y adalah gaya drag dan x adalah kecepetan, sehingga didapatkan rumus akhir Fd = 0,0002v3 + 0,013v2 + 0,7353v - 2,6866

Tugas 3

Case Description

Airfoil memiliki karakteristik aerodinamis dan merupakan benda yang sering digunakan contohnya pada pesawat. Thrust pada pesawat berpengaruh pada effisiensi aerodinamis, maka dari itu dibutuhkan Cl/Cd yang kecil. Cl dan Cd tergantung pada angle of attack dari airfoil. Kali ini kita menggunakan airfoil NACA 0012 sebagai objek simulasi. Diasumsikan fluida udara yang melewat air foil steady flow dan incompressible dan simulasi CFD dalam kondisi adiabatic agar simulasi dapat dilakukan dengan lebih mudah.

Kemudian Airfoil yang digunakan dilakukan variasi pada 6 angle of attack yang berbeda berupa:

  • 0
  • 2
  • 4
  • 6
  • 8
  • 10


Simulasi CFD SOF

Dilakukan simulasi airfoil pada 6 sudut tersebut pada aplikas CFD-SOF kemudian didapatkan hasil data sebagai berikut:

TabelDrag.png TabelLift.png

Menggunakan excel data diatas direpresentasikan dalam bentuk grafik agar dapat melihat kurva. Berikut adalah grafik hasil data:

Grafik Drag

GrafikDrag1.png

Grafik Lift

GrafikLift.png

Dengan mencari rumus kurva pada excel, didapatkan rumus drag berupa y = 0,0099x2 - 0,0223x + 1,1466 dan rumus lift berupa y = -0,0203x2 + 0,6021x - 0,0401.

Optimasi

Dari kedua rumus diatas kemudian dimasukkan dalam program python dibawah ini:

import numpy as np
from scipy.optimize import minimize


def calc_drag(x):#drag
    x1 = x[0]
    drag = 0.0099*x1**2-0.0223*x1**1+1.1466
    return drag

def calc_lift(x): #lift
    x1 = x[0]
    lift = -0.0203*x1**2+0.6021*x1**1-0.0401
    return lift

def objective(x): #volume yang diminimalkan
    return calc_drag(x)

def constraint1(x): #variable SUDUT yang meminimalkan persamaan garis drag
    return 90 - calc_drag(x)
def constraint2(x): #variable SUDUT yang meminimalkan persamaan garis lift
    return 90 - calc_lift(x)

con1=({'type':'ineq','fun':constraint1})
con2=({'type':'ineq','fun':constraint2})
cons = (con1,con2)

x1_guess = 50

x0 = np.array([x1_guess])

sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})

xopt = sol.x
forceopt = -sol.fun

dragopt = calc_drag(xopt) # drag optimal
liftopt = calc_lift(xopt) # lift optimal

print ('sudut optimal = '+str(-xopt[0]))
print ('total force optimal = '+str(forceopt))
print ('drag force optimal = '+str(-dragopt))
print ('lift force optimal = '+str(liftopt))


# In[10]:


import numpy as np
from scipy.optimize import minimize


def calc_drag(x):#drag
    x1 = x[0]
    drag = 0.0099*x1**2-0.0223*x1**1+1.1466
    return drag

def calc_lift(x): #lift
    x1 = x[0]
    lift = -0.0203*x1**2+0.6021*x1**1-0.0401
    return lift

def objective(x): #volume yang diminimalkan
    return calc_lift(x)

def constraint1(x): #variable SUDUT yang meminimalkan persamaan garis drag
    return 90 - calc_drag(x)
def constraint2(x): #variable SUDUT yang meminimalkan persamaan garis lift
    return 90 - calc_lift(x)

con1=({'type':'ineq','fun':constraint1})
con2=({'type':'ineq','fun':constraint2})
cons = (con1,con2)

x1_guess = 50

x0 = np.array([x1_guess])

sol = minimize(objective,x0, method='SLSQP',constraints=cons, options={'disp':True})

xopt = sol.x
forceopt = -sol.fun

dragopt = calc_drag(xopt) # drag optimal
liftopt = calc_lift(xopt) # lift optimal

print ('sudut optimal = '+str(xopt[0]))
print ('total force optimal = '+str(-forceopt))
print ('drag force optimal = '+str(dragopt))
print ('lift force optimal = '+str(liftopt))

Kemudian setelah program dijalan didapatkan hasil sebagai berikut:

Optimization terminated successfully.    (Exit mode 0)
            Current function value: 1.1340421717179265
            Iterations: 5
            Function evaluations: 15
            Gradient evaluations: 5
sudut optimal = -1.1262713580043062
total force optimal = -1.1340421717179265
drag force optimal = -1.1340421717179265
lift force optimal = 0.6122776950656171
Optimization terminated successfully.    (Exit mode 0)
            Current function value: -128.89494468045336
            Iterations: 7
            Function evaluations: 24
            Gradient evaluations: 7
sudut optimal = 95.86991386912578
total force optimal = -128.89494468045336
drag force optimal = 90.00000073492711
lift force optimal = -128.89494468045336