#include <MeshBasedCellPopulationWithGhostNodes.hpp>
Inherits MeshBasedCellPopulation< DIM >.
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) |
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 | |||
) | [inline] |
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 | |||
) | [inline] |
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.
MeshBasedCellPopulationWithGhostNodes< DIM >::~MeshBasedCellPopulationWithGhostNodes | ( | ) | [inline, virtual] |
Empty destructor so archiving works with static libraries.
Definition at line 98 of file MeshBasedCellPopulationWithGhostNodes.cpp.
CellPtr MeshBasedCellPopulationWithGhostNodes< DIM >::AddCell | ( | CellPtr | pNewCell, | |
const c_vector< double, DIM > & | rCellDivisionVector, | |||
CellPtr | pParentCell | |||
) | [inline] |
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 AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetLocationIndexUsingCell(), MeshBasedCellPopulation< DIM >::GetNumNodes(), and MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
c_vector< double, DIM > MeshBasedCellPopulationWithGhostNodes< DIM >::CalculateForceBetweenGhostNodes | ( | const unsigned & | rNodeAGlobalIndex, | |
const unsigned & | rNodeBGlobalIndex | |||
) | [inline] |
This method is used to calculate the force between GHOST nodes.
rNodeAGlobalIndex | ||
rNodeBGlobalIndex |
Definition at line 194 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulation< DIM >::GetNode(), MeshBasedCellPopulationWithGhostNodes< DIM >::mGhostSpringStiffness, and AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mrMesh.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostPositions().
std::set< unsigned > MeshBasedCellPopulationWithGhostNodes< DIM >::GetGhostNodeIndices | ( | ) | [inline] |
Definition at line 115 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
std::set< unsigned > MeshBasedCellPopulationWithGhostNodes< DIM >::GetNeighbouringLocationIndices | ( | CellPtr | pCell | ) | [inline, 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, ELEMENT_DIM >.
Definition at line 283 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetLocationIndexUsingCell(), MeshBasedCellPopulation< DIM >::GetNeighbouringNodeIndices(), and MeshBasedCellPopulationWithGhostNodes< DIM >::IsGhostNode().
bool MeshBasedCellPopulationWithGhostNodes< DIM >::IsGhostNode | ( | unsigned | index | ) | [inline, 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, ELEMENT_DIM >.
Definition at line 109 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::GetNeighbouringLocationIndices(), and MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile().
void MeshBasedCellPopulationWithGhostNodes< DIM >::OpenWritersFiles | ( | OutputFileHandler & | rOutputFileHandler | ) | [inline, 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 317 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mOutputResultsForChasteVisualizer.
void MeshBasedCellPopulationWithGhostNodes< DIM >::OutputCellPopulationParameters | ( | out_stream & | rParamsFile | ) | [inline, 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 MeshBasedCellPopulation< DIM >.
Definition at line 406 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mGhostSpringStiffness.
std::vector< bool > & MeshBasedCellPopulationWithGhostNodes< DIM >::rGetGhostNodes | ( | ) | [inline] |
Definition at line 103 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
void MeshBasedCellPopulationWithGhostNodes< DIM >::serialize | ( | Archive & | archive, | |
const unsigned int | version | |||
) | [inline, private] |
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 |
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 85 of file MeshBasedCellPopulationWithGhostNodes.hpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mGhostSpringStiffness, and MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
void MeshBasedCellPopulationWithGhostNodes< DIM >::SetGhostNodes | ( | const std::set< unsigned > & | rGhostNodeIndices | ) | [inline, 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.
References MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode, AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mrMesh, and MeshBasedCellPopulationWithGhostNodes< DIM >::Validate().
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes().
void MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostNodesAfterReMesh | ( | NodeMap & | rMap | ) | [inline, 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(), MeshBasedCellPopulation< DIM >::GetNumNodes(), NodeMap::GetSize(), NodeMap::IsDeleted(), and MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
void MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostPositions | ( | double | dt | ) | [inline] |
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 MeshBasedCellPopulationWithGhostNodes< DIM >::CalculateForceBetweenGhostNodes(), AbstractOffLatticeCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetDampingConstantNormal(), MeshBasedCellPopulation< DIM >::GetNumNodes(), MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode, and AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mrMesh.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateNodeLocations().
void MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateNodeLocations | ( | double | dt | ) | [inline, 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, ELEMENT_DIM >.
Definition at line 306 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostPositions().
void MeshBasedCellPopulationWithGhostNodes< DIM >::Validate | ( | ) | [inline, private, virtual] |
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 AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::Begin(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::End(), EXCEPTION, AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetLocationIndexUsingCell(), MeshBasedCellPopulation< DIM >::GetNumNodes(), and MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes(), and MeshBasedCellPopulationWithGhostNodes< DIM >::SetGhostNodes().
void MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile | ( | const std::string & | rDirectory | ) | [inline, virtual] |
Overridden WriteVtkResultsToFile() method.
rDirectory | pathname of the output directory, relative to where Chaste output is stored |
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 331 of file MeshBasedCellPopulationWithGhostNodes.cpp.
References VertexMeshWriter< ELEMENT_DIM, SPACE_DIM >::AddCellData(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetCellUsingLocationIndex(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetDelaunayNodeIndexCorrespondingToVoronoiElementIndex(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorBegin(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetElementIteratorEnd(), VertexMesh< ELEMENT_DIM, SPACE_DIM >::GetNumElements(), SimulationTime::GetTimeStepsElapsed(), SimulationTime::Instance(), MeshBasedCellPopulationWithGhostNodes< DIM >::IsGhostNode(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mCellWriters, MeshBasedCellPopulation< DIM >::mpVoronoiTessellation, AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mpVtkMetaFile, and VertexMeshWriter< ELEMENT_DIM, SPACE_DIM >::WriteVtkUsingMesh().
friend class boost::serialization::access [friend] |
Needed for serialization.
Reimplemented from MeshBasedCellPopulation< DIM >.
Definition at line 72 of file MeshBasedCellPopulationWithGhostNodes.hpp.
friend class TestMeshBasedCellPopulationWithGhostNodes [friend] |
Just so that the test can test the private functions
Definition at line 61 of file MeshBasedCellPopulationWithGhostNodes.hpp.
double MeshBasedCellPopulationWithGhostNodes< DIM >::mGhostSpringStiffness [private] |
Spring stiffness for springs between ghost nodes.
Definition at line 69 of file MeshBasedCellPopulationWithGhostNodes.hpp.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::CalculateForceBetweenGhostNodes(), MeshBasedCellPopulationWithGhostNodes< DIM >::OutputCellPopulationParameters(), and MeshBasedCellPopulationWithGhostNodes< DIM >::serialize().
std::vector<bool> MeshBasedCellPopulationWithGhostNodes< DIM >::mIsGhostNode [private] |
Records whether a node is a ghost node or not
Definition at line 64 of file MeshBasedCellPopulationWithGhostNodes.hpp.
Referenced by MeshBasedCellPopulationWithGhostNodes< DIM >::AddCell(), MeshBasedCellPopulationWithGhostNodes< DIM >::GetGhostNodeIndices(), MeshBasedCellPopulationWithGhostNodes< DIM >::IsGhostNode(), MeshBasedCellPopulationWithGhostNodes< DIM >::MeshBasedCellPopulationWithGhostNodes(), MeshBasedCellPopulationWithGhostNodes< DIM >::rGetGhostNodes(), MeshBasedCellPopulationWithGhostNodes< DIM >::serialize(), MeshBasedCellPopulationWithGhostNodes< DIM >::SetGhostNodes(), MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostNodesAfterReMesh(), MeshBasedCellPopulationWithGhostNodes< DIM >::UpdateGhostPositions(), and MeshBasedCellPopulationWithGhostNodes< DIM >::Validate().