Showing posts with label Performance modelling. Show all posts
Showing posts with label Performance modelling. Show all posts

Sunday, 10 May 2026

Do aerodynamics matter off-road? Yes, more than you might think...


Road bike power losses versus speed
"Aerodynamics doesn't matter below 20 kph"
  is something I often hear on cycling podcasts or internet forums.

Sometimes the "20 kph" gets substituted with 15 kph or 25 kph or some other arbitrary speed, but regardless, these kind of statements suggest incorrectly that there is some threshold speed below which the aerodynamic drag suddenly becomes zero, or negligible.

As an aerodynamicist, I tend to get irritated by these kind of statements.  As the plot above shows, the power losses due to aerodynamic drag get progressively larger at faster speeds, but there is no speed 'threshold' at which aerodynamics doesn't matter.  It's a continuum.  A more appropriate question to ask would "How important is aerodynamics at xx kph?".  This is the subject of this blog post: How much does aerodynamics matter off-road, at those slower speeds?


What % of power goes to overcoming aerodynamic losses?

To answer that question, I calculated the power losses for three power outputs, and three scenarios:

    - Power outputs: 150 Watt, 300 Watts & 450 Watts
    - Scenarios: Road Bike, Gravel Bike, Mountain Bike

The 150-450W power range covers a wide variety of rider abilities and situations, ranging from recreational riders doing an endurance event, to a professional rider doing a shorter effort.
The road, gravel and mountain bikes scenarios are represented through changes to the rolling resistance coefficient values (CRR) primarily, but also some small changes to the aerodynamic drag area (CdA) to reflect the more draggy set-ups for gravel and mountain bikes:

   - Road Bike:        CdA = 0.32, CRR = 0.0040
   - Gravel Bike:      CdA = 0.34, CRR = 0.0133
   - Mountain Bike:  CdA = 0.40, CRR = 0.0159

The road bike CRR values comes from my own testing.  The off-road CRR values come from data gathered from the excellent testing performed by John Karrasch, using Cat 2 gravel CRR values for the gravel bike and Cat 3 gravel for the MTB case.  I used values for the Specialized Pathfinder 700x45 mm tyre for gravel (CRR=0.0133) and the Maxxis Aspen 29x2.4" tyre for MTB (CRR=0.0159).  Those are both popular and reasonably fast gravel and MTB tyres.

The plot below shows what percentage of the rider's power output goes into overcoming aerodynamic losses, and what percentages are lost elsewhere.  To keep things simple I've assumed zero gradient, so gravitational losses are zero.

The aerodynamic losses are the largest percentage for most of the nine cases shown in the plot above.  Not surprisingly, for the road bike case, the aerodynamic losses dominate, with those % values having a fairly narrow range of 78-87% even over that very large 150-450W power range.  This is already an important point to note: Although the number of Watts lost to aerodynamic losses varies significantly across the three 150/300/450W rider power cases, but the percentage of the aerodynamic losses is fairly similar for all three cases.

The off-road cases are interesting too though.  The percentage of the power lost to aerodynamic losses is still significant, and accounts for over half the power losses in most of the off-road cases.  It's only the two slowest cases, the 150W cases, where the rolling resistance losses slightly exceed the aerodynamics losses.  Still, in those two cases, aerodynamics still accounts for about 40-50%, which is still a significant proportion.

It's clear then that yes, aerodynamics do matter off-road, even across this wide range of scenarios which cover the vast majority of off-road riding abilities and conditions.

Out of interest, I calculated how much slower you'd need to go for aerodynamics to become insignificant.  I modelled a very slow 16 kph (10 mph) case, which I think represents a low level amateur racing cyclocross in the most foul winter conditions, having a very high CRR of 0.06 and a power output of 250W (which by the way is fairly representative of my own cyclocross races).  In that case, at such so slow speeds, the aerodynamic losses are only 7%, so far less significant than rolling resistance losses through thick mud.  Even so, aerodynamics is still not negligible, even in this extreme case of a muddy cyclocross race.


Are aerodynamic improvements worth making?

This is a slightly more interesting question.  While the percentage of aerodynamic losses, discussed above, show that aerodynamics is important, what most of us really want to know is whether it's worth the effort of improving our aerodynamics when riding off-road.

I did a similar calculation to before, modelling road, gravel and MTB cases at those three different powers (150/300/450 Watts).  However, I calculated how much faster the speeds would be if the CdA was reduced by 0.012.  This 0.012 reduction to the drag coefficient is a 3.0-3.8% reduction.  It represents the kind of aero benefit that you'd achieve by swapping a non-aero helmet for an aerodynamic road helmet, like the Specialized Evade.  In fact, I calculated this 0.012 value from this video posted by Specialized, by reverse-engineering their quoted 40 km time trial time saving of 42 seconds.

The plot below shows how much the speed improves by, as a percentage, by making that same aerodynamic improvement for all nine cases.  Note that the % time saving, to cover a certain distance, is exactly the same as these values, since % speed increase and % time saving are the same:


The plot above shows that the % speed improvement (or % time improvement) from a certain aero improvement are fairly similar whether you're riding on the road or off-road.  Also, the % speed improvements are only slightly dependent on rider power and speed.  That aero helmet would improve Filippo Ganna's speed @450W by 1.24%.  However, it would also improve the speed of a 150W MTBer by 0.70%, which isn't much different.  This, surprised me and I think most people would also find the similarity unexpected.

Remember though, that the percentage of the rider's power that is lost to aerodynamic losses is fairly similar (88% for the 450W road bike case, versus 78% for 150W), even though the number of Watts lost (395W vs 117W respectively) varies significantly.

Still, I think there is a conventional wisdom that says the Pros, who ride faster, are the people that need to - and benefit most from - making aerodynamic improvements.  In fact, that's not really true. 


If you think that's counter-intuitive, it gets better...

The previous plot showed % time savings.  However, if you plot the time saving in seconds instead, the results are truly mind-blowing:


Since faster riders cover a certain distance faster than slower riders, a certain % improvement is a smaller number of seconds-saved for a faster rider than for a slower rider.  The plot above shows the number of seconds saved for a 40 km distance for these nine scenarios, plus the muddy 10 mph cyclocross (CX) case.  As you can see, not only are off-road time savings still roughly similar to road bike savings, the slower 150W riders actually save more seconds through the same aerodynamic improvements.  This is something that I've calculated in the past, but I still find it counter-intuitive.

I expect many people will find this result hard to believe.  Aerodynamic savings are almost as significant at slower off-road speeds as they for a road bike's higher speeds.  This is true for a wide range of riding abilities and scenarios.  Not only that, the time savings for slower riders are actually higher than for faster riders.


Don't believe these results?

If you don't believe me, I urge you to do the calculation yourself and leave a comment below.  
The maths needed to calculate power losses due to aerodynamics and rolling resistance isn't too complicated.  The calculations that I did in Microsoft Excel only took about an hour or two to do.  If you need helps with the equations for the various power losses, refer to my old blog post here.


One final example: Unbound 500 + Keegan Swenson

As a bit of fun, let's consider an example that's loosely based on Keegan Swenson's win at the Unbound 200-mile gravel race in 2023.  He completed the 200 mile in 10 hour, 6 minutes, with an average power of 271W.  That's an average speed of 19.8 mph or 31.9 kph. 

If I make some simplifications by assuming he rode the whole distance solo and on flat terrain (both huge over-simplifications, admittedly), that speed and power is achieved with a CRR of 0.01635, which is not unreasonable.  For that ride then, we have the following:

  • CRR = 0.01635
  • CdA = 0.34
  • Rider + bike = 85 kg
  • Air pressure = 101,250 Pa
  • Air temperature = 20 degrees C
  • Air density = 1.203 kg/m3
  • Drivetrain efficiency  = 3%
  • Speed = 31.9 kph
  • Power = 271W
Keegan, 271W, non-aero helmet (CdA=0.340)
->  Aerodynamic losses = 142.0 W (52.5%)
->  Rolling resistance losses = 120.8 W (44.6%)
->  Drivetrain losses = 7.9W (3%)
->  Time = 10 hours, 6 minutes, 0 seconds

If I consider that we make an improvement of 0.012 to Keegan's CdA, which is the aero helmet benefit that we considered previously, we now have: 

Keegan, 271W, aero helmet (CdA=0.328)
->  Aerodynamic losses = 140.9 W (52.1%)
->  Rolling resistance losses = 121.9 W (45.0%)
->  Drivetrain losses = 7.9W (3%)
->  Time = 10 hours, 0 minutes, 23 seconds

So that 0.012 reduction in CdA (3.5% aero improvement) results in 5 minute, 37 second time saving (0.93%).

Now the interesting bit:  If we take the same scenario, but change Keegan's 271W power to half that, 135W, we're now representing an identical rider, bike and course, but we're modelling a fairly low level amateur who just trying to complete the race.  They would obviously be riding slower, due to their reduced power.

For the baseline case, with the non-aero helmet, they would complete the Unbound 200 course in 14 hours, 34 minutes:

Amateur, 135W, non-aero helmet (CdA=0.340)
->  Aerodynamic losses = 47.4 W (35.1%)
->  Rolling resistance losses = 83.7 W (62.0%)
->  Drivetrain losses = 3.9W (3%)
->  Time = 14 hours, 34 minutes, 0 seconds

Now, the same aero benefit gives:

Amateur, 135W, aero helmet (CdA=0.328)
->  Aerodynamic losses = 46.7 W (34.6%)
->  Rolling resistance losses = 84.4 W (62.5%)
->  Drivetrain losses = 7.9W (3%)
->  Time = 14 hours, 27 minutes, 27 seconds

So for the amateur, that same 0.012 reduction in CdA  results in a time saving of 6 minutes 33 seconds, which is more minutes saved than Keegan!


Conclusion

To conclude, aerodynamics do matter off-road.  The % time savings, and % speed increases, are broadly similar to the benefits on the road, despite the slower off-road speeds.  They are the same order of magnitude as the % benefit on the road, because in the vast majority of off-road cases, the aerodynamic losses are still the largest power loss.  Even at very slow speeds, aerodynamics are not negligible and remain an important factor.

If we consider time saving in seconds, instead of % time saving, slower riders will actually improve their time to cover a certain distance by more seconds than a faster rider does.  This is counter-intuitive, but true.

Saturday, 28 September 2024

Back-to-back rolling resistance testing: MTB versus Cyclocross tyres

Last year, in October 2023, I published the results from some tyre rolling resistance tests (see blog post here) in which I tested my cyclocross bike with 33mm cyclocross tyres.

Those tests showed that my cyclocross (CX) tyres were much slower than my Schwalbe Thunder Burt mountain bike (MTB) tyres. The CX tyres had a CRR value nearly double the CRR of the MTB tyres, which was a huge difference.

However, the two tyres were tested on different days, with different bikes and different power meters, so there were a number of factors that cast doubt upon that comparison.  Since doing that test, and especially as the results were so surprising, I've wanted to repeat the test by testing both tyres on the same day, with same power meter, thereby improving the quality of the test.  This blog post describes my latest test results, and thereby allows me to conclude, with much more certainty, which of my two bikes is faster for dry cyclocross races.


Recap of previous test results

The previous results are shown in the plot to the left.

The data points shown in red are the CRR values obtained from my hardtail mountain bike tested in June 2022.  The CRR values reach impressively low values (~0.015), much lower than the two sets of cyclocross tyres plotted in blue and green.

As noted in the plot, the Challenge Grifo/Baby Limus tyre test was done a day when the ground was softer.  This will have certainly caused the CRR values to be higher, although it's not clear how much the softer ground accounted for the differences.  Note also that the softness of the ground was only determined qualitatively by me, with no measurements etc of the firmness.


New test setup

The new test is better in several ways:

  • Three different sets of tyres, all tested back-to-back on the same day.
  • Same power meter for all tests: Favero Assioma Pro MX-2 power meter pedals.
  • The power meter pedals are a dual-sided power meter, rather than single sided power meter that I've used in the past for most of the previous testing.
The use of a dual-sided power meter ensures total power is measured, whereas single-sided power meters measure only one side (one leg) and then assume the other leg is producing the same power in order to infer total power. Dual-sided power meters are therefore superior, especially since I have discovered that my left leg/right leg balance is not 50/50 (it's more like 53% left, 47% right).  Also, and more importantly, I've also discovered that my left/right leg imbalance is not fixed, and it varies with power, so there is inconsistency and inaccuracy whenever I use my single-sided powered meter. 

Test order:

  1. Drop Bar MTB with 2.35" (60 mm) Schwalbe Thunder Burt Super Race tyres @16 psi
  2. Cyclocross bike with 33 mm Challenge Baby Limus HTLR tyres @20 psi
  3. Drop Bar MTB with 2.35" (60 mm) Schwalbe Rocket Ron Super Race tyres @16 psi

The test was performed in my usual way (see Chung method description here), with the exception that I tested only one pressure per tyre/bike this time, using pressures that I know from previous testing give good rolling resistance results but without negative drawbacks like pinch flat risks.

Speeds were measured using a hub-based speed sensor, with the diameter in my Garmin head unit set to a fixed value of 2115 mm.  Measured speeds were then scaled in the analysis based on measured diameters to give the correct speeds:

  - Schwalbe Thunder Burt:  Speed scaling factor = 2228 / 2115
  - Challenge Baby Limus:  Speed scaling factor = 2110 / 2115
  - Schwalbe Rocket Ron:  Speed scaling factor = 2245 / 2115





Results

I performed the Chung method (virtual elevation) analysis using a fixed CdA or 0.40 m^2.  It's obviously wrong to use the same value for both bikes, because it's likely that the CX bike with a lower frontal area (narrower tyres, etc) will have a slightly lower CdA.  However, in the same way that I've done it previously (see here), by using this fixed value of CdA, any performance differences between the three setups, whether those performance differences comes from aero, rolling resistance or something else, will be attributed to CRR.  Hence, whichever setup has the lowest CRR using this style of analysis will be the fastest bike.

Results with Fixed CRR


Using a fixed CRR value of 0.0261, the virtual elevation plots show that the three setups are reasonably similar.

Note that the variations in the measured elevation (the green line), should be ignored because this is simply a drift caused by changes to ambient pressure during the test (note that a one metre elevation difference measured by the Garmin barometer is equivalent to just a 0.12 millibar change in ambient pressure).  The tests were done riding laps of a grass field, so the actual elevation always returned to the same value, in reality.

The variation in the orange virtual elevation profiles show which setup is fastest.  The CX bike with 33 mm Baby Limus tyres is fractionally slower than the drop bar MTB with Thunder Burts, because it's VE profile rises slightly.  The fastest setup is actually the third one tested, the MTB with Rocket Rons, since the VE profile falls slightly for that third test.

Results with adjusted CRR values

The CRR values can be adjusted to 'flatten' the VE profiles, as shown below.


This plot shows that the three setups have the following CRR values:

  • Drop Bar MTB with 2.35" (60 mm) Schwalbe Thunder Burt tyres:  CRR = 0.0261
  • Cyclocross bike with 33 mm Challenge Baby Limus HTLR tyres:  CRR = 0.0263
  • Drop Bar MTB with 2.35" (60 mm) Schwalbe Rocket Ron tyres:    CRR = 0.0251

Note that difference between the Rocket Ron CRR of 0.0251 and the Baby Limus CRR of 0.0263 is equivalent to 6.7 Watts of rolling resistance for a 85 kg bike+rider travelling at 15 mph.  These differences aren't significant, but they aren't particularly large differences either.

It's also interesting to note the average speeds, although it's more difficult to conclude which setup is faster form these speed, because the average power are not exactly the same.

  • Drop Bar MTB + Schwalbe Thunder Burt tyres:  Avg speed = 13.79 mph @203W avg
  • Cyclocross bike + Challenge Baby Limus tyres:  Avg speed = 13.33 mph @193W avg
  • Drop Bar MTB + Schwalbe Rocket Ron tyres:    Avg speed = 13.60 mph @195W avg

Incidentally, one of the benefits of the virtual elevation method is that it's not necessary, as a tester, to hold a fixed power.  That's a really inconvenient constraint that many testers put upon themselves if they don't use a virtual elevation method and try to hold a fixed power.

Finally, it's interesting to note that the final two laps for the Rocket Ron have a significantly rising profile, even though the first four laps were flat.  Those last two laps would have a measured CRR of 0.0271, which is strange.  I have no explanation for these weird results during the last couple of laps.


Conclusions

I set out to see repeat my previous tests but with a better standard of testing, to see whether my previous conclusion that MTB tyres are faster for cyclocross still holds true.

The conclusions from this test aren't quite so clear.  The MTB tyres are still slightly faster, but not significantly so this time.  The MTB tyres are only about 1-7 Watts faster.  Therefore, I'll likely use my cyclocross bike if there is any chance of mud, since my CX bike has much better mud clearance and is less likely to get jammed up from sticky mud.

Perhaps the most surprising result of this test is that the Rocket Ron tyres were actually faster than the Thunder Burt tyres, despite being how knobbly they are compared with the Burts, and considering the tyres are similar in every other respect.  This goes against what I'd expect and is contrary to Bicycle Rolling Resistance tests (although the Rocket Ron performs quite well on BRR).  This is a test result that would be worth trying to reproduce at some point.


Sunday, 21 January 2024

Testing Schwalbe's Super Ground versus Super Race tyre versions

Last month I posted the results of the tyre rolling resistance testing I did, in which I compared the Schwalbe's Thunder Burt Super Race against the Continental Race King Protection.

Both are fast tyres, but the Super Race version of the Thunder Burt has never been tested by BRR (BicycleRollingResistance.com). Only the more robust Super Ground version of the Thunder Burt has been tested (see here).  Nevertheless, that Super Ground version of the Schwalbe Thunder Burt is so far the fasted MTB tyre tested by BRR, marginally faster than the Continental Race King Protection. 

In principle, the thinner carcass of the Super Race version of the Thunder Burt should be faster than the Super Ground version.  This is at least what Schwalbe claims.  However, some tests on BRR in the past gave some unexpected results, with the Super Ground version of the Racing Ralph testing a few Watts faster than the Super Race version.  This showed that it's not guaranteed that the Super Race version should be faster tyre, which is what motivated me to do this test.


Test details

For this test I was fortunate to have two new 2.35" Schwalbe tyres, that were brand new and unused until this test.  I had bought both the Super Ground and Super Race tyres in late 2023, so there was minimal uncertainty coming from the effect of any tyre ageing.

I tested the tyres using the same protocol used previously, which I explained in a previous post here.  As for my most recent test though, I used my MTB with its Power2Max spider-mounted power meter which measures total power.  As a consequence, this was one of the best executed and best controlled tests I've done.

I tested the two tyres in an A-B-A-B manner, so both tyres had a repeated test.  In addition, I also test my older 2022 Schwalbe Thunder Burt Super Race tyre first, to check that it gave similar results to last week.


Results

The results are shown again below.  The results are fairly conclusive, showing the Super Race version of the tyre (plotted with purple symbols/lines) being faster than the Super Ground version (plotted in red).








Sunday, 14 January 2024

Validating my power delivery optimiser: Step 4

Excel-based optimiser versus Best Bike Split
Step 4: Calculating the optimum power delivery profile using my optimiser.  

In the previous blog post (Step 3), I showed the BestBikeSplit recommended power profile and the results of my Zwift ride when I followed BestBikeSplit's recommended power profile.  It saved me 9 seconds compared to the constant power effort, for a similar 150W normalised power.

I will now see if my Excel-based power optimiser gives similar results when I model the Whole Lotta Lava segment using the same set of 29 intervals that BestBikeSplit used to model the segment.


Results of my power optimiser

The plot above, at the top of this blog post, shows the BestBikeSplit recommended power profile (dashed red line) and then the power profile recommended by my Excel-based optimiser (solid red line), when targeting a 150W normalised power. The agreement between the two plots is remarkably good.  In the past I've done a crude comparison between my optimiser and BestBikeSplit (see here), but I've not plotted the powers on the same graph before.  This really shows the two methods give the same results, and so it shows my Excel-based optimiser is a free alternative to BestBikeSplit.  It could actually be even better than BestBikeSplit if I'm able to model more intervals than BestBikeSplit.  I just need to write the script that can automate the creation of the intervals.


Predicted ride times from my power optimiser

For the constant power situation, with the power fixed at a constant 150 Watts, my optimiser predicts a time of 27 minutes and 17 seconds. Note that this is only 2 seconds different (0.1% different) to my actual Zwift ride time of 27 minutes and 15 seconds, which I've obtained on two occasions riding at a constant 150 Watts.

To achieve this constant power of 150 Watt simulation in my optimiser, I set-up a multiple goal-seek macro in Excel.  That was an interesting learning exercise in itself, because I have never programmed in Visual Basic before.

Running the optimiser to achieve an optimal power profile, my optimiser predicts a time of 26 minutes and 37 seconds, which is a fairly significant 40 seconds (2.4% saving).  That's very similar to the 2-3% savings that I was getting when I first created my power optimisation spreadsheet back in 2016 (see post
here).  The speed and power differences between the constant power case and the optimised power case are shown in the plots above.


Summary

Riding at a constant 150 Watts, my optimiser predicts a time of 27:17.
(average power = 150W, normalised power = 150W)
That 27:17 time agrees very well with the actual ride time in Zwift of 27:15.

Riding at the optimum power, my optimiser predicts a time of 26:37 (40s faster)
(average power = 143W, normalised power = 150W)
I haven't yet tried following this power profile in Zwift yet, and although the BestBikeSplit power profile is similar, the speed modelling deficiencies in BestBikeSplit (described here) was insufficient to test this.


Next Steps

The next step is to create a script that can process the Whole Lotta Lava segment profile, and any other ride profile, in a more efficient way with less manual effort by me.







Saturday, 13 January 2024

Validating my Power Delivery Optimiser: Step 3

Step 3: Using BestBikeSplit to create an optimum power delivery profile.  

In my previous blog post, I explained that the following values are needed to simulate the Zwift ride:

  • Total weight (rider + bike) = 80 kg (176.4 lb)
  • CdA (drag coefficient x Frontal area) = 0.2415
  • Crr (coefficient of rolling resistance) = 0.004
  • Air pressure = 101,250 Pa
  • Air temperature = 15 degrees C
  • Air density = 1.225 kg/m^3
  • Drivetrain losses = 2.5%

BestBikeSplit modelling via ZwiftInsider

I first tried to use this BestBikeSplit link that is available via the ZwiftInsider Whole Lotta Lava route page to access Best Bike Split.  The page assumes a fairly light rider weighing 145lbs, and makes some other assumptions. However, 
the Time Analysis tab allows the user to change the value of various parameters using sliders to adjust the parameters in 1% increments to the necessary value.  Unfortunately, this method didn't allow me to enter the exact values above, so I used the closest values possible instead:

  • CdA = 0.24 (i.e. 0.0015 too low)
  • Average power = 144.5 Watts
  • Normalised power = 149.9 Watts (0.1 Watts too low)
  • Weight = 177 lb (i.e. 0.6 lbs too high)
  • Crr (coefficient of rolling resistance) = 0.004 (exactly as required)

Note that I tried to get the normalised power as close as possible to 150 Watts.  It's unclear what assumptions BestBikeSplit has made for air density and drivetrain losses.  Nevertheless, with these values, BestBikeSplit predicts a route time of 27 minutes 42 seconds, which strangely is 27 seconds slower than my constant power time.  I didn't understand this, so I needed to investigate why.



BestBikeSplit dedicated race plan

Since the results above seemed to make no sense, I decided to create a dedicated BestBikeSplit race plan, which is possible even with BestBikeSplit's free account.

I was able to change the settings so that the parameters were exactly matching what I wanted:

  • Rider weight = 160 lbs, Bike Weight = 16.4 lb -> Total weight = 80 kg (176.4 lb)
  • CdA = 0.2415, for all yaw angles
  • Crr = 0.004
  • Drivetrain losses = 2.5%
  • Air pressure = 101,250 Pa
  • Air temperature = 15 degrees C
  • Zero wind speed
  • Drivetrain losses = 2.5%
These values give a route time of 27:47 for a normalised power of 149.94W and an average power of 141.93W, which is bizarrely still 32 seconds slower than my constant power Zwift time.









The final section of the BestBikeSplit Race plan above provides 'race intervals' which show the segment distances and gradients, then the power recommended by BestBikeSplit, together with the resulting speeds.  I copy and pasted those 29 race intervals into Excel and calculated segment distances in metres, instead of miles: 




I then copied the distance, gradient and speed values into my power optimiser spreadsheet to allow me to compare the power values calculated by BestBikeSplit and values calculated by my spreadsheet.  Surprisingly, the power values agreed for some of the route, but were significantly different for the downhill section, as shown in plot below for the solid red and dashed red lines:


As soon as the gradient becomes negative, BestBikeSplit (the red dashed curve) is showing that a higher power is needed to achieve the downhill speeds that BestBikeSplit has calculated.  I really don't understand this because, for example, it is calculating speeds of 23.08 mph on a -4.36% (downhill) gradient while applying 84 Watts of power.  That is clearly wrong and I didn't know why BestBikeSplit is doing that, unless it is somehow assuming a large headwind

To investigate this, I plotted the BestBikeSplit powers and speeds versus the gradient values, shown withe red symbols on the plot to the left.  The plot looks reasonably sensible, although the scatter seen in the corresponding speeds is slightly strange. 
Regardless of these doubts, I decided to try to ride the route using the BestBikeSplit power profile to see what time it would give.

Riding the BestBikeSplit power profile

To do this, I decided to use the BestBikeSpilt's feature where they allow the power profile to be exported as a TrainerRoad workout.  
This is a nice feature, because it allowed me to ride exactly the prescribed powers by doing the workout in ERG mode, with my phone (for TrainerRoad) and also Zwift (via my iPad) connected to my Wahoo Kickr trainer.  The workout included the 29 intervals contained in BestBikeSplit's race intervals.  As shown above, I also added a long 150W interval afterwards to allow me to do a second lap at a constant power, if I wanted to.

I started the TrainerRoad workout as I got to the archway that marks the start of the Whole Lotta Lava segment.  As a reminder, the segment time I did previously with a constant 150W power output was 27 minutes and 15 seconds.  Using the BestBikeSplit power profile, I did a time of 27 minutes and 6 seconds, so 9 seconds faster than the constant 150W effort.  It's worth noting that although the normalised power for the BestBikeSplit run was about 150W (actually slightly lower, at 148W), the
average power was substantially lower at 140W.  This is interesting in itself, and a positive results, that the average power was 10W lower than the constant 150W effort, but the time was 9 seconds faster.

However, something I noted when riding the segment with the BestBikeSplit power profile was that at several times the target power did not correlate well with the gradient.  At most times it was good.  For most of the uphill sections, the target power was higher than 150W, as  expected.  At some points, though, the target power didn't correlate with the gradient.  For example, the high power interval stopped about 10 or 20 seconds too soon, before I reached the top of the climb, on the steepest part, which seemed odd.  Therefore, I think that due to the BestBikeSplit speed issue mentioned previously, I think there was a synchronisation problem between the BestBikeSplit simulation and what actually happened in Zwift when those powers were ridden.  I have the feeling that the most likely explanation is that BestBikeSplit is assuming some wind that is not actually there in Zwift.

It's worth also be noting that the 27:06 time is significantly faster that the 27:47 time predicted by BestBikeSplit, indicating that their calculation of Zwift speeds are wrong, despite me entering the details such as Crr and CdA correctly. 

Finally, it's interesting and encouraging that my second lap of the Whole Lotta Lava segment was done again at 150W constant power, and again this gave exactly the same 27 minute 15 second segment time as I achieved before (described in my previous blog post).


Summary

This has been quite a long post, so let's recap:

Riding at a constant 150 Watts gives a time of 27:15.
(average power = 150W, normalised power = 150W)

Riding at the BestBikeSplit optimum power profile gives a time of 27:06 (9 second saving)
(average power = 140W, normalised power = 148W)


Next Steps

The next step is to see whether my own Excel-based power optimiser gives similar results, and to do that I will be to create a scripts that can process the segment profile in a more efficient way, with less manual effort by me.






















Saturday, 30 December 2023

Validating my Power Delivery Optimiser: Steps 1 & 2

Steps 1 & 2: Gathering data and rider parameters for the constant power case.  

The introduction post written previously (here) explains the objective and context of this Step 1 & 2 of the study.

Route Selection

Firstly, I needed to decide a suitable route.  Strange as it may seem, I didn't want to use an outdoor route.  The difficulty of doing a test like this outdoors is that the conditions are so variable. The wind changes, traffic interferes with aerodynamic drag and gets in the way, road junctions have to be avoided, etc.  Then I would also have to ensure my bike, my power meter and my body position stayed consistent between runs.  

I really wanted to avoid those constraints and difficulties associated with doing the test outdoors, so I instead decided to use a virtual route on Zwift.  This is also not ideal, because the bike speed in Zwift is calculated with a computational model, so I'll effectively be using a model (Zwift) to validate another model.  However, I feel that the benefits of having a fully controlled environment to test the power delivery optimiser outweighed the doubts and downsides that may come from using Zwift.

For the route, I decided to use the Whole Lotta Lava route.  I picked this route because it was reasonably short at 12.3km (7.6 miles), so it would take less than half an hour to ride.  Also, it includes a good mix of terrain, with a flat section, a climb and a descent in approximately equal amounts, as shown in the route profile to the left.  The amount of climbing, with 160m (525ft) climbed in 12.3km is the kind of elevation change that I typically see in my local rides and the terrain in the South West of England where I live.

Finally, the route is almost entirely pavement, which makes the treatment of rolling resistance somewhat easier.  There is a short section of wooden boardwalk, perhaps 200m in length that has to be crossed on climb and the descent, but I'm hoping that is not significant enough to complicate the modelling.

Bike Choice

For this type of test, a TT bike is the best bike to use, because Zwift does not allow a TT bike to gain a benefit from drafting other riders, unlike for their road bikes.  This means that any ride I would do on a TT bike, and the associated segment time for the Whole Lotta Lava route, would not be affected by the presence of other riders.

In Zwift I have the Canyon Speedmax TT bike with Zipp 808/Super 9 wheelset.


Riding the route at constant power

I decided to perform the constant power reference case at a fixed power of 150 Watts.  This is approximately 60% of my FTP, so it makes it a comfortable long-slow-ride kind of pace.

I ensured that that my ride was done at exactly 150W by using TrainerRoad in ERG mode to control my Wahoo Kickr trainer, ensuring that I held a power of exactly 150W, then linking the Kickr trainer to Zwift via it's second bluetooth connection so that the Zwift ride was done at 150W.  It can be seen in my Strava activity file (screenshot shown above, link to Strava activity here) that the power trace is constantly at 150W.

The entire Whole Lotta Lava route was done first, then I also performed most of a second lap too.  The second lap was useful because the translucent pace partner (which follows the pace of my best time) was a demonstration that Zwift was reproducing the pace almost exactly, as shown in the screenshot to the left.  This was the top of the climb, approximately half way through the route.  Note that the pace partner (riding at the pace of my previous lap) is very close to my avatar on the second lap.

This is to be expected, of course, but it was reassuring to see.  This is the kind of repeatability that would be impossible if riding a route outside!


Reference parameters

For the subsequent power delivery optimisation, I will also have to decide values to use for the following parameters:

  • Total weight (rider + bike)
  • CdA (drag coefficient x frontal area)
  • Crr (coefficient of rolling resistance)
  • Air pressure
  • Air temperature (which together with air pressure, gives the air density)
  • Drivetrain losses, if indeed Zwift even account for these.
The choice of these values should match as closely as possible as what Zwift models, some of which it's possible to determine, but some of which are unknown.

Weight
I entered my weight of 73kg and my height of 5'10" into Zwift.  I'm not sure what weight Zwift assumes for the bike, so this is something I had to figure out as part of the virtual elevation (VE) analysis.

Coefficient of rolling resistance (Crr)
According to Zwift Insider, Zwift assumes a Crr value of 0.004 for road and TT bikes on pavement.  I will use this 0.004 value for the VE analysis.  The small section of wooden boardwalk apparently pushes the Crr up to 0.0065 for that short period of time.

Drag coefficient (CdA)
Previously, when I unlocked the Zipp Super 9 disc wheel, I calculated (here) that the CdA was 0.2415 m^2.  I will use that value for VE analysis.

Air Pressure and Temperature
As I did previously, I assumed International Standard Atmospheric Sea Level conditions (101250 Pa, 15 degrees Celsius), which results in an air density of 1.225 kg/m3.  It's worth noting that pressure, temperature and the resulting air density only affects aerodynamic drag and nothing else.  Therefore, if the assumption is wrong, it will simply bias the CdA value which is also chosen, because it's the product of CdA and air density that affects aerodynamic drag.  As the CdA is obtained from the VE analysis, the choice of pressure, temperature and air density is rather arbitrary and intrinsically linked to the CdA value selection.

Drivetrain losses
I used a value of 2.5% as starting point, to be checked with the VE analysis.


Virtual Elevation Analysis

I used the .fit file from my Zwift ride to perform a virtual elevation analysis using Golden Cheetah's Aerolab Chung Analysis feature. The plot to the left shows the final fit between the real elevation curve (from Zwift, in green) and the Chung Method virtual elevation curve (in blue).  As can be seen in the plot, keeping the values above and changing only the total weight to 80kg gives an excellent fit between the blue and green curves, to the point where it's almost impossible to see the two different elevation profiles.  I also tried using other combinations of parameter values, but using this combination of parameter values gave the best match.


Summary and Results

My constant 150W ride took 27 minutes and 15 seconds to complete the Whole Lotta Lava route, which equates to an average speed of 16.8mph (27.0 kph).

My virtual analysis showed that the values used by Zwift which I need to use later for the power delivery optimisation are:

  • Total weight (rider + bike) = 80kg
  • CdA (drag coefficient x Frontal area) = 0.2415
  • Crr (coefficient of rolling resistance) = 0.004
  • Air pressure = 101,250 Pa
  • Air temperature = 15 degrees C
  • Air density = 1.225 kg/m^3
  • Drivetrain losses = 2.5%
I'll publish the next blog post to describe the improvements to my power delivery optimiser, once I've done that.