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 using Teuchos::ArrayView;
56 template <
typename Scalar,
57 typename LocalOrdinal,
58 typename GlobalOrdinal,
61 AbstractConcreteMatrixAdapter<
62 Tpetra::RowMatrix<Scalar,
66 DerivedMat>::AbstractConcreteMatrixAdapter(RCP<Tpetra::RowMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> > m)
67 : MatrixAdapter<DerivedMat>(
Teuchos::rcp_static_cast<DerivedMat>(m))
73 template <
typename Scalar,
74 typename LocalOrdinal,
75 typename GlobalOrdinal,
79 AbstractConcreteMatrixAdapter<
80 Tpetra::RowMatrix<Scalar,
84 DerivedMat>::getGlobalRowCopy_impl(global_ordinal_t row,
85 const ArrayView<global_ordinal_t>& indices,
86 const ArrayView<scalar_t>& vals,
89 this->mat_->getGlobalRowCopy(row, indices, vals, nnz);
92 template <
typename Scalar,
93 typename LocalOrdinal,
94 typename GlobalOrdinal,
98 AbstractConcreteMatrixAdapter<
99 Tpetra::RowMatrix<Scalar,
103 DerivedMat>::getGlobalColCopy_impl(global_ordinal_t col,
104 const ArrayView<global_ordinal_t>& indices,
105 const ArrayView<scalar_t>& vals,
108 TEUCHOS_TEST_FOR_EXCEPTION(
true,
110 "Column access to row-based object not yet supported. " 111 "Please contact the Amesos2 developers." );
115 template <
typename Scalar,
116 typename LocalOrdinal,
117 typename GlobalOrdinal,
120 typename AbstractConcreteMatrixAdapter<
121 Tpetra::RowMatrix<Scalar,
125 DerivedMat>::global_size_t
126 AbstractConcreteMatrixAdapter<
127 Tpetra::RowMatrix<Scalar,
131 DerivedMat>::getGlobalNNZ_impl()
const 133 return this->mat_->getGlobalNumEntries();
136 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
138 AbstractConcreteMatrixAdapter<
139 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
140 DerivedMat>::getLocalNNZ_impl()
const 142 return this->mat_->getNodeNumEntries();
145 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
146 typename AbstractConcreteMatrixAdapter<
147 Tpetra::RowMatrix<Scalar,
151 DerivedMat>::global_size_t
152 AbstractConcreteMatrixAdapter<
153 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
154 DerivedMat>::getGlobalNumRows_impl()
const 156 return this->mat_->getGlobalNumRows();
159 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
160 typename AbstractConcreteMatrixAdapter<
161 Tpetra::RowMatrix<Scalar,
165 DerivedMat>::global_size_t
166 AbstractConcreteMatrixAdapter<
167 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
168 DerivedMat>::getGlobalNumCols_impl()
const 170 return this->mat_->getGlobalNumCols();
173 template <
typename Scalar,
174 typename LocalOrdinal,
175 typename GlobalOrdinal,
179 AbstractConcreteMatrixAdapter<
180 Tpetra::RowMatrix<Scalar,
184 DerivedMat>::getMaxRowNNZ_impl()
const 186 return this->mat_->getGlobalMaxNumRowEntries();
189 template <
typename Scalar,
190 typename LocalOrdinal,
191 typename GlobalOrdinal,
195 AbstractConcreteMatrixAdapter<
196 Tpetra::RowMatrix<Scalar,
200 DerivedMat>::getMaxColNNZ_impl()
const 202 TEUCHOS_TEST_FOR_EXCEPTION(
true,
204 "Column access to row-based object not yet supported. " 205 "Please contact the Amesos2 developers." );
209 template <
typename Scalar,
210 typename LocalOrdinal,
211 typename GlobalOrdinal,
215 AbstractConcreteMatrixAdapter<
216 Tpetra::RowMatrix<Scalar,
220 DerivedMat>::getGlobalRowNNZ_impl(global_ordinal_t row)
const 222 return this->mat_->getNumEntriesInGlobalRow(row);
225 template <
typename Scalar,
226 typename LocalOrdinal,
227 typename GlobalOrdinal,
231 AbstractConcreteMatrixAdapter<
232 Tpetra::RowMatrix<Scalar,
236 DerivedMat>::getLocalRowNNZ_impl(local_ordinal_t row)
const 238 return this->mat_->getNumEntriesInLocalRow(row);
241 template <
typename Scalar,
242 typename LocalOrdinal,
243 typename GlobalOrdinal,
247 AbstractConcreteMatrixAdapter<
248 Tpetra::RowMatrix<Scalar,
252 DerivedMat>::getGlobalColNNZ_impl(global_ordinal_t col)
const 254 TEUCHOS_TEST_FOR_EXCEPTION(
true,
256 "Column access to row-based object not yet supported. " 257 "Please contact the Amesos2 developers." );
261 template <
typename Scalar,
262 typename LocalOrdinal,
263 typename GlobalOrdinal,
267 AbstractConcreteMatrixAdapter<
268 Tpetra::RowMatrix<Scalar,
272 DerivedMat>::getLocalColNNZ_impl(local_ordinal_t col)
const 274 TEUCHOS_TEST_FOR_EXCEPTION(
true,
276 "Column access to row-based object not yet supported. " 277 "Please contact the Amesos2 developers." );
281 template <
typename Scalar,
282 typename LocalOrdinal,
283 typename GlobalOrdinal,
286 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
287 AbstractConcreteMatrixAdapter<
288 Tpetra::RowMatrix<Scalar,
292 DerivedMat>:: getRowMap_impl()
const 294 return this->mat_->getRowMap();
297 template <
typename Scalar,
298 typename LocalOrdinal,
299 typename GlobalOrdinal,
302 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
303 AbstractConcreteMatrixAdapter<
304 Tpetra::RowMatrix<Scalar,
308 DerivedMat>::getColMap_impl()
const 310 return this->mat_->getColMap();
313 template <
typename Scalar,
314 typename LocalOrdinal,
315 typename GlobalOrdinal,
318 const RCP<const Teuchos::Comm<int> >
319 AbstractConcreteMatrixAdapter<
320 Tpetra::RowMatrix<Scalar,
324 DerivedMat>::getComm_impl()
const 326 return this->mat_->getComm();
329 template <
typename Scalar,
330 typename LocalOrdinal,
331 typename GlobalOrdinal,
335 AbstractConcreteMatrixAdapter<
336 Tpetra::RowMatrix<Scalar,
340 DerivedMat>::isLocallyIndexed_impl()
const 342 return this->mat_->isLocallyIndexed();
345 template <
typename Scalar,
346 typename LocalOrdinal,
347 typename GlobalOrdinal,
351 AbstractConcreteMatrixAdapter<
352 Tpetra::RowMatrix<Scalar,
356 DerivedMat>::isGloballyIndexed_impl()
const 358 return this->mat_->isGloballyIndexed();
361 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
362 RCP<const MatrixAdapter<DerivedMat> >
363 AbstractConcreteMatrixAdapter<
364 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat
365 >::get_impl(
const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > map)
const 369 return dynamic_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map);
371 return static_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map);
377 #endif // AMESOS2_TPETRAROWMATRIX_ABSTRACTMATRIXADAPTER_DEF_HPP Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Definition: Amesos2_Cholmod_TypeMap.hpp:92