#include <AbstractRushLarsenCardiacCell.hpp>
Inherits AbstractCardiacCell.
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 51 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 38 of file AbstractRushLarsenCardiacCell.cpp.
AbstractRushLarsenCardiacCell::~AbstractRushLarsenCardiacCell | ( | ) | [virtual] |
Virtual destructor
Definition at line 47 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 50 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 99 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 135 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 63 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 123 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 142 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 55 of file AbstractRushLarsenCardiacCell.hpp.