00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef NHSMODELWITHBACKWARDSOLVER_HPP_
00030 #define NHSMODELWITHBACKWARDSOLVER_HPP_
00031
00032 #include "NhsContractionModel.hpp"
00033 #include "TimeStepper.hpp"
00034 #include <cmath>
00035
00036
00049 class NhsModelWithBackwardSolver : public NhsContractionModel
00050 {
00051 private:
00053 static const double mTolerance;
00054
00056 double mDt;
00057
00063 double ImplicitSolveForQ();
00064
00075 void CalculateCaTropAndZDerivatives(double calciumTroponin, double z, double Q, double& dCaTrop, double& dz);
00076
00090 void CalculateBackwardEulerResidual(double calciumTroponin, double z, double Q,
00091 double& residualComponent1, double& residualComponent2);
00092
00093 public :
00097 NhsModelWithBackwardSolver();
00098
00099
00117 void RunDoNotUpdate(double startTime, double endTime, double timestep);
00118
00119
00120
00128 double GetNextActiveTension();
00129
00137 void RunAndUpdate(double startTime, double endTime, double timestep);
00138 };
00139
00140 #endif