ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
function
operator
ROL_DiagonalOperator.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Rapid Optimization Library (ROL) Package
4
//
5
// Copyright 2014 NTESS and the ROL contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef ROL_DIAGONALOPERATOR_H
11
#define ROL_DIAGONALOPERATOR_H
12
13
#include "
ROL_Vector.hpp
"
14
#include "ROL_Elementwise_Function.hpp"
15
#include "
ROL_LinearOperator.hpp
"
16
17
24
25
namespace
ROL
{
26
27
template
<
class
Real>
28
class
DiagonalOperator
:
public
LinearOperator
<Real> {
29
30
private
:
31
32
ROL::Ptr<Vector<Real> >
diag_
;
33
34
const
Elementwise::Multiply<Real>
mult_
;
35
const
Elementwise::Divide<Real>
div_
;
36
37
public
:
38
39
DiagonalOperator
(
const
Vector<Real>
&diag ) :
diag_
(diag.clone()) {
40
diag_
->set(diag);
41
}
42
43
void
update
(
const
Vector<Real>
&x,
bool
flag =
true
,
int
iter = -1 ) {
44
diag_
->set(x);
45
}
46
47
void
apply
(
Vector<Real>
&Hv,
const
Vector<Real>
&v, Real &tol )
const
{
48
Hv.
set
(v);
49
Hv.
applyBinary
(
mult_
, *
diag_
);
50
}
51
52
void
applyInverse
(
Vector<Real>
&Hv,
const
Vector<Real>
&v, Real &tol )
const
{
53
Hv.
set
(v);
54
Hv.
applyBinary
(
div_
, *
diag_
);
55
}
56
57
};
58
59
}
// namespace ROL
60
61
62
63
64
#endif
// ROL_DIAGONALOPERATOR_H
65
ROL_LinearOperator.hpp
ROL_Vector.hpp
ROL::DiagonalOperator::diag_
ROL::Ptr< Vector< Real > > diag_
Definition
ROL_DiagonalOperator.hpp:32
ROL::DiagonalOperator::update
void update(const Vector< Real > &x, bool flag=true, int iter=-1)
Definition
ROL_DiagonalOperator.hpp:43
ROL::DiagonalOperator::applyInverse
void applyInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Definition
ROL_DiagonalOperator.hpp:52
ROL::DiagonalOperator::div_
const Elementwise::Divide< Real > div_
Definition
ROL_DiagonalOperator.hpp:35
ROL::DiagonalOperator::DiagonalOperator
DiagonalOperator(const Vector< Real > &diag)
Definition
ROL_DiagonalOperator.hpp:39
ROL::DiagonalOperator::mult_
const Elementwise::Multiply< Real > mult_
Definition
ROL_DiagonalOperator.hpp:34
ROL::DiagonalOperator::apply
void apply(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Definition
ROL_DiagonalOperator.hpp:47
ROL::LinearOperator
Provides the interface to apply a linear operator.
Definition
ROL_LinearOperator.hpp:37
ROL::Vector
Defines the linear algebra or vector space interface.
Definition
ROL_Vector.hpp:51
ROL::Vector::set
virtual void set(const Vector &x)
Set where .
Definition
ROL_Vector.hpp:176
ROL::Vector::applyBinary
virtual void applyBinary(const Elementwise::BinaryFunction< Real > &f, const Vector &x)
Definition
ROL_Vector.hpp:215
ROL
Definition
ROL_ElementwiseVector.hpp:27
Generated by
1.17.0