Wheel Selector Project

I’ve spent a lot of time in the back of sprinter/race vans. In the past few years the assholes sitting next to me in the van have increasingly asked me the same question over and over again: What wheels should I use for this race.

In an effort to cut the questions off at the pass and provide myself a tool to answer the question of how much difference does wheel selection actually make I made a tool to try to help figure it out. Now I’ve always secretly kind of suspected the answer is rather boring but I wanted a quantifiable way to answer the question. The difficulty with doing real world experiments is that there are a ton, ton, ton of unknown inputs that can throw off your results. So instead of doing countless rides and averaging the results I think it’s a better route to create a model that will basically ignore a lot of the smaller inputs that go into power required to cycle (i.e. hitting a pothole, lubing chain, tire pressure, hitting a pothole, turning vs going straight, etc). This should give a clearer picture about what wheel to use.

At the moment it’s a very bare bones calculation


You can also follow the project on GitHub (yea i know PHP is a dinosaur, working on a python update so I can do more fancy data analysis, and I’m also awful at coding so be kind) :

Wheel-Selector on GitHub

Feel free to give me feedback or check out the code and if there’s any improvements you can think of I’d love to hear about them.

Immediate future steps:

  • Get a CFD study going to find correction factor to figure out what an individual wheelset CdA means when you put those wheels on a bike
  • Independently select wheels
  • Incorporate rolling resistance into calculations (mostly with regards to tubular vs. clincher vs. tubeless, also tire size)
  • Add correction factor for a solo ride vs group ride (currently this option does nothing)

Short term future steps:

Long Term Future Steps:

  • Leverage more Strava data (i.e. pull a Strava ride with power, speed, elevation data and determine the wheelset that would require the least power)
  • Switch project to Python for better API tool access (other sites, visualization, tools, etc)
  • Get moar wheel data

Nitty Gritty is below if you’re interested in a good read to put you to sleep


There are a few steps and notes to this:

  • Estimate Rider CdA (read up on this: CdA primer) –
    • This is probably the most ‘guesswork’ part of the exercise. Using a method developed in This Paper a persons Body Surface Area is estimated from their height and weight, and using an empirical formula a base level of rider CdA is found.
    • The next step here is to correct this base CdA to riding style, here I used CdA values from Cycling Power Lab to correct the base CdA value to each of the riding positions. Then using the slider in the tool to set how much time you spend in each position the tool will produce a time-weighted CdA that takes into account how much time the rider spends in each position
  • Get single CdA value for Wheelset
    • This is another approximation, while we have actual CdA’s for each wheelset wind angle we don’t know which wind angle the wheelset is seeing at each time point. So to take into account all the drag information there is a weighing scheme used where each wind angle CdA value is corrected and summed into an overall effective CdA value. This is currently a rough weighting scheme where 0 degrees =30%, 5 degrees =30% of the time, etc (this is saying you don’t see heavy crosswinds for a large portion of the ride)
    • This will eventually take into account some wind term which would increase the high AoA wind angles for windier days
  • Calculate Air Density
    • After my previous long blog post about air density and Strava I called a weather API to grab current basic weather info for a zip code, or you can enter that info yourself to play around with the numbers.
  • Incorporate Wheel Drag to Overall Rider Drag
    • This still needs some work
    • Currently we take the above estimated Rider CdA value, subtract our base-wheelset (Boyd Altamont) CdA, then add back in the CdA of the wheel we’re calculating for
    • There are a few problems that I still need to refine:
      • Currently assume a one wheel system
      • All wheelset drag values are for wheel without frame/fork/rider etc so probably overestimates impact of different wheels
      • Currently these are acceptable assumptions since they likely somewhat cancel each other out (i.e. rear wheel is not as effective aerodynamically, and front wheel in frame is still less aerodynamically effective than a wheel by itself)
      • Will have to do a series of CFD studies to determine an “Effectiveness factor” to adjust wheel CdA to Wheel-in-Bike CdA
        • If anyone knows of any sort of this info It would be greatly appreciated
  • Calculate work to overcome Air resistance
    • Since speed, air density, and CdA are already given either in the inputs or above, calculating work required is relatively straightforeward
    • Important Assumptions:
      • Constant Speed throughout ride
      • Wind not a factor
      • Does not take into account reduced speed while climbing or increased speed while descending
  • Calculate work to overcome climbing resistance
    • Again fairly straight forward at the moment and could use A LOT of improvements (read through these assumptions carefully)
    • Assumptions:
      • Climbing work ONLY calculated for going up-hill
      • No benefit (work reduction) from descending
        • This would be too complex to approximate, additionally a lot of braking happens on descents which would be difficult to incorporate into the overall calculation



Best weather for KOMs

So I love Strava.

I love Strava as in I started using it when I lived in Tucson in 2011 and owned EVERY KOM in the city (this is obviously and sadly no longer the case). Strava nay-sayers be damned, it’s a great thing for cycling for a whole bunch of reasons. Really the only complaint is that Strava turns leisurely group rides into smash fests….which has been happening to generations of cyclist long before clincher tires were even invented, much less the internet.

Since it’s settled that Strava is sweet and everyone who hates it just had their favorite KOM just stolen, we can move onto important questions: How to maximize your KOM winning potential?

One of the easiest and most overlooked things you can do is look at your local weather forecast. Most would think weather shouldn’t matter whether or not you get a KOM, but hopefully a rash of new KOM’s precipitated by this post are a bellwether for how to go after KOMs. Weather is important to cycling because it doesn’t just indicate rain or sunshine, but air properties, and the primary thing you spend fighting while on the bike is….air!

Now, I know what you’re thinking: Weather? Who cares?

Well….Eddy Merckx, that’s who (and I guess Tom Zirbel)!

When Eddy Merckx went for the Hour Record (which is really the ultimate KOM), he did so in 1972 in Mexico City.

The Mexico city velodrome is an outdoor that looks downright primitive compared to the climate controlled environment at the velodrome where Wiggins set the new hour record. However there’s a VERY important reason why he went for the record in Mexico City: the city resides at 7,500 feet above sea level. The very obvious benefit is the reduced air density due to altitude, which reduced air resistance by a full 25%. There were other weather considerations as well: temperature and humidity. While the temperature was a relatively normal 75F, it had rained several days prior to his attempt as well which likely increased the humidity during his attempt which also helped (this is counter-intuitive and I’ll explain in a sec).

In order of importance, things that affect air density:



3.Weather Systems


Since your KOM is in a fixed location, altitude is set, you cannot change that. But these last three you DO have control over when you’re attempting your KOM, also they’re all related and affect each other.


This might be a somewhat obvious one, recalling high school physics, hot air rises since it’s less dense than colder air. So warmer air temps equate to generally lower densities. For instance from 32F to 50F is a 4.5% difference in dry air density (not counting moisture, which also increases with heat). Raise temperatures further to 90F and your density reduction is nearing 10% over a freezing day.

So, don’t go for KOM’s during winter

Weather Systems

Want a KOM? Look for storms!

Seriously, storms and low pressure are peas in a pod, and low pressure means low density, which means MORE KOMS! Storms form around low pressure areas because the low pressure draws up warm moist air to higher altitudes which then condense the moisture in the air to create clouds, rain, hail, etc.

So, Summer Thunderstorm on its way? KOM time!


Finally Humidity, intuitively I know that I would think a bone dry desert would have a lower density than a tropical rain forest. Water is heavy after all, however water is only ‘heavy’ in it’s liquid form. Molecularity speaking it’s pretty lightweight, just one Oxygen atom and two Hydrogen atoms puts water in the anorexic category of atmospheric gases with a molecular weight of 18, meanwhile most of the atmosphere’s Nitrogen gas weights in at 28, and fatty McGee Oxygen has a molecular weight of 32. So at a some fixed pressure, there are a set number of gas molecules smacking into your face while riding. If there are more skinny water molecules hitting your face (i.e. it’s humid out), then those skinny molecules hit you with less force than heavier Nitrogen and Oxygen and drag is reduced. (Note: I realize molecules in the wind don’t ACTUALLY hit your face, their much nicer than that and just exchange momentum with other molecules in your facial boundary layer).

Additionally temperature plays a factor in your humidity calculations. For instance 50% humidity at 70F has less water in the air than 50% humidity at 90F. This is because warmer air can ‘hold’ more moisture than colder air and relative humidity that you hear quoted in the weather is a measure of how much of this capacity is used.

Because of this the amount of water is relatively small with regards to drag calculations until you begin to reach higher temperatures of +85F, see graph below for good visualization of this:

So if it’s oppressively hot, you’re drenched in your own sweat, and it’s about to thunderstorm, SUIT UP, it’s time to poach some KOMS.


All this being said…truly the best way to get KOMs is with a group of your buds doing a TTT and/or a good tailwind to get the segment.




Wheel Design How-To Part 5 (and hopefully last)

The previous four posts generally outlined the design methodology for individual wheels. I may not have stated it but you can see in the photos posted in the previous posts that the modeling only included a single wheel by itself. This was an intentional choice. Generally speaking a wheel that will be more aerodynamic in the front will be more aerodynamic in the front. The reason why we didn’t specifically optimize front and rear independently is that each rim shape that we start manufacturing is a high fixed cost for the mold, so doubling rim shape (front/rear individual) essentially doubles cost. Also since the rear wheel is in a lot of dirty air (really only the trailing edge of the rear wheel has significant drag effects), the assumption was made that if a particular rim depth is good enough for the front, it’s good enough for the rear.

Additionally you’ll notice that the frame/bike we setup here is pretty old school/plane jane. This was done very much intentionally (had nothing to do with ease of CAD’ing). We didn’t’ want to do a complex Aerodynamic frame-set since there is so much variation in Aero frames out there (cut-outs, airfoil shapes, etc). This basic frameset would give us a good baseline to analyze the wheel-set without worrying about further complex interactions. Steel Frameset CAD

If for whatever reason you’re interested in the frameset I used, check it out HERE

However, when we started looking into a disc wheel, there is no way getting around NOT analyzing a full bike model. Obviously 99% of the time, a disc wheel that we’ll be producing gets used as a rear wheel. So the decision was made to not even bother analyzing the wheel by itself. And since we were not going after the ultra-elite track cyclist market (you got it covered Mavic), the wheel would never be used as a front wheel.

Disc Poly Mesh

General mesh for Disc Wheelset

Anyway since the disc wheel is essentially used only as a rear wheel we needed to analyze the whole wheel bike system. Again another assumption we made was to exclude the rider in the CFD model. There were a couple of reasons for this. First a persons body is too variable and constantly moving to accurately model in our CFD model. Second, we wanted to purely examine the rear wheel, and attempting to model legs would only dirty the air going to the rear wheel, further confusing results. So it was decided to model just the full bike and rear wheel without rider to get the best stratification of results for the different rim shapes while still maintaining the effects of the bike (which will always be present regardless of how erratically you might be pedaling)

Side View Disc CFD Results

90mm/disc blended wheel CFD case at 0deg AoA (don’t mind the seat angle)

There were fewer differences in the disc wheelset results as the Disc design is already naturally pretty aerodynamic. We also took a look at a few more parameters when analyzing the results. Due to limitations in computational power and time constraints we only executed a 0 degree AoA case and a 10 degree case. However the 10 degree case we did from both sides (wind coming from drive side, and non-drive side). We wanted to look at that to determine if there were significant differences or benefits of a particular design on drive side or non-drive side due to flow differences.

Shear stress on disc wheelset

Wall Shear Stress on disc wheel (aka skin friction drag)

After running probably 5 different rim shapes (after the baseline straight disc, 90mm case, and sub-9 type cases), I came up with what I thought was a pretty good design that appeared to be lower drag over most cases than either the straight disc or Sub-9 disc. This is yet to be confirmed by wind tunnel results (we’re still a work in progress). But I’m pretty happy with the design because it’s backed up by making intuitive sense and is fairly simple. And if you’ve read any of my other blog posts on engineering you know that I always thing elegant and simple designs are the best.


Wheel Design How-To Part 4

Wind Tunnel Methodology

Wind tunnel testing was done at the A2 wind tunnel outside of Charlotte NC. The wind tunnel  is an open circuit wind tunnel with a lot of experience with cycling equipment. The tunnel itself is equipped with a boundary layer table that helps the incoming flow around the test section remain as uniform as possible (reducing boundary layer thickness), helping to correctly mimic real world moving ground conditions.

Great care was taken with tires when testing wheels. For all tests Continental GP4000 tires were used. The GP4000 gives the best drag results and is the unofficial industry standard for wind tunnel testing. New tires were also used for all tests in order to keep tests focuses on rim shape and not tire/rim interaction (an area for much further research). It was found through experience that wear as little as 100 miles of wear would significantly influence drag results. Pro-tip: GP4000’s are always the most Aero tire.

Bike Wheel Wind Tunnel Testing

Aluminum Prototype in A2 Wind Tunnel

In addition to existing rims from the industry and current production rims, future designs were modeled with machined metal prototyping. In many Wind tunnel tests you’ll see finished carbon rims being tested. This means that the rim design is already set and carbon molds have been created. Since the carbon mold is usually the most expensive fixed cost when setting up manufacturing it is very difficult to change a design that the wind tunnel shows to be ineffective. We found an alternative solution in machining a solid metal mock-up of the rim. This would allow us to cheaply create the prototype and also have enough structural integrity to actually build up with spokes and hold an aired up tire (3D printing was was also evaluated and not chosen for those reasons). Since machining typically leaves a rough surface that does not replicate production the prototype rims were smoothed then finished with the same finish coating that is applied to the production rims. 

Boyd Cycling Wheelset

Climber’s Wheelset

After our first set of tests at the wind tunnel we were able to refine the CFD model, which is when we decided to use a 3D model to increase fidelity. This two pronged approached allowed me to tweak the CFD model and mesh to further match up with real world results. Additionally the the production rims (Zipp, Enve, etc) provided further data points to check the CFD model.

The top two lines from wind tunnel are an alloy wheel and some bad test data. So here you see were getting the same effect on the 60mm of the dip around 15 deg AoA. You may ask why were getting negative drag in CFD results but not on Wind Tunnel Results. The reason for this is neglecting spokes in the computer model, which would essentially add a constant amount of drag regardless of the rim.


Wheel Design How-To Part 2

General Aerodynamic Design Methodology:

From the start it was desired to implement Computational Fluid Dynamics in the design process of the rim shapes. CFD breaks a fluid (in our case air) into small computational blocks that we can setup around various shapes and configurations. We decided to stage the design process of the various rim depths. This would make it possible to iterate between CFD and wind tunnel results. While CFD has advanced tremendously over the past years, the amount of non-linear flow systems involved in a bicycle wheels will not be fully modeled by CFD for some time. This means that the wind tunnel is a crucial stopping point in not only design of the wheel, but in verification and refinement of the CFD modeling, this means that as we went through different wheelsets, we arrived at each desired wheelset configuration with less computational time required .

Early on several research papers were taken as a point of reference for completing CFD analysis of Wheels. The knowledge leveraged from these papers helped set up some basic parameters for the model.

Initially for the 44mm depth rim a 2D model was used for rapid runs and design iterations to setup a design space of possible shapes. The 2D model has smaller mesh and computational requirements meaning we can run through a large number of rim designs relatively quickly.

Many companies follow this 2D methodology. Bontrager, for instance, has a great white paper on their design methodology. However in order to extrapolate the 2D results to 3D they use an empirically determined factor. I decided not to try to artificially fit the 2D results into 3D numbers for reasons I’ll explain shortly.

With this CFD setup we aimed for a relatively wide rim, 28 mm, that was wide, while just as if not more Aerodynamic as leading industry competitors (Zipp, Enve, Bontrager, etc).

Comparison of Wind Tunnel (left) to 2D CFD (right)

After the first trip to the wind tunnel with 44mm prototypes (which will be detailed later), it was decided that the results obtained with the 2D models were not getting enough separation in results between the top performing rim shapes in order to determine which rim shapes were actually more aerodynamic. However in the wind tunnel we were seeing significant variation between rims especially at higher angles of attack. This means that the 2D model was significantly missing something that could likely be attributed to the overly simplified 2D model. There are several factors this can be attributed to: spokes, hub, rotational effects, ground interactions, and other 3D effects.

In order to increase the fidelity of our runs and capture the differences between the rims, the domain was expanded to encompass the entire wheel/tire system. The mesh used increased in size to ~3.5M elements. The total number of elements was kept from increasing too much (and impeding run time) by using some very basic local mesh refinement around the rim where the flow is most complex.

Rotational effects were also captured in the 3D modeling. Commonly rotating components are modeled with over-set mesh domains. This essentially overlays a rotating set of mesh elements that encompasses the rotating component and iterates between the stationary mesh and rotating/translating mesh. This technique is the most accurate and would allow for the modeling of spoke elements. However due to the complex nature of the mesh, this technique would be too computationally exhaustive for our limited computing resources. Instead we decided to ignore spokes since their effect would be largely secondary to any changes made to the actual wheel shape. Since spokes were ignored the wheel surface could remain stationary, but with a rotational surface velocity assigned to each individual mesh surface. This technique is a variation of the no-slip condition. Instead of the wheel surface having a zero velocity assigned to it (no-slip), each element was assigned a rotational velocity based on its location relative to a central point of rotation.

Vertical velocity on wheel surface

This accomplishes modeling a rotating wheel, without the high computational costs associated with an over-set mesh.

The final aspect that was added into the model for 3D analysis was a floor or road interface with the wheel. Since the entire domain was a wind-tunnel setup, the floor boundary condition was set to a slip boundary condition. This meant that the velocity along the floor of the domain was the same as the free-stream velocity. The reasoning for this is to mimic real world situations. When a wheel is riding outdoors, the wheel itself sees non-zero airspeed, but the airspeed relative to the ground is zero (except in windy conditions). If this slip condition was NOT applied to the floor the flow in the domain would be zero and near-zero near the floor of the model. This would result in the rotating wheel essentially pushing against the stationary air at the floor, artificially reducing total drag on the wheel.

These small changes to the model setup not only gave a larger spread of wheel drag results, but it also gave drag profiles that actually matched real world conditions:90mm Rim CFD resultsThat’s enough for a single post, next post I’ll dive into some further nitty-gritty of how the CFD model was setup