Thyra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_DelayedLinearOpWithSolveFactory_decl.hpp
1 // @HEADER
2 // *****************************************************************************
3 // Thyra: Interfaces and Support for Abstract Numerical Algorithms
4 //
5 // Copyright 2004 NTESS and the Thyra contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
11 #define THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
12 
13 
14 #include "Thyra_LinearOpWithSolveFactoryBase.hpp"
15 #include "Thyra_LinearOpSourceBase.hpp"
16 
17 
18 namespace Thyra {
19 
20 
29 template<class Scalar>
31  : virtual public LinearOpWithSolveFactoryBase<Scalar>
32 {
33 public:
34 
37 
41  );
42 
45 
48 
50 
53 
55  std::string description() const;
56 
58 
61 
63  void setParameterList(RCP<ParameterList> const& paramList);
72 
74 
77 
79  virtual bool acceptsPreconditionerFactory() const;
80 
82  virtual void setPreconditionerFactory(
83  const RCP<PreconditionerFactoryBase<Scalar> > &precFactory,
84  const std::string &precFactoryName
85  );
86 
90 
92  virtual void unsetPreconditionerFactory(
94  std::string *precFactoryName
95  );
96 
98  virtual bool isCompatible(
99  const LinearOpSourceBase<Scalar> &fwdOpSrc
100  ) const;
101 
104 
106  virtual void initializeOp(
107  const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
109  const ESupportSolveUse supportSolveUse
110  ) const;
111 
113  virtual void initializeAndReuseOp(
114  const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
116  ) const;
117 
119  virtual void uninitializeOp(
121  RCP<const LinearOpSourceBase<Scalar> > *fwdOpSrc,
122  RCP<const PreconditionerBase<Scalar> > *prec,
123  RCP<const LinearOpSourceBase<Scalar> > *approxFwdOpSrc,
124  ESupportSolveUse *supportSolveUse
125  ) const;
126 
128  virtual bool supportsPreconditionerInputType(
129  const EPreconditionerInputType precOpType
130  ) const;
131 
133  virtual void initializePreconditionedOp(
134  const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
135  const RCP<const PreconditionerBase<Scalar> > &prec,
137  const ESupportSolveUse supportSolveUse
138  ) const;
139 
142  const RCP<const LinearOpSourceBase<Scalar> > &fwdOpSrc,
143  const RCP<const LinearOpSourceBase<Scalar> > &approxFwdOpSrc,
145  const ESupportSolveUse supportSolveUse
146  ) const;
147 
149 
150 protected:
151 
154 
156  void informUpdatedVerbosityState() const;
157 
159 
160 private:
161 
163 
164  // Not defined and not to be called
166 
167 };
168 
169 
170 } // namespace Thyra
171 
172 
173 #endif // THYRA_DELAYED_LINEAR_OP_WITH_SOLVE_FACTORY_DECL_HPP
Base class for all linear operators that can support a high-level solve operation.
virtual bool supportsPreconditionerInputType(const EPreconditionerInputType precOpType) const
virtual bool isCompatible(const LinearOpSourceBase< Scalar > &fwdOpSrc) const
virtual RCP< LinearOpWithSolveBase< Scalar > > createOp() const
virtual RCP< PreconditionerFactoryBase< Scalar > > getPreconditionerFactory() const
virtual void setPreconditionerFactory(const RCP< PreconditionerFactoryBase< Scalar > > &precFactory, const std::string &precFactoryName)
virtual void initializeApproxPreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const LinearOpSourceBase< Scalar > > &approxFwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
virtual void unsetPreconditionerFactory(RCP< PreconditionerFactoryBase< Scalar > > *precFactory, std::string *precFactoryName)
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
virtual void initializePreconditionedOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, const RCP< const PreconditionerBase< Scalar > > &prec, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Factory interface for creating LinearOpWithSolveBase objects from compatible LinearOpBase objects...
virtual void initializeOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op, const ESupportSolveUse supportSolveUse) const
Factory interface for creating preconditioner objects from LinearOpBase objects.
Base interface for objects that can return a linear operator.
General delayed construction LinearOpWithSolveFactoryBase subclass.
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
void informUpdatedVerbosityState() const
Overridden from Teuchos::VerboseObjectBase.
RCP< LinearOpWithSolveFactoryBase< Scalar > > getUnderlyingLOWSF()
virtual void initializeAndReuseOp(const RCP< const LinearOpSourceBase< Scalar > > &fwdOpSrc, LinearOpWithSolveBase< Scalar > *Op) const
EPreconditionerInputType
Enum defining the status of a preconditioner object.
void setParameterList(RCP< ParameterList > const &paramList)
virtual void uninitializeOp(LinearOpWithSolveBase< Scalar > *Op, RCP< const LinearOpSourceBase< Scalar > > *fwdOpSrc, RCP< const PreconditionerBase< Scalar > > *prec, RCP< const LinearOpSourceBase< Scalar > > *approxFwdOpSrc, ESupportSolveUse *supportSolveUse) const