36 #include "AbstractCardiacCellFactory.hpp"
37 #include "FakeBathCell.hpp"
38 #include "AbstractCvodeCell.hpp"
39 #include "HeartConfig.hpp"
41 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
47 return new FakeBathCell(this->mpSolver, this->mpZeroStimulus);
53 if (dynamic_cast<AbstractCvodeCell*>(p_cell))
55 #if CHASTE_SUNDIALS_VERSION >= 20400
60 #endif // SUNDIALS_VERSION
64 #endif // CHASTE_CVODE
69 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
71 std::vector< AbstractCardiacCellInterface* >* pCellsDistributed,
77 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
80 EXCEPTION(
"To get here you have probably asked for Epi/Mid/Endo CellularHeterogeneities in your HeartConfig "
81 "options or configuration .xml file, to use this you will need to provide a method"
82 " `FillInCellularTransmuralAreas()` in your cell factory to override this one.");
85 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
88 assert(mpMesh != NULL);
89 return mpMesh->GetNumNodes();
92 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
94 boost::shared_ptr<AbstractIvpOdeSolver> pSolver)
96 mpHeartGeometryInformation(NULL),
102 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
107 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
113 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
118 EXCEPTION(
"The mesh object has not been set in the cell factory");
123 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
126 mpHeartGeometryInformation = pHeartGeometryInformation;
129 template<
unsigned ELEMENT_DIM,
unsigned SPACE_DIM>
132 if (mpHeartGeometryInformation == NULL)
134 EXCEPTION(
"HeartGeometryInformation object has not been set in the cell factory");
136 return mpHeartGeometryInformation;
virtual void FinaliseCellCreation(std::vector< AbstractCardiacCellInterface * > *pCellsDistributed, unsigned lo, unsigned hi)
virtual AbstractCardiacCellInterface * CreateCardiacCellForNode(Node< SPACE_DIM > *pNode)
AbstractCardiacCellFactory(boost::shared_ptr< AbstractIvpOdeSolver > pSolver=boost::shared_ptr< AbstractIvpOdeSolver >(new EulerIvpOdeSolver))
static bool IsRegionBath(HeartRegionType regionId)
virtual unsigned GetNumberOfCells()
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * GetMesh()
#define EXCEPTION(message)
virtual ~AbstractCardiacCellFactory()
HeartGeometryInformation< SPACE_DIM > * GetHeartGeometryInformation()
double GetPdeTimeStep() const
unsigned GetRegion() const
virtual void FillInCellularTransmuralAreas()
virtual void SetMesh(AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh)
void SetHeartGeometryInformation(HeartGeometryInformation< SPACE_DIM > *pHeartGeometryInformation)
static HeartConfig * Instance()