Saturday, November 21, 2015

homework and exercises - How to correctly determine the stopping distance of a coasting bicycle when considering aerodynamic drag?


Given values of Crr, CdA and ρ(Air density) how can I correctly determine the distance and time taken to coast from some υ1 to υ2?




Answer



Assuming that your rolling resistance is independent of velocity, and that the force of rolling friction is frr=mgCrr, you can write the equation of motion as


F=mdvdt=(mgCrr+12ρv2CdA)


From Wolfram Alpha we learn that the solution for


dvdt=(a+bv2)


is


v(t)=abtan(ab(c1+t))


You need to think about this a little bit to understand that the situation where you are decelerating happens then c1+t<0. Getting the values of a and b right:


a=gCrrb=ρCdA2m


The result is



v(t)=2mgCrrρCdAtan(ρCdA gCrr2m(c1+t))


You find the integration constant c1 from the initial velocity (put t=0; you will find that c1 must be negative), and the evolution of velocity with time follows. Interestingly, there is a finite time to come to a complete stop. That doesn't happen when you have "pure" quadratic drag - it's the rolling friction that dominates at low speeds.


Update


Just to check that things work as expected, I wrote a quick Python program that computes the velocity according to the above expression, incorporating also the effect of slope (note - if the slope is such that the object would accelerate, you get a "math domain error". This is not a hard thing to fix, but it would make the code more complicated to read, so I left that out for now.)


Running the code with three values of slope (where negative slope = downhill) gave the following plot; you can see that the slope of -5° almost exactly cancels the rolling resistance of 0.1 (arcsin(0.1) = 5.7°), leaving just the quadratic drag; if you set the quadratic drag coefficient Cad to zero, the velocity ends up almost completely unchanged. So yes, this is believable.


enter image description here


And the code (this is not meant to show "good Python", just something I threw together for a quick demo):


# rolling resistance and quadratic drag
import math
import numpy as np

import matplotlib.pyplot as plt

# pick some values for mass etc:
# these have obvious meanings, and SI units
m = 1.
g = 9.81
crr = 0.1
cda = 0.05
rho = 1.2
v0 = 10.


# convert to numbers we use in the formula
b = rho*cda/(2*m)

# a function that allows me to use degrees for slope:
def sind(theta):
return math.sin(theta*math.pi/180.)

def vt(t,a,b,c1):
# implement the expression I derived

temp = -np.sqrt(a/b)*np.tan(np.sqrt(a*b)*(c1+t))
# if velocity goes negative, things go awry
stop = np.where(temp<0)
if np.prod(np.size(stop))>0:
# set all elements past the point where v first goes negative to zero
temp[stop[0][0]:]=0
return temp

# range of time for simulation:
t = np.linspace(0, 15, 500)


plt.figure()

# calculate for a range of slopes
for slope in np.arange(-5,6,5):
a = g*(crr + sind(slope))
c1 = math.atan(-v0*math.sqrt(b/a))/math.sqrt(a*b)
plt.plot(t, vt(t,a,b,c1), label='slope = %d'%slope)

plt.xlabel('time (s)')

plt.ylabel('velocity (m/s)')
plt.title('coasting down with rolling and quadratic friction')
plt.legend()
plt.show()

No comments:

Post a Comment

classical mechanics - Moment of a force about a given axis (Torque) - Scalar or vectorial?

I am studying Statics and saw that: The moment of a force about a given axis (or Torque) is defined by the equation: $M_X = (\vec r \times \...