36#ifndef VERTEXBASEDCELLPOPULATION_HPP_
37#define VERTEXBASEDCELLPOPULATION_HPP_
39#include "AbstractOffLatticeCellPopulation.hpp"
40#include "MutableVertexMesh.hpp"
41#include "TrapezoidEdgeVertexMeshWriter.hpp"
42#include "VertexBasedPopulationSrn.hpp"
45#include <boost/serialization/base_object.hpp>
46#include <boost/serialization/set.hpp>
47#include <boost/serialization/vector.hpp>
70 friend class TestVertexBasedCellPopulation;
71 friend class TestMutableVertexMeshOperationsWithPopulationSrn;
155 friend class boost::serialization::access;
167 template<
class Archive>
168 void serialize(Archive & archive,
const unsigned int version)
170 archive & boost::serialization::base_object<AbstractOffLatticeCellPopulation<DIM> >(*this);
197 std::vector<CellPtr>& rCells,
198 bool deleteMesh=
false,
200 const std::vector<unsigned> locationIndices=std::vector<unsigned>());
349 CellPtr
AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr());
378 void Update(
bool hasHadBirthsOrDeaths=
true);
501 double GetWidth(
const unsigned& rDimension);
549 std::string& rVariableName,
550 bool dirichletBoundaryConditionApplies=
false,
551 double dirichletBoundaryValue=0.0);
644namespace serialization
649template<
class Archive,
unsigned DIM>
650inline void save_construct_data(
665template<
class Archive,
unsigned DIM>
666inline void load_construct_data(
gcov doesn't like this file...
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
double GetDampingConstant(unsigned nodeIndex)
virtual void AcceptCellWriter(boost::shared_ptr< AbstractCellWriter< DIM, DIM > > pCellWriter, CellPtr pCell)
virtual void AcceptPopulationWriter(boost::shared_ptr< AbstractCellPopulationWriter< DIM, DIM > > pPopulationWriter)
virtual double GetDefaultTimeStep()
void OutputCellPopulationParameters(out_stream &rParamsFile)
std::set< unsigned > GetNeighbouringNodeIndices(unsigned index)
bool GetRestrictVertexMovementBoolean()
c_vector< double, DIM > GetLocationOfCellCentre(CellPtr pCell)
bool mThrowStepSizeException
std::vector< c_vector< double, DIM > > mLocationsOfT2Swaps
virtual void WriteCellVtkResultsToFile(const std::string &rDirectory)
void SetWriteCellVtkResults(const bool new_val)
boost::shared_ptr< AbstractVertexBasedDivisionRule< DIM > > GetVertexBasedDivisionRule()
virtual void WriteVtkResultsToFile(const std::string &rDirectory)
virtual void OpenWritersFiles(OutputFileHandler &rOutputFileHandler)
virtual void AcceptPopulationEventWriter(boost::shared_ptr< AbstractCellPopulationEventWriter< DIM, DIM > > pPopulationEventWriter)
VertexElement< DIM, DIM > * GetElementCorrespondingToCell(CellPtr pCell)
virtual void SimulationSetupHook(AbstractCellBasedSimulation< DIM, DIM > *pSimulation)
double GetVolumeOfCell(CellPtr pCell)
bool IsCellAssociatedWithADeletedLocation(CellPtr pCell)
unsigned AddNode(Node< DIM > *pNewNode)
CellPtr AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr())
virtual ~VertexBasedCellPopulation()
unsigned GetRosetteRankOfCell(CellPtr pCell)
VertexElement< DIM, DIM > * GetElement(unsigned elementIndex)
virtual bool IsPdeNodeAssociatedWithNonApoptoticCell(unsigned pdeNodeIndex)
std::vector< unsigned > mCellIdsOfT2Swaps
void AddLocationOfT2Swap(c_vector< double, DIM > locationOfT2Swap)
bool mWriteCellVtkResults
bool GetOutputCellRearrangementLocations()
void serialize(Archive &archive, const unsigned int version)
void SetWriteEdgeVtkResults(const bool new_val)
unsigned GetNumElements()
void ClearLocationsAndCellIdsOfT2Swaps()
virtual TetrahedralMesh< DIM, DIM > * GetTetrahedralMeshForPdeModifier()
VertexBasedPopulationSrn< DIM > & rGetVertexBasedPopulationSrn()
void SetOutputCellRearrangementLocations(bool outputCellRearrangementLocations)
MutableVertexMesh< DIM, DIM > & rGetMesh()
void SetVertexBasedDivisionRule(boost::shared_ptr< AbstractVertexBasedDivisionRule< DIM > > pVertexBasedDivisionRule)
MutableVertexMesh< DIM, DIM > * mpMutableVertexMesh
unsigned RemoveDeadCells()
bool mRestrictVertexMovement
VertexBasedPopulationSrn< DIM > mPopulationSrn
bool mOutputCellRearrangementLocations
virtual void WriteCellEdgeVtkResultsToFile(const std::string &rDirectory)
std::set< std::pair< unsigned, unsigned > > GetNeighbouringEdgeIndices(CellPtr pCell, unsigned edgeLocalIndex)
virtual void CheckForStepSizeException(unsigned nodeIndex, c_vector< double, DIM > &rDisplacement, double dt)
std::vector< c_vector< double, DIM > > GetLocationsOfT2Swaps()
friend class TestVertexBasedDivisionRules
void AddCellIdOfT2Swap(unsigned idOfT2Swap)
virtual double GetCellDataItemAtPdeNode(unsigned pdeNodeIndex, std::string &rVariableName, bool dirichletBoundaryConditionApplies=false, double dirichletBoundaryValue=0.0)
virtual void WriteDataToVisualizerSetupFile(out_stream &pVizSetupFile)
std::set< unsigned > GetNeighbouringLocationIndices(CellPtr pCell)
void Update(bool hasHadBirthsOrDeaths=true)
bool mWriteEdgeVtkResults
void SetRestrictVertexMovementBoolean(bool restrictVertexMovement)
boost::shared_ptr< AbstractVertexBasedDivisionRule< DIM > > mpVertexBasedDivisionRule
std::vector< unsigned > GetCellIdsOfT2Swaps()
void SetNode(unsigned index, ChastePoint< DIM > &rNewLocation)
virtual void AcceptPopulationCountWriter(boost::shared_ptr< AbstractCellPopulationCountWriter< DIM, DIM > > pPopulationCountWriter)
double GetWidth(const unsigned &rDimension)
Node< DIM > * GetNode(unsigned index)