Rythmos - Transient Integration for Differential Equations Version of the Day
Loading...
Searching...
No Matches
Rythmos_IntegrationControlStrategyBase.hpp
1
2#ifndef RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
3#define RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
4
5#include "Rythmos_Types.hpp"
6#include "Teuchos_Describable.hpp"
7#include "Teuchos_VerboseObject.hpp"
8#include "Teuchos_ParameterListAcceptor.hpp"
9
10namespace Rythmos {
11
12
13// Forwards
14template<class Scalar> class StepControlInfo;
15template<class Scalar> class TimeRange;
16template<class Scalar> class StepperBase;
17
18
24template<class Scalar>
26 : virtual public Teuchos::Describable,
27 virtual public Teuchos::VerboseObject<IntegrationControlStrategyBase<Scalar> >,
28 virtual public Teuchos::ParameterListAcceptor
29{
30public:
31
36 virtual bool handlesFailedTimeSteps() const { return false; }
37
43 virtual RCP<IntegrationControlStrategyBase<Scalar> >
45
57 const TimeRange<Scalar> &integrationTimeDomain
58 ) = 0;
59
89 virtual StepControlInfo<Scalar>
91 const StepperBase<Scalar> &stepper,
92 const StepControlInfo<Scalar> &stepCtrlInfoLast,
93 const int timeStepIter
94 ) = 0;
95
116 const StepperBase<Scalar> &/* stepper */,
117 const StepControlInfo<Scalar> &/* stepCtrlInfoLast */,
118 const int /* timeStepIter */,
119 const StepControlInfo<Scalar> &/* stepCtrlInfo */
120 )
121 { return false; }
122
123
124};
125
126
127} // namespace Rythmos
128
129
130#endif // RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
Base class for strategy objects that control integration by selecting step sizes for a stepper.
virtual RCP< IntegrationControlStrategyBase< Scalar > > cloneIntegrationControlStrategy() const =0
Clone this integration control object if supported .
virtual bool resetForFailedTimeStep(const StepperBase< Scalar > &, const StepControlInfo< Scalar > &, const int, const StepControlInfo< Scalar > &)
Inform of a failed time step.
virtual StepControlInfo< Scalar > getNextStepControlInfo(const StepperBase< Scalar > &stepper, const StepControlInfo< Scalar > &stepCtrlInfoLast, const int timeStepIter)=0
Select the next time step control info.
virtual void resetIntegrationControlStrategy(const TimeRange< Scalar > &integrationTimeDomain)=0
Reset the control algorithm to the beginning to start a new integration.
virtual bool handlesFailedTimeSteps() const
Return if this object can handle and repond to failed time steps.