Appendix: Mathematics and Physics Used#
\( \)
Weather models#
U and V GRIB components#
Weather models provide the $u_{10}$ and $v_{10}$ wind components at 10 m on a grid (for example 0.25 degrees for GFS and IFS), at discrete time steps $step_i$ (typically 1 h or 3 h).
To estimate wind at a point $P$ and time $T$ between $step_i$ and $step_{i+1}$:
First, perform spatial interpolation. Find the 4 grid points surrounding $P$ and apply bilinear interpolation to compute $u_{10}$ and $v_{10}$ at $P$ for both $step_i$ and $step_{i+1}$.
Then, perform temporal interpolation between values at $step_i$ and $step_{i+1}$ to obtain $u_{10}(P, T)$ and $v_{10}(P, T)$.
Wind at 10 m#
The wind speed at 10 m is calculated as: $$ tws_{10} = \sqrt{u_{10}^2 + v_{10}^2} $$ The true wind direction is: $$ twd_{10} = \operatorname{atan2}(u_{10}, v_{10}) $$
Ground speed#
Wall effect#
The wind speed at 1.5 m (here called ground-level wind speed, $tws$) follows a wall-effect/log-law correction: $$ tws = tws_{10} \cdot \frac{\ln\left(\frac{1.5}{{rug}}\right)}{\ln\left(\frac{10}{rug}\right)} $$ where $rug$ is a roughness length determined by terrain type.
Roughness and terrain#
Terrain type is derived from the Global Wind Atlas v4 land-cover layer, based on the European Space Agency (ESA) WorldCover v200 dataset.
Floors, R. et al. (2025) Global Wind Atlas v4 (orography), 10.11583/DTU.28955282
Wind along the trajectory#
If wind is represented by $Tws$ (true wind speed) and $Twd$ (true wind direction):
$V_{windalong}$: wind component along the trajectory
$bearing$: cyclist heading
The projection formula is: $$ V_{windalong} = Tws \cdot \cos(Twd - bearing) $$

Relative speed#
The relative speed is given by: $$ V_{rel} = V_{bike} + V_{windalong} $$
Forces#

Drag Force#
$$ F_{drag} = \frac{1}{2} \rho C_d A V_{rel}^2 $$
$\rho$ is the air density,
$C_d$ is the drag coefficient, and $A$ is the effective frontal area. They are often combined into a single parameter, $C_dA$.
Rolling resistance#
$$ F_{roll} = C_{rr} m g $$ $C_{rr}$ is the rolling resistance coefficient.
Gravity#
$$ F_{gslope} = m g \sin(\theta) $$ $\theta$ is the slope angle.
Acceleration#
$$ F_a = m a $$
Power balance#
Power output required from the cyclist: $$ P_{cycliste} = (F_{drag} + F_{roll} + F_{gslope} + F_a) \cdot V_{bike} $$
Crosswind (yaw) and variation of CdA#

Crosswind changes the incidence angle (yaw, noted $\gamma$) of the rider-bike system, so $C_dA$ becomes yaw-dependent: $C_dA(\gamma)$.
A common approximation is: $$ CdA_{eff} = CdA \times \left(1 + 0.02 \times \frac{|\gamma|}{10}\right) $$