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 #ifndef ABSTRACTRUSHLARSENCARDIACCELL_HPP_
00030 #define ABSTRACTRUSHLARSENCARDIACCELL_HPP_
00031
00032 #include "ChasteSerialization.hpp"
00033 #include <boost/serialization/base_object.hpp>
00034 #include "ClassIsAbstract.hpp"
00035
00036 #include "AbstractCardiacCell.hpp"
00037 #include "PetscTools.hpp"
00038
00051 class AbstractRushLarsenCardiacCell : public AbstractCardiacCell
00052 {
00053 private:
00055 friend class boost::serialization::access;
00062 template<class Archive>
00063 void serialize(Archive & archive, const unsigned int version)
00064 {
00065
00066 archive & boost::serialization::base_object<AbstractCardiacCell>(*this);
00067 }
00068
00069 public:
00083 AbstractRushLarsenCardiacCell(
00084 unsigned numberOfStateVariables,
00085 unsigned voltageIndex,
00086 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus);
00087
00089 virtual ~AbstractRushLarsenCardiacCell();
00090
00103 OdeSolution Compute(double tStart, double tEnd, double tSamp=0.0);
00104
00115 void ComputeExceptVoltage(double tStart, double tEnd);
00116
00124 void SolveAndUpdateState(double tStart, double tEnd);
00125
00126 private:
00127 #define COVERAGE_IGNORE
00128
00135 void EvaluateYDerivatives(double time, const std::vector<double> &rY, std::vector<double> &rDY)
00136 {
00137 NEVER_REACHED;
00138 }
00139 #undef COVERAGE_IGNORE
00140
00141 protected:
00152 virtual void ComputeOneStepExceptVoltage(const std::vector<double> &rDY,
00153 const std::vector<double> &rAlphaOrTau,
00154 const std::vector<double> &rBetaOrInf)=0;
00155
00161 void UpdateTransmembranePotential(const std::vector<double> &rDY);
00162
00173 virtual void EvaluateEquations(double time,
00174 std::vector<double> &rDY,
00175 std::vector<double> &rAlphaOrTau,
00176 std::vector<double> &rBetaOrInf)=0;
00177 };
00178
00179 CLASS_IS_ABSTRACT(AbstractRushLarsenCardiacCell)
00180
00181 #endif // ABSTRACTRUSHLARSENCARDIACCELL_HPP_