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." );
208 template <
typename Scalar,
209 typename LocalOrdinal,
210 typename GlobalOrdinal,
214 AbstractConcreteMatrixAdapter<
215 Tpetra::RowMatrix<Scalar,
219 DerivedMat>::getGlobalRowNNZ_impl(global_ordinal_t row)
const 221 return this->mat_->getNumEntriesInGlobalRow(row);
224 template <
typename Scalar,
225 typename LocalOrdinal,
226 typename GlobalOrdinal,
230 AbstractConcreteMatrixAdapter<
231 Tpetra::RowMatrix<Scalar,
235 DerivedMat>::getLocalRowNNZ_impl(local_ordinal_t row)
const 237 return this->mat_->getNumEntriesInLocalRow(row);
240 template <
typename Scalar,
241 typename LocalOrdinal,
242 typename GlobalOrdinal,
246 AbstractConcreteMatrixAdapter<
247 Tpetra::RowMatrix<Scalar,
251 DerivedMat>::getGlobalColNNZ_impl(global_ordinal_t col)
const 253 TEUCHOS_TEST_FOR_EXCEPTION(
true,
255 "Column access to row-based object not yet supported. " 256 "Please contact the Amesos2 developers." );
259 template <
typename Scalar,
260 typename LocalOrdinal,
261 typename GlobalOrdinal,
265 AbstractConcreteMatrixAdapter<
266 Tpetra::RowMatrix<Scalar,
270 DerivedMat>::getLocalColNNZ_impl(local_ordinal_t col)
const 272 TEUCHOS_TEST_FOR_EXCEPTION(
true,
274 "Column access to row-based object not yet supported. " 275 "Please contact the Amesos2 developers." );
278 template <
typename Scalar,
279 typename LocalOrdinal,
280 typename GlobalOrdinal,
283 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
284 AbstractConcreteMatrixAdapter<
285 Tpetra::RowMatrix<Scalar,
289 DerivedMat>:: getRowMap_impl()
const 291 return this->mat_->getRowMap();
294 template <
typename Scalar,
295 typename LocalOrdinal,
296 typename GlobalOrdinal,
299 const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
300 AbstractConcreteMatrixAdapter<
301 Tpetra::RowMatrix<Scalar,
305 DerivedMat>::getColMap_impl()
const 307 return this->mat_->getColMap();
310 template <
typename Scalar,
311 typename LocalOrdinal,
312 typename GlobalOrdinal,
315 const RCP<const Teuchos::Comm<int> >
316 AbstractConcreteMatrixAdapter<
317 Tpetra::RowMatrix<Scalar,
321 DerivedMat>::getComm_impl()
const 323 return this->mat_->getComm();
326 template <
typename Scalar,
327 typename LocalOrdinal,
328 typename GlobalOrdinal,
332 AbstractConcreteMatrixAdapter<
333 Tpetra::RowMatrix<Scalar,
337 DerivedMat>::isLocallyIndexed_impl()
const 339 return this->mat_->isLocallyIndexed();
342 template <
typename Scalar,
343 typename LocalOrdinal,
344 typename GlobalOrdinal,
348 AbstractConcreteMatrixAdapter<
349 Tpetra::RowMatrix<Scalar,
353 DerivedMat>::isGloballyIndexed_impl()
const 355 return this->mat_->isGloballyIndexed();
358 template <
typename Scalar,
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node,
class DerivedMat>
359 RCP<const MatrixAdapter<DerivedMat> >
360 AbstractConcreteMatrixAdapter<
361 Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>, DerivedMat
362 >::get_impl(
const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > map)
const 366 return dynamic_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map);
368 return static_cast<ConcreteMatrixAdapter<DerivedMat>*
>(
this)->get_impl(map);
374 #endif // AMESOS2_TPETRAROWMATRIX_ABSTRACTMATRIXADAPTER_DEF_HPP Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Definition: Amesos2_Cholmod_TypeMap.hpp:92