47 #ifndef __Teko_PreconditionerLinearOpDecl_hpp__
48 #define __Teko_PreconditionerLinearOpDecl_hpp__
50 #include "Thyra_LinearOpBase.hpp"
51 #include "Thyra_PreconditionerBase.hpp"
52 #include "Thyra_VectorSpaceBase.hpp"
54 #include "Teuchos_ConstNonconstObjectContainer.hpp"
65 template <
typename ScalarT>
73 void initialize(
const Teuchos::RCP<Thyra::PreconditionerBase<ScalarT> > & prec);
76 void initialize(
const Teuchos::RCP<
const Thyra::PreconditionerBase<ScalarT> > & prec);
82 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> >
range()
const;
85 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> >
domain()
const;
87 virtual bool opSupportedImpl(
const Thyra::EOpTransp M_trans)
const;
91 const Thyra::EOpTransp M_trans,
92 const Thyra::MultiVectorBase<ScalarT> & x,
93 const Teuchos::Ptr<Thyra::MultiVectorBase<ScalarT> > & y,
102 virtual Teuchos::RCP<const Thyra::PreconditionerBase<ScalarT> >
getPreconditioner()
const;
108 void describe(Teuchos::FancyOStream & out_arg,
const Teuchos::EVerbosityLevel verbLevel)
const;
111 Teuchos::ConstNonconstObjectContainer<Thyra::LinearOpBase<ScalarT> >
getOperator_cnoc()
const;
114 Teuchos::ConstNonconstObjectContainer<Thyra::LinearOpBase<ScalarT> >
getOperator_cnoc();
116 Teuchos::ConstNonconstObjectContainer<Thyra::PreconditionerBase<ScalarT> > preconditioner_;
131 inline Teko::LinearOp extractOperatorFromPrecOp(
const Teko::LinearOp & lo);
void initialize(const Teuchos::RCP< Thyra::PreconditionerBase< ScalarT > > &prec)
build a linear operator using this preconditioner, this initialization permits changes ...
virtual Teuchos::RCP< Thyra::PreconditionerBase< ScalarT > > getNonconstPreconditioner()
Get a nonconstant PreconditionerBase object.
void uninitialize()
Disassociate this object with the currently owned preconditioner.
Teko::LinearOp getOperator() const
Get teko linear operator.
virtual void applyImpl(const Thyra::EOpTransp M_trans, const Thyra::MultiVectorBase< ScalarT > &x, const Teuchos::Ptr< Thyra::MultiVectorBase< ScalarT > > &y, const ScalarT alpha, const ScalarT beta) const
Apply operation.
virtual Teuchos::RCP< const Thyra::PreconditionerBase< ScalarT > > getPreconditioner() const
Get a constant PreconditionerBase object.
Teuchos::ConstNonconstObjectContainer< Thyra::LinearOpBase< ScalarT > > getOperator_cnoc() const
get operator associated with the preconditioner
Class that wraps a PreconditionerBase object it makes it behave like a linear operator.
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > range() const
Range space of this operator.
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > domain() const
Domain space of this operator.