2#ifndef RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
3#define RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
5#include "Rythmos_Types.hpp"
6#include "Teuchos_Describable.hpp"
7#include "Teuchos_VerboseObject.hpp"
8#include "Teuchos_ParameterListAcceptor.hpp"
14template<
class Scalar>
class StepControlInfo;
15template<
class Scalar>
class TimeRange;
16template<
class Scalar>
class StepperBase;
26 :
virtual public Teuchos::Describable,
27 virtual public Teuchos::VerboseObject<IntegrationControlStrategyBase<Scalar> >,
28 virtual public Teuchos::ParameterListAcceptor
43 virtual RCP<IntegrationControlStrategyBase<Scalar> >
57 const TimeRange<Scalar> &integrationTimeDomain
89 virtual StepControlInfo<Scalar>
91 const StepperBase<Scalar> &stepper,
92 const StepControlInfo<Scalar> &stepCtrlInfoLast,
93 const int timeStepIter
116 const StepperBase<Scalar> &,
117 const StepControlInfo<Scalar> &,
119 const StepControlInfo<Scalar> &
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.