47 #ifndef __Teko_PreconditionerInverseFactory_hpp__
48 #define __Teko_PreconditionerInverseFactory_hpp__
50 #include "Teko_InverseFactory.hpp"
54 class PreconditionerInverseFactory :
public InverseFactory {
71 PreconditionerInverseFactory(
72 const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> >& precFactory,
73 const Teuchos::RCP<Teko::RequestHandler>& rh);
89 PreconditionerInverseFactory(
90 const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> >& precFactory,
91 const Teuchos::RCP<const Teuchos::ParameterList>& xtraParam,
92 const Teuchos::RCP<Teko::RequestHandler>& rh);
95 PreconditionerInverseFactory(
const PreconditionerInverseFactory& pFactory);
98 virtual ~PreconditionerInverseFactory() {}
112 virtual InverseLinearOp
buildInverse(
const LinearOp& linearOp)
const;
126 virtual InverseLinearOp
buildInverse(
const LinearOp& linearOp,
127 const PreconditionerState& parentState)
const;
143 virtual void rebuildInverse(
const LinearOp& source, InverseLinearOp& dest)
const;
153 virtual Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
169 virtual Teuchos::RCP<Teuchos::ParameterList> getRequestedParameters()
const;
184 virtual bool updateRequestedParameters(
const Teuchos::ParameterList& pl);
187 virtual std::string toString()
const {
return precFactory_->description(); }
190 Teuchos::RCP<const Thyra::PreconditionerFactoryBase<double> > getPrecFactory()
const {
195 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > getPrecFactory() {
return precFactory_; }
205 void setupParameterListFromRequestHandler();
208 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > precFactory_;
209 Teuchos::RCP<Teuchos::ParameterList> extraParams_;
213 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 ...