ROL
src
step
krylov
ROL_Krylov.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ************************************************************************
3
//
4
// Rapid Optimization Library (ROL) Package
5
// Copyright (2014) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact lead developers:
38
// Drew Kouri (dpkouri@sandia.gov) and
39
// Denis Ridzal (dridzal@sandia.gov)
40
//
41
// ************************************************************************
42
// @HEADER
43
44
#ifndef ROL_KRYLOV_H
45
#define ROL_KRYLOV_H
46
51
#include "
ROL_Vector.hpp
"
52
#include "
ROL_LinearOperator.hpp
"
53
#include "ROL_ParameterList.hpp"
54
55
namespace
ROL
{
56
57
template
<
class
Real>
58
class
Krylov
{
59
60
Real
absTol_
;
// Absolute residual tolerance
61
Real
relTol_
;
// Relative residual tolerance
62
unsigned
maxit_
;
// Maximum number of iterations
63
64
public
:
65
virtual
~Krylov
(
void
) {}
66
67
Krylov
( Real absTol = 1.e-4, Real relTol = 1.e-2,
unsigned
maxit = 100 )
68
:
absTol_
(absTol),
relTol_
(relTol),
maxit_
(maxit) {}
69
70
Krylov
( ROL::ParameterList &parlist ) {
71
ROL::ParameterList &krylovList = parlist.sublist(
"General"
).sublist(
"Krylov"
);
72
absTol_
= krylovList.get(
"Absolute Tolerance"
, 1.e-4);
73
relTol_
= krylovList.get(
"Relative Tolerance"
, 1.e-2);
74
maxit_
= krylovList.get(
"Iteration Limit"
, 100);
75
}
76
77
// Run Krylov Method
78
virtual
Real
run
(
Vector<Real>
&x,
LinearOperator<Real>
&A,
const
Vector<Real>
&b,
LinearOperator<Real>
&M,
79
int
&iter,
int
&flag ) = 0;
80
81
void
resetAbsoluteTolerance
(
const
Real absTol) {
82
absTol_
= absTol;
83
}
84
void
resetRelativeTolerance
(
const
Real relTol) {
85
relTol_
= relTol;
86
}
87
void
resetMaximumIteration
(
const
unsigned
maxit) {
88
maxit_
= maxit;
89
}
90
Real
getAbsoluteTolerance
(
void
)
const
{
91
return
absTol_
;
92
}
93
Real
getRelativeTolerance
(
void
)
const
{
94
return
relTol_
;
95
}
96
unsigned
getMaximumIteration
(
void
)
const
{
97
return
maxit_
;
98
}
99
};
100
101
}
102
103
#include "
ROL_KrylovFactory.hpp
"
104
105
#endif
ROL::Krylov::getRelativeTolerance
Real getRelativeTolerance(void) const
Definition:
ROL_Krylov.hpp:93
ROL::Krylov::resetMaximumIteration
void resetMaximumIteration(const unsigned maxit)
Definition:
ROL_Krylov.hpp:87
ROL::Krylov::getAbsoluteTolerance
Real getAbsoluteTolerance(void) const
Definition:
ROL_Krylov.hpp:90
ROL::Krylov::resetAbsoluteTolerance
void resetAbsoluteTolerance(const Real absTol)
Definition:
ROL_Krylov.hpp:81
ROL::Krylov::Krylov
Krylov(Real absTol=1.e-4, Real relTol=1.e-2, unsigned maxit=100)
Definition:
ROL_Krylov.hpp:67
ROL::Krylov::maxit_
unsigned maxit_
Definition:
ROL_Krylov.hpp:62
ROL::Krylov::Krylov
Krylov(ROL::ParameterList &parlist)
Definition:
ROL_Krylov.hpp:70
ROL::Vector
Defines the linear algebra or vector space interface.
Definition:
ROL_Vector.hpp:80
ROL::Krylov::~Krylov
virtual ~Krylov(void)
Definition:
ROL_Krylov.hpp:65
ROL::Krylov::run
virtual Real run(Vector< Real > &x, LinearOperator< Real > &A, const Vector< Real > &b, LinearOperator< Real > &M, int &iter, int &flag)=0
ROL::Krylov::relTol_
Real relTol_
Definition:
ROL_Krylov.hpp:61
ROL_KrylovFactory.hpp
ROL::Krylov::absTol_
Real absTol_
Definition:
ROL_Krylov.hpp:60
ROL
Definition:
ROL_ElementwiseVector.hpp:61
ROL_LinearOperator.hpp
ROL::LinearOperator
Provides the interface to apply a linear operator.
Definition:
ROL_LinearOperator.hpp:71
ROL::Krylov::resetRelativeTolerance
void resetRelativeTolerance(const Real relTol)
Definition:
ROL_Krylov.hpp:84
ROL_Vector.hpp
ROL::Krylov
Provides definitions for Krylov solvers.
Definition:
ROL_Krylov.hpp:58
ROL::Krylov::getMaximumIteration
unsigned getMaximumIteration(void) const
Definition:
ROL_Krylov.hpp:96
Generated by
1.8.16