1 #ifndef VERTEXCFD_TEMPUSOBSERVER_WRITEMATRIX_HPP
2 #define VERTEXCFD_TEMPUSOBSERVER_WRITEMATRIX_HPP
4 #include <Tempus_Integrator.hpp>
5 #include <Tempus_IntegratorObserver.hpp>
7 #include <Panzer_GlobalIndexer.hpp>
8 #include <Teuchos_ParameterList.hpp>
12 namespace TempusObserver
15 template<
class Scalar>
16 class WriteMatrix :
virtual public Tempus::IntegratorObserver<Scalar>
19 WriteMatrix(
const Teuchos::ParameterList& output_params);
23 const Tempus::Integrator<Scalar>& integrator)
override;
45 const Tempus::Integrator<Scalar>& integrator)
override;
56 Teuchos::Array<int> _write_steps;
57 std::string _jacobian_prefix;
58 std::string _residual_prefix;
62 Teuchos::RCP<const Thyra::LinearOpBase<Scalar>> extractLinearOp(
63 const Teuchos::RCP<
const Thyra::LinearOpWithSolveBase<Scalar>>&
67 template<
class SolverType>
68 Teuchos::RCP<const Thyra::LinearOpBase<Scalar>> tryExtractForwardOp(
69 const Teuchos::RCP<
const Thyra::LinearOpWithSolveBase<Scalar>>&
74 write_jacobian(
const Teuchos::RCP<
const Thyra::LinearOpBase<Scalar>>& matrix,
75 const std::string& filename,
76 const std::string& description)
const;
80 write_residual(
const Teuchos::RCP<
const Thyra::VectorBase<Scalar>>& vec,
81 const std::string& filename,
82 const std::string& description)
const;
90 #include "VertexCFD_TempusObserver_WriteMatrix_impl.hpp"
92 #endif // end VERTEXCFD_TEMPUSOBSERVER_WRITEMATRIX_HPP