53 #ifndef __Teko_DiagnosticLinearOp_hpp__ 54 #define __Teko_DiagnosticLinearOp_hpp__ 59 #include "Teko_ImplicitLinearOp.hpp" 61 #include "Teuchos_Time.hpp" 75 DiagnosticLinearOp(
const Teuchos::RCP<std::ostream> & ostrm,
const ModifiableLinearOp & A,
const std::string & diagnosticString);
81 DiagnosticLinearOp(
const Teuchos::RCP<std::ostream> & ostrm,
const LinearOp & fwdOp,
const ModifiableLinearOp & A,
const std::string & diagnosticString);
108 virtual void implicitApply(
const MultiVector & x, MultiVector & y,
109 const double alpha = 1.0,
const double beta = 0.0)
const;
112 virtual void describe(Teuchos::FancyOStream & out_arg,
113 const Teuchos::EVerbosityLevel verbLevel)
const 114 {
wrapOpA_->describe(out_arg,verbLevel); }
116 int numApplications()
const {
return timer_.numCalls(); }
117 double totalTime()
const {
return timer_.totalElapsedTime(); }
119 ModifiableLinearOp getModifiableOp()
const 122 LinearOp getLinearOp()
const 125 void setForwardOp(
const Teko::LinearOp & lo)
130 double getResidualNorm()
const 131 {
return residualNorm_; }
135 Teuchos::RCP<std::ostream> outputStream_;
138 std::string diagString_;
140 mutable double residualNorm_;
141 mutable Teuchos::Time timer_;
162 inline ModifiableLinearOp
createDiagnosticLinearOp(
const Teuchos::RCP<std::ostream> & os,
const ModifiableLinearOp & A,
const std::string & label)
181 inline ModifiableLinearOp
createDiagnosticLinearOp(
const Teuchos::RCP<std::ostream> & os,
const Teko::LinearOp & fwdOp,
const ModifiableLinearOp & A,
const std::string & label)
virtual void implicitApply(const MultiVector &x, MultiVector &y, const double alpha=1.0, const double beta=0.0) const
Perform a matrix vector multiply with this operator.
virtual VectorSpace domain() const
Domain space of this operator.
virtual ~DiagnosticLinearOp()
Destructor prints out timing information about this operator.
A virtual class that simplifies the construction of custom operators.
ModifiableLinearOp createDiagnosticLinearOp(const Teuchos::RCP< std::ostream > &os, const ModifiableLinearOp &A, const std::string &label)
Constructor method for building DiagnosticLinearOp.
This linear operator prints diagnostics about operator application and creation times. It is useful for debugging problems and determining bottle necks.
virtual VectorSpace range() const
Range space of this operator.
ModifiableLinearOp createDiagnosticLinearOp(const Teuchos::RCP< std::ostream > &os, const Teko::LinearOp &fwdOp, const ModifiableLinearOp &A, const std::string &label)
Constructor method for building DiagnosticLinearOp.
Teko::LinearOp fwdOp_
inverse of
ModifiableLinearOp wrapOpA_
inverse of