Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_TpetraRowMatrix.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Xpetra: A linear algebra interface package
4//
5// Copyright 2012 NTESS and the Xpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef XPETRA_TPETRAROWMATRIX_HPP
11#define XPETRA_TPETRAROWMATRIX_HPP
12
13/* this file is automatically generated - do not edit (see script/tpetra.py) */
14
15// WARNING: This code is experimental. Backwards compatibility should not be expected.
16
17#include <Teuchos_Describable.hpp>
18#include "Xpetra_ConfigDefs.hpp"
19#include "Xpetra_Map.hpp"
20#include "Xpetra_Vector.hpp"
21
22#include "Xpetra_TpetraMap.hpp"
23
24#include "Tpetra_RowMatrix.hpp"
25
26#include "Xpetra_RowMatrix.hpp"
27#include "Xpetra_Exceptions.hpp"
28
29namespace Xpetra {
30
31template <class Scalar,
32 class LocalOrdinal,
33 class GlobalOrdinal,
34 class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
36 : virtual public RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
37 public:
39
40
42 virtual ~TpetraRowMatrix() = default;
43
45
47
48
51 XPETRA_MONITOR("TpetraRowMatrix::getRowMap");
52 return toXpetra(mtx_->getRowMap());
53 }
54
57 XPETRA_MONITOR("TpetraRowMatrix::getColMap");
58 return toXpetra(mtx_->getColMap());
59 }
60
62 Tpetra::global_size_t getGlobalNumRows() const {
63 XPETRA_MONITOR("TpetraRowMatrix::getGlobalNumRows");
64 return mtx_->getGlobalNumRows();
65 }
66
68 Tpetra::global_size_t getGlobalNumCols() const {
69 XPETRA_MONITOR("TpetraRowMatrix::getGlobalNumCols");
70 return mtx_->getGlobalNumCols();
71 }
72
74 size_t getLocalNumRows() const {
75 XPETRA_MONITOR("TpetraRowMatrix::getLocalNumRows");
76 return mtx_->getLocalNumRows();
77 }
78
80 size_t getLocalNumCols() const {
81 XPETRA_MONITOR("TpetraRowMatrix::getLocalNumCols");
82 return mtx_->getLocalNumCols();
83 }
84
86 Tpetra::global_size_t getGlobalNumEntries() const {
87 XPETRA_MONITOR("TpetraRowMatrix::getGlobalNumEntries");
88 return mtx_->getGlobalNumEntries();
89 }
90
92 size_t getNodeNumEntries() const {
93 XPETRA_MONITOR("TpetraRowMatrix::getNodeNumEntries");
94 return mtx_->getNodeNumEntries();
95 }
96
98 size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const {
99 XPETRA_MONITOR("TpetraRowMatrix::getNumEntriesInLocalRow");
100 return mtx_->getNumEntriesInLocalRow(localRow);
101 }
102
105 XPETRA_MONITOR("TpetraRowMatrix::getGlobalMaxNumRowEntries");
106 return mtx_->getGlobalMaxNumRowEntries();
107 }
108
111 XPETRA_MONITOR("TpetraRowMatrix::getLocalMaxNumRowEntries");
112 return mtx_->getLocalMaxNumRowEntries();
113 }
114
116 bool isLocallyIndexed() const {
117 XPETRA_MONITOR("TpetraRowMatrix::isLocallyIndexed");
118 return mtx_->isLocallyIndexed();
119 }
120
122 bool isGloballyIndexed() const {
123 XPETRA_MONITOR("TpetraRowMatrix::isGloballyIndexed");
124 return mtx_->isGloballyIndexed();
125 }
126
128 bool isFillComplete() const {
129 XPETRA_MONITOR("TpetraRowMatrix::isFillComplete");
130 return mtx_->isFillComplete();
131 }
132
134 bool supportsRowViews() const {
135 XPETRA_MONITOR("TpetraRowMatrix::supportsRowViews");
136 return mtx_->supportsRowViews();
137 }
138
140
142
143
145 void getLocalRowCopy(LocalOrdinal LocalRow, const Teuchos::ArrayView<LocalOrdinal> &Indices, const Teuchos::ArrayView<Scalar> &Values, size_t &NumEntries) const {
146 XPETRA_MONITOR("TpetraRowMatrix::getLocalRowCopy");
147 typename Tpetra::RowGraph<LocalOrdinal, GlobalOrdinal, Node>::nonconst_local_inds_host_view_type indices("indices", Indices.size());
148 typename Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::nonconst_values_host_view_type values("values", Values.size());
149
150 mtx_->getLocalRowCopy(LocalRow, indices, values, NumEntries);
151 for (size_t i = 0; i < NumEntries; ++i) {
152 Indices[i] = indices(i);
153 Values[i] = values(i);
154 }
155 }
156
158 void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView<const GlobalOrdinal> &indices, ArrayView<const Scalar> &values) const {
159 XPETRA_MONITOR("TpetraRowMatrix::getGlobalRowView");
160 typename Tpetra::RowGraph<LocalOrdinal, GlobalOrdinal, Node>::global_inds_host_view_type k_indices;
161 typename Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::values_host_view_type k_values;
162
163 mtx_->getGlobalRowView(GlobalRow, k_indices, k_values);
164 indices = ArrayView<const GlobalOrdinal>(k_indices.data(), k_indices.extent(0));
165 values = ArrayView<const Scalar>(reinterpret_cast<const Scalar *>(k_values.data()), k_values.extent(0));
166 }
167
169 void getLocalRowView(LocalOrdinal LocalRow, ArrayView<const LocalOrdinal> &indices, ArrayView<const Scalar> &values) const {
170 XPETRA_MONITOR("TpetraRowMatrix::getLocalRowView");
171 typename Tpetra::RowGraph<LocalOrdinal, GlobalOrdinal, Node>::local_inds_host_view_type k_indices;
172 typename Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::values_host_view_type k_values;
173
174 mtx_->getLocalRowView(LocalRow, k_indices, k_values);
175 indices = ArrayView<const LocalOrdinal>(k_indices.data(), k_indices.extent(0));
176 values = ArrayView<const Scalar>(reinterpret_cast<const Scalar *>(k_values.data()), k_values.extent(0));
177 }
178
181 //{ XPETRA_MONITOR("TpetraRowMatrix::getLocalDiagCopy"); mtx_->getLocalDiagCopy(diag); }
182
184
186
187
190 XPETRA_MONITOR("TpetraRowMatrix::getFrobeniusNorm");
191 return mtx_->getFrobeniusNorm();
192 }
193
195
197
198
201 XPETRA_MONITOR("TpetraRowMatrix::getDomainMap");
202 return toXpetra(mtx_->getDomainMap());
203 }
204
207 XPETRA_MONITOR("TpetraRowMatrix::getRangeMap");
208 return toXpetra(mtx_->getRangeMap());
209 }
210
213 //{ XPETRA_MONITOR("TpetraRowMatrix::apply"); mtx_->apply(X, Y, mode, alpha, beta); }
214
216
218
219
220 TpetraRowMatrix() = default;
221
223 TpetraRowMatrix(const Teuchos::RCP<Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > &mtx)
224 : mtx_(mtx) {}
225
227 void setTpetra_RowMatrix(const Teuchos::RCP<Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > &mtx) { mtx_ = mtx; }
228
231
234
236
237 private:
239
240}; // TpetraRowMatrix class
241
242} // namespace Xpetra
243
244#define XPETRA_TPETRAROWMATRIX_SHORT
245#endif // XPETRA_TPETRAROWMATRIX_HPP
#define XPETRA_MONITOR(funcName)
size_type size() const
Exception throws when you call an unimplemented method of Xpetra.
void getLocalRowCopy(LocalOrdinal LocalRow, const Teuchos::ArrayView< LocalOrdinal > &Indices, const Teuchos::ArrayView< Scalar > &Values, size_t &NumEntries) const
Extract a list of entries in a specified local row of the graph. Put into storage allocated by callin...
bool isLocallyIndexed() const
If matrix indices are in the local range, this function returns true. Otherwise, this function return...
Tpetra::global_size_t getGlobalNumEntries() const
Returns the global number of entries in this matrix.
size_t getGlobalMaxNumRowEntries() const
Returns the maximum number of entries across all rows/columns on all nodes.
const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const
Returns the Map associated with the domain of this operator, which must be compatible with X....
size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const
Returns the current number of entries on this node in the specified local row.
const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRowMap() const
Returns the Map that describes the row distribution in this matrix.
size_t getLocalNumRows() const
Returns the number of rows owned on the calling node.
const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getColMap() const
Returns the Map that describes the column distribution in this matrix.
RCP< const Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetra_RowMatrix() const
Get the underlying Tpetra matrix.
void setTpetra_RowMatrix(const Teuchos::RCP< Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &mtx)
Set the underlying Tpetra matrix.
size_t getLocalNumCols() const
Returns the number of columns needed to apply the forward operator on this node, i....
bool isFillComplete() const
Returns true if fillComplete() has been called.
void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView< const GlobalOrdinal > &indices, ArrayView< const Scalar > &values) const
Extract a const, non-persisting view of global indices in a specified row of the matrix.
void apply(const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const
Computes the operator-multivector application.
size_t getLocalMaxNumRowEntries() const
Returns the maximum number of entries across all rows/columns on this node.
Tpetra::global_size_t getGlobalNumCols() const
Returns the number of global columns in this matrix.
virtual ~TpetraRowMatrix()=default
Destructor.
void getLocalDiagCopy(Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag) const
Get a copy of the diagonal entries owned by this node, with local row indices.
bool isGloballyIndexed() const
If matrix indices are in the global range, this function returns true. Otherwise, this function retur...
ScalarTraits< Scalar >::magnitudeType getFrobeniusNorm() const
Returns the Frobenius norm of the matrix.
const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const
Returns the Map associated with the range of this operator, which must be compatible with Y....
void getLocalRowView(LocalOrdinal LocalRow, ArrayView< const LocalOrdinal > &indices, ArrayView< const Scalar > &values) const
Extract a const, non-persisting view of local indices in a specified row of the matrix.
RCP< Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetra_RowMatrixNonConst() const
Get the underlying Tpetra matrix.
size_t getNodeNumEntries() const
Returns the local number of entries in this matrix.
Tpetra::global_size_t getGlobalNumRows() const
Returns the number of global rows in this matrix.
TpetraRowMatrix(const Teuchos::RCP< Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &mtx)
TpetraCrsMatrix constructor to wrap a Tpetra::CrsMatrix object.
RCP< Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > mtx_
bool supportsRowViews() const
Returns true if getLocalRowView() and getGlobalRowView() are valid for this class.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
RCP< const CrsGraph< int, GlobalOrdinal, Node > > toXpetra(const Epetra_CrsGraph &g)