mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
CPPlot: Some model testing
This commit is contained in:
@@ -327,6 +327,22 @@ CPPlot::initModel()
|
||||
pdModel->setMinutes(true); // we're minutes here ...
|
||||
pdModel->setData(bestsCache->meanMaxArray(rideSeries));
|
||||
}
|
||||
|
||||
#if GC_HAVE_MODEL_LABS
|
||||
// Test
|
||||
ExtendedCriticalPower *ecp = new ExtendedCriticalPower(context);
|
||||
|
||||
TestModel model = ecp->deriveExtendedCP_6_3_Parameters(true, bestsCache, rideSeries, sanI1, sanI2, anI1, anI2, aeI1, aeI2, laeI1, laeI2);
|
||||
QwtPlotCurve* plot = ecp->getPlotCurveForExtendedCP_6_3(model);
|
||||
plot->attach(this);
|
||||
bestsCurves.append(plot);
|
||||
|
||||
model = ecp->deriveExtendedCP_5_3_Parameters(true, bestsCache, rideSeries, sanI1, sanI2, anI1, anI2, aeI1, aeI2, laeI1, laeI2);
|
||||
plot = ecp->getPlotCurveForExtendedCP_5_3(model);
|
||||
plot->attach(this);
|
||||
bestsCurves.append(plot);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
// Plot the dashed line model curve according to the parameters
|
||||
|
||||
@@ -34,10 +34,10 @@ ExtendedCriticalPower::~ExtendedCriticalPower()
|
||||
{
|
||||
}
|
||||
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveExtendedCP_2_3_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
model.version = "eCP v2.3";
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
@@ -254,7 +254,7 @@ ExtendedCriticalPower::deriveExtendedCP_2_3_Parameters(RideFileCache *bests, Rid
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_2_3(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_2_3(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -282,10 +282,10 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_2_3(Model_eCP model)
|
||||
return extendedCPCurve2;
|
||||
}
|
||||
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveExtendedCP_4_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
model.version = "eCP v4.3";
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
@@ -530,10 +530,10 @@ ExtendedCriticalPower::deriveExtendedCP_4_3_Parameters(bool usebest, RideFileCac
|
||||
return model;
|
||||
}
|
||||
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveExtendedCP_4_3_ParametersForBest(double best5s, double best1min, double best5min, double best1hour)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
|
||||
// initial estimate of tau
|
||||
model.paa = 300;
|
||||
@@ -609,7 +609,7 @@ ExtendedCriticalPower::deriveExtendedCP_4_3_ParametersForBest(double best5s, dou
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3(TestModel model)
|
||||
{
|
||||
//qDebug() <<"getPlotCurveForExtendedCP_4_3()";
|
||||
//qDebug() <<"Model eCP(4.3) " << "paa" << model.paa << "ecp" << model.ecp << "etau" << model.etau << "paa_dec" << model.paa_dec << "ecp_del" << model.ecp_del << "ecp_dec" << model.ecp_dec ;
|
||||
@@ -641,7 +641,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotLevelForExtendedCP_4_3(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotLevelForExtendedCP_4_3(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 20;
|
||||
|
||||
@@ -705,7 +705,7 @@ ExtendedCriticalPower::getPlotLevelForExtendedCP_4_3(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotMarker*
|
||||
ExtendedCriticalPower::getPlotMarkerForExtendedCP(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotMarkerForExtendedCP(TestModel model)
|
||||
{
|
||||
QwtPlotMarker* extendedCurveTitle2 = new QwtPlotMarker();
|
||||
QString extendedCurve2_title;
|
||||
@@ -719,7 +719,7 @@ ExtendedCriticalPower::getPlotMarkerForExtendedCP(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WSecond(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WSecond(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -748,7 +748,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WSecond(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WPrime(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WPrime(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -777,7 +777,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WPrime(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_CP(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_CP(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -808,7 +808,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_CP(Model_eCP model)
|
||||
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WPrime_CP(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WPrime_CP(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -836,27 +836,27 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_4_3_WPrime_CP(Model_eCP model)
|
||||
return extendedCPCurve2;
|
||||
}
|
||||
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveExtendedCP_5_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
model.version = "eCP v5.3";
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
const double t1 = sanI1;
|
||||
const double t2 = sanI2;
|
||||
const double t1 = sanI1 / 60.0;
|
||||
const double t2 = sanI2 / 60.0;
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
const double t3 = anI1;
|
||||
const double t4 = anI2;
|
||||
const double t3 = anI1 / 60.0;
|
||||
const double t4 = anI2 / 60.0;
|
||||
|
||||
// bounds on aerobic interval in minutes
|
||||
const double t5 = aeI1;
|
||||
const double t6 = aeI2;
|
||||
const double t5 = aeI1 / 60.0;
|
||||
const double t6 = aeI2 / 60.0;
|
||||
|
||||
// bounds on long aerobic interval in minutes
|
||||
const double t7 = laeI1;
|
||||
const double t8 = laeI2;
|
||||
const double t7 = laeI1 / 60.0;
|
||||
const double t8 = laeI2 / 60.0;
|
||||
|
||||
// bounds of these time values in the data
|
||||
int i1, i2, i3, i4, i5, i6, i7, i8;
|
||||
@@ -951,6 +951,8 @@ ExtendedCriticalPower::deriveExtendedCP_5_3_Parameters(bool usebest, RideFileCac
|
||||
|
||||
// loop to convergence
|
||||
int iteration = 0;
|
||||
|
||||
qDebug() << "start iteration";
|
||||
do {
|
||||
if (iteration ++ > max_loops) {
|
||||
qDebug()<<"Maximum number of loops exceeded in ecp2 model";
|
||||
@@ -1075,21 +1077,21 @@ ExtendedCriticalPower::deriveExtendedCP_5_3_Parameters(bool usebest, RideFileCac
|
||||
(fabs(model.ecp_dec - ecp_dec_prev) > ecp_dec_delta_max)
|
||||
);
|
||||
|
||||
//qDebug() << iteration << "iterations";
|
||||
qDebug() << iteration << "iterations";
|
||||
|
||||
model.pMax = model.paa*(1.20-0.20*exp(-1*(1/60.0)))*exp(model.paa_dec*(1/60.0)) + model.ecp * (1-exp(model.tau_del*(1/60.0))) * (1-exp(model.ecp_del*(1/60.0))) * (1+model.ecp_dec*exp(model.ecp_dec_del/(1/60.0))) * ( 1 + model.etau/(1/60.0));
|
||||
model.mmp60 = model.paa*(1.20-0.20*exp(-1*60.0))*exp(model.paa_dec*(60.0)) + model.ecp * (1-exp(model.tau_del*(60.0))) * (1-exp(model.ecp_del*60.0)) * (1+model.ecp_dec*exp(model.ecp_dec_del/60.0)) * ( 1 + model.etau/(60.0));
|
||||
|
||||
qDebug() <<"eCP(5.3) " << "paa" << model.paa << "ecp" << model.ecp << "etau" << model.etau << "paa_dec" << model.paa_dec << "ecp_del" << model.ecp_del << "ecp_dec" << model.ecp_dec << "ecp_dec_del" << model.ecp_dec_del;
|
||||
qDebug() <<"eCP(5.3) " << "pmax" << model.pMax << "mmp60" << model.mmp60;
|
||||
qDebug() <<"-> eCP(5.3) " << "paa" << model.paa << "ecp" << model.ecp << "etau" << model.etau << "paa_dec" << model.paa_dec << "ecp_del" << model.ecp_del << "ecp_dec" << model.ecp_dec << "ecp_dec_del" << model.ecp_dec_del;
|
||||
qDebug() <<"-> eCP(5.3) " << "pmax" << model.pMax << "mmp60" << model.mmp60;
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveExtendedCP_5_3_ParametersForBest(double best5s, double best1min, double best5min, double best1hour)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
model.version = "eCP v5.3";
|
||||
|
||||
// initial estimate of tau
|
||||
@@ -1158,7 +1160,7 @@ ExtendedCriticalPower::deriveExtendedCP_5_3_ParametersForBest(double best5s, dou
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1177,7 +1179,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3(Model_eCP model)
|
||||
QwtPlotCurve *extendedCPCurve2 = new QwtPlotCurve("eCP_5_3");
|
||||
if (appsettings->value(NULL, GC_ANTIALIAS, true).toBool() == true)
|
||||
extendedCPCurve2->setRenderHint(QwtPlotItem::RenderAntialiased);
|
||||
QPen e2pen(GColor(CCP)); // Qt::cyan
|
||||
QPen e2pen(Qt::cyan); // Qt::cyan GColor(CCP)
|
||||
e2pen.setWidth(1);
|
||||
e2pen.setStyle(Qt::DashLine);
|
||||
extendedCPCurve2->setPen(e2pen);
|
||||
@@ -1187,7 +1189,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotLevelForExtendedCP_5_3(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotLevelForExtendedCP_5_3(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1216,7 +1218,7 @@ ExtendedCriticalPower::getPlotLevelForExtendedCP_5_3(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotIntervalCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_WSecond(Model_eCP model, bool)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_WSecond(TestModel model, bool)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1258,7 +1260,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_WSecond(Model_eCP model, bo
|
||||
}
|
||||
|
||||
QwtPlotIntervalCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_WPrime(Model_eCP model, bool stacked)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_WPrime(TestModel model, bool stacked)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1302,7 +1304,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_WPrime(Model_eCP model, boo
|
||||
}
|
||||
|
||||
QwtPlotIntervalCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_CP(Model_eCP model, bool stacked)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_CP(TestModel model, bool stacked)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1351,27 +1353,27 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_5_3_CP(Model_eCP model, bool st
|
||||
* Version 6
|
||||
*
|
||||
**************************************************/
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveExtendedCP_6_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
model.version = "eCP v6.3";
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
const double t1 = sanI1;
|
||||
const double t2 = sanI2;
|
||||
const double t1 = sanI1 / 60.0;
|
||||
const double t2 = sanI2 / 60.0;
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
const double t3 = anI1;
|
||||
const double t4 = anI2;
|
||||
const double t3 = anI1 / 60.0;
|
||||
const double t4 = anI2 / 60.0;
|
||||
|
||||
// bounds on aerobic interval in minutes
|
||||
const double t5 = aeI1;
|
||||
const double t6 = aeI2;
|
||||
const double t5 = aeI1 / 60.0;
|
||||
const double t6 = aeI2 / 60.0;
|
||||
|
||||
// bounds on long aerobic interval in minutes
|
||||
const double t7 = laeI1;
|
||||
const double t8 = laeI2;
|
||||
const double t7 = laeI1 / 60.0;
|
||||
const double t8 = laeI2 / 60.0;
|
||||
|
||||
// bounds of these time values in the data
|
||||
int i1, i2, i3, i4, i5, i6, i7, i8;
|
||||
@@ -1595,14 +1597,14 @@ ExtendedCriticalPower::deriveExtendedCP_6_3_Parameters(bool usebest, RideFileCac
|
||||
model.pMax = model.paa*(1.10-(1.10-1)*exp(-8*(1/60.0)))*exp(model.paa_dec*(1/60.0)) + model.ecp * (1+model.ecp_dec*exp(model.ecp_dec_del/(1/60.0))) * ( 1 * (1-exp(model.ecp_del*(1/60.0))) + pow((1-exp(model.tau_del*(1/60.0))),2) * model.etau/(1/60.0));
|
||||
model.mmp60 = model.paa*(1.10-(1.10-1)*exp(-8*60.0))*exp(model.paa_dec*(60.0)) + model.ecp * (1+model.ecp_dec*exp(model.ecp_dec_del/60.0)) * ( 1 * (1-exp(model.ecp_del*60.0)) + pow((1-exp(model.tau_del*(60.0))),2) * model.etau/(60.0));
|
||||
|
||||
qDebug() <<"eCP(6.3) " << "paa" << model.paa << "ecp" << model.ecp << "etau" << model.etau << "paa_dec" << model.paa_dec << "ecp_del" << model.ecp_del << "ecp_dec" << model.ecp_dec << "ecp_dec_del" << model.ecp_dec_del;
|
||||
qDebug() <<"eCP(6.3) " << "pmax" << model.pMax << "mmp60" << model.mmp60;
|
||||
qDebug() <<"-> eCP(6.3) " << "paa" << model.paa << "ecp" << model.ecp << "etau" << model.etau << "paa_dec" << model.paa_dec << "ecp_del" << model.ecp_del << "ecp_dec" << model.ecp_dec << "ecp_dec_del" << model.ecp_dec_del;
|
||||
qDebug() <<"-> eCP(6.3) " << "pmax" << model.pMax << "mmp60" << model.mmp60;
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
QwtPlotCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3(Model_eCP model)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3(TestModel model)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1621,7 +1623,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3(Model_eCP model)
|
||||
QwtPlotCurve *extendedCPCurve2 = new QwtPlotCurve("eCP_6_3");
|
||||
if (appsettings->value(NULL, GC_ANTIALIAS, true).toBool() == true)
|
||||
extendedCPCurve2->setRenderHint(QwtPlotItem::RenderAntialiased);
|
||||
QPen e2pen(Qt::cyan);
|
||||
QPen e2pen(Qt::blue);
|
||||
e2pen.setWidth(1);
|
||||
e2pen.setStyle(Qt::DashLine);
|
||||
extendedCPCurve2->setPen(e2pen);
|
||||
@@ -1631,7 +1633,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3(Model_eCP model)
|
||||
}
|
||||
|
||||
QwtPlotIntervalCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_WSecond(Model_eCP model, bool)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_WSecond(TestModel model, bool)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1671,7 +1673,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_WSecond(Model_eCP model, bo
|
||||
}
|
||||
|
||||
QwtPlotIntervalCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_WPrime(Model_eCP model, bool stacked)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_WPrime(TestModel model, bool stacked)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1713,7 +1715,7 @@ ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_WPrime(Model_eCP model, boo
|
||||
}
|
||||
|
||||
QwtPlotIntervalCurve*
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_CP(Model_eCP model, bool stacked)
|
||||
ExtendedCriticalPower::getPlotCurveForExtendedCP_6_3_CP(TestModel model, bool stacked)
|
||||
{
|
||||
const int extendedCurve2_points = 1000;
|
||||
|
||||
@@ -1771,10 +1773,10 @@ ExtendedCriticalPower::decimateData(QVector<double> data)
|
||||
}
|
||||
}*/
|
||||
|
||||
Model_eCP
|
||||
TestModel
|
||||
ExtendedCriticalPower::deriveDanVeloclinicCP_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2)
|
||||
{
|
||||
Model_eCP model;
|
||||
TestModel model;
|
||||
model.version = "2 components (Dan v1)";
|
||||
|
||||
// bounds on anaerobic interval in minutes
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
#include <qwt_plot_marker.h>
|
||||
|
||||
// Model
|
||||
class Model_eCP
|
||||
class TestModel //: public PDModel
|
||||
{
|
||||
public:
|
||||
|
||||
Model_eCP() :
|
||||
TestModel() :
|
||||
version(""),
|
||||
paa(0), paa_dec(0), ecp(0), etau(0), ecp_del(0), tau_del(0), ecp_dec(0), ecp_dec_del(0),
|
||||
pMax(0), mmp60(0) {}
|
||||
@@ -94,65 +94,65 @@ class ExtendedCriticalPower
|
||||
ExtendedCriticalPower(Context *context);
|
||||
~ExtendedCriticalPower();
|
||||
|
||||
//Model_eCP deriveExtendedCPParameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
//TestModel deriveExtendedCPParameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
|
||||
/*Model_wsCP deriveWardSmithCPParameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForWScp(Model_wsCP athleteModeleWSCP);*/
|
||||
|
||||
|
||||
Model_eCP deriveExtendedCP_2_1_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_2_1(Model_eCP athleteModeleCP2);
|
||||
QwtPlotMarker* getPlotMarkerForExtendedCP_2_1(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_2_1_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_2_1(TestModel athleteModeleCP2);
|
||||
QwtPlotMarker* getPlotMarkerForExtendedCP_2_1(TestModel athleteModeleCP2);
|
||||
|
||||
Model_eCP deriveExtendedCP_2_3_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
//Model_eCP deriveExtendedCP_2_3_ParametersForBest(double best5s, double best1min, double best5min, double best60min);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_2_3(Model_eCP model);
|
||||
TestModel deriveExtendedCP_2_3_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
//TestModel deriveExtendedCP_2_3_ParametersForBest(double best5s, double best1min, double best5min, double best60min);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_2_3(TestModel model);
|
||||
|
||||
Model_eCP deriveExtendedCP_3_1_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_3_1(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_3_1_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_3_1(TestModel athleteModeleCP2);
|
||||
|
||||
Model_eCP deriveExtendedCP_4_1_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_1(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_4_1_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_1(TestModel athleteModeleCP2);
|
||||
|
||||
Model_eCP deriveExtendedCP_4_2_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_2(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_4_2_Parameters(RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_2(TestModel athleteModeleCP2);
|
||||
|
||||
Model_eCP deriveExtendedCP_4_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
Model_eCP deriveExtendedCP_4_3_ParametersForBest(double best5s, double best1min, double best5min, double best60min);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3(Model_eCP athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotLevelForExtendedCP_4_3(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_4_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
TestModel deriveExtendedCP_4_3_ParametersForBest(double best5s, double best1min, double best5min, double best60min);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3(TestModel athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotLevelForExtendedCP_4_3(TestModel athleteModeleCP2);
|
||||
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_WSecond(Model_eCP athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_WPrime(Model_eCP athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_CP(Model_eCP athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_WPrime_CP(Model_eCP athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_WSecond(TestModel athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_WPrime(TestModel athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_CP(TestModel athleteModeleCP2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_4_3_WPrime_CP(TestModel athleteModeleCP2);
|
||||
|
||||
// Extended CP Model version 5
|
||||
Model_eCP deriveExtendedCP_5_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_5_3(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_5_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_5_3(TestModel athleteModeleCP2);
|
||||
|
||||
Model_eCP deriveExtendedCP_5_3_ParametersForBest(double best5s, double best1min, double best5min, double best60min);
|
||||
QwtPlotCurve* getPlotLevelForExtendedCP_5_3(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_5_3_ParametersForBest(double best5s, double best1min, double best5min, double best60min);
|
||||
QwtPlotCurve* getPlotLevelForExtendedCP_5_3(TestModel athleteModeleCP2);
|
||||
|
||||
// Contributions
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_5_3_WSecond(Model_eCP athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_5_3_WPrime(Model_eCP athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_5_3_CP(Model_eCP athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_5_3_WSecond(TestModel athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_5_3_WPrime(TestModel athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_5_3_CP(TestModel athleteModeleCP2, bool stacked);
|
||||
|
||||
// Extended CP Model version 6
|
||||
Model_eCP deriveExtendedCP_6_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_6_3(Model_eCP athleteModeleCP2);
|
||||
TestModel deriveExtendedCP_6_3_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
QwtPlotCurve* getPlotCurveForExtendedCP_6_3(TestModel athleteModeleCP2);
|
||||
|
||||
// Contributions
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_6_3_WSecond(Model_eCP athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_6_3_WPrime(Model_eCP athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_6_3_CP(Model_eCP athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_6_3_WSecond(TestModel athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_6_3_WPrime(TestModel athleteModeleCP2, bool stacked);
|
||||
QwtPlotIntervalCurve* getPlotCurveForExtendedCP_6_3_CP(TestModel athleteModeleCP2, bool stacked);
|
||||
|
||||
// Marker for Model
|
||||
QwtPlotMarker* getPlotMarkerForExtendedCP(Model_eCP athleteModeleCP2);
|
||||
QwtPlotMarker* getPlotMarkerForExtendedCP(TestModel athleteModeleCP2);
|
||||
|
||||
// Dan-Veloclinic Model
|
||||
Model_eCP deriveDanVeloclinicCP_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
TestModel deriveDanVeloclinicCP_Parameters(bool usebest, RideFileCache *bests, RideFile::SeriesType series, double sanI1, double sanI2, double anI1, double anI2, double aeI1, double aeI2, double laeI1, double laeI2);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -516,7 +516,8 @@ double
|
||||
ExtendedModel::y(double t) const
|
||||
{
|
||||
// don't start at zero !
|
||||
t += (!minutes?1.00f:1/60.00f);
|
||||
if (t == 0)
|
||||
t += (!minutes?1.00f:1/60.00f);
|
||||
|
||||
if (!minutes) t /= 60.00f;
|
||||
return paa*(1.20-0.20*exp(-1*double(t)))*exp(paa_dec*(double(t))) + ecp * (1-exp(tau_del*double(t))) * (1-exp(ecp_del*double(t))) * (1+ecp_dec*exp(ecp_dec_del/double(t))) * ( 1 + etau/(double(t)));
|
||||
|
||||
@@ -80,9 +80,6 @@ RideSummaryWindow::RideSummaryWindow(Context *context, bool ridesummary) :
|
||||
#endif
|
||||
|
||||
cl->addRow(new QLabel(tr("Date range")), dateSetting);
|
||||
|
||||
// ecp model
|
||||
ecp = new ExtendedCriticalPower(context);
|
||||
}
|
||||
|
||||
QVBoxLayout *vlayout = new QVBoxLayout;
|
||||
|
||||
@@ -147,7 +147,7 @@ class RideSummaryWindow : public GcChartWindow
|
||||
|
||||
RideFileCache *bestsCache;
|
||||
ExtendedCriticalPower *ecp;
|
||||
Model_eCP cpModel;
|
||||
TestModel cpModel;
|
||||
|
||||
QString WPrimeString, CPString, FTPString, PMaxString;
|
||||
QString WPrimeStringWPK, CPStringWPK, FTPStringWPK, PMaxStringWPK;
|
||||
|
||||
Reference in New Issue
Block a user