Belos
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
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
16
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>
33
class
CGIterationStateBase
{
34
35
public
:
36
virtual
void
initialize
(Teuchos::RCP<const MV> tmp,
int
_numVectors) {
37
TEUCHOS_ASSERT(!
R
.is_null());
38
TEUCHOS_ASSERT(!
Z
.is_null());
39
TEUCHOS_ASSERT(!
P
.is_null());
40
TEUCHOS_ASSERT(!
AP
.is_null());
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
{
52
using
MVT =
MultiVecTraits<ScalarType, MV>
;
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
63
Teuchos::RCP<MV>
R
;
64
66
Teuchos::RCP<MV>
Z
;
67
69
Teuchos::RCP<MV>
P
;
70
72
Teuchos::RCP<MV>
AP
;
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
114
class
CGPositiveDefiniteFailure
:
public
CGIterateFailure
{
public
:
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
162
virtual
void
initializeCG
(Teuchos::RCP<
CGIterationStateBase<ScalarType,MV>
> newstate, Teuchos::RCP<MV> R_0) = 0;
163
170
virtual
Teuchos::RCP<CGIterationStateBase<ScalarType,MV> >
getState
()
const
= 0;
171
172
virtual
void
setState
(Teuchos::RCP<
CGIterationStateBase<ScalarType,MV>
> state) = 0;
174
175
177
virtual
void
setDoCondEst
(
bool
val) = 0;
178
180
virtual
Teuchos::ArrayView<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType>
getDiag
() = 0;
181
183
virtual
Teuchos::ArrayView<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType>
getOffDiag
() = 0;
184
185
};
186
187
}
// end Belos namespace
188
189
#endif
/* BELOS_CG_ITERATION_HPP */
BelosConfigDefs.hpp
Belos header file which uses auto-configuration information to include necessary C++ headers.
BelosIteration.hpp
Pure virtual base class which describes the basic interface to the linear solver iteration.
BelosMultiVecTraits.hpp
Declaration of basic traits for the multivector type.
BelosTypes.hpp
Collection of types and exceptions used within the Belos solvers.
Belos::BelosError::BelosError
BelosError(const std::string &what_arg)
Definition
BelosTypes.hpp:30
Belos::CGIterateFailure::CGIterateFailure
CGIterateFailure(const std::string &what_arg)
Definition
BelosCGIteration.hpp:106
Belos::CGIteration
Definition
BelosCGIteration.hpp:142
Belos::CGIteration::getState
virtual Teuchos::RCP< CGIterationStateBase< ScalarType, MV > > getState() const =0
Get the current state of the linear solver.
Belos::CGIteration::getOffDiag
virtual Teuchos::ArrayView< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > getOffDiag()=0
Gets the off-diagonal for condition estimation.
Belos::CGIteration::setDoCondEst
virtual void setDoCondEst(bool val)=0
Sets whether or not to store the diagonal for condition estimation.
Belos::CGIteration::getDiag
virtual Teuchos::ArrayView< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > getDiag()=0
Gets the diagonal for condition estimation.
Belos::CGIteration::setState
virtual void setState(Teuchos::RCP< CGIterationStateBase< ScalarType, MV > > state)=0
Belos::CGIteration::initializeCG
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.
Belos::CGIterationInitFailure::CGIterationInitFailure
CGIterationInitFailure(const std::string &what_arg)
Definition
BelosCGIteration.hpp:96
Belos::CGIterationLAPACKFailure::CGIterationLAPACKFailure
CGIterationLAPACKFailure(const std::string &what_arg)
Definition
BelosCGIteration.hpp:135
Belos::CGIterationOrthoFailure::CGIterationOrthoFailure
CGIterationOrthoFailure(const std::string &what_arg)
Definition
BelosCGIteration.hpp:125
Belos::CGIterationStateBase
Structure to contain pointers to CGIteration state variables.
Definition
BelosCGIteration.hpp:33
Belos::CGIterationStateBase::R
Teuchos::RCP< MV > R
The current residual.
Definition
BelosCGIteration.hpp:63
Belos::CGIterationStateBase::P
Teuchos::RCP< MV > P
The current decent direction vector.
Definition
BelosCGIteration.hpp:69
Belos::CGIterationStateBase::initialize
virtual void initialize(Teuchos::RCP< const MV > tmp, int _numVectors)
Definition
BelosCGIteration.hpp:36
Belos::CGIterationStateBase::isInitialized
bool isInitialized() const
Definition
BelosCGIteration.hpp:47
Belos::CGIterationStateBase::matches
virtual bool matches(Teuchos::RCP< const MV > tmp, int _numVectors=1) const
Definition
BelosCGIteration.hpp:51
Belos::CGIterationStateBase::Z
Teuchos::RCP< MV > Z
The current preconditioned residual.
Definition
BelosCGIteration.hpp:66
Belos::CGIterationStateBase::numVectors
int numVectors() const
Definition
BelosCGIteration.hpp:49
Belos::CGIterationStateBase::AP
Teuchos::RCP< MV > AP
The matrix A applied to current decent direction vector.
Definition
BelosCGIteration.hpp:72
Belos::CGIterationStateBase::~CGIterationStateBase
virtual ~CGIterationStateBase()=default
Belos::CGPositiveDefiniteFailure::CGPositiveDefiniteFailure
CGPositiveDefiniteFailure(const std::string &what_arg)
Definition
BelosCGIteration.hpp:115
Belos::Iteration::Iteration
Iteration()
Default Constructor.
Definition
BelosIteration.hpp:49
Belos::MultiVecTraits
Traits class which defines basic operations on multivectors.
Definition
BelosMultiVecTraits.hpp:97
Belos
Definition
Belos_Details_EBelosSolverType.cpp:13
Generated for Belos by
1.17.0