9 #ifndef Thyra_MultiVectorPreconditioner_hpp
10 #define Thyra_MultiVectorPreconditioner_hpp
12 #include "Thyra_PreconditionerBase.hpp"
13 #include "Teuchos_ConstNonconstObjectContainer.hpp"
15 #include "Thyra_DefaultMultiVectorProductVectorSpace.hpp"
22 template<
class Scalar>
54 RCP<PreconditionerBase<Scalar> >
57 RCP<const PreconditionerBase<Scalar> >
75 {
return nonconstMultiVectorLinearOp(
81 {
return multiVectorLinearOp(
90 {
return nonconstMultiVectorLinearOp(
96 {
return multiVectorLinearOp(
105 {
return nonconstMultiVectorLinearOp(
111 {
return multiVectorLinearOp(
148 (void)multiVecDomain;
158 template<
class Scalar>
159 RCP<MultiVectorPreconditioner<Scalar> >
169 template<
class Scalar>
170 RCP<MultiVectorPreconditioner<Scalar> >
177 RCP<MultiVectorPreconditioner<Scalar> >
179 mvprec->nonconstInitialize(prec,multiVecRange,multiVecDomain);
187 template<
class Scalar>
188 RCP<MultiVectorPreconditioner<Scalar> >
195 RCP<MultiVectorPreconditioner<Scalar> >
197 mvprec->initialize(prec,multiVecRange,multiVecDomain);
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstLeftPrecOp()
bool is_null(const boost::shared_ptr< T > &p)
RCP< PreconditionerBase< Scalar > > getNonconstPreconditioner()
bool isUnspecifiedPrecOpConst() const
void nonconstInitialize(const RCP< PreconditionerBase< Scalar > > &prec, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecRange, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecDomain)
Teuchos::RCP< const LinearOpBase< Scalar > > getLeftPrecOp() const
RCP< MultiVectorPreconditioner< Scalar > > multiVectorPreconditioner()
Nonmember constructor function.
RCP< const PreconditionerBase< Scalar > > getPreconditioner() const
bool isRightPrecOpConst() const
Teuchos::ConstNonconstObjectContainer< PreconditionerBase< Scalar > > CNPB
RCP< MultiVectorPreconditioner< Scalar > > nonconstMultiVectorPreconditioner(const RCP< PreconditionerBase< Scalar > > &prec, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecRange, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecDomain)
Nonmember constructor function.
Teuchos::RCP< const LinearOpBase< Scalar > > getRightPrecOp() const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
static void validateInitialize(const RCP< const PreconditionerBase< Scalar > > &prec, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecRange, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecDomain)
RCP< const ObjType > getConstObj() const
RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > multiVecRange_
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstRightPrecOp()
RCP< MultiVectorPreconditioner< Scalar > > multiVectorPreconditioner(const RCP< const PreconditionerBase< Scalar > > &prec, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecRange, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecDomain)
Nonmember constructor function.
RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > multiVecDomain_
Teuchos::RCP< const LinearOpBase< Scalar > > getUnspecifiedPrecOp() const
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstUnspecifiedPrecOp()
Concrete PreconditionerBase subclass that wraps a preconditioner operator in MultiVectorLinearOp.
MultiVectorPreconditioner()
Construct to uninitialized.
RCP< ObjType > getNonconstObj() const
void initialize(const RCP< const PreconditionerBase< Scalar > > &prec, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecRange, const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &multiVecDomain)
bool isLeftPrecOpConst() const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)