45 #ifndef AMESOS2_MATRIXADAPTER_DECL_HPP 46 #define AMESOS2_MATRIXADAPTER_DECL_HPP 48 #include "Amesos2_config.h" 50 #include <Teuchos_Comm.hpp> 51 #include <Teuchos_ArrayView.hpp> 52 #include <Teuchos_VerbosityLevel.hpp> 53 #include <Teuchos_FancyOStream.hpp> 55 #include <Tpetra_ConfigDefs.hpp> 59 #include "Amesos2_MatrixTraits.hpp" 63 template <
class M>
class ConcreteMatrixAdapter;
75 template <
class Matrix >
80 typedef typename MatrixTraits<Matrix>::scalar_t scalar_t;
81 typedef typename MatrixTraits<Matrix>::local_ordinal_t local_ordinal_t;
82 typedef typename MatrixTraits<Matrix>::global_ordinal_t global_ordinal_t;
83 typedef typename MatrixTraits<Matrix>::node_t node_t;
84 typedef Tpetra::global_size_t global_size_t;
86 typedef Matrix matrix_t;
88 typedef ConcreteMatrixAdapter<Matrix> adapter_t;
127 void getCrs(
const Teuchos::ArrayView<scalar_t> nzval,
128 const Teuchos::ArrayView<global_ordinal_t> colind,
129 const Teuchos::ArrayView<global_size_t> rowptr,
131 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > rowmap,
139 void getCrs(
const Teuchos::ArrayView<scalar_t> nzval,
140 const Teuchos::ArrayView<global_ordinal_t> colind,
141 const Teuchos::ArrayView<global_size_t> rowptr,
172 void getCcs(
const Teuchos::ArrayView<scalar_t> nzval,
173 const Teuchos::ArrayView<global_ordinal_t> rowind,
174 const Teuchos::ArrayView<global_size_t> colptr,
176 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > colmap,
184 void getCcs(
const Teuchos::ArrayView<scalar_t> nzval,
185 const Teuchos::ArrayView<global_ordinal_t> rowind,
186 const Teuchos::ArrayView<global_size_t> colptr,
193 const Teuchos::RCP<const Teuchos::Comm<int> >
getComm()
const 222 Teuchos::RCP<const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> >
227 Teuchos::RCP<const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> >
232 Teuchos::RCP<const type>
get(
const Teuchos::Ptr<const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > map)
const;
238 void describe(Teuchos::FancyOStream &out,
239 const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default)
const;
244 void help_getCrs(
const Teuchos::ArrayView<scalar_t> nzval,
245 const Teuchos::ArrayView<global_ordinal_t> colind,
246 const Teuchos::ArrayView<global_size_t> rowptr,
248 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > rowmap,
252 void help_getCrs(
const Teuchos::ArrayView<scalar_t> nzval,
253 const Teuchos::ArrayView<global_ordinal_t> colind,
254 const Teuchos::ArrayView<global_size_t> rowptr,
256 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > rowmap,
260 void do_getCrs(
const Teuchos::ArrayView<scalar_t> nzval,
261 const Teuchos::ArrayView<global_ordinal_t> colind,
262 const Teuchos::ArrayView<global_size_t> rowptr,
264 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > rowmap,
268 void do_getCrs(
const Teuchos::ArrayView<scalar_t> nzval,
269 const Teuchos::ArrayView<global_ordinal_t> colind,
270 const Teuchos::ArrayView<global_size_t> rowptr,
272 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > rowmap,
276 void help_getCcs(
const Teuchos::ArrayView<scalar_t> nzval,
277 const Teuchos::ArrayView<global_ordinal_t> rowind,
278 const Teuchos::ArrayView<global_size_t> colptr,
280 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > colmap,
284 void help_getCcs(
const Teuchos::ArrayView<scalar_t> nzval,
285 const Teuchos::ArrayView<global_ordinal_t> rowind,
286 const Teuchos::ArrayView<global_size_t> colptr,
288 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > colmap,
292 void do_getCcs(
const Teuchos::ArrayView<scalar_t> nzval,
293 const Teuchos::ArrayView<global_ordinal_t> rowind,
294 const Teuchos::ArrayView<global_size_t> colptr,
296 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > colmap,
300 void do_getCcs(
const Teuchos::ArrayView<scalar_t> nzval,
301 const Teuchos::ArrayView<global_ordinal_t> rowind,
302 const Teuchos::ArrayView<global_size_t> colptr,
304 const Teuchos::Ptr<
const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > colmap,
319 const Teuchos::ArrayView<global_ordinal_t>& indices,
320 const Teuchos::ArrayView<scalar_t>& vals,
330 const Teuchos::ArrayView<global_ordinal_t>& indices,
331 const Teuchos::ArrayView<scalar_t>& vals,
334 size_t getMaxRowNNZ()
const;
336 size_t getMaxColNNZ()
const;
338 size_t getGlobalRowNNZ(global_ordinal_t row)
const;
340 size_t getLocalRowNNZ(local_ordinal_t row)
const;
342 size_t getGlobalColNNZ(global_ordinal_t col)
const;
344 size_t getLocalColNNZ(local_ordinal_t col)
const;
346 bool isLocallyIndexed()
const;
348 bool isGloballyIndexed()
const;
351 const Teuchos::RCP<const Matrix> mat_;
355 mutable Teuchos::RCP<const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > row_map_;
357 mutable Teuchos::RCP<const Tpetra::Map<local_ordinal_t,global_ordinal_t,node_t> > col_map_;
359 mutable Teuchos::RCP<const Teuchos::Comm<int> > comm_;
365 template <
class Matrix>
366 Teuchos::RCP<MatrixAdapter<Matrix> >
367 createMatrixAdapter(Teuchos::RCP<Matrix> m);
369 template <
class Matrix>
370 Teuchos::RCP<const MatrixAdapter<Matrix> >
371 createConstMatrixAdapter(Teuchos::RCP<const Matrix> m);
375 #endif // AMESOS2_MATRIXADAPTER_DECL_HPP global_size_t getGlobalNumRows() const
Get the number of rows in this matrix.
Definition: Amesos2_MatrixAdapter_def.hpp:127
const Teuchos::RCP< const Teuchos::Comm< int > > getComm() const
Returns the Teuchos::Comm object associated with this matrix.
Definition: Amesos2_MatrixAdapter_decl.hpp:193
void getCrs(const Teuchos::ArrayView< scalar_t > nzval, const Teuchos::ArrayView< global_ordinal_t > colind, const Teuchos::ArrayView< global_size_t > rowptr, global_size_t &nnz, const Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > > rowmap, EStorage_Ordering ordering=ARBITRARY) const
Gets a compressed-row storage summary of this.
global_size_t getGlobalNNZ() const
Get the global number of non-zeros in this sparse matrix.
Definition: Amesos2_MatrixAdapter_def.hpp:155
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Describes of this matrix adapter with some level of verbosity.
Definition: Amesos2_MatrixAdapter_def.hpp:193
size_t getLocalNumRows() const
Get the number of rows local to the calling process.
Definition: Amesos2_MatrixAdapter_def.hpp:162
Definition: Amesos2_TypeDecl.hpp:142
Utility functions for Amesos2.
EStorage_Ordering
Definition: Amesos2_TypeDecl.hpp:140
Indicates that the concrete class has a special implementation that should be called.
Definition: Amesos2_TypeDecl.hpp:82
void getGlobalColCopy(global_ordinal_t col, const Teuchos::ArrayView< global_ordinal_t > &indices, const Teuchos::ArrayView< scalar_t > &vals, size_t &nnz) const
Definition: Amesos2_MatrixAdapter_def.hpp:458
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
size_t getLocalNumCols() const
Get the number of columns local to the calling process.
Definition: Amesos2_MatrixAdapter_def.hpp:169
size_t getLocalNNZ() const
Get the local number of non-zeros on this processor.
Definition: Amesos2_MatrixAdapter_def.hpp:176
void getCcs(const Teuchos::ArrayView< scalar_t > nzval, const Teuchos::ArrayView< global_ordinal_t > rowind, const Teuchos::ArrayView< global_size_t > colptr, global_size_t &nnz, const Teuchos::Ptr< const Tpetra::Map< local_ordinal_t, global_ordinal_t, node_t > > colmap, EStorage_Ordering ordering=ARBITRARY) const
Gets a compressed-column storage summary of this.
Indicates that the object of an adapter provides row access to its data.
Definition: Amesos2_TypeDecl.hpp:100
std::string description() const
Returns a short description of this Solver.
Definition: Amesos2_MatrixAdapter_def.hpp:183
global_size_t getColumnIndexBase() const
Get the indexbase for the column map.
Definition: Amesos2_MatrixAdapter_def.hpp:148
A Matrix adapter interface for Amesos2.
Definition: Amesos2_MatrixAdapter_decl.hpp:76
global_size_t getGlobalNumCols() const
Get the number of columns in this matrix.
Definition: Amesos2_MatrixAdapter_def.hpp:134
void getGlobalRowCopy(global_ordinal_t row, const Teuchos::ArrayView< global_ordinal_t > &indices, const Teuchos::ArrayView< scalar_t > &vals, size_t &nnz) const
Definition: Amesos2_MatrixAdapter_def.hpp:448
global_size_t getRowIndexBase() const
Get the indexbase for the row map.
Definition: Amesos2_MatrixAdapter_def.hpp:141
Indicates that the concrete class can use the generic getC{c|r}s methods implemented in MatrixAdapter...
Definition: Amesos2_TypeDecl.hpp:91
EDistribution
Definition: Amesos2_TypeDecl.hpp:123
Indicates that the object of an adapter provides column access to its data.
Definition: Amesos2_TypeDecl.hpp:109