Skip to contents

Family of functions that serve a purpose of finding optimal sprint or force-velocity profile

optimal_FV finds "optimal" F0 and V0 where time at distance is minimized, while keeping the power the same

optimal_MSS_MAC finds "optimal" MSS and MAS where time at distance is minimized, while keeping the Pmax the same

Usage

optimal_FV(
  distance,
  F0,
  V0,
  bodymass = 75,
  inertia = 0,
  resistance = 0,
  method = "max",
  ...
)

optimal_MSS_MAC(distance, MSS, MAC)

Arguments

distance

Numeric vector

F0, V0

Numeric vectors. FV profile parameters

bodymass

Body mass in kg

inertia

External inertia in kg (for example a weight vest, or a sled). Not included in the air resistance calculation

resistance

External horizontal resistance in Newtons (for example tether device or a sled friction resistance)

method

Method to be utilized. Options are "peak" and "max" (default)

...

Arguments passed on to get_air_resistance

velocity

Instantaneous running velocity in meters per second (m/s)

bodyheight

In meters (m). Default is 1.75m

barometric_pressure

In Torrs. Default is 760Torrs

air_temperature

In Celzius (C). Default is 25C

wind_velocity

In meters per second (m/s). Use negative number as head wind, and positive number as back wind. Default is 0m/s (no wind)

MSS, MAC

Numeric vectors. Model parameters

Value

optimal_FV returns s data frame with the following columns

F0

Original F0

V0

Original F0

bodymass

Bodymass

inertia

Inertia

resistance

Resistance

Pmax

Maximal power estimated using F0 * V0 / 4

Pmax_rel

Relative maximal power

slope

FV profile slope

distance

Distance

time

Time to cover distance

Ppeak

Peak power estimated quantitatively

Ppeak_rel

Relative peak power

Ppeak_dist

Distance at which peak power is manifested

Ppeak_time

Time at which peak power is manifested

F0_optim

Optimal F0

F0_coef

Ratio between F0_optim an F0

V0_optim

Optimal V0

V0_coef

Ratio between V0_optim an V0

Pmax_optim

Optimal maximal power estimated F0_optim * V0_optim / 4

Pmax_rel_optim

Optimal relative maximal power

slope_optim

Optimal FV profile slope

profile_imb

Percent ratio between slope and optimal slope

time_optim

Time to cover distance when profile is optimal

time_gain

Difference in time to cover distance between time_optimal and time

Ppeak_optim

Optimal peak power estimated quantitatively

Ppeak_rel_optim

Optimal relative peak power

Ppeak_dist_optim

Distance at which optimal peak power is manifested

Ppeak_time_optim

Time at which optimal peak power is manifested

optimal_MSS_MAC returns a data frame with the following columns

MSS

Original MSS

MAC

Original MAC

Pmax_rel

Relative maximal power estimated using MSS * MAC / 4

slope

Sprint profile slope

distance

Distance

time

Time to cover distance

MSS_optim

Optimal MSS

MSS_coef

Ratio between MSS_optim an MSS

MAC_optim

Optimal MAC

MAC_coef

Ratio between MAC_optim an MAC

Pmax_rel_optim

Optimal relative maximal power estimated using MSS_optim * MAC_optim / 4

slope_optim

Optimal sprint profile slope

profile_imb

Percent ratio between slope and optimal slope

time_optim

Time to cover distance when profile is optimal

time_gain

Difference in time to cover distance between time_optimal and time

References

Samozino P, Peyrot N, Edouard P, Nagahara R, Jimenez‐Reyes P, Vanwanseele B, Morin J. 2022. Optimal mechanical force-velocity profile for sprint acceleration performance. Scandinavian Journal of Medicine & Science in Sports 32:559–575. DOI: 10.1111/sms.14097.

Examples

MSS <- 10
MAC <- 8
bodymass <- 75

fv <- create_FVP(MSS, MAC, bodymass)

dist <- seq(5, 40, by = 5)

opt_MSS_MAC_profile <- optimal_MSS_MAC(
  distance = dist,
  MSS,
  MAC
)[["profile_imb"]]

opt_FV_profile <- optimal_FV(
  distance = dist,
  fv$F0,
  fv$V0,
  fv$bodymass
)[["profile_imb"]]

opt_FV_profile_peak <- optimal_FV(
  distance = dist,
  fv$F0,
  fv$V0,
  fv$bodymass,
  method = "peak"
)[["profile_imb"]]

plot(x = dist, y = opt_MSS_MAC_profile, type = "l", ylab = "Profile imbalance")
lines(x = dist, y = opt_FV_profile, type = "l", col = "blue")
lines(x = dist, y = opt_FV_profile_peak, type = "l", col = "red")
abline(h = 100, col = "gray", lty = 2)