10 #ifndef THYRA_DEFAULT_SERIAL_DENSE_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
11 #define THYRA_DEFAULT_SERIAL_DENSE_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
14 #include "Thyra_DefaultSerialDenseLinearOpWithSolveFactory_decl.hpp"
15 #include "Thyra_DefaultSerialDenseLinearOpWithSolve.hpp"
16 #include "Thyra_LinearOpWithSolveFactoryHelpers.hpp"
17 #include "Thyra_ScaledAdjointLinearOpBase.hpp"
18 #include "Thyra_DefaultLinearOpSource.hpp"
27 template<
class Scalar>
37 template<
class Scalar>
49 template<
class Scalar>
56 template<
class Scalar>
66 template<
class Scalar>
74 template<
class Scalar>
84 template<
class Scalar>
94 template<
class Scalar>
98 return defaultSerialDenseLinearOpWithSolve<Scalar>();
102 template<
class Scalar>
111 using Teuchos::rcp_dynamic_cast;
119 Scalar fwdOp_scalar = 0.0;
121 unwrap<Scalar>(tmpFwdOp, &fwdOp_scalar, &fwdOp_transp, &fwdOp);
131 template<
class Scalar>
141 template<
class Scalar>
154 #endif // TEUCHOS_DEBUG
156 DSDLOWS &dsdlows =
dyn_cast<DSDLOWS>(*Op);
162 *fwdOpSrc = defaultLinearOpSource<Scalar>(fwdOp);
164 *fwdOpSrc = Teuchos::null;
167 if (prec) *prec = Teuchos::null;
168 if (approxFwdOpSrc) *approxFwdOpSrc = Teuchos::null;
172 template<
class Scalar>
182 template<
class Scalar>
194 template<
class Scalar>
209 #endif // THYRA_DEFAULT_SERIAL_DENSE_LINEAR_OP_WITH_SOLVE_FACTORY_HPP
How the output LOWSB object will be useded for solves in unspecified.
Base class for all linear operators that can support a high-level solve operation.
bool is_null(const boost::shared_ptr< T > &p)
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
Simple concreate subclass of LinearOpWithSolveBase for serial dense matrices implemented using LAPACK...
bool is_null(const std::shared_ptr< T > &p)
T_To & dyn_cast(T_From &from)
virtual void initializeOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
void initialize(const RCP< const MultiVectorBase< Scalar > > &M)
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
Throws exception.
#define TEUCHOS_TEST_FOR_EXCEPT_MSG(throw_exception_test, msg)
Interface for a collection of column vectors called a multi-vector.
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
RCP< const ParameterList > getValidParameters() const
virtual RCP< LinearOpWithSolveBase< Scalar > > createOp() const
Returns a DefaultSerialDenseLinearOpWithSolve object .
virtual void unsetPreconditionerFactory(RCP< PreconditionerFactoryBase< Scalar > > *precFactory, std::string *precFactoryName)
Throws exception.
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
Factory interface for creating preconditioner objects from LinearOpBase objects.
Base interface for objects that can return a linear operator.
void validateParameters(ParameterList const &validParamList, int const depth=1000, EValidateUsed const validateUsed=VALIDATE_USED_ENABLED, EValidateDefaults const validateDefaults=VALIDATE_DEFAULTS_ENABLED) const
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
virtual bool acceptsPreconditionerFactory() const
returns false.
virtual void initializePreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
EPreconditionerInputType
Enum defining the status of a preconditioner object.
void setParameterList(RCP< ParameterList > const ¶mList)
virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
virtual void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, RCP< const PreconditionerBase< Scalar > > *prec, RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
virtual Teuchos::RCP< const LinearOpBase< Scalar > > getOp() const =0
Return a const left preconditioner linear operator if one is designed or targeted to be applied on th...
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
Returns null .
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const