45 #ifndef AMESOS2_TPETRAROWMATRIX_ABSTRACTMATRIXADAPTER_DEF_HPP
46 #define AMESOS2_TPETRAROWMATRIX_ABSTRACTMATRIXADAPTER_DEF_HPP
48 #include "Amesos2_ConcreteMatrixAdapter_decl.hpp"
49 #include "Amesos2_TpetraRowMatrix_AbstractMatrixAdapter_decl.hpp"
55 template <
typename Scalar,
56 typename LocalOrdinal,
57 typename GlobalOrdinal,
60 AbstractConcreteMatrixAdapter<
61 Tpetra::RowMatrix<Scalar,
65 DerivedMat>::AbstractConcreteMatrixAdapter(RCP<Tpetra::RowMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> > m)
66 : MatrixAdapter<DerivedMat>(Teuchos::rcp_static_cast<DerivedMat>(m))
72 template <
typename Scalar,
73 typename LocalOrdinal,
74 typename GlobalOrdinal,
77 template <
typename KV_GO,
typename KV_S>
79 AbstractConcreteMatrixAdapter<
80 Tpetra::RowMatrix<Scalar,
84 DerivedMat>::getGlobalRowCopy_kokkos_view_impl(global_ordinal_t row,
89 this->mat_->getGlobalRowCopy(row, indices, vals, nnz);
92 template <
typename Scalar,
93 typename LocalOrdinal,
94 typename GlobalOrdinal,
97 typename AbstractConcreteMatrixAdapter<
98 Tpetra::RowMatrix<Scalar,
102 DerivedMat>::global_size_t
103 AbstractConcreteMatrixAdapter<
104 Tpetra::RowMatrix<Scalar,
108 DerivedMat>::getGlobalNNZ_impl()
const
110 return this->mat_->getGlobalNumEntries();
113 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
115 AbstractConcreteMatrixAdapter<
116 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
117 DerivedMat>::getLocalNNZ_impl()
const
119 return this->mat_->getLocalNumEntries();
122 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
123 typename AbstractConcreteMatrixAdapter<
124 Tpetra::RowMatrix<Scalar,
128 DerivedMat>::global_size_t
129 AbstractConcreteMatrixAdapter<
130 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
131 DerivedMat>::getGlobalNumRows_impl()
const
133 return this->mat_->getGlobalNumRows();
136 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
137 typename AbstractConcreteMatrixAdapter<
138 Tpetra::RowMatrix<Scalar,
142 DerivedMat>::global_size_t
143 AbstractConcreteMatrixAdapter<
144 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
145 DerivedMat>::getGlobalNumCols_impl()
const
147 return this->mat_->getGlobalNumCols();
150 template <
typename Scalar,
151 typename LocalOrdinal,
152 typename GlobalOrdinal,
156 AbstractConcreteMatrixAdapter<
157 Tpetra::RowMatrix<Scalar,
161 DerivedMat>::getMaxRowNNZ_impl()
const
163 return this->mat_->getGlobalMaxNumRowEntries();
166 template <
typename Scalar,
167 typename LocalOrdinal,
168 typename GlobalOrdinal,
172 AbstractConcreteMatrixAdapter<
173 Tpetra::RowMatrix<Scalar,
177 DerivedMat>::getMaxColNNZ_impl()
const
179 TEUCHOS_TEST_FOR_EXCEPTION(
true,
181 "Column access to row-based object not yet supported. "
182 "Please contact the Amesos2 developers." );
185 template <
typename Scalar,
186 typename LocalOrdinal,
187 typename GlobalOrdinal,
191 AbstractConcreteMatrixAdapter<
192 Tpetra::RowMatrix<Scalar,
196 DerivedMat>::getGlobalRowNNZ_impl(global_ordinal_t row)
const
198 return this->mat_->getNumEntriesInGlobalRow(row);
201 template <
typename Scalar,
202 typename LocalOrdinal,
203 typename GlobalOrdinal,
207 AbstractConcreteMatrixAdapter<
208 Tpetra::RowMatrix<Scalar,
212 DerivedMat>::getLocalRowNNZ_impl(local_ordinal_t row)
const
214 return this->mat_->getNumEntriesInLocalRow(row);
217 template <
typename Scalar,
218 typename LocalOrdinal,
219 typename GlobalOrdinal,
223 AbstractConcreteMatrixAdapter<
224 Tpetra::RowMatrix<Scalar,
228 DerivedMat>::getGlobalColNNZ_impl(global_ordinal_t col)
const
230 TEUCHOS_TEST_FOR_EXCEPTION(
true,
232 "Column access to row-based object not yet supported. "
233 "Please contact the Amesos2 developers." );
236 template <
typename Scalar,
237 typename LocalOrdinal,
238 typename GlobalOrdinal,
242 AbstractConcreteMatrixAdapter<
243 Tpetra::RowMatrix<Scalar,
247 DerivedMat>::getLocalColNNZ_impl(local_ordinal_t col)
const
249 TEUCHOS_TEST_FOR_EXCEPTION(
true,
251 "Column access to row-based object not yet supported. "
252 "Please contact the Amesos2 developers." );
255 template <
typename Scalar,
256 typename LocalOrdinal,
257 typename GlobalOrdinal,
260 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
261 AbstractConcreteMatrixAdapter<
262 Tpetra::RowMatrix<Scalar,
266 DerivedMat>:: getMap_impl()
const
268 return this->mat_->getMap();
271 template <
typename Scalar,
272 typename LocalOrdinal,
273 typename GlobalOrdinal,
276 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
277 AbstractConcreteMatrixAdapter<
278 Tpetra::RowMatrix<Scalar,
282 DerivedMat>:: getRowMap_impl()
const
284 return this->mat_->getRowMap();
287 template <
typename Scalar,
288 typename LocalOrdinal,
289 typename GlobalOrdinal,
292 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
293 AbstractConcreteMatrixAdapter<
294 Tpetra::RowMatrix<Scalar,
298 DerivedMat>::getColMap_impl()
const
300 return this->mat_->getColMap();
303 template <
typename Scalar,
304 typename LocalOrdinal,
305 typename GlobalOrdinal,
308 const RCP<const Teuchos::Comm<int> >
309 AbstractConcreteMatrixAdapter<
310 Tpetra::RowMatrix<Scalar,
314 DerivedMat>::getComm_impl()
const
316 return this->mat_->getComm();
319 template <
typename Scalar,
320 typename LocalOrdinal,
321 typename GlobalOrdinal,
325 AbstractConcreteMatrixAdapter<
326 Tpetra::RowMatrix<Scalar,
330 DerivedMat>::isLocallyIndexed_impl()
const
332 return this->mat_->isLocallyIndexed();
335 template <
typename Scalar,
336 typename LocalOrdinal,
337 typename GlobalOrdinal,
341 AbstractConcreteMatrixAdapter<
342 Tpetra::RowMatrix<Scalar,
346 DerivedMat>::isGloballyIndexed_impl()
const
348 return this->mat_->isGloballyIndexed();
352 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
353 RCP<const MatrixAdapter<DerivedMat> >
354 AbstractConcreteMatrixAdapter<
355 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat
356 >::get_impl(
const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > map,
EDistribution distribution)
const
360 return dynamic_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map, distribution);
362 return static_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map, distribution);
368 #endif // AMESOS2_TPETRAROWMATRIX_ABSTRACTMATRIXADAPTER_DEF_HPP
EDistribution
Definition: Amesos2_TypeDecl.hpp:123