47 #ifndef __Teko_PreconditionerInverseFactory_hpp__
48 #define __Teko_PreconditionerInverseFactory_hpp__
50 #include "Teko_InverseFactory.hpp"
54 class PreconditionerInverseFactory :
public InverseFactory {
71 PreconditionerInverseFactory(
const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > & precFactory,
72 const Teuchos::RCP<Teko::RequestHandler> & rh);
88 PreconditionerInverseFactory(
const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > & precFactory,
89 const Teuchos::RCP<const Teuchos::ParameterList> & xtraParam,
90 const Teuchos::RCP<Teko::RequestHandler> & rh);
93 PreconditionerInverseFactory(
const PreconditionerInverseFactory & pFactory);
96 virtual ~PreconditionerInverseFactory() {}
110 virtual InverseLinearOp
buildInverse(
const LinearOp & linearOp)
const;
124 virtual InverseLinearOp
buildInverse(
const LinearOp & linearOp,
const PreconditionerState & parentState)
const;
140 virtual void rebuildInverse(
const LinearOp & source,InverseLinearOp & dest)
const;
150 virtual Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
166 virtual Teuchos::RCP<Teuchos::ParameterList> getRequestedParameters()
const;
181 virtual bool updateRequestedParameters(
const Teuchos::ParameterList & pl);
184 virtual std::string toString()
const {
return precFactory_->description(); }
187 Teuchos::RCP<const Thyra::PreconditionerFactoryBase<double> > getPrecFactory()
const
188 {
return precFactory_; }
191 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > getPrecFactory()
192 {
return precFactory_; }
202 void setupParameterListFromRequestHandler();
205 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > precFactory_;
206 Teuchos::RCP<Teuchos::ParameterList> extraParams_;
210 PreconditionerInverseFactory();
virtual InverseLinearOp buildInverse(const LinearOp &linearOp) const =0
Build an inverse operator.
virtual InverseLinearOp buildInverse(const LinearOp &linearOp, const LinearOp &) const
Build a preconditioned inverse operator.
virtual void rebuildInverse(const LinearOp &source, const LinearOp &, InverseLinearOp &dest) const
Pass in an already constructed inverse operator. Update the inverse operator based on the new source ...
virtual void rebuildInverse(const LinearOp &source, InverseLinearOp &dest) const =0
Pass in an already constructed inverse operator. Update the inverse operator based on the new source ...