36#include "HeartConfig.hpp"
37#include "AbstractCardiacCellInterface.hpp"
40#include "Citations.hpp"
41static PetscBool CardiacCellChasteCite = PETSC_FALSE;
42const char CardiacCellChasteCitation[] =
"@article{cooper2015cce,\n"
43" title = {{Cellular cardiac electrophysiology modelling with Chaste and CellML}},\n"
44" author = {Cooper, Jonathan and Spiteri, Raymond and Mirams, Gary R},\n"
46" journal = {Frontiers in Physiology},\n"
48" url = {http://journal.frontiersin.org/Journal/10.3389/fphys.2014.00511},\n"
50" doi = {10.3389/fphys.2014.00511},\n"
54 boost::shared_ptr<AbstractIvpOdeSolver> pOdeSolver,
55 unsigned voltageIndex,
56 boost::shared_ptr<AbstractStimulusFunction> pIntracellularStimulus)
57 : mVoltageIndex(voltageIndex),
58 mpOdeSolver(pOdeSolver),
59 mpIntracellularStimulus(pIntracellularStimulus),
60 mSetVoltageDerivativeToZero(false),
61 mIsUsedInTissue(false),
62 mHasDefaultStimulusFromCellML(false),
129 EXCEPTION(
"This class has no default stimulus from CellML metadata.");
130 return boost::shared_ptr<RegularStimulus>();
175 EXCEPTION(
"AbstractCardiacCellInterface::GetIntracellularCalciumConcentration() called. "
176 "Either model has no [Ca_i] or method has not been implemented yet");
const double DOUBLE_UNSET
#define EXCEPTION(message)
virtual ~AbstractCardiacCellInterface()
virtual double GetIntracellularCalciumConcentration()
bool mSetVoltageDerivativeToZero
void SetUsedInTissueSimulation(bool tissue=true)
double GetIntracellularAreaStimulus(double time)
unsigned GetVoltageIndex()
boost::shared_ptr< AbstractStimulusFunction > GetStimulusFunction()
boost::shared_ptr< AbstractStimulusFunction > mpIntracellularStimulus
void SetFixedVoltage(double voltage)
double GetStimulus(double time)
const boost::shared_ptr< AbstractIvpOdeSolver > GetSolver() const
void SetIntracellularStimulusFunction(boost::shared_ptr< AbstractStimulusFunction > pStimulus)
virtual double GetVoltage()=0
AbstractCardiacCellInterface(boost::shared_ptr< AbstractIvpOdeSolver > pOdeSolver, unsigned voltageIndex, boost::shared_ptr< AbstractStimulusFunction > pIntracellularStimulus)
virtual void SetVoltageDerivativeToZero(bool clamp=true)
bool mHasDefaultStimulusFromCellML
bool HasCellMLDefaultStimulus()
virtual boost::shared_ptr< RegularStimulus > UseCellMLDefaultStimulus()
boost::shared_ptr< AbstractIvpOdeSolver > mpOdeSolver
void SetSolver(boost::shared_ptr< AbstractIvpOdeSolver > pSolver)
double GetIntracellularStimulus(double time)
void SetStimulusFunction(boost::shared_ptr< AbstractStimulusFunction > pStimulus)
static void Register(const char *pCitation, PetscBool *pSet)
double GetSurfaceAreaToVolumeRatio() const
static HeartConfig * Instance()