10 #ifndef THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
11 #define THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
14 #include "Thyra_DelayedLinearOpWithSolveFactory_decl.hpp"
15 #include "Thyra_LinearOpWithSolveBase.hpp"
16 #include "Thyra_DelayedLinearOpWithSolve.hpp"
25 template<
class Scalar>
36 template<
class Scalar>
44 template<
class Scalar>
55 template<
class Scalar>
58 std::ostringstream oss;
63 oss << lowsf_->description();
74 template<
class Scalar>
79 lowsf_->setParameterList(paramList);
83 template<
class Scalar>
87 return lowsf_->getNonconstParameterList();
91 template<
class Scalar>
95 return lowsf_->unsetParameterList();
99 template<
class Scalar>
103 return lowsf_->getParameterList();
107 template<
class Scalar>
111 return lowsf_->getValidParameters();
118 template<
class Scalar>
121 return lowsf_->acceptsPreconditionerFactory();
125 template<
class Scalar>
128 const std::string &precFactoryName
131 lowsf_->setPreconditionerFactory(precFactory,precFactoryName);
135 template<
class Scalar>
139 return lowsf_->getPreconditionerFactory();
143 template<
class Scalar>
149 lowsf_->unsetPreconditionerFactory(precFactory);
153 template<
class Scalar>
158 return lowsf_->isCompatible(fwdOpSrc);
162 template<
class Scalar>
168 dlows->setVerbLevel(this->getVerbLevel());
169 dlows->setOStream(this->getOStream());
174 template<
class Scalar>
188 dlows.
initialize( fwdOpSrc, null, null, supportSolveUse, lowsf_ );
192 template<
class Scalar>
202 template<
class Scalar>
235 template<
class Scalar>
240 return lowsf_->supportsPreconditionerInputType(precOpType);
244 template<
class Scalar>
259 dlows.
initialize( fwdOpSrc, prec, null, supportSolveUse, lowsf_ );
263 template<
class Scalar>
278 dlows.
initialize( fwdOpSrc, null, approxFwdOpSrc, supportSolveUse, lowsf_ );
285 template<
class Scalar>
288 lowsf_->setVerbLevel(this->getVerbLevel());
289 lowsf_->setOStream(this->getOStream());
296 #endif // THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
RCP< const PreconditionerBase< Scalar > > getPrec() const
virtual bool acceptsPreconditionerFactory() const
Base class for all linear operators that can support a high-level solve operation.
bool is_null(const boost::shared_ptr< T > &p)
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
virtual RCP< LinearOpWithSolveBase< Scalar > > createOp() const
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
T_To & dyn_cast(T_From &from)
virtual void unsetPreconditionerFactory(RCP< PreconditionerFactoryBase< Scalar > > *precFactory, std::string *precFactoryName)
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
std::string description() const
virtual void initializePreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
RCP< const LinearOpSourceBase< Scalar > > getFwdOpSrc() const
Factory interface for creating LinearOpWithSolveBase objects from compatible LinearOpBase objects...
RCP< ParameterList > getNonconstParameterList()
virtual void initializeOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
RCP< const ParameterList > getParameterList() const
virtual std::string description() const
void initialize(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const PreconditionerBase< Scalar > > &prec, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, const ESupportSolveUse supportSolveUse, const RCP< LinearOpWithSolveFactoryBase< Scalar > > &lowsf)
Factory interface for creating preconditioner objects from LinearOpBase objects.
RCP< const ParameterList > getValidParameters() const
ESupportSolveUse getSupportSolveUse() const
Base interface for objects that can return a linear operator.
RCP< const LinearOpSourceBase< Scalar > > getApproxFwdOpSrc() const
General delayed construction LinearOpWithSolveFactoryBase subclass.
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
void informUpdatedVerbosityState() const
Overridden from Teuchos::VerboseObjectBase.
RCP< LinearOpWithSolveFactoryBase< Scalar > > getUnderlyingLOWSF()
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
EPreconditionerInputType
Enum defining the status of a preconditioner object.
void setParameterList(RCP< ParameterList > const ¶mList)
virtual void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, RCP< const PreconditionerBase< Scalar > > *prec, RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
RCP< ParameterList > unsetParameterList()
Delayed linear solver construction LinearOpWithSolveBase decorator class.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)