VertexCFD  0.0-dev
VertexCFD_TempusObserver_WriteRestart.hpp
1 #ifndef VERTEXCFD_TEMPUSOBSERVER_WRITERESTART_HPP
2 #define VERTEXCFD_TEMPUSOBSERVER_WRITERESTART_HPP
3 
4 #include "mesh/VertexCFD_Mesh_Restart.hpp"
5 
6 #include <Tempus_Integrator.hpp>
7 #include <Tempus_IntegratorObserver.hpp>
8 
9 #include <Panzer_GlobalIndexer.hpp>
10 #include <Panzer_ResponseLibrary.hpp>
11 #include <Panzer_STK_Interface.hpp>
12 #include <Panzer_STK_ResponseEvaluatorFactory_SolutionWriter.hpp>
13 #include <Panzer_STK_Utilities.hpp>
14 
15 #include <Teuchos_ParameterList.hpp>
16 
17 namespace VertexCFD
18 {
19 namespace TempusObserver
20 {
21 //---------------------------------------------------------------------------//
22 template<class Scalar>
23 class WriteRestart : virtual public Tempus::IntegratorObserver<Scalar>
24 {
25  public:
26  WriteRestart(const Teuchos::RCP<Mesh::RestartWriter>& restart_writer,
27  const Teuchos::ParameterList& output_params);
28 
31  const Tempus::Integrator<Scalar>& integrator) override;
32 
34  void
35  observeStartTimeStep(const Tempus::Integrator<Scalar>& integrator) override;
36 
39  void
40  observeNextTimeStep(const Tempus::Integrator<Scalar>& integrator) override;
41 
43  void
44  observeBeforeTakeStep(const Tempus::Integrator<Scalar>& integrator) override;
45 
47  void
48  observeAfterTakeStep(const Tempus::Integrator<Scalar>& integrator) override;
49 
53  const Tempus::Integrator<Scalar>& integrator) override;
54 
56  void
57  observeEndTimeStep(const Tempus::Integrator<Scalar>& integrator) override;
58 
60  void
61  observeEndIntegrator(const Tempus::Integrator<Scalar>& integrator) override;
62 
63  private:
64  void writeSolution(const Tempus::Integrator<Scalar>& integrator);
65 
66  private:
67  Teuchos::RCP<Mesh::RestartWriter> _restart_writer;
68  int _write_frequency = 1;
69  int _last_index = -1;
70 };
71 
72 //---------------------------------------------------------------------------//
73 
74 } // end namespace TempusObserver
75 } // end namespace VertexCFD
76 
77 #include "VertexCFD_TempusObserver_WriteRestart_impl.hpp"
78 
79 #endif // end VERTEXCFD_TEMPUSOBSERVER_WRITERESTART_HPP
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23
VertexCFD::TempusObserver::WriteRestart::observeStartIntegrator
void observeStartIntegrator(const Tempus::Integrator< Scalar > &integrator) override
Observe the beginning of the time integrator.
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:27
VertexCFD::TempusObserver::WriteRestart::observeAfterCheckTimeStep
void observeAfterCheckTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:59
VertexCFD::TempusObserver::WriteRestart::observeNextTimeStep
void observeNextTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:40
VertexCFD::TempusObserver::WriteRestart::observeStartTimeStep
void observeStartTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe the beginning of the time step loop.
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:34
VertexCFD::TempusObserver::WriteRestart
Definition: VertexCFD_TempusObserver_WriteRestart.hpp:24
VertexCFD::TempusObserver::WriteRestart::observeEndTimeStep
void observeEndTimeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe the end of the time step loop.
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:66
VertexCFD::TempusObserver::WriteRestart::observeAfterTakeStep
void observeAfterTakeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe after Stepper takes step.
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:53
VertexCFD::TempusObserver::WriteRestart::observeEndIntegrator
void observeEndIntegrator(const Tempus::Integrator< Scalar > &integrator) override
Observe the end of the time integrator.
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:78
VertexCFD::TempusObserver::WriteRestart::observeBeforeTakeStep
void observeBeforeTakeStep(const Tempus::Integrator< Scalar > &integrator) override
Observe before Stepper takes step.
Definition: VertexCFD_TempusObserver_WriteRestart_impl.hpp:46