OffLatticeSimulation< DIM > Class Template Reference

#include <OffLatticeSimulation.hpp>

Inherits AbstractCellBasedSimulation< DIM >.

Inherited by DeltaNotchOffLatticeSimulation< DIM >, and VolumeTrackedOffLatticeSimulation< DIM >.

Collaboration diagram for OffLatticeSimulation< DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 OffLatticeSimulation (AbstractCellPopulation< DIM > &rCellPopulation, bool deleteCellPopulationInDestructor=false, bool initialiseCells=true)
void AddForce (boost::shared_ptr< AbstractForce< DIM > > pForce)
void AddCellPopulationBoundaryCondition (boost::shared_ptr< AbstractCellPopulationBoundaryCondition< DIM > > pBoundaryCondition)
bool GetOutputNodeVelocities ()
void SetOutputNodeVelocities (bool outputNodeVelocities)
void OutputAdditionalSimulationSetup (out_stream &rParamsFile)
void OutputSimulationParameters (out_stream &rParamsFile)

Protected Member Functions

virtual void UpdateCellLocationsAndTopology ()
virtual void UpdateNodePositions (const std::vector< c_vector< double, DIM > > &rNodeForces)
virtual void SetupSolve ()
virtual void AfterSolve ()
virtual c_vector< double, DIM > CalculateCellDivisionVector (CellPtr pParentCell)
virtual void WriteVisualizerSetupFile ()

Protected Attributes

std::vector< boost::shared_ptr
< AbstractForce< DIM > > > 
mForceCollection
std::vector< boost::shared_ptr
< AbstractCellPopulationBoundaryCondition
< DIM > > > 
mBoundaryConditions
bool mOutputNodeVelocities
out_stream mpNodeVelocitiesFile

Private Member Functions

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

Friends

class boost::serialization::access

Detailed Description

template<unsigned DIM>
class OffLatticeSimulation< 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 62 of file OffLatticeSimulation.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
OffLatticeSimulation< DIM >::OffLatticeSimulation ( AbstractCellPopulation< 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 43 of file OffLatticeSimulation.cpp.

References EXCEPTION, and AbstractCellBasedSimulation< DIM >::mDt.


Member Function Documentation

template<unsigned DIM>
void OffLatticeSimulation< DIM >::AddCellPopulationBoundaryCondition ( boost::shared_ptr< AbstractCellPopulationBoundaryCondition< 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 73 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mBoundaryConditions.

template<unsigned DIM>
void OffLatticeSimulation< DIM >::AddForce ( boost::shared_ptr< AbstractForce< 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 67 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mForceCollection.

template<unsigned DIM>
void OffLatticeSimulation< DIM >::AfterSolve (  )  [inline, protected, virtual]

Overridden AfterSolve() method to close the node velocities file.

Reimplemented from AbstractCellBasedSimulation< DIM >.

Reimplemented in CryptSimulation2d.

Definition at line 325 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mOutputNodeVelocities, and OffLatticeSimulation< DIM >::mpNodeVelocitiesFile.

template<unsigned DIM>
c_vector< double, DIM > OffLatticeSimulation< 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 returns the zero vector.

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

Todo:
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.
Todo:
do something for vertex models here

Implements AbstractCellBasedSimulation< DIM >.

Reimplemented in CryptSimulation1d, and CryptSimulation2d.

Definition at line 118 of file OffLatticeSimulation.cpp.

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

template<unsigned DIM>
bool OffLatticeSimulation< DIM >::GetOutputNodeVelocities (  )  [inline]
Returns:
mOutputNodeVelocities

Definition at line 363 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mOutputNodeVelocities.

template<unsigned DIM>
void OffLatticeSimulation< 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< DIM >.

Definition at line 337 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mBoundaryConditions, and OffLatticeSimulation< DIM >::mForceCollection.

template<unsigned DIM>
void OffLatticeSimulation< 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< DIM >.

Reimplemented in CryptSimulation1d, and CryptSimulation2d.

Definition at line 375 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mOutputNodeVelocities.

template<unsigned DIM>
template<class Archive >
void OffLatticeSimulation< 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< DIM >.

Reimplemented in DeltaNotchOffLatticeSimulation< DIM >, VolumeTrackedOffLatticeSimulation< DIM >, CryptSimulation1d, and CryptSimulation2d.

Definition at line 76 of file OffLatticeSimulation.hpp.

template<unsigned DIM>
void OffLatticeSimulation< DIM >::SetOutputNodeVelocities ( bool  outputNodeVelocities  )  [inline]

Set mOutputNodeVelocities.

Parameters:
outputNodeVelocities the new value of mOutputNodeVelocities

Definition at line 369 of file OffLatticeSimulation.cpp.

References OffLatticeSimulation< DIM >::mOutputNodeVelocities.

template<unsigned DIM>
void OffLatticeSimulation< DIM >::SetupSolve (  )  [inline, protected, virtual]
template<unsigned DIM>
void OffLatticeSimulation< DIM >::UpdateCellLocationsAndTopology (  )  [inline, protected, virtual]
template<unsigned DIM>
void OffLatticeSimulation< DIM >::UpdateNodePositions ( const std::vector< c_vector< double, DIM > > &  rNodeForces  )  [inline, protected, virtual]
template<unsigned DIM>
void OffLatticeSimulation< DIM >::WriteVisualizerSetupFile (  )  [inline, protected, virtual]

Friends And Related Function Documentation

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

Member Data Documentation

template<unsigned DIM>
std::vector<boost::shared_ptr<AbstractCellPopulationBoundaryCondition<DIM> > > OffLatticeSimulation< DIM >::mBoundaryConditions [protected]
template<unsigned DIM>
std::vector<boost::shared_ptr<AbstractForce<DIM> > > OffLatticeSimulation< DIM >::mForceCollection [protected]
template<unsigned DIM>
bool OffLatticeSimulation< DIM >::mOutputNodeVelocities [protected]
template<unsigned DIM>
out_stream OffLatticeSimulation< DIM >::mpNodeVelocitiesFile [protected]

The documentation for this class was generated from the following files:
Generated on Thu Dec 22 13:06:58 2011 for Chaste by  doxygen 1.6.3