3.3.0
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Member Functions | List of all members
Dumux::TimeLoop< Scalar > Class Template Reference

The default time loop for instationary simulations. More...

#include <dumux/common/timeloop.hh>

Inheritance diagram for Dumux::TimeLoop< Scalar >:

Description

template<class Scalar>
class Dumux::TimeLoop< Scalar >

The default time loop for instationary simulations.

Public Member Functions

 TimeLoop (Scalar startTime, Scalar dt, Scalar tEnd, bool verbose=true)
 

Simulated time and time step management

Dune::Timer timer_
 
Scalar time_
 
Scalar endTime_
 
Scalar timeStepSize_
 
Scalar previousTimeStepSize_
 
Scalar userSetMaxTimeStepSize_
 
Scalar timeAfterLastTimeStep_
 
Scalar timeStepWallClockTime_
 
int timeStepIdx_
 
bool finished_
 
bool verbose_
 
void start ()
 Tells the time loop to start tracking the time. More...
 
double stop ()
 Tells the time loop to stop tracking the time. More...
 
void resetTimer ()
 Reset the timer. More...
 
void reset (Scalar startTime, Scalar dt, Scalar tEnd, bool verbose=true)
 Reset the time loop. More...
 
void advanceTimeStep () override
 Advance time step. More...
 
void setTime (Scalar t)
 Set the current simulated time, don't change the current time step index. More...
 
void setTime (Scalar t, int stepIdx)
 Set the current simulated time and the time step index. More...
 
Scalar time () const final
 Return the time \(\mathrm{[s]}\) before the time integration. To get the time after the time integration you have to add timeStepSize() to time(). More...
 
Scalar endTime () const
 Returns the number of (simulated) seconds which the simulation runs. More...
 
void setEndTime (Scalar t)
 Set the time of simulated seconds at which the simulation runs. More...
 
double wallClockTime () const
 Returns the current wall clock time (cpu time) spend in this time loop. More...
 
void setTimeStepSize (Scalar dt) final
 Set the current time step size to a given value. More...
 
void setMaxTimeStepSize (Scalar maxDt)
 Set the maximum time step size to a given value. More...
 
Scalar timeStepSize () const final
 Returns the suggested time step length \(\mathrm{[s]}\) so that we don't miss the beginning of the next episode or cross the end of the simulation. More...
 
int timeStepIndex () const
 Returns number of time steps which have been executed since the beginning of the simulation. More...
 
Scalar previousTimeStepSize () const
 The previous time step size. More...
 
void setFinished (bool finished=true)
 Specify whether the simulation is finished. More...
 
bool finished () const override
 Returns true if the simulation is finished. More...
 
bool willBeFinished () const
 Returns true if the simulation is finished after the time level is incremented by the current time step size. More...
 
Scalar maxTimeStepSize () const override
 The current maximum time step size. More...
 
void reportTimeStep () const
 State info on cpu time. More...
 
template<class Communicator = Dune::CollectiveCommunication<typename Dune::MPIHelper::MPICommunicator>>
void finalize (const Communicator &comm=Dune::MPIHelper::getCollectiveCommunication())
 Print final status and stops tracking the time. More...
 
bool verbose () const
 If the time loop has verbose output. More...
 
void setVerbose (bool verbose=true)
 Sets time loop verbosity. More...
 

Constructor & Destructor Documentation

◆ TimeLoop()

template<class Scalar >
Dumux::TimeLoop< Scalar >::TimeLoop ( Scalar  startTime,
Scalar  dt,
Scalar  tEnd,
bool  verbose = true 
)
inline

Member Function Documentation

◆ advanceTimeStep()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::advanceTimeStep ( )
inlineoverridevirtual

Advance time step.

Implements Dumux::TimeLoopBase< Scalar >.

Reimplemented in Dumux::CheckPointTimeLoop< Scalar >.

◆ endTime()

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::endTime ( ) const
inline

Returns the number of (simulated) seconds which the simulation runs.

◆ finalize()

template<class Scalar >
template<class Communicator = Dune::CollectiveCommunication<typename Dune::MPIHelper::MPICommunicator>>
void Dumux::TimeLoop< Scalar >::finalize ( const Communicator &  comm = Dune::MPIHelper::getCollectiveCommunication())
inline

Print final status and stops tracking the time.

◆ finished()

template<class Scalar >
bool Dumux::TimeLoop< Scalar >::finished ( ) const
inlineoverridevirtual

Returns true if the simulation is finished.

This is the case if either setFinished(true) has been called or if the end time is reached.

Implements Dumux::TimeLoopBase< Scalar >.

◆ maxTimeStepSize()

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::maxTimeStepSize ( ) const
inlineoverridevirtual

The current maximum time step size.

Note
This gets aligned on every setTimeStepSize call to end time and other possible check points

Implements Dumux::TimeLoopBase< Scalar >.

Reimplemented in Dumux::CheckPointTimeLoop< Scalar >.

◆ previousTimeStepSize()

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::previousTimeStepSize ( ) const
inline

The previous time step size.

◆ reportTimeStep()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::reportTimeStep ( ) const
inline

State info on cpu time.

Note
Always call this after TimeLoop::advanceTimeStep()

◆ reset()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::reset ( Scalar  startTime,
Scalar  dt,
Scalar  tEnd,
bool  verbose = true 
)
inline

Reset the time loop.

◆ resetTimer()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::resetTimer ( )
inline

Reset the timer.

◆ setEndTime()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setEndTime ( Scalar  t)
inline

Set the time of simulated seconds at which the simulation runs.

Parameters
tThe time \(\mathrm{[s]}\) at which the simulation is finished

◆ setFinished()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setFinished ( bool  finished = true)
inline

Specify whether the simulation is finished.

Parameters
finishedIf true the simulation is considered finished before the end time is reached, else it is only considered finished if the end time is reached.

◆ setMaxTimeStepSize()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setMaxTimeStepSize ( Scalar  maxDt)
inline

Set the maximum time step size to a given value.

Parameters
maxDtThe new value for the maximum time step size \(\mathrm{[s]}\)
Note
This also updates the time step size

◆ setTime() [1/2]

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setTime ( Scalar  t)
inline

Set the current simulated time, don't change the current time step index.

Parameters
tThe time \(\mathrm{[s]}\) which should be jumped to

◆ setTime() [2/2]

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setTime ( Scalar  t,
int  stepIdx 
)
inline

Set the current simulated time and the time step index.

Parameters
tThe time \(\mathrm{[s]}\) which should be jumped to
stepIdxThe new time step index

◆ setTimeStepSize()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setTimeStepSize ( Scalar  dt)
inlinefinalvirtual

Set the current time step size to a given value.

If the step size would exceed the length of the current episode, the timeStep() method will take care that the step size won't exceed the episode or the end of the simulation, though.

Parameters
dtThe new value for the time step size \(\mathrm{[s]}\)

Implements Dumux::TimeLoopBase< Scalar >.

◆ setVerbose()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::setVerbose ( bool  verbose = true)
inline

Sets time loop verbosity.

◆ start()

template<class Scalar >
void Dumux::TimeLoop< Scalar >::start ( )
inline

Tells the time loop to start tracking the time.

◆ stop()

template<class Scalar >
double Dumux::TimeLoop< Scalar >::stop ( )
inline

Tells the time loop to stop tracking the time.

Returns
the wall clock time (CPU time) spent until now

◆ time()

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::time ( ) const
inlinefinalvirtual

Return the time \(\mathrm{[s]}\) before the time integration. To get the time after the time integration you have to add timeStepSize() to time().

Implements Dumux::TimeLoopBase< Scalar >.

◆ timeStepIndex()

template<class Scalar >
int Dumux::TimeLoop< Scalar >::timeStepIndex ( ) const
inline

Returns number of time steps which have been executed since the beginning of the simulation.

◆ timeStepSize()

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::timeStepSize ( ) const
inlinefinalvirtual

Returns the suggested time step length \(\mathrm{[s]}\) so that we don't miss the beginning of the next episode or cross the end of the simulation.

Implements Dumux::TimeLoopBase< Scalar >.

◆ verbose()

template<class Scalar >
bool Dumux::TimeLoop< Scalar >::verbose ( ) const
inline

If the time loop has verbose output.

◆ wallClockTime()

template<class Scalar >
double Dumux::TimeLoop< Scalar >::wallClockTime ( ) const
inline

Returns the current wall clock time (cpu time) spend in this time loop.

◆ willBeFinished()

template<class Scalar >
bool Dumux::TimeLoop< Scalar >::willBeFinished ( ) const
inline

Returns true if the simulation is finished after the time level is incremented by the current time step size.

Member Data Documentation

◆ endTime_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::endTime_
protected

◆ finished_

template<class Scalar >
bool Dumux::TimeLoop< Scalar >::finished_
protected

◆ previousTimeStepSize_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::previousTimeStepSize_
protected

◆ time_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::time_
protected

◆ timeAfterLastTimeStep_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::timeAfterLastTimeStep_
protected

◆ timer_

template<class Scalar >
Dune::Timer Dumux::TimeLoop< Scalar >::timer_
protected

◆ timeStepIdx_

template<class Scalar >
int Dumux::TimeLoop< Scalar >::timeStepIdx_
protected

◆ timeStepSize_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::timeStepSize_
protected

◆ timeStepWallClockTime_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::timeStepWallClockTime_
protected

◆ userSetMaxTimeStepSize_

template<class Scalar >
Scalar Dumux::TimeLoop< Scalar >::userSetMaxTimeStepSize_
protected

◆ verbose_

template<class Scalar >
bool Dumux::TimeLoop< Scalar >::verbose_
protected

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