-
Notifications
You must be signed in to change notification settings - Fork 0
/
CalculateEnergyUse.py
123 lines (93 loc) · 2.59 KB
/
CalculateEnergyUse.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import numpy as np
import matplotlib.pyplot as plt
def calc_eff(V):
a = -0.0024
b = 0.084
c = -0.9
d = 3.6
if V < 10:
eta = V*0.06
elif V < 20:
eta = a*V**3 + b*V**2 + c*V + d
else:
eta = 0.00001
return eta
# Plot Drag
# http://cafefoundation.org/v2/pdf_tech/MPG.engines/AIAA.1980.1847.B.H.Carson.pdf
def plot_drag():
# Check to see how cruise efficiency is affected by velocity
# Parameter values
rho = 1.225 #air density
f = 0.2 #equivalent parasite area
W = 10 #weight of aircraft
b = 0.20 #span
e = 0.9 #Oswald's efficiency factor
#velocity
v = np.arange(0.01, 30, 0.1)
#Defined in paper (2nd column, page 2)
A = rho*f/(2*W)
B = 2*W/(rho*b**2*np.pi*e)
#vehicle specific power (2nd column, page 4)
#epsilon = 1
# https://en.wikipedia.org/wiki/Vehicle-specific_power
# http://cires1.colorado.edu/jimenez/Papers/Jimenez_VSP_9thCRC_99_final.pdf
#defined in paper (1st column, page 5)
# for i = 1 : length(v)
#
#cruise efficiency
# k(i) = epsilon(i)/v(i)
#
# end
# for i = 1 : length(v)
#
# C(i) = 0.57*k(i)*(A**3*B)**(-1/4)
#
# end
#calculate l_d
d_l = np.zeros(len(v))
l_d = np.zeros(len(v))
for i in range(len(v)):
d_l[i] = A*v[i]**2 + B/v[i]**2
l_d[i] = d_l[i]**(-1)
plt.figure()
# set(gca,'FontSize',20)
# set(gca,'FontSize',20)
plt.plot(v,d_l)#,'LineWidth',2)
plt.xlabel('UAV Velocity (m/s)')#,'fontsize',18)
plt.ylabel('Drag (N)')#,'fontsize',18)
#title('Drag vs. UAV Speed')
plt.ylim(0, 40)
#plot propulsive efficiency
V = np.arange(0.01, 30, 0.1)
a = -0.0024
b = 0.084
c = -0.9
d = 3.6
eta = np.zeros(len(V))
for i in range(len(V)):
if V[i] < 10:
eta[i] = V[i]*0.06
elif V[i] < 20:
eta[i] = a*V[i]**3 + b*V[i]**2 + c*V[i] + d
else:
eta[i] = 0.00001
plt.figure()
# set(gca,'FontSize',20)
# set(gca,'FontSize',20)
plt.plot(V,eta)#,'LineWidth',2)
#title('Efficiency vs. UAV Speed')
plt.xlim(0, 21)
plt.ylim(0, 1)
plt.xlabel('UAV Velocity (m/s)')#,'fontsize',18)
plt.ylabel('Overall Propulsive Efficiency')#,'fontsize',18)
#-----------------------------------------#
opt = np.zeros(len(V))
for i in range(len(V)):
opt[i] = d_l[i]/eta[i]
plt.figure()
# set(gca,'FontSize',20)
# set(gca,'FontSize',20)
plt.plot(V,opt)
plt.ylim(0, 20)
plt.xlim(5, 20)
plt.show()