47 #ifndef __Teko_PreconditionerInverseFactory_hpp__ 48 #define __Teko_PreconditionerInverseFactory_hpp__ 50 #include "Teko_InverseFactory.hpp" 54 class PreconditionerInverseFactory :
public InverseFactory {
68 PreconditionerInverseFactory(
const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > & precFactory,
69 const Teuchos::RCP<Teko::RequestHandler> & rh);
85 PreconditionerInverseFactory(
const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > & precFactory,
86 const Teuchos::RCP<const Teuchos::ParameterList> & xtraParam,
87 const Teuchos::RCP<Teko::RequestHandler> & rh);
90 PreconditionerInverseFactory(
const PreconditionerInverseFactory & pFactory);
93 virtual ~PreconditionerInverseFactory() {}
107 virtual InverseLinearOp
buildInverse(
const LinearOp & linearOp)
const;
121 virtual InverseLinearOp
buildInverse(
const LinearOp & linearOp,
const PreconditionerState & parentState)
const;
137 virtual void rebuildInverse(
const LinearOp & source,InverseLinearOp & dest)
const;
147 virtual Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
163 virtual Teuchos::RCP<Teuchos::ParameterList> getRequestedParameters()
const;
178 virtual bool updateRequestedParameters(
const Teuchos::ParameterList & pl);
181 virtual std::string toString()
const {
return precFactory_->description(); }
184 Teuchos::RCP<const Thyra::PreconditionerFactoryBase<double> > getPrecFactory()
const 185 {
return precFactory_; }
188 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > getPrecFactory()
189 {
return precFactory_; }
199 void setupParameterListFromRequestHandler();
202 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > precFactory_;
203 Teuchos::RCP<Teuchos::ParameterList> extraParams_;
207 PreconditionerInverseFactory();
virtual InverseLinearOp buildInverse(const LinearOp &linearOp, const LinearOp &precOp) const
Build a preconditioned inverse operator.
virtual void rebuildInverse(const LinearOp &source, const LinearOp &precOp, InverseLinearOp &dest) const
Pass in an already constructed inverse operator. Update the inverse operator based on the new source ...