35#include "NhsContractionModel.hpp"
36#include "OdeSystemInformation.hpp"
37#include "EulerIvpOdeSolver.hpp"
75 double one_plus_beta0_times_lam_minus_one_over_two_gamma = (1 +
mBeta0*(
mLambda-1))/(2*
mGamma);
78 mCalciumTrop50 /= (Ca50ref_times_one_plus_beta1_times_lam_minus_one + (1-one_plus_beta0_times_lam_minus_one_over_two_gamma)*
mKrefoff/
mKon);
86 double z_max =
mAlpha0 -
mK2*calcium_ratio_to_n;
109 double zp_to_n_plus_K_to_n = SmallPow(
mZp,
mNr) + SmallPow(
mKZ,
mNr);
112 mK1 /= zp_to_n_plus_K_to_n * zp_to_n_plus_K_to_n;
136 assert(calciumConcentration > 0.0);
146 const std::vector<double> &rY,
147 std::vector<double> &rDY)
151 const double& calcium_troponin = rY[0];
152 const double& z = rY[1];
153 const double& Q1 = rY[2];
154 const double& Q2 = rY[3];
155 const double& Q3 = rY[4];
159 if (calcium_troponin < 0)
161 EXCEPTION(
"CalciumTrop concentration went negative");
174 double Q = Q1 + Q2 + Q3;
180 Ta = T0*(1+(2+
mA)*Q)/(1+Q);
184 Ta = T0*(1+
mA*Q)/(1-Q);
190 double ca_trop_to_ca_trop50_ratio_to_n = SmallPow(calcium_troponin/
mCalciumTrop50,
mN);
192 rDY[1] =
mAlpha0 * ca_trop_to_ca_trop50_ratio_to_n * (1-z)
210 return T0*(1+(2+
mA)*Q)/(1+Q);
214 return T0*(1+
mA*Q)/(1-Q);
221 this->mVariableNames.push_back(
"CalciumTroponin");
222 this->mVariableUnits.push_back(
"microMols");
223 this->mInitialConditions.push_back(0);
225 this->mVariableNames.push_back(
"z");
226 this->mVariableUnits.push_back(
"");
227 this->mInitialConditions.push_back(0);
229 this->mVariableNames.push_back(
"Q1");
230 this->mVariableUnits.push_back(
"");
231 this->mInitialConditions.push_back(0);
233 this->mVariableNames.push_back(
"Q2");
234 this->mVariableUnits.push_back(
"");
235 this->mInitialConditions.push_back(0);
237 this->mVariableNames.push_back(
"Q3");
238 this->mVariableUnits.push_back(
"");
239 this->mInitialConditions.push_back(0);
241 this->mInitialised =
true;
const double DOUBLE_UNSET
#define EXCEPTION(message)
void ResetToInitialConditions()
std::vector< double > mStateVariables
boost::shared_ptr< AbstractOdeSystemInformation > mpSystemInfo
static const double mAlpha3
static const double mTref
void SetIntracellularCalciumConcentration(double calciumConcentration)
double GetCalciumTroponinValue()
static const double mAlpha2
static const double mBeta1
static const double mAlphaR2
static const double mAlpha1
void EvaluateYDerivatives(double time, const std::vector< double > &rY, std::vector< double > &rDY)
static const double mAlphaR1
static const double mAlpha0
static const double mKrefoff
void SetInputParameters(ContractionModelInputParameters &rInputParameters)
static const double mBeta0
static const double mGamma
static const unsigned mNr
static const double mCalcium50ref
double CalculateT0(double z)
static const double mCalciumTroponinMax
void CalculateCalciumTrop50()
void SetStretchAndStretchRate(double lambda, double dlambdaDt)
double GetActiveTension()