10#ifndef THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_BASE_DEF_HPP
11#define THYRA_LINEAR_OP_WITH_SOLVE_FACTORY_BASE_DEF_HPP
14#include "Thyra_LinearOpWithSolveFactoryBase_decl.hpp"
35 ,
"Error, the concrete implementation described as \'"<<this->description()<<
"\' did not override this "
36 "setPreconditionerFactory(...) function and the default implementation throws this exception!"
52 ,std::string *precFactoryName
56 if(precFactoryName) *precFactoryName =
"";
66 this->initializeOp(fwdOpSrc,Op);
89 ,
"Error, the concrete implementation described as \'"<<this->description()<<
"\' did not override this "
90 "initializePreconditionedOp(...) function and the default implementation throws this exception!"
104 true,std::logic_error
105 ,
"Error, the concrete implementation described as \'"<<this->description()<<
"\' did not override this "
106 "initializePreconditionedOp(...) function and the default implementation throws this exception!"
Base interface for objects that can return a linear operator.
Base class for all linear operators that can support a high-level solve operation.
virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED) const
Initialize a pre-created LinearOpWithSolveBase object given a "compatible" forward LinearOpBase objec...
virtual void initializePreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED) const
Initialize a pre-created LinearOpWithSolveBase object given a "compatible" LinearOpBase object and an...
virtual bool acceptsPreconditionerFactory() const
Determines if *this accepts external preconditioner factories.
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
Get a preconditioner factory object.
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
Initialize a pre-created LinearOpWithSolveBase object given a "compatible" LinearOpBase object but al...
virtual void unsetPreconditionerFactory(RCP< PreconditionerFactoryBase< Scalar > > *precFactory=NULL, std::string *precFactoryName=NULL)
Unset the preconditioner factory (if one is set).
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
Set a preconditioner factory object.
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
Determines if *this supports given preconditioner type.
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
Factory interface for creating preconditioner objects from LinearOpBase objects.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
EPreconditionerInputType
Enum defining the status of a preconditioner object.
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
T_To & dyn_cast(T_From &from)