Chaste Release::3.1
TimeStepper Class Reference

#include <TimeStepper.hpp>

Collaboration diagram for TimeStepper:

List of all members.

Public Member Functions

 TimeStepper (double startTime, double endTime, double dt, bool enforceConstantTimeStep=false, std::vector< double > additionalTimes=std::vector< double >())
void AdvanceOneTimeStep ()
double GetTime () const
double GetNextTime () const
double GetNextTimeStep ()
double GetIdealTimeStep ()
bool IsTimeAtEnd () const
unsigned EstimateTimeSteps () const
unsigned GetTotalTimeStepsTaken () const
void ResetTimeStep (double dt)

Private Member Functions

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

Private Attributes

double mStart
double mEnd
double mDt
unsigned mTotalTimeStepsTaken
unsigned mAdditionalTimesReached
double mTime
double mNextTime
double mEpsilon
std::vector< doublemAdditionalTimes

Friends

class TestTimeStepper
class boost::serialization::access

Detailed Description

A helper class that provides a robust way to deal with time loops.

An incremented integer counter is used to calculate the current time and ensure that the correct end time.

Definition at line 52 of file TimeStepper.hpp.


Constructor & Destructor Documentation

TimeStepper::TimeStepper ( double  startTime,
double  endTime,
double  dt,
bool  enforceConstantTimeStep = false,
std::vector< double additionalTimes = std::vector<double> () 
)

Create a new time stepper over some simulation interval. Time units are not specified, but all parameters should have consistent units.

Parameters:
startTimethe start of the interval
endTimethe end of the interval
dtthe time step to use.
enforceConstantTimeStepIf this is true the stepper estimates whether non-constant timesteps will be used and quits if so.
additionalTimesIf the timestepper needs to stop at certain additional times, they can be passed in in this std::vector. Defaults to empty. These times must be in ascending order. Note that if, for example, start=0, end=0.5, dt=0.1, and the additional stopping time is 0.33, the times used will be 0,0.1,0.2,0.3,0.33,0.4,0.5 NOT ..,0.33,0.43,0.5

Definition at line 43 of file TimeStepper.cpp.

References CalculateNextTime(), EstimateTimeSteps(), EXCEPTION, mAdditionalTimes, mDt, mEnd, mEpsilon, mNextTime, and mStart.


Member Function Documentation

double TimeStepper::CalculateNextTime ( ) [private]

Compute what the time will be after the next time step.

Definition at line 105 of file TimeStepper.cpp.

References mAdditionalTimes, mAdditionalTimesReached, mDt, mEnd, mEpsilon, mStart, and mTotalTimeStepsTaken.

Referenced by AdvanceOneTimeStep(), ResetTimeStep(), and TimeStepper().

unsigned TimeStepper::EstimateTimeSteps ( ) const

Estimate number of time steps remaining, which may be an overestimate. Used to reserve memory for writing intermediate solutions.

Definition at line 191 of file TimeStepper.cpp.

References mAdditionalTimes, mDt, mEnd, and mStart.

Referenced by AbstractCardiacProblem< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DefineWriterColumns(), CvodeAdaptor::Solve(), AbstractOneStepIvpOdeSolver::Solve(), AbstractCvodeSystem::Solve(), and TimeStepper().

double TimeStepper::GetIdealTimeStep ( )

Get the size of the ideal time step (as set in the constructor. Note when a fixed time step is used GetNextTimeStep() == GetIdealTimeStep() until the end of the simulation when GetNextTimeStep() == 0.0

Definition at line 181 of file TimeStepper.cpp.

References mDt.

double TimeStepper::GetNextTimeStep ( )
void TimeStepper::ResetTimeStep ( double  dt)

Set the time step to use for adaptive time integration. Note that this also resets mStart to be the current time and zeroes mTotalTimeStepsTaken.

Parameters:
dtis the new time-step

Definition at line 201 of file TimeStepper.cpp.

References CalculateNextTime(), mDt, mNextTime, mStart, mTime, and mTotalTimeStepsTaken.

Referenced by AbstractDynamicLinearPdeSolver< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::Solve().

template<class Archive >
void TimeStepper::serialize ( Archive &  archive,
const unsigned int  version 
) [inline, private]
Parameters:
archivethe archive
versionthe current version of this class

Definition at line 180 of file TimeStepper.hpp.

References mAdditionalTimes, mAdditionalTimesReached, mDt, mEnd, mEpsilon, mNextTime, mStart, mTime, and mTotalTimeStepsTaken.


Friends And Related Function Documentation

friend class boost::serialization::access [friend]

Needed for serialization.

Definition at line 172 of file TimeStepper.hpp.


Member Data Documentation

std::vector<double> TimeStepper::mAdditionalTimes [private]

Vector to store the additional times the stepper must stop at.

Definition at line 169 of file TimeStepper.hpp.

Referenced by CalculateNextTime(), EstimateTimeSteps(), GetNextTimeStep(), serialize(), and TimeStepper().

The number of times one of the 'additional times' has been passed.

Definition at line 150 of file TimeStepper.hpp.

Referenced by CalculateNextTime(), GetNextTimeStep(), and serialize().

An architecture-dependent scaling factor. This is so that we can compare relative to the end time when mEnd is large. mEpsilon = DBL_EPSILON when mEnd is small = mEnd*DBL_EPSILON when mEnd is large

Definition at line 163 of file TimeStepper.hpp.

Referenced by CalculateNextTime(), serialize(), and TimeStepper().

What the time will be after the next time step.

Definition at line 156 of file TimeStepper.hpp.

Referenced by AdvanceOneTimeStep(), GetNextTime(), GetNextTimeStep(), ResetTimeStep(), serialize(), and TimeStepper().

The start time.

Definition at line 138 of file TimeStepper.hpp.

Referenced by CalculateNextTime(), EstimateTimeSteps(), ResetTimeStep(), serialize(), and TimeStepper().

The current time.

Definition at line 153 of file TimeStepper.hpp.

Referenced by AdvanceOneTimeStep(), GetNextTimeStep(), GetTime(), IsTimeAtEnd(), ResetTimeStep(), and serialize().

The total number of time steps taken, including those to get one of the 'additional times'.

Definition at line 147 of file TimeStepper.hpp.

Referenced by AdvanceOneTimeStep(), CalculateNextTime(), GetTotalTimeStepsTaken(), ResetTimeStep(), and serialize().


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