Rythmos - Transient Integration for Differential Equations Version of the Day
Rythmos_IntegrationControlStrategyBase.hpp
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 // Forwards
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 
00036   virtual bool handlesFailedTimeSteps() const { return false; }
00037 
00043   virtual RCP<IntegrationControlStrategyBase<Scalar> >
00044   cloneIntegrationControlStrategy() const = 0;
00045 
00056   virtual void resetIntegrationControlStrategy(
00057     const TimeRange<Scalar> &integrationTimeDomain
00058     ) = 0;
00059 
00089   virtual StepControlInfo<Scalar>
00090   getNextStepControlInfo(
00091     const StepperBase<Scalar> &stepper,
00092     const StepControlInfo<Scalar> &stepCtrlInfoLast,
00093     const int timeStepIter
00094     ) = 0;
00095 
00115   virtual bool resetForFailedTimeStep(
00116     const StepperBase<Scalar> &stepper,
00117     const StepControlInfo<Scalar> &stepCtrlInfoLast,
00118     const int timeStepIter,
00119     const StepControlInfo<Scalar> &stepCtrlInfo
00120     )
00121     { return false; }
00122 
00123 
00124 };
00125 
00126 
00127 } // namespace Rythmos
00128 
00129 
00130 #endif // RYTHMOS_INTEGRATION_CONTROL_STRATEGY_BASE_HPP
 All Classes Functions Variables Typedefs Friends