#include <AbstractBackwardEulerCardiacCell.hpp>
Inherits AbstractCardiacCell.
Public Member Functions | |
AbstractBackwardEulerCardiacCell (unsigned numberOfStateVariables, unsigned voltageIndex, boost::shared_ptr< AbstractStimulusFunction > pIntracellularStimulus) | |
virtual | ~AbstractBackwardEulerCardiacCell () |
virtual void | ComputeResidual (double time, const double rCurrentGuess[SIZE], double rResidual[SIZE])=0 |
virtual void | ComputeJacobian (double time, const double rCurrentGuess[SIZE], double rJacobian[SIZE][SIZE])=0 |
virtual OdeSolution | Compute (double tStart, double tEnd) |
virtual void | ComputeExceptVoltage (double tStart, double tEnd) |
Protected Member Functions | |
virtual void | ComputeOneStepExceptVoltage (double tStart)=0 |
virtual void | UpdateTransmembranePotential (double time)=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 a (decoupled) backward Euler approach.
The basic approach to solving such models is:
Definition at line 57 of file AbstractBackwardEulerCardiacCell.hpp.
AbstractBackwardEulerCardiacCell< SIZE >::AbstractBackwardEulerCardiacCell | ( | unsigned | numberOfStateVariables, | |
unsigned | voltageIndex, | |||
boost::shared_ptr< AbstractStimulusFunction > | pIntracellularStimulus | |||
) | [inline] |
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 185 of file AbstractBackwardEulerCardiacCell.hpp.
AbstractBackwardEulerCardiacCell< SIZE >::~AbstractBackwardEulerCardiacCell | ( | ) | [inline, virtual] |
Virtual destructor
Definition at line 196 of file AbstractBackwardEulerCardiacCell.hpp.
OdeSolution AbstractBackwardEulerCardiacCell< SIZE >::Compute | ( | double | tStart, | |
double | tEnd | |||
) | [inline, 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 |
Reimplemented from AbstractCardiacCell.
Definition at line 200 of file AbstractBackwardEulerCardiacCell.hpp.
References AbstractBackwardEulerCardiacCell< SIZE >::ComputeOneStepExceptVoltage(), AbstractCardiacCell::mDt, AbstractOdeSystem::mpSystemInfo, OdeSolution::rGetSolutions(), AbstractOdeSystem::rGetStateVariables(), OdeSolution::rGetTimes(), OdeSolution::SetNumberOfTimeSteps(), OdeSolution::SetOdeSystemInformation(), AbstractBackwardEulerCardiacCell< SIZE >::UpdateTransmembranePotential(), and AbstractCardiacCell::VerifyStateVariables().
void AbstractBackwardEulerCardiacCell< SIZE >::ComputeExceptVoltage | ( | double | tStart, | |
double | tEnd | |||
) | [inline, virtual] |
Simulates this cell's behaviour between the time interval [tStart, tEnd], with timestep mDt. The transmembrane potential is kept fixed throughout.
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 242 of file AbstractBackwardEulerCardiacCell.hpp.
References AbstractBackwardEulerCardiacCell< SIZE >::ComputeOneStepExceptVoltage(), AbstractCardiacCell::mDt, and AbstractCardiacCell::VerifyStateVariables().
virtual void AbstractBackwardEulerCardiacCell< SIZE >::ComputeJacobian | ( | double | time, | |
const double | rCurrentGuess[SIZE], | |||
double | rJacobian[SIZE][SIZE] | |||
) | [pure virtual] |
Compute the Jacobian matrix for the nonlinear system portion of the cell model.
time | the current time | |
rCurrentGuess | the current guess for | |
rJacobian | to be filled in with the Jacobian matrix |
virtual void AbstractBackwardEulerCardiacCell< SIZE >::ComputeOneStepExceptVoltage | ( | double | tStart | ) | [protected, pure virtual] |
Compute the values of all state variables, except the voltage, using backward Euler, for one timestep from tStart.
tStart | start of this timestep |
Implemented in CML_luo_rudy_1991_pe_lut_be, BackwardEulerFoxModel2002Modified, BackwardEulerLuoRudyIModel1991, BackwardEulerMahajanModel2008, BackwardEulerNobleVargheseKohlNoble1998, and BackwardEulerTenTusscher2006.
Referenced by AbstractBackwardEulerCardiacCell< SIZE >::Compute(), and AbstractBackwardEulerCardiacCell< SIZE >::ComputeExceptVoltage().
virtual void AbstractBackwardEulerCardiacCell< SIZE >::ComputeResidual | ( | double | time, | |
const double | rCurrentGuess[SIZE], | |||
double | rResidual[SIZE] | |||
) | [pure virtual] |
Compute the residual of the nonlinear system portion of the cell model.
time | the current time | |
rCurrentGuess | the current guess for | |
rResidual | to be filled in with the residual vector |
void AbstractBackwardEulerCardiacCell< SIZE >::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 129 of file AbstractBackwardEulerCardiacCell.hpp.
void AbstractBackwardEulerCardiacCell< SIZE >::serialize | ( | Archive & | archive, | |
const unsigned int | version | |||
) | [inline, private] |
Archive the member variables.
archive | ||
version |
Reimplemented from AbstractCardiacCell.
Reimplemented in CML_luo_rudy_1991_pe_lut_be, BackwardEulerFoxModel2002Modified, BackwardEulerLuoRudyIModel1991, BackwardEulerMahajanModel2008, BackwardEulerNobleVargheseKohlNoble1998, and BackwardEulerTenTusscher2006.
Definition at line 48 of file AbstractBackwardEulerCardiacCell.hpp.
virtual void AbstractBackwardEulerCardiacCell< SIZE >::UpdateTransmembranePotential | ( | double | time | ) | [protected, pure virtual] |
Perform a forward Euler step to update the transmembrane potential.
time | start of this timestep |
Implemented in CML_luo_rudy_1991_pe_lut_be, BackwardEulerFoxModel2002Modified, BackwardEulerLuoRudyIModel1991, BackwardEulerMahajanModel2008, BackwardEulerNobleVargheseKohlNoble1998, and BackwardEulerTenTusscher2006.
Referenced by AbstractBackwardEulerCardiacCell< SIZE >::Compute().
friend class boost::serialization::access [friend] |
Needed for serialization.
Reimplemented from AbstractCardiacCell.
Reimplemented in CML_luo_rudy_1991_pe_lut_be, BackwardEulerFoxModel2002Modified, BackwardEulerLuoRudyIModel1991, BackwardEulerMahajanModel2008, BackwardEulerNobleVargheseKohlNoble1998, and BackwardEulerTenTusscher2006.
Definition at line 40 of file AbstractBackwardEulerCardiacCell.hpp.