AbstractBackwardEulerCardiacCell< SIZE > Class Template Reference

#include <AbstractBackwardEulerCardiacCell.hpp>

Inheritance diagram for AbstractBackwardEulerCardiacCell< SIZE >:

Inheritance graph
[legend]
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 (const double rCurrentGuess[SIZE], double rResidual[SIZE])=0
virtual void ComputeJacobian (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 183 of file AbstractBackwardEulerCardiacCell.hpp.

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

Virtual destructor

Definition at line 194 of file AbstractBackwardEulerCardiacCell.hpp.


Member Function Documentation

template<unsigned SIZE>
template<class Archive>
void AbstractBackwardEulerCardiacCell< SIZE >::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]

Archive the member variables.

Parameters:
archive 
version 

Reimplemented from AbstractCardiacCell.

Reimplemented in BackwardEulerFoxModel2002Modified, and BackwardEulerLuoRudyIModel1991.

Definition at line 69 of file AbstractBackwardEulerCardiacCell.hpp.

template<unsigned SIZE>
virtual void AbstractBackwardEulerCardiacCell< SIZE >::ComputeResidual ( const double  rCurrentGuess[SIZE],
double  rResidual[SIZE] 
) [pure virtual]

Compute the residual of the nonlinear system portion of the cell model.

Parameters:
rCurrentGuess the current guess for $U_n$
rResidual to be filled in with the residual vector

Referenced by CardiacNewtonSolver< SIZE >::Solve().

template<unsigned SIZE>
virtual void AbstractBackwardEulerCardiacCell< SIZE >::ComputeJacobian ( const double  rCurrentGuess[SIZE],
double  rJacobian[SIZE][SIZE] 
) [pure virtual]

Compute the Jacobian matrix for the nonlinear system portion of the cell model.

Parameters:
rCurrentGuess the current guess for $U_n$
rJacobian to be filled in with the Jacobian matrix

Referenced by CardiacNewtonSolver< SIZE >::Solve().

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 198 of file AbstractBackwardEulerCardiacCell.hpp.

References AbstractBackwardEulerCardiacCell< SIZE >::ComputeOneStepExceptVoltage(), AbstractCardiacCell::mDt, OdeSolution::rGetSolutions(), AbstractOdeSystem::rGetStateVariables(), OdeSolution::rGetTimes(), OdeSolution::SetNumberOfTimeSteps(), 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 239 of file AbstractBackwardEulerCardiacCell.hpp.

References AbstractBackwardEulerCardiacCell< SIZE >::ComputeOneStepExceptVoltage(), AbstractCardiacCell::mDt, and AbstractCardiacCell::VerifyStateVariables().

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 148 of file AbstractBackwardEulerCardiacCell.hpp.

template<unsigned SIZE>
virtual void AbstractBackwardEulerCardiacCell< SIZE >::ComputeOneStepExceptVoltage ( double  tStart  )  [protected, pure virtual]

Compute the values of all state variables except the voltage, for one timestep from tStart.

Note:
This method must be provided by subclasses.
Parameters:
tStart start of this timestep

Implemented in BackwardEulerFoxModel2002Modified, and BackwardEulerLuoRudyIModel1991.

Referenced by AbstractBackwardEulerCardiacCell< SIZE >::Compute(), and AbstractBackwardEulerCardiacCell< SIZE >::ComputeExceptVoltage().

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 BackwardEulerFoxModel2002Modified, and BackwardEulerLuoRudyIModel1991.

Referenced by AbstractBackwardEulerCardiacCell< SIZE >::Compute().


Friends And Related Function Documentation

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

Needed for serialization.

Reimplemented from AbstractCardiacCell.

Reimplemented in BackwardEulerFoxModel2002Modified, and BackwardEulerLuoRudyIModel1991.

Definition at line 61 of file AbstractBackwardEulerCardiacCell.hpp.


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

Generated on Tue Aug 4 16:10:30 2009 for Chaste by  doxygen 1.5.5