OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM > Class Template Reference

#include <OffLatticeSimulation.hpp>

Inherits AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Collaboration diagram for OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 OffLatticeSimulation (AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > &rCellPopulation, bool deleteCellPopulationInDestructor=false, bool initialiseCells=true)
void AddForce (boost::shared_ptr< AbstractForce< ELEMENT_DIM, SPACE_DIM > > pForce)
void RemoveAllForces ()
void AddCellPopulationBoundaryCondition (boost::shared_ptr< AbstractCellPopulationBoundaryCondition< ELEMENT_DIM, SPACE_DIM > > pBoundaryCondition)
void RemoveAllCellPopulationBoundaryConditions ()
void OutputAdditionalSimulationSetup (out_stream &rParamsFile)
virtual void OutputSimulationParameters (out_stream &rParamsFile)

Protected Member Functions

virtual void UpdateCellLocationsAndTopology ()
virtual void UpdateNodePositions ()
virtual void SetupSolve ()
virtual c_vector< double,
SPACE_DIM > 
CalculateCellDivisionVector (CellPtr pParentCell)
virtual void WriteVisualizerSetupFile ()

Protected Attributes

std::vector< boost::shared_ptr
< AbstractForce< ELEMENT_DIM,
SPACE_DIM > > > 
mForceCollection
std::vector< boost::shared_ptr
< AbstractCellPopulationBoundaryCondition
< ELEMENT_DIM, SPACE_DIM > > > 
mBoundaryConditions

Private Member Functions

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

Friends

class boost::serialization::access
class TestOffLatticeSimulationWithNodeBasedCellPopulation

Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
class OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >

Run an off-lattice 2D or 3D cell-based simulation using a cell-centre- or vertex-based cell population.

In cell-centre-based cell populations, each cell is represented by a single node (corresponding to its centre), and connectivity is defined either by a Delaunay triangulation or a radius of influence. In vertex- based cell populations, each cell is represented by a polytope (corresponding to its membrane) with a variable number of vertices.

The OffLatticeSimulation is constructed with a CellPopulation, which updates the correspondence between each Cell and its spatial representation and handles cell division (governed by the CellCycleModel associated with each cell). Once constructed, one or more Force laws may be passed to the OffLatticeSimulation object, to define the mechanical properties of the CellPopulation. Similarly, one or more CellKillers may be passed to the OffLatticeSimulation object to specify conditions in which Cells may die, and one or more CellPopulationBoundaryConditions to specify regions in space beyond which Cells may not move.

Definition at line 69 of file OffLatticeSimulation.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::OffLatticeSimulation ( AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM > &  rCellPopulation,
bool  deleteCellPopulationInDestructor = false,
bool  initialiseCells = true 
) [inline]

Constructor.

Parameters:
rCellPopulation Reference to a cell population object
deleteCellPopulationInDestructor Whether to delete the cell population on destruction to free up memory (defaults to false)
initialiseCells Whether to initialise cells (defaults to true, set to false when loading from an archive)

Definition at line 50 of file OffLatticeSimulation.cpp.

References AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::AddCellKiller(), EXCEPTION, MAKE_PTR_ARGS, and AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::mDt.


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::AddCellPopulationBoundaryCondition ( boost::shared_ptr< AbstractCellPopulationBoundaryCondition< ELEMENT_DIM, SPACE_DIM > >  pBoundaryCondition  )  [inline]

Add a cell population boundary condition to be used in this simulation.

Parameters:
pBoundaryCondition pointer to a boundary condition

Definition at line 91 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mBoundaryConditions.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::AddForce ( boost::shared_ptr< AbstractForce< ELEMENT_DIM, SPACE_DIM > >  pForce  )  [inline]

Add a force to be used in this simulation (use this to set the mechanics system).

Parameters:
pForce pointer to a force law

Definition at line 79 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mForceCollection.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::CalculateCellDivisionVector ( CellPtr  pParentCell  )  [inline, protected, virtual]

Overridden CalculateCellDivisionVector() method for determining how cell division occurs. This method returns a vector which is then passed into the CellPopulation method AddCell(). This method may be overridden by subclasses.

For a centre-based cell population, this method calculates the new locations of the cell centres of a dividing cell, moves the parent cell and returns the location of the daughter cell. The new locations are found by picking a random direction and placing the parent and daughter in opposing directions along this axis.

For a vertex-based cell population, the method calls the AbstractVertexBasedDivisionRule which is a member of the cell population.

Parameters:
pParentCell the parent cell
Returns:
a vector containing information on cell division.

Todo:
#2400 Could remove this dynamic_cast by moving the code block below into AbstractCentreBasedCellPopulation::AddCell(), allowing it to be overruled by this method when overridden in subclasses. See also comment on #1093.

Implements AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in CryptSimulation1d, and CryptSimulation2d.

Definition at line 132 of file OffLatticeSimulation.cpp.

References VertexBasedCellPopulation< DIM >::GetVertexBasedDivisionRule(), RandomNumberGenerator::Instance(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::mrCellPopulation, NEVER_REACHED, and RandomNumberGenerator::ranf().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::OutputAdditionalSimulationSetup ( out_stream &  rParamsFile  )  [inline, virtual]

Overridden OutputAdditionalSimulationSetup method to output the force and cell population boundary condition information.

Parameters:
rParamsFile the file stream to which the parameters are output

Reimplemented from AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Definition at line 308 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mBoundaryConditions, and OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mForceCollection.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::OutputSimulationParameters ( out_stream &  rParamsFile  )  [inline, virtual]

Outputs simulation parameters to file

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

Parameters:
rParamsFile the file stream to which the parameters are output

Implements AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in CryptSimulation1d, and CryptSimulation2d.

Definition at line 334 of file OffLatticeSimulation.cpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::RemoveAllCellPopulationBoundaryConditions (  )  [inline]

Method to remove all the cell population boundary conditions

Definition at line 97 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mBoundaryConditions.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::RemoveAllForces (  )  [inline]

Method to remove all the Forces

Definition at line 85 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mForceCollection.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
template<class Archive >
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]

Save or restore the simulation.

Parameters:
archive the archive
version the current version of this class

Reimplemented from AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in CryptSimulation1d, and CryptSimulation2d.

Definition at line 84 of file OffLatticeSimulation.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::SetupSolve (  )  [inline, protected, virtual]

Overridden SetupSolve() method to clear the forces applied to the nodes.

Reimplemented from AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in CryptSimulation2d.

Definition at line 295 of file OffLatticeSimulation.cpp.

References AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::mrCellPopulation.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::UpdateCellLocationsAndTopology (  )  [inline, protected, virtual]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::UpdateNodePositions (  )  [inline, protected, virtual]

Moves each node to a new position for this timestep by calling the CellPopulation::UpdateNodeLocations() method then applying any boundary conditions.

Definition at line 257 of file OffLatticeSimulation.cpp.

References EXCEPTION, OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mBoundaryConditions, AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::mDt, and AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::mrCellPopulation.

Referenced by OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::UpdateCellLocationsAndTopology().

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
void OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::WriteVisualizerSetupFile (  )  [inline, protected, virtual]

Friends And Related Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
friend class boost::serialization::access [friend]

Needed for serialization.

Reimplemented from AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >.

Reimplemented in CryptSimulation1d, and CryptSimulation2d.

Definition at line 74 of file OffLatticeSimulation.hpp.


Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
std::vector<boost::shared_ptr<AbstractCellPopulationBoundaryCondition<ELEMENT_DIM,SPACE_DIM> > > OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mBoundaryConditions [protected]
template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
std::vector<boost::shared_ptr<AbstractForce<ELEMENT_DIM, SPACE_DIM> > > OffLatticeSimulation< ELEMENT_DIM, SPACE_DIM >::mForceCollection [protected]

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

Generated by  doxygen 1.6.2