Thyra Version of the Day
Loading...
Searching...
No Matches
Thyra_RowStatLinearOpBase.hpp
1// @HEADER
2// *****************************************************************************
3// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4//
5// Copyright 2004 NTESS and the Thyra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef THYRA_ROW_SUM_LINEAR_OP_BASE_HPP
11#define THYRA_ROW_SUM_LINEAR_OP_BASE_HPP
12
13#include "Thyra_LinearOpBase_decl.hpp"
14
15
16namespace Thyra {
17
18
19namespace RowStatLinearOpBaseUtils {
20
21
23enum ERowStat {
25 ROW_STAT_INV_ROW_SUM,
27 ROW_STAT_ROW_SUM,
29 ROW_STAT_INV_COL_SUM,
31 ROW_STAT_COL_SUM
32};
33
34
35} // namespace RowStatLinearOpBaseUtils
36
37
43template<class Scalar>
44class RowStatLinearOpBase : virtual public LinearOpBase<Scalar> {
45public:
46
49
52 const RowStatLinearOpBaseUtils::ERowStat rowStat
53 ) const
54 { return rowStatIsSupportedImpl(rowStat); }
55
61 const RowStatLinearOpBaseUtils::ERowStat rowStat,
62 const Ptr<VectorBase<Scalar> > &rowStatVec
63 ) const
64 {
66 getRowStatImpl(rowStat, rowStatVec);
67 }
68
70
71protected:
72
75
78 const RowStatLinearOpBaseUtils::ERowStat rowStat) const = 0;
79
81 virtual void getRowStatImpl(
82 const RowStatLinearOpBaseUtils::ERowStat rowStat,
83 const Ptr<VectorBase<Scalar> > &rowStatVec) const = 0;
84
86
87};
88
89
90} // end namespace Thyra
91
92
93#endif // THYRA_SCALED_LINEAR_OP_BASE_HPP
Base class for all linear operators.
Interface for exxtracting row statistics as a VectorBase from a supporting LinearOpBase object.
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const =0
bool rowStatIsSupported(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
Determine if a given row stat is supported.
void getRowStat(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const
Get some statistics about a supported row.
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Ptr< VectorBase< Scalar > > &rowStatVec) const =0
Abstract interface for finite-dimensional dense vectors.
#define TEUCHOS_ASSERT(assertion_test)