Rythmos - Transient Integration for Differential Equations  Version of the Day
 All Classes Functions Variables Typedefs Pages
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 
10 namespace Rythmos {
11 
12 
13 // Forwards
14 template<class Scalar> class StepControlInfo;
15 template<class Scalar> class TimeRange;
16 template<class Scalar> class StepperBase;
17 
18 
24 template<class Scalar>
26  : virtual public Teuchos::Describable,
27  virtual public Teuchos::VerboseObject<IntegrationControlStrategyBase<Scalar> >,
28  virtual public Teuchos::ParameterListAcceptor
29 {
30 public:
31 
36  virtual bool handlesFailedTimeSteps() const { return false; }
37 
43  virtual RCP<IntegrationControlStrategyBase<Scalar> >
45 
57  const TimeRange<Scalar> &integrationTimeDomain
58  ) = 0;
59 
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
virtual void resetIntegrationControlStrategy(const TimeRange< Scalar > &integrationTimeDomain)=0
Reset the control algorithm to the beginning to start a new integration.
Base class for defining stepper functionality.
virtual RCP< IntegrationControlStrategyBase< Scalar > > cloneIntegrationControlStrategy() const =0
Clone this integration control object if supported .
virtual StepControlInfo< Scalar > getNextStepControlInfo(const StepperBase< Scalar > &stepper, const StepControlInfo< Scalar > &stepCtrlInfoLast, const int timeStepIter)=0
Select the next time step control info.
Simple struct to aggregate integration/stepper control information.
Base class for strategy objects that control integration by selecting step sizes for a stepper...
virtual bool resetForFailedTimeStep(const StepperBase< Scalar > &, const StepControlInfo< Scalar > &, const int, const StepControlInfo< Scalar > &)
Inform of a failed time step.
virtual bool handlesFailedTimeSteps() const
Return if this object can handle and repond to failed time steps.