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" 52 namespace 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,
68 inline std::istream& operator>>(
69 std::istream& is, EBelosSolverType& sType)
73 sType = (EBelosSolverType)intval;
85 template<
class Scalar>
93 typedef typename Teuchos::ScalarTraits<Scalar>::magnitudeType
MagnitudeType;
137 const Teuchos::RCP<PreconditionerFactoryBase<Scalar> > &precFactory
145 bool acceptsPreconditionerFactory()
const;
147 void setPreconditionerFactory(
148 const Teuchos::RCP<PreconditionerFactoryBase<Scalar> > &precFactory
149 ,
const std::string &precFactoryName
152 Teuchos::RCP<PreconditionerFactoryBase<Scalar> > getPreconditionerFactory()
const;
154 void unsetPreconditionerFactory(
155 Teuchos::RCP<PreconditionerFactoryBase<Scalar> > *precFactory
156 ,std::string *precFactoryName
159 bool isCompatible(
const LinearOpSourceBase<Scalar> &fwdOpSrc )
const;
161 Teuchos::RCP<LinearOpWithSolveBase<Scalar> > createOp()
const;
164 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
165 ,LinearOpWithSolveBase<Scalar> *Op
166 ,
const ESupportSolveUse supportSolveUse
169 void initializeAndReuseOp(
170 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
171 ,LinearOpWithSolveBase<Scalar> *Op
175 LinearOpWithSolveBase<Scalar> *Op
176 ,Teuchos::RCP<
const LinearOpSourceBase<Scalar> > *fwdOpSrc
177 ,Teuchos::RCP<
const PreconditionerBase<Scalar> > *prec
178 ,Teuchos::RCP<
const LinearOpSourceBase<Scalar> > *approxFwdOpSrc
179 ,ESupportSolveUse *supportSolveUse
182 bool supportsPreconditionerInputType(
const EPreconditionerInputType precOpType)
const;
184 void initializePreconditionedOp(
185 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
186 ,
const Teuchos::RCP<
const PreconditionerBase<Scalar> > &prec
187 ,LinearOpWithSolveBase<Scalar> *Op
188 ,
const ESupportSolveUse supportSolveUse
191 void initializeApproxPreconditionedOp(
192 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
193 ,
const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &approxFwdOpSrc
194 ,LinearOpWithSolveBase<Scalar> *Op
195 ,
const ESupportSolveUse supportSolveUse
203 void setParameterList(Teuchos::RCP<Teuchos::ParameterList>
const& paramList);
205 Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
207 Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
209 Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const;
211 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters()
const;
219 std::string description()
const;
232 Teuchos::RCP<PreconditionerFactoryBase<Scalar> > precFactory_;
233 std::string precFactoryName_;
234 Teuchos::RCP<Teuchos::ParameterList> thisValidParamList_;
235 Teuchos::RCP<Teuchos::ParameterList> paramList_;
236 EBelosSolverType solverType_;
237 int convergenceTestFrequency_;
242 static Teuchos::RCP<const Teuchos::ParameterList> generateAndGetValidParameters();
244 void updateThisValidParamList();
246 void initializeOpImpl(
247 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc
248 ,
const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &approxFwdOpSrc
249 ,
const Teuchos::RCP<
const PreconditionerBase<Scalar> > &prec
250 ,
const bool reusePrec
251 ,LinearOpWithSolveBase<Scalar> *Op
252 ,
const ESupportSolveUse supportSolveUse
261 #endif // THYRA_BELOS_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP static const std::string BlockGMRES_name
static const std::string RCG_name
static const std::string MINRES_name
static const std::string SolverTypes_name
static const std::string ConvergenceTestFrequency_name
static const std::string BlockCG_name
static const std::string PseudoBlockGMRES_name
static const std::string PseudoBlockCG_name
LinearOpWithSolveFactoryBase subclass implemented in terms of Belos.
Teuchos::ScalarTraits< Scalar >::magnitudeType MagnitudeType
static const std::string PseudoBlockStochasticCG_name
static const std::string SolverType_default
static const std::string SolverType_name
static const std::string TFQMR_name
static const std::string GCRODR_name