42 #ifndef THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_HPP 43 #define THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_HPP 46 #include "Thyra_DelayedLinearOpWithSolveFactory_decl.hpp" 47 #include "Thyra_LinearOpWithSolveBase.hpp" 48 #include "Thyra_DelayedLinearOpWithSolve.hpp" 57 template<
class Scalar>
63 TEUCHOS_TEST_FOR_EXCEPT(is_null(lowsf));
68 template<
class Scalar>
69 RCP<LinearOpWithSolveFactoryBase<Scalar> >
76 template<
class Scalar>
77 RCP<const LinearOpWithSolveFactoryBase<Scalar> >
87 template<
class Scalar>
90 std::ostringstream oss;
91 oss << this->Teuchos::Describable::description()
95 oss << lowsf_->description();
106 template<
class Scalar>
108 RCP<ParameterList>
const& paramList
111 lowsf_->setParameterList(paramList);
115 template<
class Scalar>
119 return lowsf_->getNonconstParameterList();
123 template<
class Scalar>
127 return lowsf_->unsetParameterList();
131 template<
class Scalar>
132 RCP<const ParameterList>
135 return lowsf_->getParameterList();
139 template<
class Scalar>
140 RCP<const ParameterList>
143 return lowsf_->getValidParameters();
150 template<
class Scalar>
153 return lowsf_->acceptsPreconditionerFactory();
157 template<
class Scalar>
160 const std::string &precFactoryName
163 lowsf_->setPreconditionerFactory(precFactory,precFactoryName);
167 template<
class Scalar>
168 RCP<PreconditionerFactoryBase<Scalar> >
171 return lowsf_->getPreconditionerFactory();
175 template<
class Scalar>
178 std::string *precFactoryName
181 lowsf_->unsetPreconditionerFactory(precFactory);
185 template<
class Scalar>
190 return lowsf_->isCompatible(fwdOpSrc);
194 template<
class Scalar>
195 RCP<LinearOpWithSolveBase<Scalar> >
198 RCP<LinearOpWithSolveBase<Scalar> >
200 dlows->setVerbLevel(this->getVerbLevel());
201 dlows->setOStream(this->getOStream());
206 template<
class Scalar>
215 TEUCHOS_TEST_FOR_EXCEPT(is_null(fwdOpSrc));
216 TEUCHOS_TEST_FOR_EXCEPT(0==Op);
220 dlows.
initialize( fwdOpSrc, null, null, supportSolveUse, lowsf_ );
224 template<
class Scalar>
230 TEUCHOS_TEST_FOR_EXCEPT(
true);
234 template<
class Scalar>
244 using Teuchos::dyn_cast;
247 TEUCHOS_TEST_FOR_EXCEPT(0==Op);
267 template<
class Scalar>
272 return lowsf_->supportsPreconditionerInputType(precOpType);
276 template<
class Scalar>
286 TEUCHOS_TEST_FOR_EXCEPT(is_null(fwdOpSrc));
287 TEUCHOS_TEST_FOR_EXCEPT(0==Op);
291 dlows.
initialize( fwdOpSrc, prec, null, supportSolveUse, lowsf_ );
295 template<
class Scalar>
305 TEUCHOS_TEST_FOR_EXCEPT(is_null(fwdOpSrc));
306 TEUCHOS_TEST_FOR_EXCEPT(0==Op);
310 dlows.
initialize( fwdOpSrc, null, approxFwdOpSrc, supportSolveUse, lowsf_ );
317 template<
class Scalar>
320 lowsf_->setVerbLevel(this->getVerbLevel());
321 lowsf_->setOStream(this->getOStream());
328 #endif // THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_HPP virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
std::string description() const
RCP< const ParameterList > getParameterList() const
Base class for all linear operators that can support a high-level solve operation.
virtual void initializeOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
RCP< const LinearOpSourceBase< Scalar > > getFwdOpSrc() const
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
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 ...
RCP< const ParameterList > getValidParameters() const
virtual RCP< LinearOpWithSolveBase< Scalar > > createOp() const
virtual void initializePreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
Factory interface for creating LinearOpWithSolveBase objects from compatible LinearOpBase objects...
RCP< ParameterList > getNonconstParameterList()
RCP< const LinearOpSourceBase< Scalar > > getApproxFwdOpSrc() const
void informUpdatedVerbosityState() const
Overridden from Teuchos::VerboseObjectBase.
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.
Base interface for objects that can return a linear operator.
virtual bool acceptsPreconditionerFactory() const
General delayed construction LinearOpWithSolveFactoryBase subclass.
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
RCP< LinearOpWithSolveFactoryBase< Scalar > > getUnderlyingLOWSF()
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
EPreconditionerInputType
Enum defining the status of a preconditioner object.
RCP< const PreconditionerBase< Scalar > > getPrec() const
void setParameterList(RCP< ParameterList > const ¶mList)
RCP< ParameterList > unsetParameterList()
virtual void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, RCP< const PreconditionerBase< Scalar > > *prec, RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
Delayed linear solver construction LinearOpWithSolveBase decorator class.
ESupportSolveUse getSupportSolveUse() const