AT Project Python G3.py
AT Project Python G3.py
pyplot as plt
import numpy as np
# Functions
def tractive_force(v_v,i_x):
F_d = (1-lambda_d(v_v,i_x))*0.9*engine_power(engine_speed(v_v,i_x))/v_v*10**3
return (F_d)
def engine_speed(v_v,i_x):
n_e = (v_v * i_x * 60) / (2 * np.pi * r_dyn * i_fd)
return(n_e)
def vehicle_speed(n_e,i_x):
v_v = (n_e * 2 * np.pi * r_dyn * i_fd) / (i_x * 60)
return(v_v)
def lambda_d(v_v,i_x):
lambda_d = (v_w(v_v,i_x)-v_v)/v_w(v_v,i_x)*100
return(lambda_d)
def v_w(v_v,i_x):
v_w = omega_w(v_v,i_x)*r_dyn
return(v_w)
def n_w(v_v,i_x):
n_w = engine_speed(v_v,i_x)/(i_x*i_fd)
return(n_w)
def omega_w(v_v,i_x):
omega_w = n_w(v_v,i_x)*2*np.pi/60 #rps
return(omega_w)
def engine_power(n_e):
if n_e >= 1000 and n_e <= 2900:
P_e = (-4.87918637427334367e+00) + 2.43089071441204667e-02*n_e + (-
5.80164848308363865e-07)*n_e**2
elif n_e > 2900 and n_e <= 5250:
P_e = (-7.36710266228974007e+01) + 7.73849754777409804e-02*n_e + (-
1.26450489849465041e-05)*n_e**2 + 6.69847786717427827e-10*n_e**3
elif n_e > 5250 and n_e <= 5550:
P_e = (-4.15125000000000227e+02) + 1.89000000000000112e-01*n_e + (-
1.80000000000000106e-05)*n_e**2
return(P_e)
#a. Gear 1
v1 = np.zeros(len(n))
Fd1 = np.zeros(len(n))
for i,e in enumerate(n):
v1[i] = vehicle_speed(e,17.6)
Fd1[i] = tractive_force(v1[i],17.6)
vert.append(v1[-1])
ne1 = np.zeros(len(n))
for i,e in enumerate(n):
v1[i] = vehicle_speed(e,17.6)
ne1[i] = engine_speed(v1[i],17.6)
#b. Gear 2
v2 = np.zeros(len(n))
Fd2 = np.zeros(len(n))
for i,e in enumerate(n):
v2[i] = vehicle_speed(e,10.33)
Fd2[i] = tractive_force(v2[i],10.33)
vert.append(v2[-1])
ne2 = np.zeros(len(n))
for i,e in enumerate(n):
v2[i] = vehicle_speed(e,10.33)
ne2[i] = engine_speed(v2[i],10.33)
i = np.abs(v2 - v1[-1]).argmin()
index.append(i)
decrease_speed.append(round(ne1[-1]-ne2[i],0))
#c. Gear 3
v3 = np.zeros(len(n))
Fd3 = np.zeros(len(n))
for i,e in enumerate(n):
v3[i] = vehicle_speed(e,6.68)
Fd3[i] = tractive_force(v3[i],6.68)
vert.append(v3[-1])
ne3 = np.zeros(len(n))
for i,e in enumerate(n):
v3[i] = vehicle_speed(e,6.68)
ne3[i] = engine_speed(v3[i],6.68)
i = np.abs(v3 - v2[-1]).argmin()
index.append(i)
decrease_speed.append(round(ne2[-1]-ne3[i],0))
#d. Gear 4
v4 = np.zeros(len(n))
Fd4 = np.zeros(len(n))
for i,e in enumerate(n):
v4[i] = vehicle_speed(e,4.62)
Fd4[i] = tractive_force(v4[i],4.62)
vert.append(v4[-1])
ne4 = np.zeros(len(n))
for i,e in enumerate(n):
v4[i] = vehicle_speed(e,4.62)
ne4[i] = engine_speed(v4[i],4.62)
i = np.abs(v4 - v3[-1]).argmin()
index.append(i)
decrease_speed.append(round(ne4[-1]-ne3[i],0))
#e. Gear 5
v5 = np.zeros(len(n))
Fd5 = np.zeros(len(n))
for i,e in enumerate(n):
v5[i] = vehicle_speed(e,3.35)
Fd5[i] = tractive_force(v5[i],3.35)
vert.append(v5[-1])
ne5 = np.zeros(len(n))
for i,e in enumerate(n):
v5[i] = vehicle_speed(e,3.35)
ne5[i] = engine_speed(v5[i],3.35)
i = np.abs(v5 - v4[-1]).argmin()
index.append(i)
decrease_speed.append(round(ne5[-1]-ne4[i],0))
#f. Gear 6
v6 = np.zeros(len(n))
Fd6 = np.zeros(len(n))
for i,e in enumerate(n):
v6[i] = vehicle_speed(e,2.52)
Fd6[i] = tractive_force(v6[i],2.52)
vert.append(v6[-1])
ne6 = np.zeros(len(n))
for i,e in enumerate(n):
v6[i] = vehicle_speed(e,2.52)
ne6[i] = engine_speed(v6[i],2.52)
i = np.abs(v6 - v5[-1]).argmin()
index.append(i)
decrease_speed.append(round(ne6[-1]-ne5[i],0))
# Results
print(decrease_speed)
# Figures
# plt.figure()
# plt.plot(v1, Fd1)
# plt.xlabel("Vehicle speed $v_v$ (m/s)")
# plt.ylabel("Tractive force $F_d$ (N)")
# plt.grid()
# plt.show()
# plt.figure()
# plt.plot(v1,Fd1,"b-",v2,Fd2,"r-",v3,Fd3,"g-",v4,Fd4,"k-",v5,Fd5,"y-",v6,Fd6,"m-")
# plt.xlabel("Vehicle speed $v_v$ (m/s)")
# plt.ylabel("Tractive force $F_d$ (N)")
# plt.grid()
# plt.show()
plt.figure()
plt.plot(v1,ne1,"b-",v2,ne2,"r-",v3,ne3,"g-",v4,ne4,"k-",v5,ne5,"y-",v6,ne6,"m-")
plt.vlines(x=vert[0],ymin=ne1[-1],ymax=ne2[index[0]], color="black", linestyle="-")
plt.vlines(x=vert[1],ymin=ne2[-1],ymax=ne3[index[1]], color="black", linestyle="-")
plt.vlines(x=vert[2],ymin=ne3[-1],ymax=ne4[index[2]], color="black", linestyle="-")
plt.vlines(x=vert[3],ymin=ne4[-1],ymax=ne5[index[3]], color="black", linestyle="-")
plt.vlines(x=vert[4],ymin=ne5[-1],ymax=ne6[index[4]], color="black", linestyle="-")
plt.vlines(x=vert[5],ymin=1000,ymax=ne6[-1], color="black", linestyle="-")
plt.xlabel("Vehicle speed $v_v$ (m/s)")
plt.ylabel("engine rotational frequency $n_e$ (s^(-1))")
plt.grid()
plt.show()