36 #ifndef VERTEXBASEDCELLPOPULATION_HPP_
37 #define VERTEXBASEDCELLPOPULATION_HPP_
39 #include "AbstractOffLatticeCellPopulation.hpp"
40 #include "MutableVertexMesh.hpp"
43 #include <boost/serialization/base_object.hpp>
44 #include <boost/serialization/set.hpp>
45 #include <boost/serialization/vector.hpp>
47 template<
unsigned DIM>
57 template<
unsigned DIM>
111 friend class boost::serialization::access;
123 template<
class Archive>
124 void serialize(Archive & archive,
const unsigned int version)
126 archive & boost::serialization::base_object<AbstractOffLatticeCellPopulation<DIM> >(*this);
153 std::vector<CellPtr>& rCells,
154 bool deleteMesh=
false,
156 const std::vector<unsigned> locationIndices=std::vector<unsigned>());
290 CellPtr
AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr());
319 void Update(
bool hasHadBirthsOrDeaths=
true);
434 double GetWidth(
const unsigned& rDimension);
482 std::string& rVariableName,
483 bool dirichletBoundaryConditionApplies=
false,
484 double dirichletBoundaryValue=0.0);
554 namespace serialization
559 template<
class Archive,
unsigned DIM>
560 inline void save_construct_data(
572 template<
class Archive,
unsigned DIM>
573 inline void load_construct_data(
void SetOutputCellRearrangementLocations(bool outputCellRearrangementLocations)
std::vector< c_vector< double, DIM > > GetLocationsOfT2Swaps()
virtual double GetDefaultTimeStep()
bool mRestrictVertexMovement
virtual void AcceptPopulationCountWriter(boost::shared_ptr< AbstractCellPopulationCountWriter< DIM, DIM > > pPopulationCountWriter)
double GetVolumeOfCell(CellPtr pCell)
virtual ~VertexBasedCellPopulation()
virtual void SimulationSetupHook(AbstractCellBasedSimulation< DIM, DIM > *pSimulation)
unsigned GetNumElements()
bool mOutputCellRearrangementLocations
friend class TestVertexBasedDivisionRules
boost::shared_ptr< AbstractVertexBasedDivisionRule< DIM > > mpVertexBasedDivisionRule
virtual void AcceptCellWriter(boost::shared_ptr< AbstractCellWriter< DIM, DIM > > pCellWriter, CellPtr pCell)
void SetVertexBasedDivisionRule(boost::shared_ptr< AbstractVertexBasedDivisionRule< DIM > > pVertexBasedDivisionRule)
std::vector< unsigned > GetCellIdsOfT2Swaps()
virtual bool IsPdeNodeAssociatedWithNonApoptoticCell(unsigned pdeNodeIndex)
virtual void WriteDataToVisualizerSetupFile(out_stream &pVizSetupFile)
std::vector< c_vector< double, DIM > > mLocationsOfT2Swaps
std::set< unsigned > GetNeighbouringNodeIndices(unsigned index)
std::vector< unsigned > mCellIdsOfT2Swaps
boost::shared_ptr< AbstractVertexBasedDivisionRule< DIM > > GetVertexBasedDivisionRule()
bool IsCellAssociatedWithADeletedLocation(CellPtr pCell)
double GetDampingConstant(unsigned nodeIndex)
void SetRestrictVertexMovementBoolean(bool restrictVertexMovement)
std::set< unsigned > GetNeighbouringLocationIndices(CellPtr pCell)
unsigned GetRosetteRankOfCell(CellPtr pCell)
MutableVertexMesh< DIM, DIM > & rGetMesh()
bool GetRestrictVertexMovementBoolean()
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
virtual void AcceptPopulationWriter(boost::shared_ptr< AbstractCellPopulationWriter< DIM, DIM > > pPopulationWriter)
void Update(bool hasHadBirthsOrDeaths=true)
void AddLocationOfT2Swap(c_vector< double, DIM > locationOfT2Swap)
VertexBasedCellPopulation(MutableVertexMesh< DIM, DIM > &rMesh, std::vector< CellPtr > &rCells, bool deleteMesh=false, bool validate=true, const std::vector< unsigned > locationIndices=std::vector< unsigned >())
Node< DIM > * GetNode(unsigned index)
virtual TetrahedralMesh< DIM, DIM > * GetTetrahedralMeshForPdeModifier()
virtual void CheckForStepSizeException(unsigned nodeIndex, c_vector< double, DIM > &rDisplacement, double dt)
void OutputCellPopulationParameters(out_stream &rParamsFile)
unsigned RemoveDeadCells()
virtual void OpenWritersFiles(OutputFileHandler &rOutputFileHandler)
void SetNode(unsigned index, ChastePoint< DIM > &rNewLocation)
void AddCellIdOfT2Swap(unsigned idOfT2Swap)
double GetWidth(const unsigned &rDimension)
c_vector< double, DIM > GetLocationOfCellCentre(CellPtr pCell)
unsigned AddNode(Node< DIM > *pNewNode)
CellPtr AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr())
MutableVertexMesh< DIM, DIM > * mpMutableVertexMesh
virtual void WriteVtkResultsToFile(const std::string &rDirectory)
virtual double GetCellDataItemAtPdeNode(unsigned pdeNodeIndex, std::string &rVariableName, bool dirichletBoundaryConditionApplies=false, double dirichletBoundaryValue=0.0)
void ClearLocationsAndCellIdsOfT2Swaps()
gcov doesn't like this file...
VertexElement< DIM, DIM > * GetElement(unsigned elementIndex)
void serialize(Archive &archive, const unsigned int version)
bool GetOutputCellRearrangementLocations()
VertexElement< DIM, DIM > * GetElementCorrespondingToCell(CellPtr pCell)