AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM > Class Template Reference

#include <AbstractCardiacCellFactory.hpp>

Inherited by AbstractPurkinjeCellFactory< ELEMENT_DIM, SPACE_DIM >, and PlaneStimulusCellFactory< CELL, ELEMENT_DIM, SPACE_DIM >.

Collaboration diagram for AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual
AbstractCardiacCellInterface
CreateCardiacCellForNode (Node< SPACE_DIM > *pNode)
virtual
AbstractCardiacCellInterface
CreateCardiacCellForTissueNode (Node< SPACE_DIM > *pNode)=0
virtual void FinaliseCellCreation (std::vector< AbstractCardiacCellInterface * > *pCellsDistributed, unsigned lo, unsigned hi)
virtual void FillInCellularTransmuralAreas ()
virtual unsigned GetNumberOfCells ()
 AbstractCardiacCellFactory (boost::shared_ptr< AbstractIvpOdeSolver > pSolver=boost::shared_ptr< AbstractIvpOdeSolver >(new EulerIvpOdeSolver))
virtual ~AbstractCardiacCellFactory ()
virtual void SetMesh (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh)
AbstractTetrahedralMesh
< ELEMENT_DIM, SPACE_DIM > * 
GetMesh ()
void SetHeartGeometryInformation (HeartGeometryInformation< SPACE_DIM > *pHeartGeometryInformation)
HeartGeometryInformation
< SPACE_DIM > * 
GetHeartGeometryInformation ()

Protected Attributes

boost::shared_ptr< ZeroStimulusmpZeroStimulus
boost::shared_ptr
< AbstractIvpOdeSolver
mpSolver

Private Attributes

AbstractTetrahedralMesh
< ELEMENT_DIM, SPACE_DIM > * 
mpMesh
HeartGeometryInformation
< SPACE_DIM > * 
mpHeartGeometryInformation

Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
class AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >

A factory to ease creating cardiac cell objects for use in a mono/bidomain simulation.

The user should implement their own concrete class, in particular implementing CreateCardiacCellForTissueNode(Node*), which should return the cell corresponding to a given node. The user should also implement GetNumberOfCells() if this isn't equal to the number of nodes. FinaliseCellCreation() can be used to (eg) add stimuli to certain cells after they have been created.

This class saves the user having to create cells in parallel, that work is done by the pde instead.

Definition at line 63 of file AbstractCardiacCellFactory.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::AbstractCardiacCellFactory ( boost::shared_ptr< AbstractIvpOdeSolver pSolver = boost::shared_ptr<AbstractIvpOdeSolver>(new EulerIvpOdeSolver)  )  [inline]

Default constructor.

Parameters:
pSolver the ODE solver to use to simulate this cell.

Definition at line 91 of file AbstractCardiacCellFactory.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::~AbstractCardiacCellFactory (  )  [inline, virtual]

Destructor: free solver, zero stimulus and fake bath cell.

Definition at line 101 of file AbstractCardiacCellFactory.cpp.


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractCardiacCellInterface * AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::CreateCardiacCellForNode ( Node< SPACE_DIM > *  pNode  )  [inline, virtual]
Returns:
a newly created cell object for the given node.

The default implementation checks whether the node is in the bath (in which case a pointer to a (unique) fake cell is returned) and if not, calls CreateCardiacCellForTissueNode (which must be defined by subclasses).

Parameters:
pNode Pointer to node object.

Definition at line 42 of file AbstractCardiacCellFactory.cpp.

References AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::CreateCardiacCellForTissueNode(), HeartConfig::GetPdeTimeStep(), Node< SPACE_DIM >::GetRegion(), HeartConfig::Instance(), HeartRegionCode::IsRegionBath(), AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpSolver, and AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpZeroStimulus.

Referenced by AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::AbstractCardiacTissue(), ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::SetUpHaloCells().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
virtual AbstractCardiacCellInterface* AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::CreateCardiacCellForTissueNode ( Node< SPACE_DIM > *  pNode  )  [pure virtual]

Must be overridden by subclasses to return a cell object for the given node.

Parameters:
pNode Pointer to node object.
Returns:
a newly created cell object for the given tissue node.

Implemented in PlaneStimulusCellFactory< CELL, ELEMENT_DIM, SPACE_DIM >.

Referenced by AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::CreateCardiacCellForNode().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::FillInCellularTransmuralAreas (  )  [inline, virtual]

Method that fills in the vector of heterogeneity areas with the NodesLists that correspond to a given layer (implemented in subclasses)

Reimplemented in HeartConfigRelatedCellFactory< SPACE_DIM >, and HeartConfigRelatedCellFactory< SPACE_DIM >.

Definition at line 78 of file AbstractCardiacCellFactory.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::FinaliseCellCreation ( std::vector< AbstractCardiacCellInterface * > *  pCellsDistributed,
unsigned  lo,
unsigned  hi 
) [inline, virtual]

May be overridden by subclasses to perform any necessary work after all cells have been created.

Parameters:
pCellsDistributed Pointer to a vector of cardiac cell pointers.
lo Lowest index owned by this process.
hi Highest index owned by this process.

Definition at line 70 of file AbstractCardiacCellFactory.cpp.

Referenced by AbstractCardiacTissue< ELEMENT_DIM, SPACE_DIM >::AbstractCardiacTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
HeartGeometryInformation< SPACE_DIM > * AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetHeartGeometryInformation (  )  [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetMesh (  )  [inline]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
unsigned AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetNumberOfCells (  )  [inline, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::SetHeartGeometryInformation ( HeartGeometryInformation< SPACE_DIM > *  pHeartGeometryInformation  )  [inline]

Set the HeartGeometryInformation object

Parameters:
pHeartGeometryInformation the HeartGeometryInformation object that is to be set

Definition at line 122 of file AbstractCardiacCellFactory.cpp.

References AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpHeartGeometryInformation.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::SetMesh ( AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *  pMesh  )  [inline, virtual]
Parameters:
pMesh the mesh for which to create cardiac cells.

Reimplemented in AbstractPurkinjeCellFactory< ELEMENT_DIM, SPACE_DIM >.

Definition at line 106 of file AbstractCardiacCellFactory.cpp.

References AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpMesh.

Referenced by ExtendedBidomainProblem< DIM >::CreateCardiacTissue().


Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
HeartGeometryInformation<SPACE_DIM>* AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpHeartGeometryInformation [private]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpMesh [private]

The mesh is automatically set in MonodomainProblem and BidomainProblem. This member variable should be accessed through GetMesh(), which will check if it has been set before and throw an exception otherwise.

Definition at line 69 of file AbstractCardiacCellFactory.hpp.

Referenced by AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetMesh(), AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetNumberOfCells(), and AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::SetMesh().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
boost::shared_ptr<AbstractIvpOdeSolver> AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpSolver [protected]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
boost::shared_ptr<ZeroStimulus> AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::mpZeroStimulus [protected]

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

Generated by  doxygen 1.6.2