-
Notifications
You must be signed in to change notification settings - Fork 0
/
suunto_running_power_lap_avg.txt
65 lines (56 loc) · 1.66 KB
/
suunto_running_power_lap_avg.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* While in sport mode do this once per second */
/*before start: configure parameters, initialize*/
if(SUUNTO_DURATION<1)
{
initialSpeed = SUUNTO_SPEED/3.6;
RESULT=0;
}
else
{
/* slope */
speed = SUUNTO_SPEED/3.6;
if(SUUNTO_SPEED < 1)
{
slope = 0.0;
}
else
{
slope = 0.06 * SUUNTO_VERTICAL_SPD / SUUNTO_SPEED;
}
/* 2D speed */
speed = SUUNTO_SPEED/3.6;
/* 3D speed */
speed = speed/Suunto.cos(Suunto.atan2(slope,1));
/* Aero contribution per kg (Arsac 2001): 0.5 * rho * Cd * Af * V^2 / M, rho = 1.2, Cd = 0.9 */
Af = (0.2025*Suunto.pow(SUUNTO_USER_HEIGHT/100, 0.725)*Suunto.pow(SUUNTO_USER_WEIGHT, 0.425))*0.266; /* Frontal Area*/
cAero = 0.5*1.2*0.9*Af*Suunto.pow(speed, 2) / SUUNTO_USER_WEIGHT;
/* Kinetic Energy contribution per kg (Arsac 2001): 0.5 * (V^2-V0^2) / d*/
if(SUUNTO_DISTANCE >0)
{
cKin = 0.5*(Suunto.pow(speed,2)-Suunto.pow(initialSpeed,2))/(1000*SUUNTO_DISTANCE);
}
else
{
cKin = 0.0;
}
/* Energy Cost of Running according to slope (Minetti 2002)*/
/*cSlope = 155.4*Suunto.pow(slope,5) - 30.4*Suunto.pow(slope,4) - 43.3*Suunto.pow(slope,3) + 46.3*Suunto.pow(slope,2) + 19.5*slope + 3.6;*/
cSlope = ((((155.4*slope-30.4)*slope-43.3)*slope+46.3)*slope+19.5)*slope + 3.6;
/* Efficiency (Skiba's govss.pdf and spreadsheet)*/
/* eff = (0.25 + 0.054*speed)*(1 - 0.5*speed/8.33);*/
eff = (-0.0032413*speed+0.038994)*speed+0.25;
power = (cAero + cKin + cSlope*eff)*speed*SUUNTO_USER_WEIGHT;
if(power <0)
{
power =0;
}
initialSpeed = speed;
if(SUUNTO_LAP_DURATION<=1)
{
RESULT=power;
}
else
{
RESULT=(power+(RESULT*(SUUNTO_LAP_DURATION-1)))/SUUNTO_LAP_DURATION;
}
}