10#ifndef Thyra_ScaledIdentityLinearOpWithSolveFactory_hpp
11#define Thyra_ScaledIdentityLinearOpWithSolveFactory_hpp
13#include "Thyra_LinearOpWithSolveFactoryBase.hpp"
18#include "Thyra_DefaultLinearOpSource.hpp"
24template <
class Scalar>
36 void initialize(
const RCP<
const VectorSpaceBase<Scalar> > &space,
51 return Teuchos::parameterList();
56 return Teuchos::parameterList();
60 return Teuchos::parameterList();
94 virtual bool isCompatible(
const LinearOpSourceBase<Scalar> &fwdOpSrc)
const
97 Teuchos::rcp_dynamic_cast<
101 virtual RCP<LinearOpWithSolveBase<Scalar> >
createOp()
const
107 const RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc,
109 const ESupportSolveUse supportSolveUse)
const;
112 const RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc,
120 RCP<
const LinearOpSourceBase<Scalar> > *fwdOpSrc,
122 RCP<
const LinearOpSourceBase<Scalar> > *approxFwdOpSrc,
123 ESupportSolveUse *supportSolveUse)
const;
126 const EPreconditionerInputType
133 const RCP<
const LinearOpSourceBase<Scalar> > & ,
136 const ESupportSolveUse
142 const RCP<
const LinearOpSourceBase<Scalar> > & ,
143 const RCP<
const LinearOpSourceBase<Scalar> > & ,
145 const ESupportSolveUse
161 RCP<const VectorSpaceBase<Scalar> >
space_;
169template <
class Scalar>
171 const RCP<
const VectorSpaceBase<Scalar> > &space,
const Scalar &s)
173 RCP<ScaledIdentityLinearOpWithSolveFactory<Scalar> > lowsf =
175 lowsf->initialize(space, s);
181template <
class Scalar>
183 const RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc,
185 const ESupportSolveUse
188 using Teuchos::dyn_cast;
189 using Teuchos::rcp_dynamic_cast;
192 TEUCHOS_TEST_FOR_EXCEPT(0 == Op);
195 const RCP<const LinearOpBase<Scalar> > tmpFwdOp = fwdOpSrc->getOp();
196 RCP<const LinearOpBase<Scalar> > fwdOp;
197 Scalar fwdOp_scalar = 0.0;
198 EOpTransp fwdOp_transp;
199 unwrap<Scalar>(tmpFwdOp, &fwdOp_scalar, &fwdOp_transp, &fwdOp);
201 const RCP<const ScaledIdentityLinearOpWithSolve<Scalar> > fwdSi =
202 rcp_dynamic_cast<const ScaledIdentityLinearOpWithSolve<Scalar> >(fwdOp,
205 dyn_cast<ScaledIdentityLinearOpWithSolve<Scalar> >(*Op).initialize(
206 fwdSi->space(), fwdSi->scale());
209template <
class Scalar>
212 RCP<
const LinearOpSourceBase<Scalar> > *fwdOpSrc,
214 RCP<
const LinearOpSourceBase<Scalar> > *approxFwdOpSrc,
218 using Teuchos::dyn_cast;
219 using Teuchos::is_null;
221 TEUCHOS_TEST_FOR_EXCEPT(0 == Op);
225 if (fwdOpSrc) *fwdOpSrc = Teuchos::null;
226 if (prec) *prec = Teuchos::null;
227 if (approxFwdOpSrc) *approxFwdOpSrc = Teuchos::null;
Create a LinearOpWithSolveFactory for a flattened-out multi-vector.
ScaledIdentityLinearOpWithSolveFactory()
Construct to uninitialized.
virtual void initializeOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &, const RCP< const LinearOpSourceBase< Scalar > > &, LinearOpWithSolveBase< Scalar > *, const ESupportSolveUse) const
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
RCP< ScaledIdentityLinearOpWithSolveFactory< Scalar > > scaledIdentitySolveFactory(const RCP< const VectorSpaceBase< Scalar > > &space, const Scalar &s)
Nonmember constructor.
RCP< const ParameterList > getParameterList() const
RCP< const VectorSpaceBase< Scalar > > space_
RCP< const ParameterList > getValidParameters() const
void setParameterList(RCP< ParameterList > const &)
virtual RCP< LinearOpWithSolveBase< Scalar > > createOp() const
virtual void unsetPreconditionerFactory(RCP< PreconditionerFactoryBase< Scalar > > *, std::string *)
Throws exception.
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
void informUpdatedVerbosityState() const
Overridden from Teuchos::VerboseObjectBase.
virtual bool acceptsPreconditionerFactory() const
returns false.
RCP< ParameterList > unsetParameterList()
RCP< ParameterList > getNonconstParameterList()
virtual void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, RCP< const PreconditionerBase< Scalar > > *prec, RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
void initialize(const RCP< const VectorSpaceBase< Scalar > > &space, const Scalar &s)
Initialize.
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
Returns null .
virtual void initializePreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &, const RCP< const PreconditionerBase< Scalar > > &, LinearOpWithSolveBase< Scalar > *, const ESupportSolveUse) const
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &, const std::string &)
Throws exception.
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType) const
Implicit concrete LinearOpBase subclass that takes a flattended out multi-vector and performs a multi...