ROL
Loading...
Searching...
No Matches
ROL_BlockDiagonalOperator.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_BLOCKDIAGONALOPERATOR_H
11#define ROL_BLOCKDIAGONALOPERATOR_H
12
14#include "ROL_Ptr.hpp"
15#include <vector>
16
25namespace ROL {
26
27template<class Real>
29private:
30 const std::vector<Ptr<LinearOperator<Real>>> diag_;
31 const unsigned numOp_;
32
33public:
34 BlockDiagonalOperator( const std::vector<Ptr<LinearOperator<Real>>> &diag );
35 const Ptr<LinearOperator<Real>> get(unsigned i) const;
36 void apply( Vector<Real> &Hv, const Vector<Real> &v, Real &tol ) const override;
37 void applyInverse( Vector<Real> &Hv, const Vector<Real> &v, Real &tol ) const override;
38 void applyAdjoint( Vector<Real> &Hv, const Vector<Real> &v, Real &tol ) const override;
39 void applyAdjointInverse( Vector<Real> &Hv, const Vector<Real> &v, Real &tol ) const override;
40
41}; // class BlockDiagonalOperator
42
43} // namespace ROL
44
46
47#endif // ROL_BLOCKDIAGONALOPERATOR_H
Provides the interface to apply a block diagonal operator to a partitioned vector.
void applyAdjoint(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const override
Apply adjoint of linear operator.
void apply(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const override
Apply linear operator.
void applyAdjointInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const override
Apply adjoint of the inverse linear operator.
const std::vector< Ptr< LinearOperator< Real > > > diag_
void applyInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const override
Apply inverse of linear operator.
const Ptr< LinearOperator< Real > > get(unsigned i) const
Provides the interface to apply a linear operator.
Defines the linear algebra or vector space interface.