00001
00002 #ifndef RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
00003 #define RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
00004
00005 #include "Rythmos_Types.hpp"
00006 #include "Teuchos_Describable.hpp"
00007 #include "Teuchos_VerboseObject.hpp"
00008 #include "Teuchos_ParameterListAcceptor.hpp"
00009
00010 namespace Rythmos {
00011
00012
00013
00014 template<class Scalar> class StepControlInfo;
00015 template<class Scalar> class TimeRange;
00016 template<class Scalar> class StepperBase;
00017
00018
00024 template<class Scalar>
00025 class IntegrationControlStrategyBase
00026 : virtual public Teuchos::Describable,
00027 virtual public Teuchos::VerboseObject<IntegrationControlStrategyBase<Scalar> >,
00028 virtual public Teuchos::ParameterListAcceptor
00029 {
00030 public:
00031
00037 virtual RCP<IntegrationControlStrategyBase<Scalar> >
00038 cloneIntegrationControlStrategy() const = 0;
00039
00050 virtual void resetIntegrationControlStrategy(
00051 const TimeRange<Scalar> &integrationTimeDomain
00052 ) = 0;
00053
00083 virtual StepControlInfo<Scalar>
00084 getNextStepControlInfo(
00085 const StepperBase<Scalar> &stepper,
00086 const StepControlInfo<Scalar> &stepCtrlInfoLast,
00087 const int timeStepIter
00088 ) = 0;
00089
00090 };
00091
00092
00093 }
00094
00095
00096 #endif // RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP