36#ifndef CABASEDCELLPOPULATION_HPP_
37#define CABASEDCELLPOPULATION_HPP_
39#include "AbstractOnLatticeCellPopulation.hpp"
40#include "PottsMesh.hpp"
41#include "VertexMesh.hpp"
42#include "AbstractUpdateRule.hpp"
43#include "AbstractCaBasedDivisionRule.hpp"
46#include <boost/serialization/base_object.hpp>
47#include <boost/serialization/vector.hpp>
66 friend class TestCaBasedCellPopulation;
93 friend class boost::serialization::access;
105 template<
class Archive>
106 void serialize(Archive & archive,
const unsigned int version)
108 archive & boost::serialization::base_object<AbstractOnLatticeCellPopulation<DIM> >(*this);
148 std::vector<CellPtr>& rCells,
149 const std::vector<unsigned> locationIndices,
150 unsigned latticeCarryingCapacity=1u,
151 bool deleteMesh=
false,
152 bool validate=
false);
278 CellPtr
AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr());
292 unsigned targetNodeIndex,
336 void Update(
bool hasHadBirthsOrDeaths=
true);
390 double GetWidth(
const unsigned& rDimension);
466 std::string& rVariableName,
467 bool dirichletBoundaryConditionApplies=
false,
468 double dirichletBoundaryValue=0.0);
488namespace serialization
493template<
class Archive,
unsigned DIM>
494inline void save_construct_data(
506template<
class Archive,
unsigned DIM>
507inline void load_construct_data(
gcov doesn't like this file...
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
void SetCaBasedDivisionRule(boost::shared_ptr< AbstractCaBasedDivisionRule< DIM > > pCaBasedDivisionRule)
Node< DIM > * GetNode(unsigned index)
virtual void AddUpdateRule(boost::shared_ptr< AbstractUpdateRule< DIM > > pUpdateRule)
std::vector< boost::shared_ptr< AbstractUpdateRule< DIM > > > mSwitchingUpdateRuleCollection
std::vector< unsigned > mAvailableSpaces
boost::shared_ptr< AbstractCaBasedDivisionRule< DIM > > GetCaBasedDivisionRule()
virtual double EvaluateDivisionPropensity(unsigned currentNodeIndex, unsigned targetNodeIndex, CellPtr pCell)
void AddCellUsingLocationIndex(unsigned index, CellPtr pCell)
virtual const std::vector< boost::shared_ptr< AbstractUpdateRule< DIM > > > GetUpdateRuleCollection() const
CellPtr AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr())
c_vector< double, DIM > GetLocationOfCellCentre(CellPtr pCell)
virtual void WriteVtkResultsToFile(const std::string &rDirectory)
double GetWidth(const unsigned &rDimension)
unsigned mLatticeCarryingCapacity
virtual void AcceptCellWriter(boost::shared_ptr< AbstractCellWriter< DIM, DIM > > pCellWriter, CellPtr pCell)
void serialize(Archive &archive, const unsigned int version)
void RemoveAllUpdateRules()
std::set< unsigned > GetNeighbouringLocationIndices(CellPtr pCell)
void OutputCellPopulationParameters(out_stream &rParamsFile)
void SetEmptySites(const std::set< unsigned > &rEmptySiteIndices)
void RemoveCellUsingLocationIndex(unsigned index, CellPtr pCell)
virtual bool IsPdeNodeAssociatedWithNonApoptoticCell(unsigned pdeNodeIndex)
std::vector< unsigned > & rGetAvailableSpaces()
virtual void AcceptPopulationCountWriter(boost::shared_ptr< AbstractCellPopulationCountWriter< DIM, DIM > > pPopulationCountWriter)
boost::shared_ptr< AbstractCaBasedDivisionRule< DIM > > mpCaBasedDivisionRule
PottsMesh< DIM > & rGetMesh()
void UpdateCellLocations(double dt)
virtual void AcceptPopulationWriter(boost::shared_ptr< AbstractCellPopulationWriter< DIM, DIM > > pPopulationWriter)
void Update(bool hasHadBirthsOrDeaths=true)
virtual double GetCellDataItemAtPdeNode(unsigned pdeNodeIndex, std::string &rVariableName, bool dirichletBoundaryConditionApplies=false, double dirichletBoundaryValue=0.0)
bool IsCellAssociatedWithADeletedLocation(CellPtr pCell)
virtual void AcceptPopulationEventWriter(boost::shared_ptr< AbstractCellPopulationEventWriter< DIM, DIM > > pPopulationEventWriter)
Node< DIM > * GetNodeCorrespondingToCell(CellPtr pCell)
virtual TetrahedralMesh< DIM, DIM > * GetTetrahedralMeshForPdeModifier()
bool IsRoomToDivide(CellPtr pCell)
virtual void OpenWritersFiles(OutputFileHandler &rOutputFileHandler)
unsigned RemoveDeadCells()
virtual bool IsSiteAvailable(unsigned index, CellPtr pCell)
virtual ~CaBasedCellPopulation()
double GetVolumeOfCell(CellPtr pCell)