Thyra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_PreconditionerBase.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_PRECONDITIONER_BASE_HPP
11 #define THYRA_PRECONDITIONER_BASE_HPP
12 
13 #include "Thyra_OperatorSolveTypes.hpp"
14 #include "Teuchos_Describable.hpp"
15 
16 
17 namespace Thyra {
18 
19 
56 template<class Scalar>
57 class PreconditionerBase : virtual public Teuchos::Describable
58 {
59 public:
60 
63 
67  virtual bool isLeftPrecOpConst() const = 0;
68 
77 
82 
86  virtual bool isRightPrecOpConst() const = 0;
87 
96 
101 
105  virtual bool isUnspecifiedPrecOpConst() const = 0;
106 
111 
120 
122 
123 private:
124 
125  // Not defined and not to be called
126  PreconditionerBase<Scalar>&
127  operator=(const PreconditionerBase<Scalar>&);
128 
129 };
130 
131 
132 } // namespace Thyra
133 
134 
135 #endif // THYRA_PRECONDITIONER_BASE_HPP
virtual Teuchos::RCP< const LinearOpBase< Scalar > > getLeftPrecOp() const =0
Return a const left preconditioner linear operator if one is designed or targeted to be applied on th...
virtual Teuchos::RCP< LinearOpBase< Scalar > > getNonconstRightPrecOp()=0
Return a non-const right preconditioner linear operator if one is designed or targeted to be applied ...
virtual bool isUnspecifiedPrecOpConst() const =0
Return if the underlying unspecified preconditioner operator is const-only or allows non-const access...
virtual Teuchos::RCP< LinearOpBase< Scalar > > getNonconstUnspecifiedPrecOp()=0
Return a non-const generic preconditioner linear operator that is not designed or targeted to be appl...
virtual Teuchos::RCP< LinearOpBase< Scalar > > getNonconstLeftPrecOp()=0
Return a non-const left preconditioner linear operator if one is designed or targeted to be applied o...
virtual Teuchos::RCP< const LinearOpBase< Scalar > > getRightPrecOp() const =0
Return a const right preconditioner linear operator if one is designed or targeted to be applied on t...
virtual Teuchos::RCP< const LinearOpBase< Scalar > > getUnspecifiedPrecOp() const =0
Return a const generic preconditioner linear operator that is not designed or targeted to be applied ...
virtual bool isLeftPrecOpConst() const =0
Return if the underlying left preconditioner operator is const-only or allows non-const access...
virtual bool isRightPrecOpConst() const =0
Return if the underlying right preconditioner operator is const-only or allows non-const access...