Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Tempus_StepperLeapfrogObserver.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_StepperLeapfrogObserver_hpp
10 #define Tempus_StepperLeapfrogObserver_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 StepperLeapfrog;
19 
20 /** \brief StepperLeapfrogObserver class for StepperLeapfrog.
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  * - StepperLeapfrogObserver 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 before updating xDot while initializing xDotDot
53  Teuchos::RCP<SolutionHistory<Scalar> > /* sh */,
54  StepperLeapfrog<Scalar> & /* stepperLF */){}
55 
56  /// Observe Stepper before updating x
57  virtual void observeBeforeXUpdate(
58  Teuchos::RCP<SolutionHistory<Scalar> > /* sh */,
59  StepperLeapfrog<Scalar> & /* stepperLF */){}
60 
61  /// Observe Stepper before Explicit ME evaluation.
62  virtual void observeBeforeExplicit(
63  Teuchos::RCP<SolutionHistory<Scalar> > /* sh */,
64  StepperLeapfrog<Scalar> & /* stepperLF */){}
65 
66  /// Observe Stepper before updating xDot
68  Teuchos::RCP<SolutionHistory<Scalar> > /* sh */,
69  StepperLeapfrog<Scalar> & /* stepperLF */){}
70 
71  /// Observe Stepper at end of takeStep.
72  virtual void observeEndTakeStep(
73  Teuchos::RCP<SolutionHistory<Scalar> > /* sh */,
74  Stepper<Scalar> & /* stepper */){}
75 };
76 } // namespace Tempus
77 #endif // Tempus_StepperLeapfrogObserver_hpp
virtual void observeEndTakeStep(Teuchos::RCP< SolutionHistory< Scalar > >, Stepper< Scalar > &)
Observe Stepper at end of takeStep.
virtual void observeBeforeExplicit(Teuchos::RCP< SolutionHistory< Scalar > >, StepperLeapfrog< Scalar > &)
Observe Stepper before Explicit ME evaluation.
virtual void observeBeginTakeStep(Teuchos::RCP< SolutionHistory< Scalar > >, Stepper< Scalar > &)
Observe Stepper at beginning of takeStep.
Thyra Base interface for time steppers.
StepperObserver class for Stepper class.
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
virtual void observeBeforeXUpdate(Teuchos::RCP< SolutionHistory< Scalar > >, StepperLeapfrog< Scalar > &)
Observe Stepper before updating x.
virtual void observeBeforeXDotUpdateInitialize(Teuchos::RCP< SolutionHistory< Scalar > >, StepperLeapfrog< Scalar > &)
Observe Stepper before updating xDot while initializing xDotDot.
StepperLeapfrogObserver class for StepperLeapfrog.
virtual void observeBeforeXDotUpdate(Teuchos::RCP< SolutionHistory< Scalar > >, StepperLeapfrog< Scalar > &)
Observe Stepper before updating xDot.