Monday, February 4, 2013

tail/headwind effect on speed: analytic second-order evaluation

I already showed my "simple" model for how an arbitrary wind affects speed. This was based in part on a numerical fit to an implicit power-speed calculation, where I found to decent approximation the logarithm of speed as a function of tailwind/headwind was well fit by a parabola. The formula I used, combining the effect of a tailwind/headwind with the effect of a crosswind, was:

s' = exp[ −(sw' / 3)2 ] exp[ 2 swx'/ 3 ],

where v0' is the ratio of flat-road speed with the wind to flat-road speed without the wind, sw' is the ratio of wind speed to flat-road speed without wind, and swx' is the component of that in the direction of rider travel.

I already showed an analytic derivation of the cross-wind term, which is proportional to the square of sw'. I also did a first-order dependence of s' on swx'. However, to justify this full model other than numerically requires a second-order dependence of s' on swx'.

So to do this I return to the power-speed model, where I assume two coefficients for power: fw is a coefficient for wind resistance, and fm is a coefficient for gravity (rolling resistance and climbing). I exclude drivetrain losses, assuming they are constant at constant power. Since I eventually constrain power to be constant, drivetrain losses are also constant, and so I am okay simply omitting it.

The power-speed equation is, in terms of these variables:

P' = s' [ fw (s' - sw')2 + fm] ,

where I assume a normalized power P' = 1 when s' = 1 and sw' = 0, yielding the constraint fw + fm = 1.

For the first-order analysis I differentiated this once:

dP' = d { s' [ fw (s' - sw')2 + fm] } = 0 .

The differential power is zero because I assume constant power. This yields:

dP' = ds' [ fw (s' - sw')2 + fm ] + 2 fw s' (s' - sw') (ds' - dsw') .

I am interested in ds' / dsw', so :

ds' [ 2 fw s'(s' − sw') + fw (s' - sw')2 + fm ] = dsw' 2 fw s' (s' − sw') .

I can then trivially calculate the derivative:

ds' / dsw' = 2 fw s' (s' − sw') / [ 2 fw s'(s' − sw') + fw (s' - sw')2 + fm ]

So if I am starting on flat roads with minimal wind, then s' = 1 and sw = 0 and I get:

d s' / d sw' = 2fw / (3fw + fm) .

If I define f to be the fraction of power originally going into wind resistance, this becomes:

d s' / d sw' = 2f / (2f + 1)

But now I want to make sure I get this to second-order, as well. This is tricky (see next post) because I need to apply the chain rule properly, and I had it incorrect before I finally revised it. The result is, which I verified by comparison with numerical calculation:

d2s' / dsw'2 = 2 f (4 f - 1) / (2 f + 1)3 .

Here again I use f as the fraction of power, in zero wind, from wind resistance.

I'll assume an exponential dependence, which was validated in the numerical fits. Exponential fits make sense, since at constant power wind can't change direction from forward to backward, speed can only approach zero, and an exponential dependence has that behavior. With the exponential dependence matching the first derivative results in a non-zero second derivative, so the second-order coefficient in the exponent needs to be evaluated to account only for the difference.

When I do this I get:

v0 =
  v00 ×
  exp [ 2f sw / (2f + 1) v00 ] ×
  exp [ −[f (4 f2 - 2 f + 1) / (2 f + 1)3] (sw / v00)2]

This matches what I have been using assuming f = 1, or in other words that wind resistance dominates. This isn't a great approximation, but it's a good compromise for consolidation with the cross-wind term.

So this gets rid of the ugly numerical fits in the wind analysis. There is a first-order dependence when there's a tail-wind or head-wind, but the analysis needs to be done to second-order on a closed circuit with constant wind because the first-order component cancels on the upwind and downwind portions, so second-order components become important.


djconnel said...

The original posting had an error in the second derivative and another in converting that to an exponential function. As of the posting of this comment, it is partially corrected, but is only approximate. I will correct it soon.

djconnel said...

Finally corrected this, confirmed with comparison to numerical calculations, barring transcription errors.