10#ifndef Thyra_AdjointPreconditioner_hpp
11#define Thyra_AdjointPreconditioner_hpp
13#include "Thyra_PreconditionerBase.hpp"
14#include "Teuchos_ConstNonconstObjectContainer.hpp"
15#include "Thyra_DefaultScaledAdjointLinearOp.hpp"
22template <
class Scalar>
45 return prec_.getNonconstObj();
50 return prec_.getConstObj();
62 return prec_.getConstObj()->isLeftPrecOpConst();
67 return nonconstAdjoint(
prec_.getNonconstObj()->getNonconstLeftPrecOp());
72 return adjoint(
prec_.getConstObj()->getLeftPrecOp());
77 return prec_.getConstObj()->isRightPrecOpConst();
82 return nonconstAdjoint(
prec_.getNonconstObj()->getNonconstRightPrecOp());
87 return adjoint(
prec_.getConstObj()->getRightPrecOp());
92 return prec_.getConstObj()->isUnspecifiedPrecOpConst();
97 return nonconstAdjoint(
98 prec_.getNonconstObj()->getNonconstUnspecifiedPrecOp());
103 return adjoint(
prec_.getNonconstObj()->getUnspecifiedPrecOp());
112 typedef Teuchos::ConstNonconstObjectContainer<PreconditionerBase<Scalar> >
127 TEUCHOS_TEST_FOR_EXCEPT(is_null(prec));
138template <
class Scalar>
148template <
class Scalar>
152 RCP<AdjointPreconditioner<Scalar> > aprec =
154 aprec->nonconstInitialize(prec);
162template <
class Scalar>
166 RCP<AdjointPreconditioner<Scalar> > aprec =
168 aprec->initialize(prec);
Concrete PreconditionerBase subclass that wraps a preconditioner operator in MultiVectorLinearOp.
AdjointPreconditioner()
Construct to uninitialized.
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstRightPrecOp()
Teuchos::RCP< const LinearOpBase< Scalar > > getRightPrecOp() const
bool isLeftPrecOpConst() const
RCP< PreconditionerBase< Scalar > > getNonconstPreconditioner()
Teuchos::RCP< const LinearOpBase< Scalar > > getLeftPrecOp() const
bool isUnspecifiedPrecOpConst() const
RCP< AdjointPreconditioner< Scalar > > nonconstAdjointPreconditioner(const RCP< PreconditionerBase< Scalar > > &prec)
Nonmember constructor function.
Teuchos::ConstNonconstObjectContainer< PreconditionerBase< Scalar > > CNPB
Teuchos::RCP< const LinearOpBase< Scalar > > getUnspecifiedPrecOp() const
RCP< AdjointPreconditioner< Scalar > > adjointPreconditioner(const RCP< const PreconditionerBase< Scalar > > &prec)
Nonmember constructor function.
RCP< AdjointPreconditioner< Scalar > > adjointPreconditioner()
Nonmember constructor function.
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstUnspecifiedPrecOp()
void initialize(const RCP< const PreconditionerBase< Scalar > > &prec)
bool isRightPrecOpConst() const
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstLeftPrecOp()
static void validateInitialize(const RCP< const PreconditionerBase< Scalar > > &prec)
RCP< const PreconditionerBase< Scalar > > getPreconditioner() const
void nonconstInitialize(const RCP< PreconditionerBase< Scalar > > &prec)