AbstractCentreBasedCellPopulation.hpp
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
00030
00031
00032
00033
00034
00035
00036 #ifndef ABSTRACTCENTREBASEDCELLPOPULATION_HPP_
00037 #define ABSTRACTCENTREBASEDCELLPOPULATION_HPP_
00038
00039 #include "AbstractOffLatticeCellPopulation.hpp"
00040
00041
00042 #include "WildTypeCellMutationState.hpp"
00043
00048 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM=ELEMENT_DIM>
00049 class AbstractCentreBasedCellPopulation : public AbstractOffLatticeCellPopulation<ELEMENT_DIM, SPACE_DIM>
00050 {
00051 private:
00053 friend class boost::serialization::access;
00060 template<class Archive>
00061 void serialize(Archive & archive, const unsigned int version)
00062 {
00063 archive & boost::serialization::base_object<AbstractOffLatticeCellPopulation<ELEMENT_DIM, SPACE_DIM> >(*this);
00064 archive & mMeinekeDivisionSeparation;
00065 archive & mMarkedSprings;
00066 }
00067
00068 protected:
00073 double mMeinekeDivisionSeparation;
00074
00080 std::set<std::pair<CellPtr,CellPtr> > mMarkedSprings;
00081
00087 AbstractCentreBasedCellPopulation(AbstractMesh<ELEMENT_DIM, SPACE_DIM>& rMesh);
00088
00097 virtual void WriteVtkResultsToFile(const std::string& rDirectory)=0;
00098
00099 public:
00100
00108 AbstractCentreBasedCellPopulation( AbstractMesh<ELEMENT_DIM, SPACE_DIM>& rMesh,
00109 std::vector<CellPtr>& rCells,
00110 const std::vector<unsigned> locationIndices=std::vector<unsigned>());
00111
00120 c_vector<double, SPACE_DIM> GetLocationOfCellCentre(CellPtr pCell);
00121
00129 Node<SPACE_DIM>* GetNodeCorrespondingToCell(CellPtr pCell);
00130
00140 CellPtr AddCell(CellPtr pNewCell, const c_vector<double,SPACE_DIM>& rCellDivisionVector, CellPtr pParentCell=CellPtr());
00141
00151 std::pair<CellPtr,CellPtr> CreateCellPair(CellPtr pCell1, CellPtr pCell2);
00152
00158 bool IsMarkedSpring(const std::pair<CellPtr,CellPtr>& rCellPair);
00159
00165 void MarkSpring(std::pair<CellPtr,CellPtr>& rCellPair);
00166
00172 void UnmarkSpring(std::pair<CellPtr,CellPtr>& rCellPair);
00173
00181 bool IsCellAssociatedWithADeletedLocation(CellPtr pCell);
00182
00188 virtual void UpdateNodeLocations(double dt);
00189
00206 virtual double GetDampingConstant(unsigned nodeIndex);
00207
00216 virtual bool IsGhostNode(unsigned index);
00217
00226 virtual bool IsParticle(unsigned index);
00227
00235 virtual std::vector< std::pair<Node<SPACE_DIM>*, Node<SPACE_DIM>* > >& rGetNodePairs()=0;
00236
00240 double GetMeinekeDivisionSeparation();
00241
00247 void SetMeinekeDivisionSeparation(double divisionSeparation);
00248
00254 virtual void OutputCellPopulationParameters(out_stream& rParamsFile);
00255 };
00256
00257 #endif