-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathOther helper functions.py
52 lines (43 loc) · 1.51 KB
/
Other helper functions.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
def interpolater(Rpm, rpm, Engine_torque):
"""
interpolates for the car toruqe vs rpm curve
"""
i = 1
while i < len(rpm):
if rpm[i-1] <= Rpm <= rpm[i]:
break
else:
i += 1
torque = ((Rpm-rpm[i-1])/(rpm[i]-rpm[i-1]))*(Engine_torque[i]-Engine_torque[i-1])+Engine_torque[i-1]
return torque
def Force_calculator(v):
"""
calculates wheel forces (tractive effort)
"""
if 0 <= v < (RPM*2*pi/60)/(PR*FRR*R1)*wheel_raduis:
R = Ri['R1']
#print('R1')
elif (RPM*2*pi/60)/(PR*FRR*R1)*wheel_raduis <= v < (RPM*2*pi/60)/(PR*FRR*R2)*wheel_raduis:
R = Ri['R2']
#print('R2')
elif (RPM*2*pi/60)/(PR*FRR*R2)*wheel_raduis <= v < (RPM*2*pi/60)/(PR*FRR*R3)*wheel_raduis:
R = Ri['R3']
#print('R3')
elif (RPM*2*pi/60)/(PR*FRR*R3)*wheel_raduis <= v < (RPM*2*pi/60)/(PR*FRR*R4)*wheel_raduis:
R = Ri['R4']
#print('R4')
elif (RPM*2*pi/60)/(PR*FRR*R4)*wheel_raduis <= v < (RPM*2*pi/60)/(PR*FRR*R5)*wheel_raduis:
R = Ri['R5']
else:
R = Ri['R6']
F = wheel_torque(v,R)/wheel_raduis
#print(F)
return F
#Torque calculation
def wheel_torque(v,R): #returns wheel toruqe
rpm_wheel = (v/wheel_raduis)*(60/(2*pi))
rpm_engine = rpm_wheel*FRR*R*PR
#print('rpm_engine', rpm_engine)
torque = interpolater(rpm_engine, rpm, Engine_torque) #interpolates for the car toruqe vs rpm curve
wheel_torque = torque*FRR*PR*R
return wheel_torque