Tempus  Version of the Day
Time Integration
Tempus_StepperIMEX_RKObserver.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #ifndef Tempus_StepperIMEX_RKObserver_hpp
10 #define Tempus_StepperIMEX_RKObserver_hpp
11 
12 #include "Tempus_SolutionHistory.hpp"
13 
14 
15 namespace Tempus {
16 
17 // Forward Declaration for recursive includes (this Observer <--> Stepper)
18 template<class Scalar> class StepperIMEX_RK;
19 
20 /** \brief StepperIMEX_RKObserver class for StepperIMEX_RK.
21  *
22  * This is a means for application developers to perform tasks
23  * during the time steps, e.g.,
24  * - Compute specific quantities
25  * - Output information
26  * - "Massage" the working solution state
27  * - ...
28  *
29  * <b>Design Considerations</b>
30  * - StepperIMEX_RKObserver is not stateless! Developers may touch the
31  * solution state! Developers need to be careful not to break the
32  * restart (checkpoint) capability.
33  */
34 template<class Scalar>
36  : virtual public Tempus::StepperObserver<Scalar>
37 {
38 public:
39 
40  /// Constructor
42 
43  /// Destructor
45 
46  /// Observe Stepper at beginning of takeStep.
47  virtual void observeBeginTakeStep(
48  Teuchos::RCP<SolutionHistory<Scalar> > sh,
49  Stepper<Scalar> & stepper){}
50 
51  /// Observe Stepper at beginning of each stage.
52  virtual void observeBeginStage(
53  Teuchos::RCP<SolutionHistory<Scalar> > sh,
54  StepperIMEX_RK<Scalar> & stepperIMEX_RK){}
55 
56  /// Observe Stepper before Explicit evaluation of Implicit ODE ME.
58  Teuchos::RCP<SolutionHistory<Scalar> > sh,
59  StepperIMEX_RK<Scalar> & stepperIMEX_RK){}
60 
61  /// Observe Stepper before nonlinear solve.
62  virtual void observeBeforeSolve(
63  Teuchos::RCP<SolutionHistory<Scalar> > sh,
64  StepperIMEX_RK<Scalar> & stepperIMEX_RK){}
65 
66  /// Observe Stepper after nonlinear solve.
67  virtual void observeAfterSolve(
68  Teuchos::RCP<SolutionHistory<Scalar> > sh,
69  StepperIMEX_RK<Scalar> & stepperIMEX_RK){}
70 
71  /// Observe Stepper before Explicit ME evaluation.
72  virtual void observeBeforeExplicit(
73  Teuchos::RCP<SolutionHistory<Scalar> > sh,
74  StepperIMEX_RK<Scalar> & stepperIMEX_RK){}
75 
76  /// Observe Stepper at end of each stage.
77  virtual void observeEndStage(
78  Teuchos::RCP<SolutionHistory<Scalar> > sh,
79  StepperIMEX_RK<Scalar> & stepperIMEX_RK){}
80 
81  /// Observe Stepper at end of takeStep.
82  virtual void observeEndTakeStep(
83  Teuchos::RCP<SolutionHistory<Scalar> > sh,
84  Stepper<Scalar> & stepper){}
85 };
86 } // namespace Tempus
87 #endif // Tempus_StepperIMEX_RKObserver_hpp
Tempus::StepperIMEX_RKObserver::observeAfterSolve
virtual void observeAfterSolve(Teuchos::RCP< SolutionHistory< Scalar > > sh, StepperIMEX_RK< Scalar > &stepperIMEX_RK)
Observe Stepper after nonlinear solve.
Definition: Tempus_StepperIMEX_RKObserver.hpp:67
Tempus::StepperIMEX_RKObserver::observeBeforeExplicit
virtual void observeBeforeExplicit(Teuchos::RCP< SolutionHistory< Scalar > > sh, StepperIMEX_RK< Scalar > &stepperIMEX_RK)
Observe Stepper before Explicit ME evaluation.
Definition: Tempus_StepperIMEX_RKObserver.hpp:72
Tempus::StepperIMEX_RKObserver::observeBeforeImplicitExplicitly
virtual void observeBeforeImplicitExplicitly(Teuchos::RCP< SolutionHistory< Scalar > > sh, StepperIMEX_RK< Scalar > &stepperIMEX_RK)
Observe Stepper before Explicit evaluation of Implicit ODE ME.
Definition: Tempus_StepperIMEX_RKObserver.hpp:57
Tempus::StepperIMEX_RKObserver::StepperIMEX_RKObserver
StepperIMEX_RKObserver()
Constructor.
Definition: Tempus_StepperIMEX_RKObserver.hpp:41
Tempus
Definition: Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:20
Tempus::StepperIMEX_RKObserver::observeEndStage
virtual void observeEndStage(Teuchos::RCP< SolutionHistory< Scalar > > sh, StepperIMEX_RK< Scalar > &stepperIMEX_RK)
Observe Stepper at end of each stage.
Definition: Tempus_StepperIMEX_RKObserver.hpp:77
Tempus::StepperIMEX_RKObserver::observeBeginStage
virtual void observeBeginStage(Teuchos::RCP< SolutionHistory< Scalar > > sh, StepperIMEX_RK< Scalar > &stepperIMEX_RK)
Observe Stepper at beginning of each stage.
Definition: Tempus_StepperIMEX_RKObserver.hpp:52
Tempus::StepperObserver
StepperObserver class for Stepper class.
Definition: Tempus_StepperObserver.hpp:38
Tempus::StepperIMEX_RKObserver::observeEndTakeStep
virtual void observeEndTakeStep(Teuchos::RCP< SolutionHistory< Scalar > > sh, Stepper< Scalar > &stepper)
Observe Stepper at end of takeStep.
Definition: Tempus_StepperIMEX_RKObserver.hpp:82
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition: Tempus_Integrator.hpp:25
Tempus::Stepper
Thyra Base interface for time steppers.
Definition: Tempus_Integrator.hpp:24
Tempus::StepperIMEX_RK
Implicit-Explicit Runge-Kutta (IMEX-RK) time stepper.
Definition: Tempus_StepperIMEX_RK_decl.hpp:230
Tempus::StepperIMEX_RKObserver::observeBeginTakeStep
virtual void observeBeginTakeStep(Teuchos::RCP< SolutionHistory< Scalar > > sh, Stepper< Scalar > &stepper)
Observe Stepper at beginning of takeStep.
Definition: Tempus_StepperIMEX_RKObserver.hpp:47
Tempus::StepperIMEX_RKObserver::observeBeforeSolve
virtual void observeBeforeSolve(Teuchos::RCP< SolutionHistory< Scalar > > sh, StepperIMEX_RK< Scalar > &stepperIMEX_RK)
Observe Stepper before nonlinear solve.
Definition: Tempus_StepperIMEX_RKObserver.hpp:62
Tempus::StepperIMEX_RKObserver
StepperIMEX_RKObserver class for StepperIMEX_RK.
Definition: Tempus_StepperIMEX_RKObserver.hpp:35
Tempus::StepperIMEX_RKObserver::~StepperIMEX_RKObserver
virtual ~StepperIMEX_RKObserver()
Destructor.
Definition: Tempus_StepperIMEX_RKObserver.hpp:44