Chaste  Release::2018.1
AbstractCellCycleModelOdeSolver Class Referenceabstract

#include <AbstractCellCycleModelOdeSolver.hpp>

+ Inheritance diagram for AbstractCellCycleModelOdeSolver:
+ Collaboration diagram for AbstractCellCycleModelOdeSolver:

Public Member Functions

 AbstractCellCycleModelOdeSolver ()
 
virtual ~AbstractCellCycleModelOdeSolver ()
 
virtual bool IsSetUp ()=0
 
virtual void Reset ()=0
 
void SolveAndUpdateStateVariable (AbstractOdeSystem *pAbstractOdeSystem, double startTime, double endTime, double timeStep)
 
virtual void Initialise ()=0
 
bool StoppingEventOccurred ()
 
double GetStoppingTime ()
 
void SetSizeOfOdeSystem (unsigned sizeOfOdeSystem)
 
unsigned GetSizeOfOdeSystem ()
 
void CheckForStoppingEvents ()
 
void SetMaxSteps (long int numSteps)
 
void SetTolerances (double relTol=1e-4, double absTol=1e-6)
 
virtual bool IsAdaptive ()
 

Protected Attributes

boost::shared_ptr
< AbstractIvpOdeSolver
mpOdeSolver
 
unsigned mSizeOfOdeSystem
 

Private Member Functions

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

Friends

class boost::serialization::access
 

Detailed Description

This provides a wrapper around any ODE solver class, exposing roughly the same interface, for use by ODE-based cell-cycle models. Its main purpose is to allow multiple instances of the same cell-cycle model to share the same ODE solver instance.

The recommended way to use this wrapper is via the CellCycleModelOdeSolver subclass, which is templated over cell-cycle model class and ODE solver class, providing a singleton instance for each combination of template parameters.

Definition at line 56 of file AbstractCellCycleModelOdeSolver.hpp.

Constructor & Destructor Documentation

AbstractCellCycleModelOdeSolver::AbstractCellCycleModelOdeSolver ( )

Constructor.

Definition at line 39 of file AbstractCellCycleModelOdeSolver.cpp.

AbstractCellCycleModelOdeSolver::~AbstractCellCycleModelOdeSolver ( )
virtual

Virtual destructor since we have virtual methods.

Definition at line 44 of file AbstractCellCycleModelOdeSolver.cpp.

Member Function Documentation

void AbstractCellCycleModelOdeSolver::CheckForStoppingEvents ( )

If using CVODE, make the solver check for stopping events using CVODE's rootfinding functionality (by default we do not check).

Definition at line 79 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

unsigned AbstractCellCycleModelOdeSolver::GetSizeOfOdeSystem ( )
Returns
mSizeOfOdeSystem

Definition at line 74 of file AbstractCellCycleModelOdeSolver.cpp.

References mSizeOfOdeSystem.

double AbstractCellCycleModelOdeSolver::GetStoppingTime ( )

Call mpOdeSolver->GetStoppingTime.

Returns
mStoppingTime.

Definition at line 63 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

virtual void AbstractCellCycleModelOdeSolver::Initialise ( )
pure virtual

Initialise the ODE solver.

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

Implemented in CellCycleModelOdeSolver< CELL_CYCLE_MODEL, BackwardEulerIvpOdeSolver >, and CellCycleModelOdeSolver< CELL_CYCLE_MODEL, ODE_SOLVER >.

bool AbstractCellCycleModelOdeSolver::IsAdaptive ( )
virtual
Returns
true iff this is an adaptive solver such as CVODE for which it is safe to set the 'timestep' to be the outer simulation timestep, because the ODE solver will use this as its maximum, not actual, timestep.

The base class version just returns true iff the solver is the CvodeAdaptor class.

Reimplemented in CellCycleModelOdeSolver< CELL_CYCLE_MODEL, ODE_SOLVER >.

Definition at line 112 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

Referenced by CellCycleModelOdeSolver< CELL_CYCLE_MODEL, ODE_SOLVER >::IsAdaptive().

virtual bool AbstractCellCycleModelOdeSolver::IsSetUp ( )
pure virtual
Returns
whether the instance in existence and fully set up.

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

Implemented in CellCycleModelOdeSolver< CELL_CYCLE_MODEL, BackwardEulerIvpOdeSolver >, and CellCycleModelOdeSolver< CELL_CYCLE_MODEL, ODE_SOLVER >.

Referenced by CheckForStoppingEvents(), GetStoppingTime(), IsAdaptive(), SetMaxSteps(), SetTolerances(), SolveAndUpdateStateVariable(), and StoppingEventOccurred().

virtual void AbstractCellCycleModelOdeSolver::Reset ( )
pure virtual

Reset the instance.

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

Implemented in CellCycleModelOdeSolver< CELL_CYCLE_MODEL, BackwardEulerIvpOdeSolver >, and CellCycleModelOdeSolver< CELL_CYCLE_MODEL, ODE_SOLVER >.

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

Archive the object and its the member variables.

Parameters
archivethe archive
versionthe current version of this class

Definition at line 69 of file AbstractCellCycleModelOdeSolver.hpp.

References mpOdeSolver, and mSizeOfOdeSystem.

void AbstractCellCycleModelOdeSolver::SetMaxSteps ( long int  numSteps)

If using CVODE, change the maximum number of steps to be taken by the solver in its attempt to reach the next output time (default is 500).

Parameters
numStepsthe new maximum number of steps

Definition at line 90 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

void AbstractCellCycleModelOdeSolver::SetSizeOfOdeSystem ( unsigned  sizeOfOdeSystem)

Set method for mSizeOfOdeSystem.

Parameters
sizeOfOdeSystemthe new value of mSizeOfOdeSystem

Definition at line 69 of file AbstractCellCycleModelOdeSolver.cpp.

References mSizeOfOdeSystem.

void AbstractCellCycleModelOdeSolver::SetTolerances ( double  relTol = 1e-4,
double  absTol = 1e-6 
)

If using CVODE, set relative and absolute tolerances; both scalars. If no parameters are given, tolerances will be reset to default values.

Parameters
relTolthe relative tolerance for the solver
absTolthe absolute tolerance for the solver

Definition at line 101 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

void AbstractCellCycleModelOdeSolver::SolveAndUpdateStateVariable ( AbstractOdeSystem pAbstractOdeSystem,
double  startTime,
double  endTime,
double  timeStep 
)

Call mpOdeSolver->SolveAndUpdateStateVariable.

Parameters
pAbstractOdeSystempointer to the concrete ODE system to be solved
startTimethe time at which the initial conditions are specified
endTimethe time to which the system should be solved and the solution returned
timeStepthe time interval to be used by the solver

Definition at line 48 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

bool AbstractCellCycleModelOdeSolver::StoppingEventOccurred ( )
Returns
whether the solver quit due to the ODE's stopping event triggering

Definition at line 57 of file AbstractCellCycleModelOdeSolver.cpp.

References IsSetUp(), and mpOdeSolver.

Friends And Related Function Documentation

friend class boost::serialization::access
friend

Needed for serialization.

Definition at line 61 of file AbstractCellCycleModelOdeSolver.hpp.

Member Data Documentation


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