9 #ifndef Thyra_ReuseLinearOpWithSolveFactory_hpp
10 #define Thyra_ReuseLinearOpWithSolveFactory_hpp
12 #include "Thyra_LinearOpWithSolveFactoryBase.hpp"
20 template <
class Scalar>
97 const std::string &precFactoryName);
106 std::string *precFactoryName);
110 virtual RCP<LinearOpWithSolveBase<Scalar> >
createOp()
const;
159 RCP<PreconditionerBase<Scalar> >
prec_;
166 template <
class Scalar>
167 RCP<ReuseLinearOpWithSolveFactory<Scalar> >
172 RCP<ReuseLinearOpWithSolveFactory<Scalar> > rlowsf =
174 rlowsf->nonconstInitialize(lowsf, prec);
182 template <
class Scalar>
187 RCP<ReuseLinearOpWithSolveFactory<Scalar> > rlowsf =
189 rlowsf->initialize(lowsf, prec);
195 template <
class Scalar>
204 lowsf_.initialize(lowsf);
208 template <
class Scalar>
217 lowsf_.initialize(lowsf);
221 template <
class Scalar>
222 RCP<LinearOpWithSolveFactoryBase<Scalar> >
225 return lowsf_.getNonconstObj();
228 template <
class Scalar>
229 RCP<const LinearOpWithSolveFactoryBase<Scalar> >
232 return lowsf_.getConstObj();
235 template <
class Scalar>
236 RCP<PreconditionerBase<Scalar> >
242 template <
class Scalar>
243 RCP<const PreconditionerBase<Scalar> >
251 template <
class Scalar>
254 std::ostringstream oss;
257 if (!
is_null(lowsf_.getConstObj()))
258 oss << lowsf_.getConstObj()->description();
264 oss << prec_->description();
273 template <
class Scalar>
275 RCP<ParameterList>
const ¶mList)
277 lowsf_.getNonconstObj()->setParameterList(paramList);
280 template <
class Scalar>
284 return lowsf_.getNonconstObj()->getNonconstParameterList();
287 template <
class Scalar>
290 return lowsf_.getNonconstObj()->unsetParameterList();
293 template <
class Scalar>
294 RCP<const ParameterList>
297 return lowsf_.getConstObj()->getParameterList();
300 template <
class Scalar>
301 RCP<const ParameterList>
304 return lowsf_.getConstObj()->getValidParameters();
309 template <
class Scalar>
315 template <
class Scalar>
323 template <
class Scalar>
324 RCP<PreconditionerFactoryBase<Scalar> >
327 return Thyra::reusePreconditionerFactory<Scalar>(prec_);
330 template <
class Scalar>
338 template <
class Scalar>
342 return lowsf_.getConstObj()->isCompatible(fwdOpSrc);
345 template <
class Scalar>
346 RCP<LinearOpWithSolveBase<Scalar> >
349 return lowsf_.getConstObj()->createOp();
352 template <
class Scalar>
358 lowsf_.getConstObj()->initializeOp(fwdOpSrc, Op, supportSolveUse);
361 template <
class Scalar>
366 lowsf_.getConstObj()->initializeAndReuseOp(fwdOpSrc, Op);
369 template <
class Scalar>
377 lowsf_.getConstObj()->uninitializeOp(Op, fwdOpSrc, prec, approxFwdOpSrc,
381 template <
class Scalar>
385 return lowsf_.getConstObj()->supportsPreconditionerInputType(precOpType);
388 template <
class Scalar>
395 lowsf_.getConstObj()->initializePreconditionedOp(fwdOpSrc, prec, Op,
399 template <
class Scalar>
406 lowsf_.getConstObj()->initializeApproxPreconditionedOp(
407 fwdOpSrc, approxFwdOpSrc, Op, supportSolveUse);
412 template <
class Scalar>
415 lowsf_.getConstObj()->setVerbLevel(this->getVerbLevel());
416 lowsf_.getConstObj()->setOStream(this->getOStream());
virtual void unsetPreconditionerFactory(RCP< PreconditionerFactoryBase< Scalar > > *precFactory, std::string *precFactoryName)
Throws exception.
RCP< LinearOpWithSolveFactoryBase< Scalar > > getUnderlyingLOWSF()
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
Throws exception.
virtual void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, RCP< const PreconditionerBase< Scalar > > *prec, RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
std::string description() const
bool is_null(const boost::shared_ptr< T > &p)
A LinearOpWithSolveFactory that is designed to reuse an already created/initialized preconditioner...
RCP< ParameterList > getNonconstParameterList()
Teuchos::ConstNonconstObjectContainer< LinearOpWithSolveFactoryBase< Scalar > > LOWSF_t
RCP< PreconditionerBase< Scalar > > prec_
virtual bool acceptsPreconditionerFactory() const
returns false.
RCP< const ParameterList > getValidParameters() const
RCP< ReuseLinearOpWithSolveFactory< Scalar > > reuseLinearOpWithSolveFactory(const RCP< const LinearOpWithSolveFactoryBase< Scalar > > &lowsf, const RCP< PreconditionerBase< Scalar > > &prec)
Nonmember constructor.
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
RCP< const ParameterList > getParameterList() const
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
void informUpdatedVerbosityState() const
Overridden from Teuchos::VerboseObjectBase.
virtual void initializeOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
virtual 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
RCP< PreconditionerBase< Scalar > > getUnderlyingPreconditioner()
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
RCP< ReuseLinearOpWithSolveFactory< Scalar > > nonconstReuseLinearOpWithSolveFactory(const RCP< LinearOpWithSolveFactoryBase< Scalar > > &lowsf, const RCP< PreconditionerBase< Scalar > > &prec)
Nonmember constructor.
RCP< ParameterList > unsetParameterList()
virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
void nonconstInitialize(const RCP< LinearOpWithSolveFactoryBase< Scalar > > &lowsf, const RCP< PreconditionerBase< Scalar > > &prec)
Initialize given a single non-const LOWSFB object.
void setParameterList(RCP< ParameterList > const ¶mList)
ReuseLinearOpWithSolveFactory()
Construct to uninitialized.
void initialize(const RCP< const LinearOpWithSolveFactoryBase< Scalar > > &lowsf, const RCP< PreconditionerBase< Scalar > > &prec)
Initialize given a single const LOWSFB object.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
virtual RCP< LinearOpWithSolveBase< Scalar > > createOp() const
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
Returns null .