AbstractBackwardEulerCardiacCell< SIZE > Class Template Reference

#include <AbstractBackwardEulerCardiacCell.hpp>

Inherits AbstractCardiacCell.

Collaboration diagram for AbstractBackwardEulerCardiacCell< SIZE >:
Collaboration graph
[legend]

List of all members.

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

Detailed Description

template<unsigned SIZE>
class AbstractBackwardEulerCardiacCell< SIZE >

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.


Constructor & Destructor Documentation

template<unsigned SIZE>
AbstractBackwardEulerCardiacCell< SIZE >::AbstractBackwardEulerCardiacCell ( unsigned  numberOfStateVariables,
unsigned  voltageIndex,
boost::shared_ptr< AbstractStimulusFunction pIntracellularStimulus 
) [inline]

Standard constructor for a cell.

Parameters:
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:

  • We may want to remove the timestep from this class, and instead pass it to the Compute* methods, especially if variable timestepping is to be used.
  • It's a pity that inheriting from AbstractCardiacCell forces us to store a null pointer (for the unused ODE solver) in every instance. We may want to revisit this design decision at a later date.

Definition at line 185 of file AbstractBackwardEulerCardiacCell.hpp.

template<unsigned SIZE>
AbstractBackwardEulerCardiacCell< SIZE >::~AbstractBackwardEulerCardiacCell (  )  [inline, virtual]

Virtual destructor

Definition at line 196 of file AbstractBackwardEulerCardiacCell.hpp.


Member Function Documentation

template<unsigned SIZE>
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.

Parameters:
tStart beginning of the time interval to simulate
tEnd end of the time interval to simulate
Returns:
the values of each state variable, at mDt intervals.

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().

template<unsigned SIZE>
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.

Parameters:
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().

template<unsigned SIZE>
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.

Parameters:
time the current time
rCurrentGuess the current guess for $U_n$
rJacobian to be filled in with the Jacobian matrix
template<unsigned SIZE>
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.

Note:
This method must be provided by subclasses.
Parameters:
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().

template<unsigned SIZE>
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.

Parameters:
time the current time
rCurrentGuess the current guess for $U_n$
rResidual to be filled in with the residual vector
template<unsigned SIZE>
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.

Parameters:
time 
rY 
rDY 

Implements AbstractOdeSystem.

Definition at line 129 of file AbstractBackwardEulerCardiacCell.hpp.

template<unsigned SIZE>
template<class Archive >
void AbstractBackwardEulerCardiacCell< SIZE >::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]
template<unsigned SIZE>
virtual void AbstractBackwardEulerCardiacCell< SIZE >::UpdateTransmembranePotential ( double  time  )  [protected, pure virtual]

Perform a forward Euler step to update the transmembrane potential.

Note:
This method must be provided by subclasses.
Parameters:
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().


Friends And Related Function Documentation

template<unsigned SIZE>
friend class boost::serialization::access [friend]

The documentation for this class was generated from the following file:

Generated by  doxygen 1.6.2