Chaste
Release::3.4
|
#include <MeshBasedCellPopulationWithGhostNodes.hpp>
Public Member Functions | |
MeshBasedCellPopulationWithGhostNodes (MutableMesh< DIM, DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >(), bool deleteMesh=false, double ghostSpringStiffness=15.0) | |
MeshBasedCellPopulationWithGhostNodes (MutableMesh< DIM, DIM > &rMesh, double ghostSpringStiffness=15.0) | |
virtual | ~MeshBasedCellPopulationWithGhostNodes () |
std::set< unsigned > | GetNeighbouringLocationIndices (CellPtr pCell) |
void | UpdateNodeLocations (double dt) |
std::vector< bool > & | rGetGhostNodes () |
bool | IsGhostNode (unsigned index) |
std::set< unsigned > | GetGhostNodeIndices () |
void | UpdateGhostPositions (double dt) |
void | UpdateGhostNodesAfterReMesh (NodeMap &rMap) |
c_vector< double, DIM > | CalculateForceBetweenGhostNodes (const unsigned &rNodeAGlobalIndex, const unsigned &rNodeBGlobalIndex) |
CellPtr | AddCell (CellPtr pNewCell, const c_vector< double, DIM > &rCellDivisionVector, CellPtr pParentCell) |
virtual void | OpenWritersFiles (OutputFileHandler &rOutputFileHandler) |
virtual void | WriteVtkResultsToFile (const std::string &rDirectory) |
void | OutputCellPopulationParameters (out_stream &rParamsFile) |
Public Member Functions inherited from MeshBasedCellPopulation< DIM > | |
MeshBasedCellPopulation (MutableMesh< ELEMENT_DIM, ELEMENT_DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >(), bool deleteMesh=false, bool validate=true) | |
MeshBasedCellPopulation (MutableMesh< ELEMENT_DIM, ELEMENT_DIM > &rMesh) | |
virtual | ~MeshBasedCellPopulation () |
MutableMesh< ELEMENT_DIM, ELEMENT_DIM > & | rGetMesh () |
const MutableMesh< ELEMENT_DIM, ELEMENT_DIM > & | rGetMesh () const |
bool | UseAreaBasedDampingConstant () |
unsigned | AddNode (Node< ELEMENT_DIM > *pNewNode) |
void | SetNode (unsigned nodeIndex, ChastePoint< ELEMENT_DIM > &rNewLocation) |
double | GetDampingConstant (unsigned nodeIndex) |
void | SetAreaBasedDampingConstant (bool useAreaBasedDampingConstant) |
virtual unsigned | RemoveDeadCells () |
virtual CellPtr | AddCell (CellPtr pNewCell, const c_vector< double, ELEMENT_DIM > &rCellDivisionVector, CellPtr pParentCell) |
virtual void | WriteResultsToFiles (const std::string &rDirectory) |
virtual void | AcceptPopulationWriter (boost::shared_ptr< AbstractCellPopulationWriter< ELEMENT_DIM, ELEMENT_DIM > > pPopulationWriter) |
virtual void | AcceptPopulationCountWriter (boost::shared_ptr< AbstractCellPopulationCountWriter< ELEMENT_DIM, ELEMENT_DIM > > pPopulationCountWriter) |
virtual void | AcceptCellWriter (boost::shared_ptr< AbstractCellWriter< ELEMENT_DIM, ELEMENT_DIM > > pCellWriter, CellPtr pCell) |
virtual void | Update (bool hasHadBirthsOrDeaths=true) |
void | TessellateIfNeeded () |
void | DivideLongSprings (double springDivisionThreshold) |
Node< ELEMENT_DIM > * | GetNode (unsigned index) |
unsigned | GetNumNodes () |
double | GetVolumeOfCell (CellPtr pCell) |
void | CreateVoronoiTessellation () |
VertexMesh< ELEMENT_DIM, ELEMENT_DIM > * | GetVoronoiTessellation () |
double | GetVolumeOfVoronoiElement (unsigned index) |
double | GetSurfaceAreaOfVoronoiElement (unsigned index) |
double | GetVoronoiEdgeLength (unsigned index1, unsigned index2) |
double | GetWidth (const unsigned &rDimension) |
SpringIterator | SpringsBegin () |
SpringIterator | SpringsEnd () |
void | CheckCellPointers () |
double | GetAreaBasedDampingConstantParameter () |
void | SetAreaBasedDampingConstantParameter (double areaBasedDampingConstantParameter) |
std::vector< std::pair< Node < ELEMENT_DIM > *, Node < ELEMENT_DIM > * > > & | rGetNodePairs () |
void | OutputCellPopulationParameters (out_stream &rParamsFile) |
void | SetWriteVtkAsPoints (bool writeVtkAsPoints) |
bool | GetWriteVtkAsPoints () |
void | SetOutputMeshInVtk (bool outputMeshInVtk) |
bool | GetOutputMeshInVtk () |
std::set< unsigned > | GetNeighbouringNodeIndices (unsigned index) |
void | CalculateRestLengths () |
double | GetRestLength (unsigned indexA, unsigned indexB) |
void | SetRestLength (unsigned indexA, unsigned indexB, double restLength) |
Public Member Functions inherited from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM > | |
AbstractCentreBasedCellPopulation (AbstractMesh< ELEMENT_DIM, SPACE_DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >()) | |
c_vector< double, SPACE_DIM > | GetLocationOfCellCentre (CellPtr pCell) |
Node< SPACE_DIM > * | GetNodeCorrespondingToCell (CellPtr pCell) |
CellPtr | AddCell (CellPtr pNewCell, const c_vector< double, SPACE_DIM > &rCellDivisionVector, CellPtr pParentCell=CellPtr()) |
std::pair< CellPtr, CellPtr > | CreateCellPair (CellPtr pCell1, CellPtr pCell2) |
bool | IsMarkedSpring (const std::pair< CellPtr, CellPtr > &rCellPair) |
void | MarkSpring (std::pair< CellPtr, CellPtr > &rCellPair) |
void | UnmarkSpring (std::pair< CellPtr, CellPtr > &rCellPair) |
bool | IsCellAssociatedWithADeletedLocation (CellPtr pCell) |
virtual bool | IsParticle (unsigned index) |
double | GetMeinekeDivisionSeparation () |
void | SetMeinekeDivisionSeparation (double divisionSeparation) |
Public Member Functions inherited from AbstractOffLatticeCellPopulation< ELEMENT_DIM, SPACE_DIM > | |
AbstractOffLatticeCellPopulation (AbstractMesh< ELEMENT_DIM, SPACE_DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >()) | |
virtual unsigned | AddNode (Node< SPACE_DIM > *pNewNode)=0 |
virtual void | SetNode (unsigned nodeIndex, ChastePoint< SPACE_DIM > &rNewLocation)=0 |
void | SetDampingConstantNormal (double dampingConstantNormal) |
void | SetDampingConstantMutant (double dampingConstantMutant) |
void | SetAbsoluteMovementThreshold (double absoluteMovementThreshold) |
double | GetAbsoluteMovementThreshold () |
double | GetDampingConstantNormal () |
double | GetDampingConstantMutant () |
Public Member Functions inherited from AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > | |
AbstractCellPopulation (AbstractMesh< ELEMENT_DIM, SPACE_DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >()) | |
virtual | ~AbstractCellPopulation () |
void | InitialiseCells () |
void | SetDataOnAllCells (const std::string &rDataName, double dataValue) |
AbstractMesh< ELEMENT_DIM, SPACE_DIM > & | rGetMesh () |
std::list< CellPtr > & | rGetCells () |
std::vector< unsigned > | GetCellMutationStateCount () |
std::vector< unsigned > | GetCellProliferativeTypeCount () |
std::vector< unsigned > | GetCellCyclePhaseCount () |
unsigned | GetNumRealCells () |
unsigned | GetNumAllCells () |
void | SetCellAncestorsToLocationIndices () |
std::set< unsigned > | GetCellAncestors () |
virtual CellPtr | GetCellUsingLocationIndex (unsigned index) |
std::set< CellPtr > | GetCellsUsingLocationIndex (unsigned index) |
bool | IsCellAttachedToLocationIndex (unsigned index) |
void | SetCellUsingLocationIndex (unsigned index, CellPtr pCell) |
virtual void | AddCellUsingLocationIndex (unsigned index, CellPtr pCell) |
virtual void | RemoveCellUsingLocationIndex (unsigned index, CellPtr pCell) |
void | MoveCellInLocationMap (CellPtr pCell, unsigned old_index, unsigned new_index) |
unsigned | GetLocationIndexUsingCell (CellPtr pCell) |
boost::shared_ptr < CellPropertyRegistry > | GetCellPropertyRegistry () |
void | SetDefaultCellMutationStateAndProliferativeTypeOrdering () |
c_vector< double, SPACE_DIM > | GetCentroidOfCellPopulation () |
virtual void | UpdateCellProcessLocation () |
void | CloseWritersFiles () |
virtual void | AcceptPopulationWriter (boost::shared_ptr< AbstractCellPopulationWriter< ELEMENT_DIM, SPACE_DIM > > pPopulationWriter)=0 |
virtual void | AcceptPopulationCountWriter (boost::shared_ptr< AbstractCellPopulationCountWriter< ELEMENT_DIM, SPACE_DIM > > pPopulationCountWriter)=0 |
virtual void | AcceptCellWriter (boost::shared_ptr< AbstractCellWriter< ELEMENT_DIM, SPACE_DIM > > pCellWriter, CellPtr pCell)=0 |
void | OutputCellPopulationInfo (out_stream &rParamsFile) |
bool | GetOutputResultsForChasteVisualizer () |
template<template< unsigned, unsigned > class T> | |
void | AddPopulationWriter () |
template<template< unsigned, unsigned > class T> | |
void | AddCellWriter () |
template<template< unsigned, unsigned > class T> | |
void | AddCellPopulationCountWriter () |
void | AddPopulationWriter (boost::shared_ptr< AbstractCellPopulationWriter< ELEMENT_DIM, SPACE_DIM > > pPopulationWriter) |
void | AddCellWriter (boost::shared_ptr< AbstractCellWriter< ELEMENT_DIM, SPACE_DIM > > pCellWriter) |
void | AddCellPopulationCountWriter (boost::shared_ptr< AbstractCellPopulationCountWriter< ELEMENT_DIM, SPACE_DIM > > pCellPopulationCountWriter) |
template<template< unsigned, unsigned > class T> | |
bool | HasWriter () const |
void | SetOutputResultsForChasteVisualizer (bool outputResultsForChasteVisualizer) |
c_vector< double, SPACE_DIM > | GetSizeOfCellPopulation () |
virtual bool | IsRoomToDivide (CellPtr pCell) |
std::pair< unsigned, unsigned > | CreateOrderedPair (unsigned index1, unsigned index2) |
Iterator | Begin () |
Iterator | End () |
Public Member Functions inherited from Identifiable | |
virtual | ~Identifiable () |
std::string | GetIdentifier () const |
Protected Member Functions | |
virtual void | AcceptCellWritersAcrossPopulation () |
Protected Member Functions inherited from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM > | |
AbstractCentreBasedCellPopulation (AbstractMesh< ELEMENT_DIM, SPACE_DIM > &rMesh) | |
Protected Member Functions inherited from AbstractOffLatticeCellPopulation< ELEMENT_DIM, SPACE_DIM > | |
AbstractOffLatticeCellPopulation (AbstractMesh< ELEMENT_DIM, SPACE_DIM > &rMesh) | |
Protected Member Functions inherited from AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > | |
AbstractCellPopulation (AbstractMesh< ELEMENT_DIM, SPACE_DIM > &rMesh) | |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &archive, const unsigned int version) |
void | SetGhostNodes (const std::set< unsigned > &rGhostNodeIndices) |
void | Validate () |
Private Attributes | |
std::vector< bool > | mIsGhostNode |
double | mGhostSpringStiffness |
Friends | |
class | TestMeshBasedCellPopulationWithGhostNodes |
class | boost::serialization::access |
A facade class encapsulating a mesh-based cell population with ghost nodes.
If simulating a crypt with a mesh-based cell population, the mesh should be surrounded by at least one layer of ghost nodes. These are nodes which do not correspond to a cell, but are necessary for remeshing (because the remesher tries to create a convex hull of the set of nodes) and visualization purposes. The MeshBasedCellPopulationWithGhostNodes class deals with these ghost nodes, hiding the 'ghost nodes' concept from the OffLatticeSimulation class, so the latter only ever deals with real cells.
Definition at line 56 of file MeshBasedCellPopulationWithGhostNodes.hpp.
MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes | ( | MutableMesh< DIM, DIM > & | rMesh, |
std::vector< CellPtr > & | rCells, | ||
const std::vector< unsigned > | locationIndices = std::vector<unsigned>() , |
||
bool | deleteMesh = false , |
||
double | ghostSpringStiffness = 15.0 |
||
) |
Create a new cell population from a mesh and collection of cells.
rMesh | a mutable tetrahedral mesh |
rCells | cells corresponding to the nodes of the mesh |
locationIndices | an optional vector of location indices that correspond to real cells |
deleteMesh | set to true if you want the cell population to free the mesh memory on destruction |
ghostSpringStiffness | spring stiffness used to move the ghost nodes defaults to 15.0. |
Definition at line 50 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulation< DIM >::GetNode(), MeshBasedCellPopulation< DIM >::GetNumNodes(), MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode, MeshBasedCellPopulationWithGhostNodes< DIM >::SetGhostNodes(), and MeshBasedCellPopulationWithGhostNodes< DIM >::Validate().
MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes | ( | MutableMesh< DIM, DIM > & | rMesh, |
double | ghostSpringStiffness = 15.0 |
||
) |
Constructor for use by the de-serializer.
rMesh | a mutable tetrahedral mesh. |
ghostSpringStiffness | spring stiffness used to move the ghost nodes defaults to 15.0. |
Definition at line 90 of file MeshBasedCellPopulationWithGhostNodes.cpp.
|
virtual |
Empty destructor so archiving works with static libraries.
Definition at line 98 of file MeshBasedCellPopulationWithGhostNodes.cpp.
|
protectedvirtual |
Overridden method
Calls AcceptCellWriter across the whole population, iterating in an appropriate way to skip ghost nodes.
Reimplemented from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >.
Definition at line 306 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNodeIteratorEnd().
CellPtr MeshBasedCellPopulationWithGhostNodes< DIM >::AddCell | ( | CellPtr | pNewCell, |
const c_vector< double, DIM > & | rCellDivisionVector, | ||
CellPtr | pParentCell | ||
) |
Overridden AddCell() method.
Add a new cell to the cell population and update mIsGhostNode.
pNewCell | the cell to add |
rCellDivisionVector | the position in space at which to put it |
pParentCell | pointer to a parent cell - this is required for mesh-based cell populations |
Definition at line 213 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::AddCell().
c_vector< double, DIM > MeshBasedCellPopulationWithGhostNodes< DIM >::CalculateForceBetweenGhostNodes | ( | const unsigned & | rNodeAGlobalIndex, |
const unsigned & | rNodeBGlobalIndex | ||
) |
This method is used to calculate the force between GHOST nodes.
rNodeAGlobalIndex | |
rNodeBGlobalIndex |
Definition at line 194 of file MeshBasedCellPopulationWithGhostNodes.cpp.
std::set< unsigned > MeshBasedCellPopulationWithGhostNodes< DIM >::GetGhostNodeIndices | ( | ) |
Definition at line 115 of file MeshBasedCellPopulationWithGhostNodes.cpp.
|
virtual |
Overridden GetNeighbouringLocationIndices() method.
Given a cell, returns the set of location indices corresponding to neighbouring cells.
pCell | a cell |
Reimplemented from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >.
Definition at line 283 of file MeshBasedCellPopulationWithGhostNodes.cpp.
|
virtual |
Overridden IsGhostNode() method.
Find if a given node is a ghost node. The abstract method always returns false but is overridden in subclasses.
index | the global index of a specified node |
Reimplemented from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >.
Definition at line 109 of file MeshBasedCellPopulationWithGhostNodes.cpp.
|
virtual |
Overridden OpenWritersFiles() method.
Open all files in mCellPopulationWriters and mCellWriters for writing (not appending).
rOutputFileHandler | handler for the directory in which to open this file. |
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 338 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::OpenWritersFiles().
|
virtual |
Outputs CellPopulation parameters to file
As this method is pure virtual, it must be overridden in subclasses.
rParamsFile | the file stream to which the parameters are output |
Reimplemented from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >.
Definition at line 427 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::OutputCellPopulationParameters().
std::vector< bool > & MeshBasedCellPopulationWithGhostNodes< DIM >::rGetGhostNodes | ( | ) |
Definition at line 103 of file MeshBasedCellPopulationWithGhostNodes.cpp.
|
inlineprivate |
Serialize the object and its member variables.
Note that serialization of the mesh and cells is handled by load/save_construct_data.
Note also that member data related to writers is not saved - output must be set up again by the caller after a restart.
archive | the archive |
version | the current version of this class |
Definition at line 85 of file MeshBasedCellPopulationWithGhostNodes.hpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mGhostSpringStiffness, and MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
|
private |
Set the ghost nodes by taking in a set of which nodes indices are ghost nodes.
rGhostNodeIndices | set of node indices corresponding to ghost nodes |
Definition at line 129 of file MeshBasedCellPopulationWithGhostNodes.cpp.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes().
|
virtual |
Update mIsGhostNode if required by a remesh.
rMap | A map between node indices before and after remesh |
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 262 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References NodeMap::GetNewIndex(), NodeMap::GetSize(), and NodeMap::IsDeleted().
void MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostPositions | ( | double | dt | ) |
Update the GhostNode positions using the spring force model with rest length=1. Forces are applied to ghost nodes from connected ghost and normal nodes.
dt |
Definition at line 144 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::EdgesEnd(), AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNodeIteratorBegin(), and MutableMesh< ELEMENT_DIM, SPACE_DIM >::SetNode().
|
virtual |
Overridden UpdateNodeLocation() method.
Update the location of each node in the cell population given a time step over which to integrate the equations of motion.
dt | time step |
Reimplemented from AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >.
Definition at line 327 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::UpdateNodeLocations().
|
privatevirtual |
This is called after a cell population has been constructed to check the user gave consistent instructions. Check consistency of our internal data structures: Each node must have a cell associated with it OR must be a ghost node.
It is called after cells are added or removed from MeshBasedCellPopulation as it is an overridden virtual method.
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 233 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References EXCEPTION.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes().
|
virtual |
Overridden WriteVtkResultsToFile() method.
rDirectory | pathname of the output directory, relative to where Chaste output is stored |
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 352 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References VertexMeshWriter< ELEMENT_DIM, SPACE_DIM >::AddCellData(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), SimulationTime::GetTimeStepsElapsed(), SimulationTime::Instance(), and VertexMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteVtkUsingMesh().
|
friend |
Needed for serialization.
Definition at line 72 of file MeshBasedCellPopulationWithGhostNodes.hpp.
|
friend |
Just so that the test can test the private functions
Definition at line 61 of file MeshBasedCellPopulationWithGhostNodes.hpp.
|
private |
Spring stiffness for springs between ghost nodes.
Definition at line 69 of file MeshBasedCellPopulationWithGhostNodes.hpp.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::serialize().
|
private |
Records whether a node is a ghost node or not
Definition at line 64 of file MeshBasedCellPopulationWithGhostNodes.hpp.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes(), and MeshBasedCellPopulationWithGhostNodes< DIM >::serialize().