10 #ifndef __Teko_PreconditionerInverseFactory_hpp__
11 #define __Teko_PreconditionerInverseFactory_hpp__
13 #include "Teko_InverseFactory.hpp"
17 class PreconditionerInverseFactory :
public InverseFactory {
34 PreconditionerInverseFactory(
35 const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> >& precFactory,
36 const Teuchos::RCP<Teko::RequestHandler>& rh);
52 PreconditionerInverseFactory(
53 const Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> >& precFactory,
54 const Teuchos::RCP<const Teuchos::ParameterList>& xtraParam,
55 const Teuchos::RCP<Teko::RequestHandler>& rh);
58 PreconditionerInverseFactory(
const PreconditionerInverseFactory& pFactory);
61 virtual ~PreconditionerInverseFactory() {}
75 virtual InverseLinearOp
buildInverse(
const LinearOp& linearOp)
const;
89 virtual InverseLinearOp
buildInverse(
const LinearOp& linearOp,
90 const PreconditionerState& parentState)
const;
106 virtual void rebuildInverse(
const LinearOp& source, InverseLinearOp& dest)
const;
116 virtual Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
132 virtual Teuchos::RCP<Teuchos::ParameterList> getRequestedParameters()
const;
147 virtual bool updateRequestedParameters(
const Teuchos::ParameterList& pl);
150 virtual std::string toString()
const {
return precFactory_->description(); }
153 Teuchos::RCP<const Thyra::PreconditionerFactoryBase<double> > getPrecFactory()
const {
158 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > getPrecFactory() {
return precFactory_; }
168 void setupParameterListFromRequestHandler();
171 Teuchos::RCP<Thyra::PreconditionerFactoryBase<double> > precFactory_;
172 Teuchos::RCP<Teuchos::ParameterList> extraParams_;
176 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 ...