Commit Graph

62 Commits

Author SHA1 Message Date
Mark Liversedge
ea980149ca Mark MATCHES that are To Exhaustion
.. name and also red color.
2015-05-31 13:34:22 +01:00
Claus Assmann
35eb416bd2 Fix comment spelling errors
.. lots of them !
2014-11-24 15:37:56 +00:00
Mark Liversedge
da73b072ed Fix Spline resampling
.. should be periodic not natural

.. should apply to sub-second samples too !
2014-11-09 09:48:59 +00:00
Mark Liversedge
30484e1af7 Add W'bal TAU Config
.. it is only used in realtime mode
2014-10-23 13:26:51 +01:00
Mark Liversedge
1230a9eb40 Plot W'bal on the fly in train mode
.. uses a fixed TAU of 300s so need to add some
   way of configuring it for on the fly calculations
2014-10-23 12:12:23 +01:00
Mark Liversedge
99defb5885 Fix W'bal in Train Performance Plot
.. code still needs to be refactored !
2014-10-23 09:15:10 +01:00
Mark Liversedge
40556883e6 Fast W'bal integration
Dave Waterworth has fixed my implementation of W'bal to
remove my "optimisations" and fix the math.

The W'bal is now computed in a single pass and is just
as fast as the differential form from Andy Froncioni but
has the benefit that is still uses Tau.

Many thanks to Dave, and I'll write this up shortly.
2014-10-11 12:40:05 +01:00
Mark Liversedge
b92564d719 Matches tidy
.. no need for 1 dp
.. no need for unit description
2014-09-25 22:37:10 +01:00
Mark Liversedge
b54552d496 W'bal calc optimise
.. use exp() not pow()
2014-08-28 22:59:23 +01:00
Mark Liversedge
68992c129d Matches metric
.. how many >2kj matches did you burn ?

.. also taken out the power/slope derived data series
   since Jon is migrating it to a fix tool
2014-08-23 20:08:46 +01:00
Mark Liversedge
c5a1888662 Below CP Work + W' Work = Total Work
.. previously we have computed below cp work as only that
   work when power was at or below CP

.. since we want to track energy from CP and W' it makes more
   sense to make below CP work include all work not from W' stores.
2014-07-13 09:38:15 +01:00
Mark Liversedge
ec42eb6ccc W'bal integral calculation speed up
.. by stopping decay calculation when its incrementing by
   less than 10 joules, thats almost nothing.
2014-07-12 10:55:19 +01:00
Mark Liversedge
9c15e6c4fa Limit W' bal integral exp Decay to TAU * 3
.. when computing W'bal decay -- since we know the half-life
   for the decay we might as well use it rather than a pretty
   big constant of 1 hour !

.. it saves about 35% of time to compute metrics
2014-07-11 10:40:05 +01:00
Mark Liversedge
3182491792 W'bal invalidate and recompute
.. when formula selection changes
2014-07-10 17:31:17 +01:00
Mark Liversedge
41124d7821 Enable selection of W'bal formula
.. Differential - uses the Clarke/Froncioni fast differential eqn

.. Integral - uses the original Skiba et al 'slow' equation
2014-07-10 17:14:01 +01:00
Mark Liversedge
c4f43c3fad Fix W'bal on Erg Plot
.. it got broken when we moved to the 2nd variation W'bal formula
2014-07-02 23:27:38 +01:00
Mark Liversedge
04f85cae6a Fix W' glitch of distance jumps to 0
.. pointed out by Claus Assmann on the list, when he should have
   been celebrating Germany 4 - Portugal 0 ;)
2014-06-16 19:20:59 +01:00
Mark Liversedge
27dc513bbe W' Work Calculation
.. should only include joules from W' ie. power above
   CP is accumulated.
2014-05-25 23:19:53 +01:00
Mark Liversedge
28e7c83252 Fix W bal plotting by distance
.. since we only smoothed time

Fixes #803
2014-05-06 11:22:48 +01:00
Mark Liversedge
a801f5aec8 Andy Froncioni W'bal optiimsation (contd)
.. forgot to remove the threaded integrator which is no longer
   needed and then found it is still being used by the minForCP()
   method, so tidied that up.
2014-04-29 21:02:20 +01:00
Mark Liversedge
d75c088938 Faster W'bal algorithm
Using Andy Froncioni's modification to the original
formula that removes the need for Tau and also lets
the exponentials drop out.

Massive speed improvement!
2014-04-24 16:23:42 +01:00
Mark Liversedge
e227d71b31 Truncate W'bal going hugely negative
.. this is caused by bad data and/or the spline getting
   spoilt. We need a better way of decritizing the data.
2014-04-09 10:58:53 +01:00
Mark Liversedge
89017fe2a5 Stress Metric Prototypes
Added a few new training stress metrics whilst discussing
and working on a multicomponent view of training stress.

This is all a wip falling out of discussions around stress
metrics beyond the old TSS/BikeScore models.

For now this just includes;
1. Aerobic Training Impact Scoring System on PM/PMC
2. Work (Kj) above/below CP on PM/PMC
3. Aerobic TISS on the Ride Plot

There is lots more to come; specifically around Anaerobic TISS,
looking again at polarised training and personalised training stress
based upon the individual's CP model.
2014-03-17 20:51:57 +00:00
Mark Liversedge
0a2875de79 Fix W' work metric
.. the calculation assumed 1s recording (or was just wrong)
   joules are now calculated properly, this is especially
   important for SRM recordings of 0.5s samples
2014-02-15 00:09:45 +00:00
Mark Liversedge
888bb9885b Limit the CP autosolve for W'bal
.. if its waaaay off then don't try to autosolve for
   CP .. instead just warn that W' is probably set
   incorrectly.
2014-02-14 20:19:56 +00:00
Mark Liversedge
4796425ff6 W'bal decay set to 1hr, infinite not practical 2014-01-28 20:58:44 +00:00
Mark Liversedge
9f6077c4d1 W'bal decay to infinity
.. No more cutoff of the decay. Since we use threads its
   not such a big deal as before.

.. We now get a full, smooth decay till the end of the ride
   which was much more noticeable when predicting W'bal for
   a workout, than it was for a ride.
2014-01-28 20:18:20 +00:00
Mark Liversedge
432e6ec3a9 Plot Predicted W'bal in Train mode
.. only plots predicted W'bal for the workout but at least that
   means you can see if the workout is even possible.
2014-01-28 18:32:26 +00:00
Mark Liversedge
f7dd54ff68 Update WPrime comment
.. to explain how we sped up the W'bal integral calculation
2014-01-26 20:15:20 +00:00
Mark Liversedge
8974ba2d2f Fix WPrime CP lookup SEGV
.. when zones or cp not set for the date in question

Fixes #774.
2014-01-26 16:22:00 +00:00
Mark Liversedge
030fdc03b3 Fix DIV0 SEGV
.. in WPrime, and also don't bother trying to autosolve
   CP when W'bal is negative if W' is not setup
2014-01-26 12:10:13 +00:00
Mark Liversedge
f10e24857d W'bal use threads
.. to boost performance. Now will compute the integral
   in parallel and saves about 35% in elapsed time on a
   dual core processor.
2014-01-25 22:56:41 +00:00
Mark Liversedge
ce0a5c39eb Less bounds checking on W'bal calculation
.. to save on computing cost the W'bal decay was only
   calculated to 20mins and also bounds checked to a
   decay of 0.1w, but of course, the decay is more like
   25 minutes and 0.1w * 1500 samples is a lot... so
   I've removed them.

.. the key optimisation is the way the decay is integrated
   and that is skipped for samples where W' exp is zero ..
   that optimisation reduces the amount of computing cost
   to 25% of doing it for all samples.
2014-01-24 18:36:43 +00:00
Mark Liversedge
fd778c3230 W' Exp rename W' Expended
It was too oblique a name, could have mean't a few things...
2014-01-24 18:12:00 +00:00
Mark Liversedge
9fe10d4691 New Metric W' Exp
For maximum W' capacity expended i.e. Min W'bal
expressed as a percentage of W'.

So if W' is 20 kJ and W'bal is 2kJ then 18 kJ
have been expended, which when expressed as a
percentage of W' (18/20 %) would be;

Max W' Exp of 90%

I also cleaned up a few extra instances of WPrime
being created when calculatinf metrics which was
not a big deal for the Metric refresh but would make
interval metrics painful.
2014-01-24 17:27:45 +00:00
Mark Liversedge
fb4d513bbe WPrime don't crash on bad data
.. if duration is overly large we don't want to get some
   massive array, it will exhaust heap and cause a crash ..
   and it is likely to just be bad data.
2014-01-24 15:37:53 +00:00
Mark Liversedge
86dafd9c57 WPrime interpolation fixup
.. don't be so keen to add zero values interpolating gaps
   in recording when the gap is less than 2 samples wide.

.. previously we were adding way too may zero values at
   subsecond intervals that caused an interpolated value
   returned by the spline to be /practically/ zero.
2014-01-24 11:53:13 +00:00
Mark Liversedge
b7092c5a30 Fix WPrime spline starts from 0
.. offset needed to be a double not an int to ensure
   we handle recording gaps from powertap etc where
   it is not an whole number of seconds

.. Thanks for Armando Mastracci for highlighting this
   and providing a test file to recreate

Fixes #773
2014-01-24 10:33:57 +00:00
Mark Liversedge
1bbc12e4ff Autosolve CP for Min W'bal +/- 3w
.. just speeding up the autosolve by only looking in increments
   of 3w, should speed up by a factor of 3 but will mean the result
   is correct to +/- 3w .. which given the W' is usually only right
   to +/- 2kJ should be about right.
2014-01-24 07:51:54 +00:00
Mark Liversedge
6ef03ee704 W' Work
.. don't rely on WPrime to compute it, its pretty simple
   to compute as long as CP is set

.. add to the summary totals so always there to compare
   against the total work
2014-01-23 17:55:41 +00:00
Mark Liversedge
d8711a9ba1 Fix W'bal calculation
.. the optimisation was a little eager and took out
   the integration step !

.. access to PCP is now hidden behind a function so
   it is only computed when neccessary.

.. the calculation is still significantly faster than
   the old one but not as instant as the non-integrating
   version (but then it wasn't working either!).
2014-01-23 16:30:53 +00:00
Mark Liversedge
0128e2fb75 Fix DIV/0 SEGV with WPrime 2014-01-23 08:49:35 +00:00
Mark Liversedge
121a4c691a Minimum CP for W'bal going negative
.. on ride plot, when W'bal is plotted we put a mesage to say
   that CP is wrong, and autosolve for W'bal to zero.

.. this patch also optimises WPrime to make it a member of the
   ridefile class and this always available (even for intervals).

.. fixed a SEGV when computing metrics for intervals by shifting
   the timestamps to always start from zero.
2014-01-22 20:48:42 +00:00
Mark Liversedge
99df8ab27e Enable use of Minimum W' bal in data filter 2014-01-21 18:07:33 +00:00
Mark Liversedge
89a5ca2634 Added W' expenditure metric
.. energy spent above CP
2014-01-20 20:33:33 +00:00
Mark Liversedge
393e4a38e3 Added W' Tau as a metric
.. so we can track and see if it correlates with anthing.
2014-01-20 19:54:00 +00:00
Mark Liversedge
a0114b32f9 Add W'bal Metrics
Added;
- minimum W'bal == how deep did you go on the ride?
- max match == hardest sustained effort in KJ.

Fixes #760
2014-01-20 19:25:55 +00:00
Mark Liversedge
4ff5a036b7 Optimise W' calculation
Instead of just reimplementing the spreadsheet we now
implement according to the original formulas as defined
in the W'bal paper.

This means there is no longer a 1200s limit to the decay
which was not part of the original paper.

We should be able to add some W'bal metrics now.
2014-01-20 18:47:03 +00:00
Mark Liversedge
7cac290804 Honour "CP" override in W'
W' calculator didn't use the "CP" metadata to override the
CP for the ride.
2013-11-15 18:14:17 +00:00
Mark Liversedge
cd971f5509 Fix W' crash smoothing sub-second recording. 2013-11-14 23:02:30 +00:00