Belos  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BelosCGIteration.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Belos: Block Linear Solvers Package
4 //
5 // Copyright 2004-2016 NTESS and the Belos contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef BELOS_CG_ITERATION_HPP
11 #define BELOS_CG_ITERATION_HPP
12 
17 #include "BelosConfigDefs.hpp"
18 #include "BelosTypes.hpp"
19 #include "BelosIteration.hpp"
20 #include "BelosMultiVecTraits.hpp"
21 #include "Teuchos_Assert.hpp"
22 
23 namespace Belos {
24 
26 
27 
32  template <class ScalarType, class MV>
34 
35  public:
36  virtual void initialize(Teuchos::RCP<const MV> tmp, int _numVectors) {
41  isInitialized_ = true;
42  numVectors_ = _numVectors;
43  }
44 
45  virtual ~CGIterationStateBase() = default;
46 
47  bool isInitialized() const { return isInitialized_; }
48 
49  int numVectors() const { return numVectors_; }
50 
51  virtual bool matches(Teuchos::RCP<const MV> tmp, int _numVectors=1) const {
53  return (isInitialized() &&
54  !R.is_null() &&
55  !Z.is_null() &&
56  !P.is_null() &&
57  !AP.is_null() &&
58  (numVectors() == _numVectors) &&
59  (MVT::GetGlobalLength(*tmp) == MVT::GetGlobalLength(*R)));
60  }
61 
64 
67 
70 
73 
74  private:
75 
76  bool isInitialized_;
77  int numVectors_;
78 
79  };
80 
82 
83 
95  class CGIterationInitFailure : public BelosError {public:
96  CGIterationInitFailure(const std::string& what_arg) : BelosError(what_arg)
97  {}};
98 
105  class CGIterateFailure : public BelosError {public:
106  CGIterateFailure(const std::string& what_arg) : BelosError(what_arg)
107  {}};
108 
115  CGPositiveDefiniteFailure(const std::string& what_arg) : CGIterateFailure(what_arg)
116  {}};
117 
124  class CGIterationOrthoFailure : public BelosError {public:
125  CGIterationOrthoFailure(const std::string& what_arg) : BelosError(what_arg)
126  {}};
127 
134  class CGIterationLAPACKFailure : public BelosError {public:
135  CGIterationLAPACKFailure(const std::string& what_arg) : BelosError(what_arg)
136  {}};
137 
139 
140 
141 template<class ScalarType, class MV, class OP>
142 class CGIteration : virtual public Iteration<ScalarType,MV,OP> {
143 
144  public:
145 
147 
148 
163 
171 
174 
175 
177  virtual void setDoCondEst(bool val) = 0;
178 
181 
184 
185 };
186 
187 } // end Belos namespace
188 
189 #endif /* BELOS_CG_ITERATION_HPP */
Collection of types and exceptions used within the Belos solvers.
CGIterateFailure(const std::string &what_arg)
CGIterationOrthoFailure(const std::string &what_arg)
virtual void initializeCG(Teuchos::RCP< CGIterationStateBase< ScalarType, MV > > newstate, Teuchos::RCP< MV > R_0)=0
Initialize the solver to an iterate, providing a complete state.
Declaration of basic traits for the multivector type.
virtual void setDoCondEst(bool val)=0
Sets whether or not to store the diagonal for condition estimation.
virtual Teuchos::RCP< CGIterationStateBase< ScalarType, MV > > getState() const =0
Get the current state of the linear solver.
Pure virtual base class which describes the basic interface to the linear solver iteration.
virtual ~CGIterationStateBase()=default
CGIterateFailure is thrown when the CGIteration object is unable to compute the next iterate in the C...
virtual Teuchos::ArrayView< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > getDiag()=0
Gets the diagonal for condition estimation.
Teuchos::RCP< MV > P
The current decent direction vector.
Traits class which defines basic operations on multivectors.
CGPositiveDefiniteFailure is thrown when the the CG &#39;alpha = p^H*A*P&#39; value is less than zero...
CGIterationLAPACKFailure is thrown when a nonzero return value is passed back from an LAPACK routine...
virtual void initialize(Teuchos::RCP< const MV > tmp, int _numVectors)
virtual Teuchos::ArrayView< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > getOffDiag()=0
Gets the off-diagonal for condition estimation.
Structure to contain pointers to CGIteration state variables.
Teuchos::RCP< MV > Z
The current preconditioned residual.
Teuchos::RCP< MV > AP
The matrix A applied to current decent direction vector.
CGIterationOrthoFailure is thrown when the CGIteration object is unable to compute independent direct...
CGIterationLAPACKFailure(const std::string &what_arg)
virtual void setState(Teuchos::RCP< CGIterationStateBase< ScalarType, MV > > state)=0
CGPositiveDefiniteFailure(const std::string &what_arg)
CGIterationInitFailure is thrown when the CGIteration object is unable to generate an initial iterate...
Parent class to all Belos exceptions.
Definition: BelosTypes.hpp:28
#define TEUCHOS_ASSERT(assertion_test)
Teuchos::RCP< MV > R
The current residual.
Belos header file which uses auto-configuration information to include necessary C++ headers...
CGIterationInitFailure(const std::string &what_arg)
virtual bool matches(Teuchos::RCP< const MV > tmp, int _numVectors=1) const
bool is_null() const

Generated on Fri Feb 21 2025 09:24:40 for Belos by doxygen 1.8.5