1 #ifndef VERTEXCFD_TEMPUSOBSERVER_WRITERESTART_IMPL_HPP
2 #define VERTEXCFD_TEMPUSOBSERVER_WRITERESTART_IMPL_HPP
9 namespace TempusObserver
12 template<
class Scalar>
13 WriteRestart<Scalar>::WriteRestart(
14 const Teuchos::RCP<Mesh::RestartWriter>& restart_writer,
15 const Teuchos::ParameterList& output_params)
16 : _restart_writer(restart_writer)
18 if (output_params.isType<
int>(
"Restart Write Frequency"))
21 = output_params.template get<int>(
"Restart Write Frequency");
26 template<
class Scalar>
28 const Tempus::Integrator<Scalar>&)
33 template<
class Scalar>
39 template<
class Scalar>
45 template<
class Scalar>
47 const Tempus::Integrator<Scalar>&)
52 template<
class Scalar>
58 template<
class Scalar>
60 const Tempus::Integrator<Scalar>&)
65 template<
class Scalar>
67 const Tempus::Integrator<Scalar>& integrator)
70 if (0 == integrator.getIndex() % _write_frequency)
72 writeSolution(integrator);
77 template<
class Scalar>
79 const Tempus::Integrator<Scalar>& integrator)
83 if (integrator.getIndex() > _last_index)
85 writeSolution(integrator);
90 template<
class Scalar>
92 const Tempus::Integrator<Scalar>& integrator)
94 auto time = integrator.getTime();
95 auto solution = integrator.getSolutionHistory()->findState(time)->getX();
97 = integrator.getSolutionHistory()->findState(time)->getXDot();
98 _last_index = integrator.getIndex();
99 _restart_writer->writeSolution(solution, solution_dot, _last_index, time);
107 #endif // end VERTEXCFD_TEMPUSOBSERVER_WRITERESTART_IMPL_HPP