45#ifndef THYRA_BELOS_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
46#define THYRA_BELOS_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
48#include "Thyra_LinearOpWithSolveFactoryBase.hpp"
49#include "Teuchos_StandardMemberCompositionMacros.hpp"
50#include "Teuchos_StandardCompositionMacros.hpp"
52namespace Teuchos {
class ParameterList; }
56 enum EBelosSolverType {
57 SOLVER_TYPE_BLOCK_GMRES,
58 SOLVER_TYPE_PSEUDO_BLOCK_GMRES,
60 SOLVER_TYPE_PSEUDO_BLOCK_CG,
61 SOLVER_TYPE_PSEUDO_BLOCK_STOCHASTIC_CG,
67 SOLVER_TYPE_FIXEDPOINT,
68 SOLVER_TYPE_TPETRA_GMRES,
69 SOLVER_TYPE_TPETRA_GMRES_PIPELINE,
70 SOLVER_TYPE_TPETRA_GMRES_SINGLE_REDUCE,
71 SOLVER_TYPE_TPETRA_GMRES_SSTEP
74 inline std::istream& operator>>(
75 std::istream& is, EBelosSolverType& sType)
79 sType = (EBelosSolverType)intval;
99 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType
MagnitudeType;
155 const Teuchos::RCP<PreconditionerFactoryBase<Scalar> > &precFactory
166 const Teuchos::RCP<PreconditionerFactoryBase<Scalar> > &precFactory
167 ,
const std::string &precFactoryName
173 Teuchos::RCP<PreconditionerFactoryBase<Scalar> > *precFactory
174 ,std::string *precFactoryName
177 bool isCompatible(
const LinearOpSourceBase<Scalar> &fwdOpSrc )
const;
179 Teuchos::RCP<LinearOpWithSolveBase<Scalar> >
createOp()
const;
182 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
183 ,LinearOpWithSolveBase<Scalar> *Op
184 ,
const ESupportSolveUse supportSolveUse
188 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
189 ,LinearOpWithSolveBase<Scalar> *Op
193 LinearOpWithSolveBase<Scalar> *Op
194 ,Teuchos::RCP<
const LinearOpSourceBase<Scalar> > *fwdOpSrc
195 ,Teuchos::RCP<
const PreconditionerBase<Scalar> > *prec
196 ,Teuchos::RCP<
const LinearOpSourceBase<Scalar> > *approxFwdOpSrc
197 ,ESupportSolveUse *supportSolveUse
203 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
204 ,
const Teuchos::RCP<
const PreconditionerBase<Scalar> > &prec
205 ,LinearOpWithSolveBase<Scalar> *Op
206 ,
const ESupportSolveUse supportSolveUse
210 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
211 ,
const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &approxFwdOpSrc
212 ,LinearOpWithSolveBase<Scalar> *Op
213 ,
const ESupportSolveUse supportSolveUse
221 void setParameterList(Teuchos::RCP<Teuchos::ParameterList>
const& paramList);
250 Teuchos::RCP<PreconditionerFactoryBase<Scalar> > precFactory_;
251 std::string precFactoryName_;
252 Teuchos::RCP<Teuchos::ParameterList> thisValidParamList_;
253 Teuchos::RCP<Teuchos::ParameterList> paramList_;
254 EBelosSolverType solverType_;
255 int convergenceTestFrequency_;
260 static Teuchos::RCP<const Teuchos::ParameterList> generateAndGetValidParameters();
262 void updateThisValidParamList();
264 void initializeOpImpl(
265 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
266 ,
const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &approxFwdOpSrc
267 ,
const Teuchos::RCP<
const PreconditionerBase<Scalar> > &prec
268 ,
const bool reusePrec
269 ,LinearOpWithSolveBase<Scalar> *Op
270 ,
const ESupportSolveUse supportSolveUse
LinearOpWithSolveFactoryBase subclass implemented in terms of Belos.
static const std::string TpetraGmresSstep_name
void unsetPreconditionerFactory(Teuchos::RCP< PreconditionerFactoryBase< Scalar > > *precFactory, std::string *precFactoryName)
bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
void setParameterList(Teuchos::RCP< Teuchos::ParameterList > const ¶mList)
static const std::string TFQMR_name
static const std::string ConvergenceTestFrequency_name
static const std::string TpetraGmresPipeline_name
Teuchos::ScalarTraits< Scalar >::magnitudeType MagnitudeType
static const std::string TpetraGmresSingleReduce_name
static const std::string BlockGMRES_name
static const std::string SolverType_name
void initializePreconditionedOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const Teuchos::RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
std::string description() const
static const std::string SolverTypes_name
static const std::string MINRES_name
static const std::string SolverType_default
static const std::string BiCGStab_name
void setPreconditionerFactory(const Teuchos::RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
static const std::string GCRODR_name
static const std::string TpetraGmres_name
void initializeAndReuseOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
static const std::string PseudoBlockCG_name
Teuchos::RCP< const Teuchos::ParameterList > getParameterList() const
BelosLinearOpWithSolveFactory(const Teuchos::RCP< PreconditionerFactoryBase< Scalar > > &precFactory)
Calls this->setPreconditionerFactory(precFactory)</tt. .
static const std::string RCG_name
static const std::string BlockCG_name
void initializeOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
bool acceptsPreconditionerFactory() const
Returns true .
static const std::string FixedPoint_name
void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, Teuchos::RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, Teuchos::RCP< const PreconditionerBase< Scalar > > *prec, Teuchos::RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
BelosLinearOpWithSolveFactory()
Construct without preconditioner factory.
void initializeApproxPreconditionedOp(const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const Teuchos::RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Teuchos::RCP< LinearOpWithSolveBase< Scalar > > createOp() const
static const std::string PseudoBlockGMRES_name
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList()
static const std::string PseudoBlockStochasticCG_name
Teuchos::RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const