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 #ifndef ABSTRACTCENTREBASEDCELLPOPULATION_HPP_
00030 #define ABSTRACTCENTREBASEDCELLPOPULATION_HPP_
00031
00032 #include "AbstractOffLatticeCellPopulation.hpp"
00033
00034
00035 #include "WildTypeCellMutationState.hpp"
00036
00041 template<unsigned DIM>
00042 class AbstractCentreBasedCellPopulation : public AbstractOffLatticeCellPopulation<DIM>
00043 {
00044 private:
00046 friend class boost::serialization::access;
00053 template<class Archive>
00054 void serialize(Archive & archive, const unsigned int version)
00055 {
00056 archive & boost::serialization::base_object<AbstractOffLatticeCellPopulation<DIM> >(*this);
00057 archive & mMeinekeDivisionSeparation;
00058 }
00059
00060 protected:
00061
00066 double mMeinekeDivisionSeparation;
00067
00071 AbstractCentreBasedCellPopulation();
00072
00079 virtual void WriteVtkResultsToFile()=0;
00080
00081 public:
00082
00089 AbstractCentreBasedCellPopulation(std::vector<CellPtr>& rCells,
00090 const std::vector<unsigned> locationIndices=std::vector<unsigned>());
00091
00100 c_vector<double, DIM> GetLocationOfCellCentre(CellPtr pCell);
00101
00109 Node<DIM>* GetNodeCorrespondingToCell(CellPtr pCell);
00110
00120 CellPtr AddCell(CellPtr pNewCell, const c_vector<double,DIM>& rCellDivisionVector, CellPtr pParentCell=CellPtr());
00121
00129 bool IsCellAssociatedWithADeletedLocation(CellPtr pCell);
00130
00137 virtual void UpdateNodeLocations(const std::vector< c_vector<double, DIM> >& rNodeForces, double dt);
00138
00155 virtual double GetDampingConstant(unsigned nodeIndex);
00156
00165 void GenerateCellResults(unsigned locationIndex,
00166 std::vector<unsigned>& rCellProliferativeTypeCounter,
00167 std::vector<unsigned>& rCellCyclePhaseCounter);
00168
00172 virtual void GenerateCellResultsAndWriteToFiles();
00173
00177 virtual void WriteTimeAndNodeResultsToFiles();
00178
00187 virtual bool IsGhostNode(unsigned index);
00188
00192 double GetMeinekeDivisionSeparation();
00193
00199 void SetMeinekeDivisionSeparation(double divisionSeparation);
00200
00206 virtual void OutputCellPopulationParameters(out_stream& rParamsFile);
00207 };
00208
00209 #endif