Chaste  Release::3.4
NodeBasedCellPopulation< DIM > Class Template Reference

#include <NodeBasedCellPopulation.hpp>

+ Inheritance diagram for NodeBasedCellPopulation< DIM >:
+ Collaboration diagram for NodeBasedCellPopulation< DIM >:

Public Member Functions

void SetNode (unsigned nodeIndex, ChastePoint< DIM > &rNewLocation)
 
 NodeBasedCellPopulation (NodesOnlyMesh< DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >(), bool deleteMesh=false, bool validate=true)
 
 NodeBasedCellPopulation (NodesOnlyMesh< DIM > &rMesh)
 
virtual ~NodeBasedCellPopulation ()
 
NodesOnlyMesh< DIM > & rGetMesh ()
 
const NodesOnlyMesh< DIM > & rGetMesh () const
 
unsigned GetNumNodes ()
 
virtual CellPtr GetCellUsingLocationIndex (unsigned index)
 
Node< DIM > * GetNode (unsigned index)
 
unsigned RemoveDeadCells ()
 
void Clear ()
 
void Update (bool hasHadBirthsOrDeaths=true)
 
std::vector< std::pair< Node
< DIM > *, Node< DIM > * > > & 
rGetNodePairs ()
 
void OutputCellPopulationParameters (out_stream &rParamsFile)
 
virtual void AcceptPopulationWriter (boost::shared_ptr< AbstractCellPopulationWriter< DIM, DIM > > pPopulationWriter)
 
virtual void AcceptPopulationCountWriter (boost::shared_ptr< AbstractCellPopulationCountWriter< DIM, DIM > > pPopulationCountWriter)
 
virtual void AcceptCellWriter (boost::shared_ptr< AbstractCellWriter< DIM, DIM > > pCellWriter, CellPtr pCell)
 
double GetMechanicsCutOffLength ()
 
bool GetUseVariableRadii ()
 
void SetUseVariableRadii (bool useVariableRadii=true)
 
void SetLoadBalanceMesh (bool loadBalanceMesh)
 
void SetLoadBalanceFrequency (unsigned loadBalanceFrequency)
 
double GetWidth (const unsigned &rDimension)
 
c_vector< double, DIM > GetSizeOfCellPopulation ()
 
std::set< unsignedGetNodesWithinNeighbourhoodRadius (unsigned index, double neighbourhoodRadius)
 
std::set< unsignedGetNeighbouringNodeIndices (unsigned index)
 
virtual CellPtr AddCell (CellPtr pNewCell, const c_vector< double, DIM > &rCellDivisionVector, CellPtr pParentCell)
 
double GetVolumeOfCell (CellPtr pCell)
 
void SendCellsToNeighbourProcesses ()
 
void NonBlockingSendCellsToNeighbourProcesses ()
 
void GetReceivedCells ()
 
std::pair< CellPtr, Node< DIM > * > GetCellNodePair (unsigned nodeIndex)
 
void AddReceivedCells ()
 
virtual void UpdateCellProcessLocation ()
 
- Public Member Functions inherited from AbstractCentreBasedCellPopulation< DIM >
 AbstractCentreBasedCellPopulation (AbstractMesh< ELEMENT_DIM, ELEMENT_DIM > &rMesh, std::vector< CellPtr > &rCells, const std::vector< unsigned > locationIndices=std::vector< unsigned >())
 
c_vector< double, ELEMENT_DIM > GetLocationOfCellCentre (CellPtr pCell)
 
Node< ELEMENT_DIM > * GetNodeCorrespondingToCell (CellPtr pCell)
 
CellPtr AddCell (CellPtr pNewCell, const c_vector< double, ELEMENT_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 std::set< unsignedGetNeighbouringLocationIndices (CellPtr pCell)
 
virtual void UpdateNodeLocations (double dt)
 
virtual double GetDampingConstant (unsigned nodeIndex)
 
virtual bool IsGhostNode (unsigned index)
 
virtual bool IsParticle (unsigned index)
 
double GetMeinekeDivisionSeparation ()
 
void SetMeinekeDivisionSeparation (double divisionSeparation)
 
- Public Member Functions inherited from AbstractOffLatticeCellPopulation< ELEMENT_DIM, ELEMENT_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 ()
 
virtual CellPtr AddCell (CellPtr pNewCell, const c_vector< double, SPACE_DIM > &rCellDivisionVector, CellPtr pParentCell=CellPtr())=0
 
std::vector< unsignedGetCellMutationStateCount ()
 
std::vector< unsignedGetCellProliferativeTypeCount ()
 
std::vector< unsignedGetCellCyclePhaseCount ()
 
unsigned GetNumRealCells ()
 
unsigned GetNumAllCells ()
 
void SetCellAncestorsToLocationIndices ()
 
std::set< unsignedGetCellAncestors ()
 
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 OpenWritersFiles (OutputFileHandler &rOutputFileHandler)
 
void CloseWritersFiles ()
 
virtual void WriteResultsToFiles (const std::string &rDirectory)
 
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, unsignedCreateOrderedPair (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 UpdateParticlesAfterReMesh (NodeMap &rMap)
 
virtual void Validate ()
 
- Protected Member Functions inherited from AbstractCentreBasedCellPopulation< DIM >
 AbstractCentreBasedCellPopulation (AbstractMesh< ELEMENT_DIM, ELEMENT_DIM > &rMesh)
 
virtual void AcceptCellWritersAcrossPopulation ()
 
- Protected Member Functions inherited from AbstractOffLatticeCellPopulation< ELEMENT_DIM, ELEMENT_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)
 

Protected Attributes

NodesOnlyMesh< DIM > * mpNodesOnlyMesh
 
- Protected Attributes inherited from AbstractCentreBasedCellPopulation< DIM >
double mMeinekeDivisionSeparation
 
std::set< std::pair< CellPtr,
CellPtr > > 
mMarkedSprings
 
- Protected Attributes inherited from AbstractOffLatticeCellPopulation< ELEMENT_DIM, ELEMENT_DIM >
double mDampingConstantNormal
 
double mDampingConstantMutant
 
double mAbsoluteMovementThreshold
 
- Protected Attributes inherited from AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >
std::map< unsigned, std::set
< CellPtr > > 
mLocationCellMap
 
std::map< Cell *, unsignedmCellLocationMap
 
AbstractMesh< ELEMENT_DIM,
SPACE_DIM > & 
mrMesh
 
std::list< CellPtr > mCells
 
c_vector< double, SPACE_DIM > mCentroid
 
out_stream mpVtkMetaFile
 
boost::shared_ptr
< CellPropertyRegistry
mpCellPropertyRegistry
 
bool mOutputResultsForChasteVisualizer
 
std::vector< boost::shared_ptr
< AbstractCellWriter
< ELEMENT_DIM, SPACE_DIM > > > 
mCellWriters
 
std::vector< boost::shared_ptr
< AbstractCellPopulationWriter
< ELEMENT_DIM, SPACE_DIM > > > 
mCellPopulationWriters
 
std::vector< boost::shared_ptr
< AbstractCellPopulationCountWriter
< ELEMENT_DIM, SPACE_DIM > > > 
mCellPopulationCountWriters
 

Private Member Functions

template<class Archive >
void serialize (Archive &archive, const unsigned int version)
 
unsigned AddNode (Node< DIM > *pNewNode)
 
void AddMovedCell (CellPtr pCell, boost::shared_ptr< Node< DIM > > pNode)
 
void DeleteMovedCell (unsigned index)
 
void RefreshHaloCells ()
 
void AddNodeAndCellToSendRight (unsigned nodeIndex)
 
void AddNodeAndCellToSendLeft (unsigned nodeIndex)
 
void AddCellsToSendRight (std::vector< unsigned > &cellLocationIndices)
 
void AddCellsToSendLeft (std::vector< unsigned > &cellLocationIndices)
 
void AddReceivedHaloCells ()
 
void AddHaloCell (CellPtr pCell, boost::shared_ptr< Node< DIM > > pNode)
 
void UpdateMapsAfterRemesh (NodeMap &map)
 
virtual void WriteVtkResultsToFile (const std::string &rDirectory)
 

Private Attributes

c_vector< double, DIM > mMinSpatialPositions
 
c_vector< double, DIM > mMaxSpatialPositions
 
std::vector< std::pair< Node
< DIM > *, Node< DIM > * > > 
mNodePairs
 
std::map< unsigned, std::set
< unsigned > > 
mNodeNeighbours
 
bool mDeleteMesh
 
bool mUseVariableRadii
 
std::vector< std::pair
< CellPtr, Node< DIM > * > > 
mCellsToSendRight
 
std::vector< std::pair
< CellPtr, Node< DIM > * > > 
mCellsToSendLeft
 
boost::shared_ptr< std::vector
< std::pair< CellPtr, Node
< DIM > * > > > 
mpCellsRecvRight
 
boost::shared_ptr< std::vector
< std::pair< CellPtr, Node
< DIM > * > > > 
mpCellsRecvLeft
 
ObjectCommunicator
< std::vector< std::pair
< CellPtr, Node< DIM > * > > > 
mRightCommunicator
 
ObjectCommunicator
< std::vector< std::pair
< CellPtr, Node< DIM > * > > > 
mLeftCommunicator
 
std::vector< CellPtr > mHaloCells
 
std::map< unsigned, CellPtr > mLocationHaloCellMap
 
std::map< CellPtr, unsignedmHaloCellLocationMap
 
bool mLoadBalanceMesh
 
unsigned mLoadBalanceFrequency
 

Static Private Attributes

static const unsigned mCellCommunicationTag = 123
 

Friends

class TestNodeBasedCellPopulation
 
class TestNodeBasedCellPopulationParallelMethods
 
class TestBoxCollection
 
class boost::serialization::access
 

Detailed Description

template<unsigned DIM>
class NodeBasedCellPopulation< DIM >

A NodeBasedCellPopulation is a CellPopulation consisting of only nodes in space with associated cells. There are no elements and no mesh.

Definition at line 56 of file NodeBasedCellPopulation.hpp.

Constructor & Destructor Documentation

template<unsigned DIM>
NodeBasedCellPopulation< DIM >::NodeBasedCellPopulation ( NodesOnlyMesh< DIM > &  rMesh,
std::vector< CellPtr > &  rCells,
const std::vector< unsigned locationIndices = std::vector<unsigned>(),
bool  deleteMesh = false,
bool  validate = true 
)

Default constructor.

Note that the cell population will take responsibility for freeing the memory used by the nodes.

Parameters
rMesha mutable nodes-only mesh
rCellsa vector of cells
locationIndicesan optional vector of location indices that correspond to real cells
deleteMeshwhether to delete nodes-only mesh in destructor
validatewhether to call Validate() in the constructor or not

Definition at line 49 of file NodeBasedCellPopulation.cpp.

References NodeBasedCellPopulation< DIM >::mpNodesOnlyMesh, AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mrMesh, and NodeBasedCellPopulation< DIM >::Validate().

template<unsigned DIM>
NodeBasedCellPopulation< DIM >::NodeBasedCellPopulation ( NodesOnlyMesh< DIM > &  rMesh)

Constructor for use by the de-serializer.

Parameters
rMesha mutable nodes-only mesh

Definition at line 69 of file NodeBasedCellPopulation.cpp.

References NodeBasedCellPopulation< DIM >::mpNodesOnlyMesh, and AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::mrMesh.

template<unsigned DIM>
NodeBasedCellPopulation< DIM >::~NodeBasedCellPopulation ( )
virtual

Destructor.

Frees all our node memory.

Definition at line 80 of file NodeBasedCellPopulation.cpp.

Member Function Documentation

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AcceptCellWriter ( boost::shared_ptr< AbstractCellWriter< DIM, DIM > >  pCellWriter,
CellPtr  pCell 
)
virtual

A virtual method to accept a cell writer so it can write data from this object to file.

Parameters
pCellWriterthe population writer.
pCellthe cell whose data are being written.

Definition at line 307 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AcceptPopulationCountWriter ( boost::shared_ptr< AbstractCellPopulationCountWriter< DIM, DIM > >  pPopulationCountWriter)
virtual

A virtual method to accept a cell population count writer so it can write data from this object to file.

Parameters
pPopulationCountWriterthe population count writer.

Definition at line 301 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AcceptPopulationWriter ( boost::shared_ptr< AbstractCellPopulationWriter< DIM, DIM > >  pPopulationWriter)
virtual

A virtual method to accept a cell population writer so it can write data from this object to file.

Parameters
pPopulationWriterthe population writer.

Definition at line 295 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
CellPtr NodeBasedCellPopulation< DIM >::AddCell ( CellPtr  pNewCell,
const c_vector< double, DIM > &  rCellDivisionVector,
CellPtr  pParentCell 
)
virtual

Overridden AddCell() method.

Add a new cell to the cell population and update the vector of cell radii in the NodesOnlyMesh.

Parameters
pNewCellthe cell to add
rCellDivisionVectorthe position in space at which to put it
pParentCellpointer to a parent cell - this is required for node-based cell populations
Returns
address of cell as it appears in the cell list (internal of this method uses a copy constructor along the way)

Reimplemented in NodeBasedCellPopulationWithParticles< DIM >.

Definition at line 682 of file NodeBasedCellPopulation.cpp.

References AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::AddCell(), Node< SPACE_DIM >::GetRadius(), and Node< SPACE_DIM >::SetRadius().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddCellsToSendLeft ( std::vector< unsigned > &  cellLocationIndices)
private

Add a collection of cells to send left

Parameters
cellLocationIndicesthe list of location indices of cells to send.

Definition at line 948 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddCellsToSendRight ( std::vector< unsigned > &  cellLocationIndices)
private

Add a collection of cells to send right

Parameters
cellLocationIndicesthe list of location indices of cells to send.

Definition at line 937 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddHaloCell ( CellPtr  pCell,
boost::shared_ptr< Node< DIM > >  pNode 
)
private

Add a single halo cell with its node to the halo structures on this process.

Parameters
pCellthe cell to add.
pNodethe node to add.

Definition at line 989 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddMovedCell ( CellPtr  pCell,
boost::shared_ptr< Node< DIM > >  pNode 
)
private

Add a moved cell to this process along with its node.

Parameters
pCellthe pointer to the cell that is to be added.
pNodethe pointer to the node that is to be added.

Definition at line 704 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
unsigned NodeBasedCellPopulation< DIM >::AddNode ( Node< DIM > *  pNewNode)
private

Overridden AddNode() method.

Add a new node to the cell population.

Parameters
pNewNodepointer to the new node
Returns
global index of new node in cell population

Definition at line 247 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddNodeAndCellToSendLeft ( unsigned  nodeIndex)
private

Add the node and cell with index nodeIndex to the list of cells to send to the process left.

Parameters
nodeIndexthe index of the node and cell to send.

Definition at line 845 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddNodeAndCellToSendRight ( unsigned  nodeIndex)
private

Add the node and cell with index nodeIndex to the list of cells to send to the process right.

Parameters
nodeIndexthe index of the node and cell to send.

Definition at line 837 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddReceivedCells ( )

Add the contents of mpCellsRecvRight and mpCellsRecvLeft to the local population.

Definition at line 853 of file NodeBasedCellPopulation.cpp.

References PetscTools::AmMaster(), and PetscTools::AmTopMost().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::AddReceivedHaloCells ( )
private

Add halo cells to the halo structure on this process.

Definition at line 959 of file NodeBasedCellPopulation.cpp.

References PetscTools::AmMaster(), and PetscTools::AmTopMost().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::Clear ( )

Reset the member variables mNodePairs and mpBoxCollection in the underlying mesh.

Definition at line 102 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::DeleteMovedCell ( unsigned  index)
private

Delete a cell and its associated node that have moved off this process.

Parameters
indexthe location of the cell to be deleted

Definition at line 717 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
std::pair< CellPtr, Node< DIM > * > NodeBasedCellPopulation< DIM >::GetCellNodePair ( unsigned  nodeIndex)

Helper method to find and pack up nodes and cells together

Parameters
nodeIndexthe global index of the node.
Returns
the pair.

Definition at line 825 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
CellPtr NodeBasedCellPopulation< DIM >::GetCellUsingLocationIndex ( unsigned  index)
virtual

Overridden method from AbstractCellPopulation so that we can access halo cells through this method.

Parameters
indexthe global index of the node assocaited with a cell
Returns
the (set of) cells to which the node is attached.

Reimplemented from AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 259 of file NodeBasedCellPopulation.cpp.

References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetCellUsingLocationIndex().

Referenced by NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), and HeterotypicBoundaryLengthWriter< ELEMENT_DIM, SPACE_DIM >::Visit().

template<unsigned DIM>
double NodeBasedCellPopulation< DIM >::GetMechanicsCutOffLength ( )
Returns
the maximum interaction distance between cells, defined in NodesOnlyMesh.

Definition at line 313 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
std::set< unsigned > NodeBasedCellPopulation< DIM >::GetNeighbouringNodeIndices ( unsigned  index)
virtual

Overridden GetNeighbouringNodeIndices() method.

Not that this method only returns node indices for cells that are strictly touching each other.

Parameters
indexthe node index
Returns
the set of neighbouring node indices.

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 420 of file NodeBasedCellPopulation.cpp.

References EXCEPTION, Node< SPACE_DIM >::GetRadius(), and Node< SPACE_DIM >::rGetLocation().

Referenced by BuskeCompressionForce< DIM >::AddForceContribution(), and HeterotypicBoundaryLengthWriter< ELEMENT_DIM, SPACE_DIM >::Visit().

template<unsigned DIM>
Node< DIM > * NodeBasedCellPopulation< DIM >::GetNode ( unsigned  index)
virtual

Overridden GetNode() method.

Parameters
indexglobal index of the specified node
Returns
a pointer to the node with a given index.

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 126 of file NodeBasedCellPopulation.cpp.

Referenced by HeterotypicBoundaryLengthWriter< ELEMENT_DIM, SPACE_DIM >::Visit().

template<unsigned DIM>
std::set< unsigned > NodeBasedCellPopulation< DIM >::GetNodesWithinNeighbourhoodRadius ( unsigned  index,
double  neighbourhoodRadius 
)

Method to return nodes within a given radius of a node. Note this is independent of cell radius and returns all nodes within a given radius.

Parameters
indexthe node index
neighbourhoodRadiusthe radius to find neighbours in. Note must be less than the MaximumInteractionDistance in the NodesOnlyMesh
Returns
the set of neighbouring node indices within neighbourhoodRadius of the specified node.

Definition at line 363 of file NodeBasedCellPopulation.cpp.

References EXCEPTION, and Node< SPACE_DIM >::rGetLocation().

template<unsigned DIM>
unsigned NodeBasedCellPopulation< DIM >::GetNumNodes ( )
virtual
Returns
the number of nodes in the cell population.

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 253 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::GetReceivedCells ( )

Obtain proper cell/node pair objects from a previous call to NonBlockingSendCellsToNeighbourProcesses();

Definition at line 808 of file NodeBasedCellPopulation.cpp.

References PetscTools::AmMaster(), PetscTools::AmTopMost(), and EXCEPTION.

template<unsigned DIM>
c_vector< double, DIM > NodeBasedCellPopulation< DIM >::GetSizeOfCellPopulation ( )

Overridden GetSizeOfCellPopulation to work in parallel.

Returns
the size of the cell population.

Definition at line 349 of file NodeBasedCellPopulation.cpp.

References AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GetSizeOfCellPopulation(), and PetscTools::GetWorld().

template<unsigned DIM>
bool NodeBasedCellPopulation< DIM >::GetUseVariableRadii ( )
Returns
mUseVariableRadii

Definition at line 319 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
double NodeBasedCellPopulation< DIM >::GetVolumeOfCell ( CellPtr  pCell)
virtual

Overridden GetVolumeOfCell() method.

Parameters
pCellboost shared pointer to a cell
Returns
volume via associated mesh node

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 486 of file NodeBasedCellPopulation.cpp.

References Node< SPACE_DIM >::GetRadius(), and Node< SPACE_DIM >::rGetLocation().

template<unsigned DIM>
double NodeBasedCellPopulation< DIM >::GetWidth ( const unsigned rDimension)
virtual

Overridden GetWidth() method.

Calculate the 'width' of any dimension of the cell population by computing the maximum distance between any nodes in this dimension.

Parameters
rDimensiona dimension (0,1 or 2)
Returns
The maximum distance between any nodes in this dimension.

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 343 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::NonBlockingSendCellsToNeighbourProcesses ( )

Send the contents of mCellsToSendRight/Left to neighbouring processes using asynchronous communication. mpCellsRecvLeft/Right will not be updated until the equivalent GetReceivedCells() is called.

Definition at line 775 of file NodeBasedCellPopulation.cpp.

References PetscTools::AmMaster(), PetscTools::AmTopMost(), EXCEPTION, PetscTools::GetMyRank(), and SmallPow().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::OutputCellPopulationParameters ( out_stream &  rParamsFile)
virtual

Outputs CellPopulation parameters to file

As this method is pure virtual, it must be overridden in subclasses.

Parameters
rParamsFilethe file stream to which the parameters are output

Reimplemented from AbstractCentreBasedCellPopulation< DIM >.

Reimplemented in NodeBasedCellPopulationWithParticles< DIM >, and NodeBasedCellPopulationWithBuskeUpdate< DIM >.

Definition at line 284 of file NodeBasedCellPopulation.cpp.

References AbstractCentreBasedCellPopulation< ELEMENT_DIM, SPACE_DIM >::OutputCellPopulationParameters().

Referenced by NodeBasedCellPopulationWithBuskeUpdate< DIM >::OutputCellPopulationParameters(), and NodeBasedCellPopulationWithParticles< DIM >::OutputCellPopulationParameters().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::RefreshHaloCells ( )
private

Send and receive halo nodes with neighbours and populate memory structures to store them

Definition at line 919 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
unsigned NodeBasedCellPopulation< DIM >::RemoveDeadCells ( )
virtual

Remove all cells labelled as dead.

Note that after calling this method the cell population will be in an inconsistent state until the equivalent of a 'remesh' is performed! So don't try iterating over cells or anything like that.

Returns
number of cells removed

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 216 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
NodesOnlyMesh< DIM > & NodeBasedCellPopulation< DIM >::rGetMesh ( )
template<unsigned DIM>
const NodesOnlyMesh< DIM > & NodeBasedCellPopulation< DIM >::rGetMesh ( ) const
Returns
const reference to mrMesh (used in archiving).

Definition at line 96 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
std::vector< std::pair< Node< DIM > *, Node< DIM > * > > & NodeBasedCellPopulation< DIM >::rGetNodePairs ( )
virtual

Overridden rGetNodePairs method

Returns
Node pairs for force calculation.

Implements AbstractCentreBasedCellPopulation< DIM >.

Definition at line 278 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::SendCellsToNeighbourProcesses ( )

Send the contents of mCellsToSendRight/Left to neighbouring processes and receive from them into mpCellsRecvRight/Left.

Definition at line 754 of file NodeBasedCellPopulation.cpp.

References PetscTools::AmMaster(), PetscTools::AmTopMost(), EXCEPTION, and PetscTools::GetMyRank().

template<unsigned DIM>
template<class Archive >
void NodeBasedCellPopulation< DIM >::serialize ( Archive &  archive,
const unsigned int  version 
)
inlineprivate

Serialize the object and its member variables.

Note that serialization of the nodes is handled by load/save_construct_data, so we don't actually have to do anything here except delegate to the base class.

Parameters
archivethe archive
versionthe current version of this class

Definition at line 135 of file NodeBasedCellPopulation.hpp.

References NodeBasedCellPopulation< DIM >::mUseVariableRadii, and NodeBasedCellPopulation< DIM >::Validate().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::SetLoadBalanceFrequency ( unsigned  loadBalanceFrequency)

Set the freqeuncy, in number of time steps, with which the underlying mesh should be load balanced.

Parameters
loadBalanceFrequencythe frequency for load balancing.

Definition at line 337 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::SetLoadBalanceMesh ( bool  loadBalanceMesh)

Set whether to carry out the dynamic load balance algorithm on this mesh when it is updated

Parameters
loadBalanceMeshwhether to do dynamic load balancing.

Definition at line 331 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::SetNode ( unsigned  nodeIndex,
ChastePoint< DIM > &  rNewLocation 
)

Move the node with a given index to a new point in space.

Parameters
nodeIndexthe index of the node to be moved
rNewLocationthe new target location of the node

Definition at line 132 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::SetUseVariableRadii ( bool  useVariableRadii = true)

Set mUseVariableRadii.

Parameters
useVariableRadiithe new value of mUseVariableRadii

Definition at line 325 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::Update ( bool  hasHadBirthsOrDeaths = true)
virtual

Remove nodes that have been marked as deleted and update the node cell map.

Parameters
hasHadBirthsOrDeathswhether cell population has had Births Or Deaths

Implements AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 138 of file NodeBasedCellPopulation.cpp.

References PetscTools::Barrier(), and SimulationTime::Instance().

Referenced by HeterotypicBoundaryLengthWriter< ELEMENT_DIM, SPACE_DIM >::Visit().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::UpdateCellProcessLocation ( )
virtual

Update which process each cell is owned by.

Reimplemented from AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 879 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::UpdateMapsAfterRemesh ( NodeMap map)
private

Update the map between nodes and cells after a call to remesh.

Parameters
mapThe node map from ReMesh.
Todo:
we want to make mCellLocationMap private - we need to find a better way of doing this

Definition at line 184 of file NodeBasedCellPopulation.cpp.

References NodeMap::GetNewIndex(), NodeMap::IsDeleted(), and NodeMap::IsIdentityMap().

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::UpdateParticlesAfterReMesh ( NodeMap rMap)
protectedvirtual

Update mIsParticle if required by a remesh.

Parameters
rMapA map between node indices before and after remesh

Reimplemented in NodeBasedCellPopulationWithParticles< DIM >.

Definition at line 273 of file NodeBasedCellPopulation.cpp.

template<unsigned DIM>
void NodeBasedCellPopulation< DIM >::WriteVtkResultsToFile ( const std::string &  rDirectory)
privatevirtual

Overridden WriteVtkResultsToFile() method.

Parameters
rDirectorypathname of the output directory, relative to where Chaste output is stored

Implements AbstractCentreBasedCellPopulation< DIM >.

Reimplemented in NodeBasedCellPopulationWithParticles< DIM >.

Definition at line 576 of file NodeBasedCellPopulation.cpp.

References PetscTools::GetMyRank(), SimulationTime::GetTimeStepsElapsed(), SimulationTime::Instance(), PetscTools::IsSequential(), and VtkMeshWriter< ELEMENT_DIM, SPACE_DIM >::SetParallelFiles().

Friends And Related Function Documentation

template<unsigned DIM>
friend class boost::serialization::access
friend

Needed for serialization.

Definition at line 124 of file NodeBasedCellPopulation.hpp.

Member Data Documentation

template<unsigned DIM>
const unsigned NodeBasedCellPopulation< DIM >::mCellCommunicationTag = 123
staticprivate

The tag used to send and recieve cell information

Definition at line 106 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::vector<std::pair<CellPtr, Node<DIM>* > > NodeBasedCellPopulation< DIM >::mCellsToSendLeft
private

The cells to send to the left process

Definition at line 91 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::vector<std::pair<CellPtr, Node<DIM>* > > NodeBasedCellPopulation< DIM >::mCellsToSendRight
private

The cells to send to the right process

Definition at line 88 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
bool NodeBasedCellPopulation< DIM >::mDeleteMesh
private

Whether to delete the nodes-only mesh (taken in one of the constructors, defaults to false).

Definition at line 82 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::map<CellPtr, unsigned> NodeBasedCellPopulation< DIM >::mHaloCellLocationMap
private

Map halo cells back to location indices

Definition at line 115 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::vector<CellPtr> NodeBasedCellPopulation< DIM >::mHaloCells
private

Pointers to halo cells

Definition at line 109 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
ObjectCommunicator<std::vector<std::pair<CellPtr, Node<DIM>* > > > NodeBasedCellPopulation< DIM >::mLeftCommunicator
private

A communicator to send cells to the left hand process

Definition at line 103 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
unsigned NodeBasedCellPopulation< DIM >::mLoadBalanceFrequency
private

The frequency at which the mesh is rebalanced

Definition at line 121 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
bool NodeBasedCellPopulation< DIM >::mLoadBalanceMesh
private

Whether to load balance the underlying mesh dynamically

Definition at line 118 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::map<unsigned, CellPtr> NodeBasedCellPopulation< DIM >::mLocationHaloCellMap
private

Map location indices back to halo cells

Definition at line 112 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
c_vector<double, DIM> NodeBasedCellPopulation< DIM >::mMaxSpatialPositions
private

Vector of maximal spatial positions in each dimension.

Definition at line 73 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
c_vector<double, DIM> NodeBasedCellPopulation< DIM >::mMinSpatialPositions
private

Vector of minimal spatial positions in each dimension.

Definition at line 70 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::map<unsigned, std::set<unsigned> > NodeBasedCellPopulation< DIM >::mNodeNeighbours
private

Indices of neighbours of local nodes.

Definition at line 79 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
std::vector< std::pair<Node<DIM>*, Node<DIM>* > > NodeBasedCellPopulation< DIM >::mNodePairs
private

Node pairs for force calculations.

Definition at line 76 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
boost::shared_ptr<std::vector<std::pair<CellPtr, Node<DIM>* > > > NodeBasedCellPopulation< DIM >::mpCellsRecvLeft
private

A pointer to the cells received from the left process

Definition at line 97 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
boost::shared_ptr<std::vector<std::pair<CellPtr, Node<DIM>* > > > NodeBasedCellPopulation< DIM >::mpCellsRecvRight
private

A shared pointer to the cells received from the right process

Definition at line 94 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
NodesOnlyMesh<DIM>* NodeBasedCellPopulation< DIM >::mpNodesOnlyMesh
protected

Static cast of the mesh from AbstractCellPopulation.

Definition at line 65 of file NodeBasedCellPopulation.hpp.

Referenced by NodeBasedCellPopulation< DIM >::NodeBasedCellPopulation().

template<unsigned DIM>
ObjectCommunicator<std::vector<std::pair<CellPtr, Node<DIM>* > > > NodeBasedCellPopulation< DIM >::mRightCommunicator
private

A communicator to send cells to the right hand process

Definition at line 100 of file NodeBasedCellPopulation.hpp.

template<unsigned DIM>
bool NodeBasedCellPopulation< DIM >::mUseVariableRadii
private

Whether or not to have cell radii updated from CellData defaults to false.

Definition at line 85 of file NodeBasedCellPopulation.hpp.

Referenced by NodeBasedCellPopulation< DIM >::serialize().


The documentation for this class was generated from the following files: