VertexCFD  0.0-dev
VertexCFD_TempusObserver_ResponseOutput.hpp
1 #ifndef VERTEXCFD_TEMPUSOBSERVER_RESPONSEOUTPUT_HPP
2 #define VERTEXCFD_TEMPUSOBSERVER_RESPONSEOUTPUT_HPP
3 
4 #include "responses/VertexCFD_ResponseManager.hpp"
5 
6 #include <Tempus_Integrator.hpp>
7 #include <Tempus_IntegratorObserver.hpp>
8 
9 #include <Teuchos_FancyOStream.hpp>
10 #include <Teuchos_RCP.hpp>
11 
12 #include <vector>
13 
14 namespace VertexCFD
15 {
16 namespace TempusObserver
17 {
18 //---------------------------------------------------------------------------//
19 template<class Scalar>
20 class ResponseOutput : virtual public Tempus::IntegratorObserver<Scalar>
21 {
22  public:
23  ResponseOutput(Teuchos::RCP<Response::ResponseManager> response_manager,
24  std::vector<int> output_freq);
25 
28  const Tempus::Integrator<Scalar>& integrator) override;
29 
31  void
32  observeStartTimeStep(const Tempus::Integrator<Scalar>& integrator) override;
33 
36  void
37  observeNextTimeStep(const Tempus::Integrator<Scalar>& integrator) override;
38 
40  void
41  observeBeforeTakeStep(const Tempus::Integrator<Scalar>& integrator) override;
42 
44  void
45  observeAfterTakeStep(const Tempus::Integrator<Scalar>& integrator) override;
46 
50  const Tempus::Integrator<Scalar>& integrator) override;
51 
53  void
54  observeEndTimeStep(const Tempus::Integrator<Scalar>& integrator) override;
55 
57  void
58  observeEndIntegrator(const Tempus::Integrator<Scalar>& integrator) override;
59 
60  private:
61  Teuchos::FancyOStream _ostream;
62  Teuchos::RCP<Response::ResponseManager> _response_manager;
63  std::vector<int> _output_freq;
64 
65  void outputResponses(const Tempus::Integrator<Scalar>& integrator,
66  const int current_index = 0);
67 };
68 
69 //---------------------------------------------------------------------------//
70 
71 } // namespace TempusObserver
72 } // namespace VertexCFD
73 
74 #include "VertexCFD_TempusObserver_ResponseOutput_impl.hpp"
75 
76 #endif // VERTEXCFD_TEMPUSOBSERVER_RESPONSEOUTPUT_HPP
VertexCFD::TempusObserver::ResponseOutput::observeEndTimeStep
void observeEndTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe the end of the time step loop.
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:72
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23
VertexCFD::TempusObserver::ResponseOutput::observeStartTimeStep
void observeStartTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe the beginning of the time step loop.
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:37
VertexCFD::TempusObserver::ResponseOutput::observeStartIntegrator
void observeStartIntegrator(const Tempus::Integrator< Scalar > &integrator) override
Observe the beginning of the time integrator.
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:27
VertexCFD::TempusObserver::ResponseOutput::observeAfterCheckTimeStep
void observeAfterCheckTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:65
VertexCFD::TempusObserver::ResponseOutput::observeBeforeTakeStep
void observeBeforeTakeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe before Stepper takes step.
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:51
VertexCFD::TempusObserver::ResponseOutput::observeEndIntegrator
void observeEndIntegrator(const Tempus::Integrator< Scalar > &integrator) override
Observe the end of the time integrator.
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:81
VertexCFD::TempusObserver::ResponseOutput::observeNextTimeStep
void observeNextTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:44
VertexCFD::TempusObserver::ResponseOutput
Definition: VertexCFD_TempusObserver_ResponseOutput.hpp:21
VertexCFD::TempusObserver::ResponseOutput::observeAfterTakeStep
void observeAfterTakeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe after Stepper takes step.
Definition: VertexCFD_TempusObserver_ResponseOutput_impl.hpp:58