AbstractRushLarsenCardiacCell.hpp
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
00030
00031
00032
00033
00034
00035
00036 #ifndef ABSTRACTRUSHLARSENCARDIACCELL_HPP_
00037 #define ABSTRACTRUSHLARSENCARDIACCELL_HPP_
00038
00039 #include "ChasteSerialization.hpp"
00040 #include <boost/serialization/base_object.hpp>
00041 #include "ClassIsAbstract.hpp"
00042
00043 #include "AbstractCardiacCell.hpp"
00044 #include "PetscTools.hpp"
00045
00058 class AbstractRushLarsenCardiacCell : public AbstractCardiacCell
00059 {
00060 private:
00062 friend class boost::serialization::access;
00069 template<class Archive>
00070 void serialize(Archive & archive, const unsigned int version)
00071 {
00072
00073 archive & boost::serialization::base_object<AbstractCardiacCell>(*this);
00074 }
00075
00076 public:
00090 AbstractRushLarsenCardiacCell(
00091 unsigned numberOfStateVariables,
00092 unsigned voltageIndex,
00093 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00094
00096 virtual ~AbstractRushLarsenCardiacCell();
00097
00110 OdeSolution Compute(double tStart, double tEnd, double tSamp=0.0);
00111
00122 void ComputeExceptVoltage(double tStart, double tEnd);
00123
00131 void SolveAndUpdateState(double tStart, double tEnd);
00132
00133 private:
00134 #define COVERAGE_IGNORE
00135
00142 void EvaluateYDerivatives(double time, const std::vector<double> &rY, std::vector<double> &rDY)
00143 {
00144 NEVER_REACHED;
00145 }
00146 #undef COVERAGE_IGNORE
00147
00148 protected:
00159 virtual void ComputeOneStepExceptVoltage(const std::vector<double> &rDY,
00160 const std::vector<double> &rAlphaOrTau,
00161 const std::vector<double> &rBetaOrInf)=0;
00162
00168 void UpdateTransmembranePotential(const std::vector<double> &rDY);
00169
00180 virtual void EvaluateEquations(double time,
00181 std::vector<double> &rDY,
00182 std::vector<double> &rAlphaOrTau,
00183 std::vector<double> &rBetaOrInf)=0;
00184 };
00185
00186 CLASS_IS_ABSTRACT(AbstractRushLarsenCardiacCell)
00187
00188 #endif // ABSTRACTRUSHLARSENCARDIACCELL_HPP_