Tempus  Version of the Day
Time Integration
Tempus_IntegratorObserverLogging_impl.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_IntegratorObserverLogging_impl_hpp
10 #define Tempus_IntegratorObserverLogging_impl_hpp
11 
13 #include "Tempus_TimeStepControl.hpp"
14 
15 namespace Tempus {
16 
17 template<class Scalar>
19  : nameObserveStartIntegrator_ ("observeStartIntegrator" ),
20  nameObserveStartTimeStep_ ("observeStartTimeStep" ),
21  nameObserveNextTimeStep_ ("observeNextTimeStep" ),
22  nameObserveBeforeTakeStep_ ("observeBeforeTakeStep" ),
23  nameObserveAfterTakeStep_ ("observeAfterTakeStep" ),
24  nameObserveAcceptedTimeStep_("observeAcceptedTimeStep"),
25  nameObserveEndIntegrator_ ("observeEndIntegrator" )
26 {
27  counters_ = Teuchos::rcp(new std::map<std::string,int>);
28  order_ = Teuchos::rcp(new std::list<std::string>);
29  this->resetLogCounters();
30 }
31 
32 template<class Scalar>
34 
35 template<class Scalar>
38 { logCall(nameObserveStartIntegrator_); }
39 
40 template<class Scalar>
43 { logCall(nameObserveStartTimeStep_); }
44 
45 template<class Scalar>
48 { logCall(nameObserveNextTimeStep_); }
49 
50 template<class Scalar>
53 { logCall(nameObserveBeforeTakeStep_); }
54 
55 template<class Scalar>
58 { logCall(nameObserveAfterTakeStep_); }
59 
60 template<class Scalar>
63 { logCall(nameObserveAcceptedTimeStep_); }
64 
65 template<class Scalar>
68 { logCall(nameObserveEndIntegrator_); }
69 
70 template<class Scalar>
72 {
73  (*counters_)[nameObserveStartIntegrator_ ] = 0;
74  (*counters_)[nameObserveStartTimeStep_ ] = 0;
75  (*counters_)[nameObserveNextTimeStep_ ] = 0;
76  (*counters_)[nameObserveBeforeTakeStep_ ] = 0;
77  (*counters_)[nameObserveAfterTakeStep_ ] = 0;
78  (*counters_)[nameObserveAcceptedTimeStep_] = 0;
79  (*counters_)[nameObserveEndIntegrator_ ] = 0;
80  order_->clear();
81 }
82 
83 template<class Scalar>
84 Teuchos::RCP<const std::map<std::string,int> >
86 { return counters_; }
87 
88 template<class Scalar>
89 Teuchos::RCP<const std::list<std::string> >
91 { return order_; }
92 
93 template<class Scalar>
94 void IntegratorObserverLogging<Scalar>::logCall(const std::string call) const
95 {
96  (*counters_)[call] += 1;
97  order_->push_back(call);
98 }
99 
100 } // namespace Tempus
101 #endif // Tempus_IntegratorObserverLogging_impl_hpp
Tempus::IntegratorObserverLogging::observeBeforeTakeStep
virtual void observeBeforeTakeStep(const Integrator< Scalar > &integrator) override
Observe before Stepper takes step.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:52
Tempus::IntegratorObserverLogging::observeStartTimeStep
virtual void observeStartTimeStep(const Integrator< Scalar > &integrator) override
Observe the beginning of the time step loop.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:42
Tempus::IntegratorObserverLogging::getCounters
Teuchos::RCP< const std::map< std::string, int > > getCounters()
Definition: Tempus_IntegratorObserverLogging_impl.hpp:85
Tempus::IntegratorObserverLogging::getOrder
Teuchos::RCP< const std::list< std::string > > getOrder()
Definition: Tempus_IntegratorObserverLogging_impl.hpp:90
Tempus::IntegratorObserverLogging::observeStartIntegrator
virtual void observeStartIntegrator(const Integrator< Scalar > &integrator) override
Observe the beginning of the time integrator.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:37
Tempus::IntegratorObserverLogging::counters_
Teuchos::RCP< std::map< std::string, int > > counters_
Definition: Tempus_IntegratorObserverLogging_decl.hpp:86
Tempus::IntegratorObserverLogging::observeNextTimeStep
virtual void observeNextTimeStep(const Integrator< Scalar > &integrator) override
Observe after the next time step size is selected.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:47
Tempus::IntegratorObserverLogging::resetLogCounters
void resetLogCounters()
Definition: Tempus_IntegratorObserverLogging_impl.hpp:71
Tempus::IntegratorObserverLogging::order_
Teuchos::RCP< std::list< std::string > > order_
Definition: Tempus_IntegratorObserverLogging_decl.hpp:87
Tempus
Definition: Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:20
Tempus::Integrator
Thyra Base interface for time integrators. Time integrators are designed to advance the solution from...
Definition: Tempus_Integrator.hpp:62
Tempus::IntegratorObserverLogging::IntegratorObserverLogging
IntegratorObserverLogging()
Constructor.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:18
Tempus::IntegratorObserverLogging::logCall
void logCall(const std::string call) const
Asserts next call on the stack is correct and removes from stack.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:94
Tempus_IntegratorObserver.hpp
Tempus::IntegratorObserverLogging::~IntegratorObserverLogging
virtual ~IntegratorObserverLogging()
Destructor.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:33
Tempus::IntegratorObserverLogging::observeEndIntegrator
virtual void observeEndIntegrator(const Integrator< Scalar > &integrator) override
Observe the end of the time integrator.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:67
Tempus::IntegratorObserverLogging::observeAfterTakeStep
virtual void observeAfterTakeStep(const Integrator< Scalar > &integrator) override
Observe after Stepper takes step.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:57
Tempus::IntegratorObserverLogging::observeAcceptedTimeStep
virtual void observeAcceptedTimeStep(const Integrator< Scalar > &integrator) override
Observe after accepting time step.
Definition: Tempus_IntegratorObserverLogging_impl.hpp:62