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" 54 #ifdef TPETRA_ENABLE_DEPRECATED_CODE 55 using Teuchos::ArrayView;
58 template <
typename Scalar,
59 typename LocalOrdinal,
60 typename GlobalOrdinal,
63 AbstractConcreteMatrixAdapter<
64 Tpetra::RowMatrix<Scalar,
68 DerivedMat>::AbstractConcreteMatrixAdapter(RCP<Tpetra::RowMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> > m)
69 : MatrixAdapter<DerivedMat>(
Teuchos::rcp_static_cast<DerivedMat>(m))
75 #ifdef TPETRA_ENABLE_DEPRECATED_CODE 76 template <
typename Scalar,
77 typename LocalOrdinal,
78 typename GlobalOrdinal,
82 AbstractConcreteMatrixAdapter<
83 Tpetra::RowMatrix<Scalar,
87 DerivedMat>::getGlobalRowCopy_impl(global_ordinal_t row,
88 const ArrayView<global_ordinal_t>& indices,
89 const ArrayView<scalar_t>& vals,
92 this->mat_->getGlobalRowCopy(row, indices, vals, nnz);
96 template <
typename Scalar,
97 typename LocalOrdinal,
98 typename GlobalOrdinal,
101 template <
typename KV_GO,
typename KV_S>
103 AbstractConcreteMatrixAdapter<
104 Tpetra::RowMatrix<Scalar,
108 DerivedMat>::getGlobalRowCopy_kokkos_view_impl(global_ordinal_t row,
113 this->mat_->getGlobalRowCopy(row, indices, vals, nnz);
116 #ifdef TPETRA_ENABLE_DEPRECATED_CODE 117 template <
typename Scalar,
118 typename LocalOrdinal,
119 typename GlobalOrdinal,
123 AbstractConcreteMatrixAdapter<
124 Tpetra::RowMatrix<Scalar,
128 DerivedMat>::getGlobalColCopy_impl(global_ordinal_t col,
129 const ArrayView<global_ordinal_t>& indices,
130 const ArrayView<scalar_t>& vals,
133 TEUCHOS_TEST_FOR_EXCEPTION(
true,
135 "Column access to row-based object not yet supported. " 136 "Please contact the Amesos2 developers." );
141 template <
typename Scalar,
142 typename LocalOrdinal,
143 typename GlobalOrdinal,
146 typename AbstractConcreteMatrixAdapter<
147 Tpetra::RowMatrix<Scalar,
151 DerivedMat>::global_size_t
152 AbstractConcreteMatrixAdapter<
153 Tpetra::RowMatrix<Scalar,
157 DerivedMat>::getGlobalNNZ_impl()
const 159 return this->mat_->getGlobalNumEntries();
162 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
164 AbstractConcreteMatrixAdapter<
165 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
166 DerivedMat>::getLocalNNZ_impl()
const 168 return this->mat_->getNodeNumEntries();
171 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
172 typename AbstractConcreteMatrixAdapter<
173 Tpetra::RowMatrix<Scalar,
177 DerivedMat>::global_size_t
178 AbstractConcreteMatrixAdapter<
179 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
180 DerivedMat>::getGlobalNumRows_impl()
const 182 return this->mat_->getGlobalNumRows();
185 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
186 typename AbstractConcreteMatrixAdapter<
187 Tpetra::RowMatrix<Scalar,
191 DerivedMat>::global_size_t
192 AbstractConcreteMatrixAdapter<
193 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
194 DerivedMat>::getGlobalNumCols_impl()
const 196 return this->mat_->getGlobalNumCols();
199 template <
typename Scalar,
200 typename LocalOrdinal,
201 typename GlobalOrdinal,
205 AbstractConcreteMatrixAdapter<
206 Tpetra::RowMatrix<Scalar,
210 DerivedMat>::getMaxRowNNZ_impl()
const 212 return this->mat_->getGlobalMaxNumRowEntries();
215 template <
typename Scalar,
216 typename LocalOrdinal,
217 typename GlobalOrdinal,
221 AbstractConcreteMatrixAdapter<
222 Tpetra::RowMatrix<Scalar,
226 DerivedMat>::getMaxColNNZ_impl()
const 228 TEUCHOS_TEST_FOR_EXCEPTION(
true,
230 "Column access to row-based object not yet supported. " 231 "Please contact the Amesos2 developers." );
234 template <
typename Scalar,
235 typename LocalOrdinal,
236 typename GlobalOrdinal,
240 AbstractConcreteMatrixAdapter<
241 Tpetra::RowMatrix<Scalar,
245 DerivedMat>::getGlobalRowNNZ_impl(global_ordinal_t row)
const 247 return this->mat_->getNumEntriesInGlobalRow(row);
251 #ifdef TPETRA_ENABLE_DEPRECATED_CODE 252 template <
typename Scalar,
253 typename LocalOrdinal,
254 typename GlobalOrdinal,
258 AbstractConcreteMatrixAdapter<
259 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat>
260 ::super_t::spmtx_ptr_t
261 AbstractConcreteMatrixAdapter<
262 Tpetra::RowMatrix<Scalar,
266 DerivedMat>::getSparseRowPtr()
const 268 typename super_t::local_matrix_t lm = this->mat_->getLocalMatrix();
269 return lm.graph.row_map.data();
272 template <
typename Scalar,
273 typename LocalOrdinal,
274 typename GlobalOrdinal,
278 AbstractConcreteMatrixAdapter<
279 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat>
280 ::super_t::spmtx_idx_t
281 AbstractConcreteMatrixAdapter<
282 Tpetra::RowMatrix<Scalar,
286 DerivedMat>::getSparseColInd()
const 288 typename super_t::local_matrix_t lm = this->mat_->getLocalMatrix();
289 return lm.graph.entries.data();
292 template <
typename Scalar,
293 typename LocalOrdinal,
294 typename GlobalOrdinal,
298 AbstractConcreteMatrixAdapter<
299 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat>
300 ::super_t::spmtx_vals_t
301 AbstractConcreteMatrixAdapter<
302 Tpetra::RowMatrix<Scalar,
306 DerivedMat>::getSparseValues()
const 308 typename super_t::local_matrix_t lm = this->mat_->getLocalMatrix();
309 return lm.values.data();
314 template <
typename Scalar,
315 typename LocalOrdinal,
316 typename GlobalOrdinal,
320 AbstractConcreteMatrixAdapter<
321 Tpetra::RowMatrix<Scalar,
325 DerivedMat>::getLocalRowNNZ_impl(local_ordinal_t row)
const 327 return this->mat_->getNumEntriesInLocalRow(row);
330 template <
typename Scalar,
331 typename LocalOrdinal,
332 typename GlobalOrdinal,
336 AbstractConcreteMatrixAdapter<
337 Tpetra::RowMatrix<Scalar,
341 DerivedMat>::getGlobalColNNZ_impl(global_ordinal_t col)
const 343 TEUCHOS_TEST_FOR_EXCEPTION(
true,
345 "Column access to row-based object not yet supported. " 346 "Please contact the Amesos2 developers." );
349 template <
typename Scalar,
350 typename LocalOrdinal,
351 typename GlobalOrdinal,
355 AbstractConcreteMatrixAdapter<
356 Tpetra::RowMatrix<Scalar,
360 DerivedMat>::getLocalColNNZ_impl(local_ordinal_t col)
const 362 TEUCHOS_TEST_FOR_EXCEPTION(
true,
364 "Column access to row-based object not yet supported. " 365 "Please contact the Amesos2 developers." );
368 template <
typename Scalar,
369 typename LocalOrdinal,
370 typename GlobalOrdinal,
373 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
374 AbstractConcreteMatrixAdapter<
375 Tpetra::RowMatrix<Scalar,
379 DerivedMat>:: getMap_impl()
const 381 return this->mat_->getMap();
384 template <
typename Scalar,
385 typename LocalOrdinal,
386 typename GlobalOrdinal,
389 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
390 AbstractConcreteMatrixAdapter<
391 Tpetra::RowMatrix<Scalar,
395 DerivedMat>:: getRowMap_impl()
const 397 return this->mat_->getRowMap();
400 template <
typename Scalar,
401 typename LocalOrdinal,
402 typename GlobalOrdinal,
405 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
406 AbstractConcreteMatrixAdapter<
407 Tpetra::RowMatrix<Scalar,
411 DerivedMat>::getColMap_impl()
const 413 return this->mat_->getColMap();
416 template <
typename Scalar,
417 typename LocalOrdinal,
418 typename GlobalOrdinal,
421 const RCP<const Teuchos::Comm<int> >
422 AbstractConcreteMatrixAdapter<
423 Tpetra::RowMatrix<Scalar,
427 DerivedMat>::getComm_impl()
const 429 return this->mat_->getComm();
432 template <
typename Scalar,
433 typename LocalOrdinal,
434 typename GlobalOrdinal,
438 AbstractConcreteMatrixAdapter<
439 Tpetra::RowMatrix<Scalar,
443 DerivedMat>::isLocallyIndexed_impl()
const 445 return this->mat_->isLocallyIndexed();
448 template <
typename Scalar,
449 typename LocalOrdinal,
450 typename GlobalOrdinal,
454 AbstractConcreteMatrixAdapter<
455 Tpetra::RowMatrix<Scalar,
459 DerivedMat>::isGloballyIndexed_impl()
const 461 return this->mat_->isGloballyIndexed();
465 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
466 RCP<const MatrixAdapter<DerivedMat> >
467 AbstractConcreteMatrixAdapter<
468 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat
469 >::get_impl(
const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > map,
EDistribution distribution)
const 473 return dynamic_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map, distribution);
475 return static_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map, distribution);
481 #endif // AMESOS2_TPETRAROWMATRIX_ABSTRACTMATRIXADAPTER_DEF_HPP Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Definition: Amesos2_Umfpack_TypeMap.hpp:60
EDistribution
Definition: Amesos2_TypeDecl.hpp:123