Chaste Commit::1fd4e48e3990e67db148bc1bc4cf6991a0049d0c
|
#include <SimulationTime.hpp>
Public Member Functions | |
void | SetEndTimeAndNumberOfTimeSteps (double endTime, unsigned totalTimeStepsInSimulation) |
void | ResetEndTimeAndNumberOfTimeSteps (const double &rEndTime, const unsigned &rNumberOfTimeStepsInThisRun) |
double | GetTimeStep () const |
void | IncrementTimeOneStep () |
unsigned | GetTimeStepsElapsed () const |
double | GetTime () const |
bool | IsStartTimeSetUp () const |
bool | IsEndTimeAndNumberOfTimeStepsSetUp () const |
bool | IsFinished () const |
void | SetStartTime (double startTime) |
Public Member Functions inherited from SerializableSingleton< SimulationTime > | |
SerializableSingleton< SimulationTime > * | GetSerializationWrapper () const |
Static Public Member Functions | |
static SimulationTime * | Instance () |
static void | Destroy () |
Protected Member Functions | |
SimulationTime () | |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &archive, const unsigned int version) |
Private Attributes | |
double | mStartTime |
Static Private Attributes | |
static SimulationTime * | mpInstance = nullptr |
static boost::shared_ptr< TimeStepper > | mpTimeStepper |
Friends | |
class | boost::serialization::access |
Simulation time object stores the simulation time. It uses the singleton pattern to provide a globally consistent time.
Note that the start time, end time and number of time steps must be set before time can be incremented and returned.
You should generally use the calls IncrementTimeOneStep() and GetTime() when using this class.
Definition at line 55 of file SimulationTime.hpp.
|
protected |
Default simulation time constructor
Sets up time, you must set the start time, end time and number of time steps before using the object.
Definition at line 57 of file SimulationTime.cpp.
References mpInstance.
Referenced by Instance().
|
static |
Destroy the current SimulationTime instance. The next call to Instance will create a new instance, on which SetEndTimeAndNumberOfTimeSteps must be called again to reset time.
This method *must* be called before program exit, to avoid a memory leak.
Definition at line 65 of file SimulationTime.cpp.
References mpInstance.
Referenced by Instance(), and AbstractCellBasedTestSuite::tearDown().
double SimulationTime::GetTime | ( | ) | const |
Get the simulation time (in hours), should not have rounding errors.
Definition at line 92 of file SimulationTime.cpp.
References DOUBLE_UNSET, mpTimeStepper, and mStartTime.
Referenced by SimpleOxygenBasedCellCycleModel::SimpleOxygenBasedCellCycleModel(), T2SwapCellKiller< DIM >::CheckAndLabelCellsForApoptosisOrDeath(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::DoCellBirth(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GenerateRemovalInformation(), AbstractCellCycleModel::GetAge(), AbstractCellBasedSimulation< ELEMENT_DIM, ELEMENT_DIM >::GetOutputCellVelocities(), Cell::GetTimeUntilDeath(), AbstractOdeBasedCellCycleModel::ReadyToDivide(), AbstractCellCycleModel::ResetForDivision(), CellBasedSimulationArchiver< ELEMENT_DIM, SIM, SPACE_DIM >::Save(), AbstractOdeSrnModel::SimulateToCurrentTime(), NullSrnModel::SimulateToCurrentTime(), Cell::StartApoptosis(), AbstractPdeModifier< DIM >::UpdateAtEndOfOutputTimeStep(), ParabolicBoxDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), ParabolicGrowingDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), AbstractOdeBasedPhaseBasedCellCycleModel::UpdateCellCyclePhase(), ContactInhibitionCellCycleModel::UpdateCellCyclePhase(), SimpleOxygenBasedCellCycleModel::UpdateHypoxicDuration(), NormallyDistributedTargetAreaModifier< DIM >::UpdateTargetAreaOfCell(), SimpleTargetAreaModifier< DIM >::UpdateTargetAreaOfCell(), TargetAreaLinearGrowthModifier< DIM >::UpdateTargetAreaOfCell(), DiscreteSystemForceCalculator::WriteResultsToFile(), and AbstractCellBasedWriter< ELEMENT_DIM, SPACE_DIM >::WriteTimeStamp().
double SimulationTime::GetTimeStep | ( | ) | const |
Get the simulation time step, set in earlier calls.
Warning: Use of this method may result in round errors; generally use GetTime() instead.
Definition at line 74 of file SimulationTime.cpp.
References mpTimeStepper.
Referenced by DiffusionForce< DIM >::AddForceContribution(), CryptProjectionForce::CalculateForceBetweenNodes(), CellCycleModelOdeHandler::GetDt(), BernoulliTrialCellCycleModel::ReadyToDivide(), BiasedBernoulliTrialCellCycleModel::ReadyToDivide(), LabelDependentBernoulliTrialCellCycleModel::ReadyToDivide(), ImmersedBoundarySimulationModifier< DIM >::SetupConstantMemberVariables(), ImmersedBoundarySimulationModifier< DIM >::SolveNavierStokesSpectral(), ParabolicBoxDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), ParabolicGrowingDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), ExtrinsicPullModifier< DIM >::UpdateAtEndOfTimeStep(), ContactInhibitionCellCycleModel::UpdateCellCyclePhase(), SimpleOxygenBasedCellCycleModel::UpdateCellCyclePhase(), NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), and NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit().
unsigned SimulationTime::GetTimeStepsElapsed | ( | ) | const |
Get the number of time steps that have elapsed.
Definition at line 86 of file SimulationTime.cpp.
References mpTimeStepper.
Referenced by AbstractPdeModifier< DIM >::UpdateAtEndOfOutputTimeStep(), ImmersedBoundarySvgWriter< DIM >::UpdateAtEndOfTimeStep(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::UpdateCellPopulation(), OnLatticeSimulation< DIM >::UpdateCellPopulation(), ImmersedBoundaryCellPopulation< DIM >::UpdateNodeLocations(), VertexBasedCellPopulation< DIM >::WriteCellEdgeVtkResultsToFile(), VertexBasedCellPopulation< DIM >::WriteCellVtkResultsToFile(), CaBasedCellPopulation< DIM >::WriteVtkResultsToFile(), ImmersedBoundaryCellPopulation< DIM >::WriteVtkResultsToFile(), MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile(), NodeBasedCellPopulation< DIM >::WriteVtkResultsToFile(), NodeBasedCellPopulationWithParticles< DIM >::WriteVtkResultsToFile(), and PottsBasedCellPopulation< DIM >::WriteVtkResultsToFile().
void SimulationTime::IncrementTimeOneStep | ( | ) |
Increment the simulation time by one time step.
GetTime() will return an updated current time after this call.
Definition at line 80 of file SimulationTime.cpp.
References mpTimeStepper.
|
static |
Definition at line 46 of file SimulationTime.cpp.
References SimulationTime(), Destroy(), mpInstance, and mpTimeStepper.
Referenced by Cell::Cell(), SimpleOxygenBasedCellCycleModel::SimpleOxygenBasedCellCycleModel(), MeshBasedCellPopulation< DIM >::~MeshBasedCellPopulation(), DiffusionForce< DIM >::AddForceContribution(), ImmersedBoundarySimulationModifier< DIM >::AddNormalNoise(), CryptProjectionForce::CalculateForceBetweenNodes(), ImmersedBoundaryKinematicFeedbackForce< DIM >::CalculateRelativeVelocityComponent(), T2SwapCellKiller< DIM >::CheckAndLabelCellsForApoptosisOrDeath(), RandomCellKiller< DIM >::CheckAndLabelSingleCellForApoptosis(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::DoCellBirth(), AbstractCellPopulation< ELEMENT_DIM, SPACE_DIM >::GenerateRemovalInformation(), AbstractCellCycleModel::GetAge(), VertexBasedCellPopulation< DIM >::GetDampingConstant(), CellCycleModelOdeHandler::GetDt(), Cell::GetTimeUntilDeath(), Cell::IsDead(), AbstractOdeBasedCellCycleModel::ReadyToDivide(), BernoulliTrialCellCycleModel::ReadyToDivide(), BiasedBernoulliTrialCellCycleModel::ReadyToDivide(), LabelDependentBernoulliTrialCellCycleModel::ReadyToDivide(), AbstractCellCycleModel::ResetForDivision(), AbstractSrnModel::ResetForDivision(), CellSrnModel::ResetForDivision(), CellBasedSimulationArchiver< ELEMENT_DIM, SIM, SPACE_DIM >::Save(), AbstractCellCycleModel::serialize(), AbstractSrnModel::serialize(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::serialize(), MeshBasedCellPopulation< DIM >::SetBoundVoronoiTessellation(), AbstractCellBasedTestSuite::setUp(), ImmersedBoundarySimulationModifier< DIM >::SetupConstantMemberVariables(), AbstractOdeSrnModel::SimulateToCurrentTime(), NullSrnModel::SimulateToCurrentTime(), ImmersedBoundarySimulationModifier< DIM >::SolveNavierStokesSpectral(), Cell::StartApoptosis(), NodeBasedCellPopulation< DIM >::Update(), AbstractPdeModifier< DIM >::UpdateAtEndOfOutputTimeStep(), ParabolicBoxDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), ParabolicGrowingDomainPdeModifier< DIM >::UpdateAtEndOfTimeStep(), ExtrinsicPullModifier< DIM >::UpdateAtEndOfTimeStep(), ImmersedBoundarySimulationModifier< DIM >::UpdateAtEndOfTimeStep(), ImmersedBoundarySvgWriter< DIM >::UpdateAtEndOfTimeStep(), AbstractOdeBasedPhaseBasedCellCycleModel::UpdateCellCyclePhase(), ContactInhibitionCellCycleModel::UpdateCellCyclePhase(), SimpleOxygenBasedCellCycleModel::UpdateCellCyclePhase(), AbstractWntOdeBasedCellCycleModel::UpdateCellCyclePhase(), SingleOdeWntCellCycleModel::UpdateCellCyclePhase(), AbstractCellBasedSimulation< ELEMENT_DIM, SPACE_DIM >::UpdateCellPopulation(), OnLatticeSimulation< DIM >::UpdateCellPopulation(), SimpleOxygenBasedCellCycleModel::UpdateHypoxicDuration(), ImmersedBoundaryCellPopulation< DIM >::UpdateNodeLocations(), NormallyDistributedTargetAreaModifier< DIM >::UpdateTargetAreaOfCell(), SimpleTargetAreaModifier< DIM >::UpdateTargetAreaOfCell(), TargetAreaLinearGrowthModifier< DIM >::UpdateTargetAreaOfCell(), ImmersedBoundaryCellPopulation< DIM >::Validate(), NodeBasedCellPopulation< DIM >::Validate(), PottsBasedCellPopulation< DIM >::Validate(), VertexBasedCellPopulation< DIM >::Validate(), NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), NodeVelocityWriter< ELEMENT_DIM, SPACE_DIM >::Visit(), VertexBasedCellPopulation< DIM >::WriteCellEdgeVtkResultsToFile(), VertexBasedCellPopulation< DIM >::WriteCellVtkResultsToFile(), DiscreteSystemForceCalculator::WriteResultsToFile(), AbstractCellBasedWriter< ELEMENT_DIM, SPACE_DIM >::WriteTimeStamp(), CaBasedCellPopulation< DIM >::WriteVtkResultsToFile(), ImmersedBoundaryCellPopulation< DIM >::WriteVtkResultsToFile(), MeshBasedCellPopulationWithGhostNodes< DIM >::WriteVtkResultsToFile(), NodeBasedCellPopulation< DIM >::WriteVtkResultsToFile(), NodeBasedCellPopulationWithParticles< DIM >::WriteVtkResultsToFile(), and PottsBasedCellPopulation< DIM >::WriteVtkResultsToFile().
bool SimulationTime::IsEndTimeAndNumberOfTimeStepsSetUp | ( | ) | const |
Allows lower classes to check whether the simulation time class has been set up before using it
Definition at line 141 of file SimulationTime.cpp.
References mpTimeStepper.
bool SimulationTime::IsFinished | ( | ) | const |
Definition at line 153 of file SimulationTime.cpp.
References mpTimeStepper.
bool SimulationTime::IsStartTimeSetUp | ( | ) | const |
Allows lower classes to check whether the simulation time class has been set up before using it
Definition at line 136 of file SimulationTime.cpp.
References DOUBLE_UNSET, and mStartTime.
Referenced by CellBasedSimulationArchiver< ELEMENT_DIM, SIM, SPACE_DIM >::Save().
void SimulationTime::ResetEndTimeAndNumberOfTimeSteps | ( | const double & | rEndTime, |
const unsigned & | rNumberOfTimeStepsInThisRun | ||
) |
Reset method for the end time and the number of time steps, to run the simulation further after a first initial run.
rEndTime | the new end time for this simulation (the simulation will run from the current time to this new end time, NOT from 0 to this end time) |
rNumberOfTimeStepsInThisRun | the number of time steps into which the next run is split |
Definition at line 122 of file SimulationTime.cpp.
References DOUBLE_UNSET, mpTimeStepper, and mStartTime.
Referenced by AbstractCellBasedSimulation< ELEMENT_DIM, ELEMENT_DIM >::SetEndTime().
|
inlineprivate |
Serialization of a SimulationTime object must be done with care. Do not serialize this singleton directly. Instead, serialize the object returned by GetSerializationWrapper.
archive | the archive |
version | the current version of this class |
Definition at line 187 of file SimulationTime.hpp.
References mpTimeStepper, and mStartTime.
void SimulationTime::SetEndTimeAndNumberOfTimeSteps | ( | double | endTime, |
unsigned | totalTimeStepsInSimulation | ||
) |
Sets the end time and the number of time steps. This must be called after SetStartTime() but before using any other methods.
endTime | time at which to end this run of the simulation |
totalTimeStepsInSimulation | the number of time steps into which the above will be divided |
Definition at line 111 of file SimulationTime.cpp.
References DOUBLE_UNSET, mpTimeStepper, and mStartTime.
Referenced by AbstractCellBasedSimulation< ELEMENT_DIM, ELEMENT_DIM >::SetSamplingTimestepMultiple().
void SimulationTime::SetStartTime | ( | double | startTime | ) |
Set the start time of the simulation
startTime | the time at which the simulation begins (usually 0.0 hours) |
Definition at line 105 of file SimulationTime.cpp.
References DOUBLE_UNSET, and mStartTime.
Referenced by AbstractCellBasedTestSuite::setUp().
|
friend |
Needed for serialization.
Definition at line 176 of file SimulationTime.hpp.
|
staticprivate |
A pointer to the singleton instance of this class.
Pointer to the single instance
Definition at line 163 of file SimulationTime.hpp.
Referenced by SimulationTime(), Destroy(), and Instance().
|
staticprivate |
Delegate all time stepping to a TimeStepper class
Shared pointer to the delegated class
Definition at line 168 of file SimulationTime.hpp.
Referenced by GetTime(), GetTimeStep(), GetTimeStepsElapsed(), IncrementTimeOneStep(), Instance(), IsEndTimeAndNumberOfTimeStepsSetUp(), IsFinished(), ResetEndTimeAndNumberOfTimeSteps(), serialize(), and SetEndTimeAndNumberOfTimeSteps().
|
private |
Stores the time at which the simulation started
Definition at line 173 of file SimulationTime.hpp.
Referenced by GetTime(), IsStartTimeSetUp(), ResetEndTimeAndNumberOfTimeSteps(), serialize(), SetEndTimeAndNumberOfTimeSteps(), and SetStartTime().