10 #ifndef __Teko_PreconditionerLinearOpDecl_hpp__
11 #define __Teko_PreconditionerLinearOpDecl_hpp__
13 #include "Thyra_LinearOpBase.hpp"
14 #include "Thyra_PreconditionerBase.hpp"
15 #include "Thyra_VectorSpaceBase.hpp"
17 #include "Teuchos_ConstNonconstObjectContainer.hpp"
28 template <
typename ScalarT>
36 void initialize(
const Teuchos::RCP<Thyra::PreconditionerBase<ScalarT> >& prec);
39 void initialize(
const Teuchos::RCP<
const Thyra::PreconditionerBase<ScalarT> >& prec);
45 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> >
range()
const;
48 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> >
domain()
const;
50 virtual bool opSupportedImpl(
const Thyra::EOpTransp M_trans)
const;
53 virtual void applyImpl(
const Thyra::EOpTransp M_trans,
const Thyra::MultiVectorBase<ScalarT>& x,
54 const Teuchos::Ptr<Thyra::MultiVectorBase<ScalarT> >& y,
55 const ScalarT alpha,
const ScalarT beta)
const;
61 virtual Teuchos::RCP<const Thyra::PreconditionerBase<ScalarT> >
getPreconditioner()
const;
67 void describe(Teuchos::FancyOStream& out_arg,
const Teuchos::EVerbosityLevel verbLevel)
const;
71 Teuchos::ConstNonconstObjectContainer<Thyra::LinearOpBase<ScalarT> >
getOperator_cnoc()
const;
74 Teuchos::ConstNonconstObjectContainer<Thyra::LinearOpBase<ScalarT> >
getOperator_cnoc();
76 Teuchos::ConstNonconstObjectContainer<Thyra::PreconditionerBase<ScalarT> > preconditioner_;
91 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.