36#ifndef IMMERSEDBOUNDARYCELLPOPULATION_HPP_
37#define IMMERSEDBOUNDARYCELLPOPULATION_HPP_
39#include "AbstractOffLatticeCellPopulation.hpp"
40#include "ImmersedBoundaryMesh.hpp"
42#include <boost/serialization/base_object.hpp>
43#include <boost/serialization/set.hpp>
44#include <boost/serialization/vector.hpp>
47template <
unsigned DIM>
56template <
unsigned DIM>
111 friend class boost::serialization::access;
124 template <
class Archive>
125 void serialize(Archive& archive,
const unsigned int version)
127 archive& boost::serialization::base_object<AbstractOffLatticeCellPopulation<DIM> >(*this);
142 double Delta1D(
double dist,
double spacing);
175 std::vector<CellPtr>& rCells,
176 bool deleteMesh =
false,
177 bool validate =
true,
178 const std::vector<unsigned> locationIndices = std::vector<unsigned>());
358 CellPtr
AddCell(CellPtr pNewCell, CellPtr pParentCell = CellPtr());
386 void Update(
bool hasHadBirthsOrDeaths =
true);
457 double GetWidth(
const unsigned& rDimension);
509 std::string& rVariableName,
510 bool dirichletBoundaryConditionApplies =
false,
511 double dirichletBoundaryValue = 0.0);
571namespace serialization
576 template <
class Archive,
unsigned DIM>
577 inline void save_construct_data(
583 ar& t->DoesPopulationHaveActiveSources();
584 ar& t->GetInteractionDistance();
585 ar& t->GetReMeshFrequency();
592 template <
class Archive,
unsigned DIM>
593 inline void load_construct_data(
599 bool hasActiveSources =
false;
600 ar >> hasActiveSources;
601 double interactionDistance = 0.0;
602 ar >> interactionDistance;
603 unsigned int reMeshFrequency = 1;
604 ar >> reMeshFrequency;
608 t->SetIfPopulationHasActiveSources(hasActiveSources);
609 t->SetInteractionDistance(interactionDistance);
610 t->SetReMeshFrequency(reMeshFrequency);
gcov doesn't like this file...
#define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
virtual void OpenWritersFiles(OutputFileHandler &rOutputFileHandler)
bool IsCellOnBoundary(CellPtr pCell)
void SetReMeshFrequency(unsigned newFrequency)
unsigned RemoveDeadCells()
double Delta1D(double dist, double spacing)
double mInteractionDistance
boost::shared_ptr< AbstractImmersedBoundaryDivisionRule< DIM > > mpImmersedBoundaryDivisionRule
double GetIntrinsicSpacing() const
unsigned GetReMeshFrequency() const
virtual void AcceptCellWriter(boost::shared_ptr< AbstractCellWriter< DIM, DIM > > pCellWriter, CellPtr pCell)
unsigned mReMeshFrequency
virtual double GetCellDataItemAtPdeNode(unsigned pdeNodeIndex, std::string &rVariableName, bool dirichletBoundaryConditionApplies=false, double dirichletBoundaryValue=0.0)
void OutputCellPopulationParameters(out_stream &rParamsFile)
double GetInteractionDistance() const
virtual void AcceptPopulationEventWriter(boost::shared_ptr< AbstractCellPopulationEventWriter< DIM, DIM > > pPopulationEventWriter)
friend class TestImmersedBoundaryCellPopulation
ImmersedBoundaryMesh< DIM, DIM > & rGetMesh()
double CalculateIntrinsicCellSize()
boost::shared_ptr< AbstractImmersedBoundaryDivisionRule< DIM > > GetImmersedBoundaryDivisionRule()
unsigned GetNumElements()
ImmersedBoundaryElement< DIM - 1, DIM > * GetLamina(unsigned laminaIndex)
virtual ~ImmersedBoundaryCellPopulation()
ImmersedBoundaryElement< DIM, DIM > * GetElementCorrespondingToCell(CellPtr pCell)
unsigned AddNode(Node< DIM > *pNewNode)
bool DoesPopulationHaveActiveSources() const
bool mPopulationHasActiveSources
bool mOutputNodeRegionToVtk
ImmersedBoundaryElement< DIM, DIM > * GetElement(unsigned elementIndex)
std::set< unsigned > GetNeighbouringNodeIndices(unsigned index)
c_vector< double, DIM > GetLocationOfCellCentre(CellPtr pCell)
void Update(bool hasHadBirthsOrDeaths=true)
void UpdateNodeLocations(double dt)
friend class TestImmersedBoundaryDivisionRules
bool IsCellAssociatedWithADeletedLocation(CellPtr pCell)
double GetVolumeOfCell(CellPtr pCell)
virtual void AcceptPopulationWriter(boost::shared_ptr< AbstractCellPopulationWriter< DIM, DIM > > pPopulationWriter)
virtual void AcceptPopulationCountWriter(boost::shared_ptr< AbstractCellPopulationCountWriter< DIM, DIM > > pPopulationCountWriter)
virtual bool IsPdeNodeAssociatedWithNonApoptoticCell(unsigned pdeNodeIndex)
void SetImmersedBoundaryDivisionRule(boost::shared_ptr< AbstractImmersedBoundaryDivisionRule< DIM > > pImmersedBoundaryDivisionRule)
void SetOutputNodeRegionToVtk(bool outputNodeRegionsToVtk)
virtual double GetDefaultTimeStep()
CellPtr AddCell(CellPtr pNewCell, CellPtr pParentCell=CellPtr())
virtual void WriteVtkResultsToFile(const std::string &rDirectory)
double GetDampingConstant(unsigned nodeIndex)
Node< DIM > * GetNode(unsigned index)
std::set< unsigned > GetNeighbouringLocationIndices(CellPtr pCell)
void SetNode(unsigned index, ChastePoint< DIM > &rNewLocation)
virtual TetrahedralMesh< DIM, DIM > * GetTetrahedralMeshForPdeModifier()
ImmersedBoundaryMesh< DIM, DIM > * mpImmersedBoundaryMesh
void SetIfPopulationHasActiveSources(bool hasActiveSources)
void serialize(Archive &archive, const unsigned int version)
double GetWidth(const unsigned &rDimension)
void SetInteractionDistance(double newDistance)