1 #ifndef VERTEXCFD_TEMPUSOBSERVER_WRITETOEXODUS_IMPL_HPP
2 #define VERTEXCFD_TEMPUSOBSERVER_WRITETOEXODUS_IMPL_HPP
9 namespace TempusObserver
12 template<
class Scalar>
13 WriteToExodus<Scalar>::WriteToExodus(
14 const Teuchos::RCP<Mesh::ExodusWriter>& exodus_writer,
15 const Teuchos::ParameterList& output_params)
16 : _exodus_writer(exodus_writer)
20 = output_params.template get<int>(
"Exodus Write Frequency");
24 template<
class Scalar>
26 const Tempus::Integrator<Scalar>& integrator)
29 writeSolution(integrator);
33 template<
class Scalar>
35 const Tempus::Integrator<Scalar>&)
40 template<
class Scalar>
46 template<
class Scalar>
48 const Tempus::Integrator<Scalar>&)
53 template<
class Scalar>
55 const Tempus::Integrator<Scalar>&)
60 template<
class Scalar>
62 const Tempus::Integrator<Scalar>&)
67 template<
class Scalar>
69 const Tempus::Integrator<Scalar>& integrator)
72 if (0 == integrator.getIndex() % _write_frequency)
74 writeSolution(integrator);
79 template<
class Scalar>
81 const Tempus::Integrator<Scalar>& integrator)
85 if (integrator.getIndex() > _last_index)
87 writeSolution(integrator);
92 template<
class Scalar>
94 const Tempus::Integrator<Scalar>& integrator)
96 const auto state = integrator.getSolutionHistory()->getCurrentState();
97 const auto time = state->getTime();
98 const auto time_step = state->getTimeStep();
99 const auto solution = state->getX();
100 const auto solution_dot = state->getXDot();
101 _exodus_writer->writeSolution(solution, solution_dot, time, time_step);
102 _last_index = integrator.getIndex();
110 #endif // end VERTEXCFD_TEMPUSOBSERVER_WRITETOEXODUS_IMPL_HPP