47 #ifndef __Teko_NeumannSeriesPreconditionerFactoryDecl_hpp__
48 #define __Teko_NeumannSeriesPreconditionerFactoryDecl_hpp__
50 #include "Teuchos_ParameterListAcceptor.hpp"
53 #include "Thyra_PreconditionerFactoryBase.hpp"
62 template <
typename ScalarT>
63 class NeumannSeriesPreconditionerFactory
64 :
public virtual Thyra::PreconditionerFactoryBase<ScalarT> {
67 NeumannSeriesPreconditionerFactory();
70 bool isCompatible(
const Thyra::LinearOpSourceBase<ScalarT> &fwdOpSrc)
const;
73 RCP<Thyra::PreconditionerBase<ScalarT> > createPrec()
const;
85 void initializePrec(
const RCP<
const Thyra::LinearOpSourceBase<ScalarT> > & fwdOpSrc,
86 const RCP<
const Thyra::MultiVectorBase<ScalarT> > & solnVec,
87 Thyra::PreconditionerBase<ScalarT> * precOp,
88 const Thyra::ESupportSolveUse supportSolveUse)
const;
98 void initializePrec(
const RCP<
const Thyra::LinearOpSourceBase<ScalarT> > & fwdOpSrc,
99 Thyra::PreconditionerBase<ScalarT> * precOp,
100 const Thyra::ESupportSolveUse supportSolveUse)
const;
103 void uninitializePrec(Thyra::PreconditionerBase<ScalarT> * prec,
104 RCP<
const Thyra::LinearOpSourceBase<ScalarT> > * fwdOpSrc,
105 Thyra::ESupportSolveUse *supportSolveUse)
const;
111 void setParameterList(Teuchos::RCP<Teuchos::ParameterList>
const& paramList);
114 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
117 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
120 Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
123 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters()
const;
130 std::string description()
const;
136 Teuchos::RCP<Teuchos::ParameterList> paramList_;
139 Teko::DiagonalType scalingType_;