Stratimikos
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
adapters
belos
src
Thyra_GeneralSolveCriteriaBelosStatusTest_decl.hpp
1
/*
2
// @HEADER
3
// ***********************************************************************
4
//
5
// Stratimikos: Thyra-based strategies for linear solvers
6
// Copyright (2006) Sandia Corporation
7
//
8
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9
// license for use of this work by or on behalf of the U.S. Government.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
39
//
40
// ***********************************************************************
41
// @HEADER
42
*/
43
44
45
#ifndef THYRA_GENERAL_SOLVE_CRITERIA_BELOS_STATUS_TEST_DECL_HPP
46
#define THYRA_GENERAL_SOLVE_CRITERIA_BELOS_STATUS_TEST_DECL_HPP
47
48
#include "Thyra_SolveSupportTypes.hpp"
49
#include "
BelosStatusTest.hpp
"
50
#include "
BelosLinearProblem.hpp
"
51
#include "
BelosMultiVecTraits.hpp
"
52
#include "Teuchos_VerboseObject.hpp"
53
54
55
namespace
Thyra {
56
57
62
template
<
class
Scalar>
63
class
GeneralSolveCriteriaBelosStatusTest
64
:
public
Belos::StatusTest
<Scalar, MultiVectorBase<Scalar>, LinearOpBase<Scalar> >,
65
public
Teuchos::VerboseObject<GeneralSolveCriteriaBelosStatusTest<Scalar> >
66
{
67
public
:
68
71
72
typedef
MultiVectorBase<Scalar>
MV
;
74
typedef
LinearOpBase<Scalar>
OP
;
76
typedef
typename
ScalarTraits<Scalar>::magnitudeType
ScalarMag
;
78
81
83
GeneralSolveCriteriaBelosStatusTest
();
84
86
void
setSolveCriteria
(
const
SolveCriteria<Scalar> &solveCriteria,
87
const
int
convergenceTestFrequency);
88
90
ArrayView<const ScalarMag>
achievedTol
()
const
;
91
93
96
97
virtual
Belos::StatusType
checkStatus
(
Belos::Iteration<Scalar,MV,OP>
*iSolver);
99
virtual
Belos::StatusType
getStatus
()
const
;
101
virtual
void
reset
();
103
virtual
void
print
(std::ostream& os,
int
indent)
const
;
105
106
private
:
107
108
SolveCriteria<Scalar> solveCriteria_;
109
int
convergenceTestFrequency_;
110
111
bool
compute_x_;
112
bool
compute_r_;
113
114
Array<ScalarMag> r0_nrm_;
115
Array<ScalarMag> b_nrm_;
116
Array<ScalarMag> lastNumerator_;
117
Array<ScalarMag> lastDenominator_;
118
Array<ScalarMag> lastAchievedTol_;
119
int
lastCurrIter_;
120
Belos::StatusType
lastRtnStatus_;
121
122
// Private member functions
123
124
ScalarMag
computeReductionFunctional(ESolveMeasureNormType measureType,
125
const
Ptr<
const
ReductionFunctional<Scalar> > &reductFunc,
126
const
Ptr<
const
VectorBase<Scalar> > &x,
127
const
Ptr<
const
VectorBase<Scalar> > &r
128
)
const
;
129
130
void
printRhsStatus(
const
int
currIter,
const
int
j, std::ostream &out,
131
int
indent = 0)
const
;
132
133
};
134
135
140
template
<
class
Scalar>
141
RCP<GeneralSolveCriteriaBelosStatusTest<Scalar> >
142
createGeneralSolveCriteriaBelosStatusTest
(
143
const
SolveCriteria<Scalar> &solveCriteria,
144
const
int
convergenceTestFrequency
145
)
146
{
147
RCP<GeneralSolveCriteriaBelosStatusTest<Scalar> >
148
gscbst = Teuchos::rcp(
new
GeneralSolveCriteriaBelosStatusTest<Scalar>
);
149
gscbst->setSolveCriteria(solveCriteria, convergenceTestFrequency);
150
return
gscbst;
151
}
152
153
154
}
// namespace Thyra
155
156
157
#endif
// THYRA_GENERAL_SOLVE_CRITERIA_BELOS_STATUS_TEST_DECL_HPP
BelosLinearProblem.hpp
BelosMultiVecTraits.hpp
BelosStatusTest.hpp
Belos::Iteration
Belos::StatusTest
Thyra::GeneralSolveCriteriaBelosStatusTest::GeneralSolveCriteriaBelosStatusTest
GeneralSolveCriteriaBelosStatusTest()
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:67
Thyra::GeneralSolveCriteriaBelosStatusTest::setSolveCriteria
void setSolveCriteria(const SolveCriteria< Scalar > &solveCriteria, const int convergenceTestFrequency)
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:79
Thyra::GeneralSolveCriteriaBelosStatusTest::reset
virtual void reset()
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:222
Thyra::GeneralSolveCriteriaBelosStatusTest::createGeneralSolveCriteriaBelosStatusTest
RCP< GeneralSolveCriteriaBelosStatusTest< Scalar > > createGeneralSolveCriteriaBelosStatusTest(const SolveCriteria< Scalar > &solveCriteria, const int convergenceTestFrequency)
Nonmember constructor.
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_decl.hpp:142
Thyra::GeneralSolveCriteriaBelosStatusTest::MV
MultiVectorBase< Scalar > MV
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_decl.hpp:72
Thyra::GeneralSolveCriteriaBelosStatusTest::getStatus
virtual Belos::StatusType getStatus() const
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:215
Thyra::GeneralSolveCriteriaBelosStatusTest::checkStatus
virtual Belos::StatusType checkStatus(Belos::Iteration< Scalar, MV, OP > *iSolver)
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:123
Thyra::GeneralSolveCriteriaBelosStatusTest::OP
LinearOpBase< Scalar > OP
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_decl.hpp:74
Thyra::GeneralSolveCriteriaBelosStatusTest::ScalarMag
ScalarTraits< Scalar >::magnitudeType ScalarMag
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_decl.hpp:76
Thyra::GeneralSolveCriteriaBelosStatusTest::achievedTol
ArrayView< const ScalarMag > achievedTol() const
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:112
Thyra::GeneralSolveCriteriaBelosStatusTest::print
virtual void print(std::ostream &os, int indent) const
Definition
Thyra_GeneralSolveCriteriaBelosStatusTest_def.hpp:235
Belos::StatusType
StatusType
Generated for Stratimikos by
1.17.0