00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "AbstractCardiacCellFactory.hpp"
00030 #include "HeartRegionCodes.hpp"
00031 #include "FakeBathCell.hpp"
00032
00033 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00034 AbstractCardiacCell* AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::CreateCardiacCellForNode(
00035 unsigned nodeIndex)
00036 {
00037 if (mpMesh->GetNode(nodeIndex)->GetRegion() == HeartRegionCode::BATH)
00038 {
00039 return mpFakeCell;
00040 }
00041 else
00042 {
00043 return CreateCardiacCellForTissueNode(nodeIndex);
00044 }
00045 }
00046
00047 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00048 void AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::FinaliseCellCreation(
00049 std::vector< AbstractCardiacCell* >* pCellsDistributed,
00050 unsigned lo,
00051 unsigned hi)
00052 {
00053 }
00054
00055 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00056 unsigned AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::GetNumberOfCells()
00057 {
00058 assert(mpMesh != NULL);
00059 return mpMesh->GetNumNodes();
00060 }
00061
00062 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00063 AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::AbstractCardiacCellFactory(
00064 boost::shared_ptr<AbstractIvpOdeSolver> pSolver)
00065 : mpMesh(NULL),
00066 mpZeroStimulus(new ZeroStimulus),
00067 mpSolver(pSolver),
00068 mpFakeCell(new FakeBathCell(mpSolver, mpZeroStimulus))
00069 {
00070 }
00071
00072 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00073 AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::~AbstractCardiacCellFactory()
00074 {
00075 delete mpFakeCell;
00076 }
00077
00078 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00079 void AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::SetMesh(AbstractTetrahedralMesh<ELEM_DIM,SPACE_DIM>* pMesh)
00080 {
00081 mpMesh = pMesh;
00082 }
00083
00084 template<unsigned ELEM_DIM, unsigned SPACE_DIM>
00085 AbstractTetrahedralMesh<ELEM_DIM,SPACE_DIM>* AbstractCardiacCellFactory<ELEM_DIM,SPACE_DIM>::GetMesh()
00086 {
00087 assert(mpMesh != NULL);
00088 return mpMesh;
00089 }
00090
00092
00094
00095 template class AbstractCardiacCellFactory<1,1>;
00096 template class AbstractCardiacCellFactory<1,2>;
00097 template class AbstractCardiacCellFactory<1,3>;
00098 template class AbstractCardiacCellFactory<2,2>;
00099 template class AbstractCardiacCellFactory<3,3>;