Rythmos_IntegrationObserverBase.hpp
00001
00002 #ifndef RYTHMOS_INTEGRATION_OBSERVER_BASE_HPP
00003 #define RYTHMOS_INTEGRATION_OBSERVER_BASE_HPP
00004
00005 #include "Rythmos_Types.hpp"
00006 #include "Teuchos_Describable.hpp"
00007 #include "Teuchos_VerboseObject.hpp"
00008
00009 namespace Rythmos {
00010
00011
00012
00013 template<class Scalar> class TimeRange;
00014 template<class Scalar> class StepControlInfo;
00015 template<class Scalar> class StepperBase;
00016
00017
00023 template<class Scalar>
00024 class IntegrationObserverBase
00025 : virtual public Teuchos::Describable,
00026 virtual public Teuchos::VerboseObject<IntegrationObserverBase<Scalar> >
00027 {
00028 public:
00029
00035 virtual RCP<IntegrationObserverBase<Scalar> >
00036 cloneIntegrationObserver() const = 0;
00037
00047 virtual void resetIntegrationObserver(
00048 const TimeRange<Scalar> &integrationTimeDomain
00049 ) = 0;
00050
00074 virtual void observeCompletedTimeStep(
00075 const StepperBase<Scalar> &stepper,
00076 const StepControlInfo<Scalar> &stepCtrlInfo,
00077 const int timeStepIter
00078 ) = 0;
00079
00080 };
00081
00082
00083 }
00084
00085
00086 #endif // RYTHMOS_INTEGRATION_OBSERVER_BASE_HPP