Chaste Release::3.1
|
#include <AbstractRushLarsenCardiacCell.hpp>
Public Member Functions | |
AbstractRushLarsenCardiacCell (unsigned numberOfStateVariables, unsigned voltageIndex, boost::shared_ptr< AbstractStimulusFunction > pIntracellularStimulus) | |
virtual | ~AbstractRushLarsenCardiacCell () |
OdeSolution | Compute (double tStart, double tEnd, double tSamp=0.0) |
void | ComputeExceptVoltage (double tStart, double tEnd) |
void | SolveAndUpdateState (double tStart, double tEnd) |
Protected Member Functions | |
virtual void | ComputeOneStepExceptVoltage (const std::vector< double > &rDY, const std::vector< double > &rAlphaOrTau, const std::vector< double > &rBetaOrInf)=0 |
void | UpdateTransmembranePotential (const std::vector< double > &rDY) |
virtual void | EvaluateEquations (double time, std::vector< double > &rDY, std::vector< double > &rAlphaOrTau, std::vector< double > &rBetaOrInf)=0 |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &archive, const unsigned int version) |
void | EvaluateYDerivatives (double time, const std::vector< double > &rY, std::vector< double > &rDY) |
Friends | |
class | boost::serialization::access |
This is the base class for cardiac cells solved using the Rush-Larsen method. It is based on code contributed by Megan Lewis, University of Saskatchewan
The basic approach to solving such models is:
Definition at line 58 of file AbstractRushLarsenCardiacCell.hpp.
AbstractRushLarsenCardiacCell::AbstractRushLarsenCardiacCell | ( | unsigned | numberOfStateVariables, |
unsigned | voltageIndex, | ||
boost::shared_ptr< AbstractStimulusFunction > | pIntracellularStimulus | ||
) |
Standard constructor for a cell.
numberOfStateVariables | the size of the ODE system |
voltageIndex | the index of the variable representing the transmembrane potential within the state variable vector |
pIntracellularStimulus | the intracellular stimulus function |
Some notes for future reference:
Definition at line 45 of file AbstractRushLarsenCardiacCell.cpp.
AbstractRushLarsenCardiacCell::~AbstractRushLarsenCardiacCell | ( | ) | [virtual] |
Virtual destructor
Definition at line 54 of file AbstractRushLarsenCardiacCell.cpp.
OdeSolution AbstractRushLarsenCardiacCell::Compute | ( | double | tStart, |
double | tEnd, | ||
double | tSamp = 0.0 |
||
) | [virtual] |
Simulates this cell's behaviour between the time interval [tStart, tEnd], with timestep mDt. Uses a forward Euler step to update the transmembrane potential at each timestep.
The length of the time interval must be a multiple of the timestep.
tStart | beginning of the time interval to simulate |
tEnd | end of the time interval to simulate |
tSamp | sampling interval for returned results (defaults to mDt) |
Reimplemented from AbstractCardiacCell.
Definition at line 57 of file AbstractRushLarsenCardiacCell.cpp.
References ComputeOneStepExceptVoltage(), EvaluateEquations(), AbstractCardiacCell::mDt, AbstractUntemplatedParameterisedSystem::mNumberOfStateVariables, AbstractUntemplatedParameterisedSystem::mpSystemInfo, OdeSolution::rGetSolutions(), AbstractParameterisedSystem< std::vector< double > >::rGetStateVariables(), OdeSolution::rGetTimes(), OdeSolution::SetNumberOfTimeSteps(), OdeSolution::SetOdeSystemInformation(), UpdateTransmembranePotential(), and AbstractParameterisedSystem< std::vector< double > >::VerifyStateVariables().
Simulates this cell's behaviour between the time interval [tStart, tEnd], with timestep mDt. The transmembrane potential is kept fixed throughout, but the other state variables are updated.
The length of the time interval must be a multiple of the timestep.
tStart | beginning of the time interval to simulate |
tEnd | end of the time interval to simulate |
Reimplemented from AbstractCardiacCell.
Definition at line 106 of file AbstractRushLarsenCardiacCell.cpp.
References TimeStepper::AdvanceOneTimeStep(), ComputeOneStepExceptVoltage(), EvaluateEquations(), TimeStepper::GetTime(), TimeStepper::IsTimeAtEnd(), AbstractCardiacCell::mDt, AbstractUntemplatedParameterisedSystem::mNumberOfStateVariables, AbstractCardiacCellInterface::mSetVoltageDerivativeToZero, and AbstractParameterisedSystem< std::vector< double > >::VerifyStateVariables().
virtual void AbstractRushLarsenCardiacCell::ComputeOneStepExceptVoltage | ( | const std::vector< double > & | rDY, |
const std::vector< double > & | rAlphaOrTau, | ||
const std::vector< double > & | rBetaOrInf | ||
) | [protected, pure virtual] |
Update the values of elligible gating variables using the Rush-Larsen method, and of other non-V variables using forward Euler, for a single timestep.
rDY | vector containing dy/dt values |
rAlphaOrTau | vector containing alpha or tau values, depending on the formulation |
rBetaOrInf | vector containing beta or inf values, depending on the formulation |
Referenced by Compute(), ComputeExceptVoltage(), and SolveAndUpdateState().
virtual void AbstractRushLarsenCardiacCell::EvaluateEquations | ( | double | time, |
std::vector< double > & | rDY, | ||
std::vector< double > & | rAlphaOrTau, | ||
std::vector< double > & | rBetaOrInf | ||
) | [protected, pure virtual] |
Compute dy/dt and alpha and beta values.
time | start of this timestep |
rDY | vector to fill in with dy/dt values |
rAlphaOrTau | vector to fill in with alpha or tau values, depending on the formulation |
rBetaOrInf | vector to fill in with beta or inf values, depending on the formulation |
Referenced by Compute(), ComputeExceptVoltage(), and SolveAndUpdateState().
void AbstractRushLarsenCardiacCell::EvaluateYDerivatives | ( | double | time, |
const std::vector< double > & | rY, | ||
std::vector< double > & | rDY | ||
) | [inline, private, virtual] |
This function should never be called - the cell class incorporates its own solver.
time | |
rY | |
rDY |
Implements AbstractOdeSystem.
Definition at line 142 of file AbstractRushLarsenCardiacCell.hpp.
References NEVER_REACHED.
void AbstractRushLarsenCardiacCell::serialize | ( | Archive & | archive, |
const unsigned int | version | ||
) | [inline, private] |
Archive the member variables.
archive | |
version |
Reimplemented from AbstractCardiacCell.
Definition at line 70 of file AbstractRushLarsenCardiacCell.hpp.
Simulate this cell's behaviour between the time interval [tStart, tEnd], with timestemp mDt, updating the internal state variable values.
tStart | beginning of the time interval to simulate |
tEnd | end of the time interval to simulate |
Reimplemented from AbstractCardiacCell.
Definition at line 130 of file AbstractRushLarsenCardiacCell.cpp.
References TimeStepper::AdvanceOneTimeStep(), ComputeOneStepExceptVoltage(), EvaluateEquations(), TimeStepper::GetTime(), TimeStepper::IsTimeAtEnd(), AbstractCardiacCell::mDt, AbstractUntemplatedParameterisedSystem::mNumberOfStateVariables, UpdateTransmembranePotential(), and AbstractParameterisedSystem< std::vector< double > >::VerifyStateVariables().
void AbstractRushLarsenCardiacCell::UpdateTransmembranePotential | ( | const std::vector< double > & | rDY | ) | [protected] |
Perform a forward Euler step to update the transmembrane potential.
rDY | vector containing dy/dt values |
Definition at line 149 of file AbstractRushLarsenCardiacCell.cpp.
References AbstractCardiacCellInterface::GetVoltageIndex(), AbstractCardiacCell::mDt, and AbstractParameterisedSystem< std::vector< double > >::rGetStateVariables().
Referenced by Compute(), and SolveAndUpdateState().
friend class boost::serialization::access [friend] |
Needed for serialization.
Reimplemented from AbstractCardiacCell.
Definition at line 62 of file AbstractRushLarsenCardiacCell.hpp.