11#ifndef AMESOS2_MATRIXTRAITS_HPP
12#define AMESOS2_MATRIXTRAITS_HPP
14#include "Amesos2_config.h"
15#include "Tpetra_CrsMatrix.hpp"
21 template <
class Matrix>
22 struct MatrixTraits {};
28 template <
typename Scalar,
29 typename LocalOrdinal,
30 typename GlobalOrdinal,
33 Tpetra::RowMatrix<Scalar,
37 typedef Scalar scalar_t;
38 typedef LocalOrdinal local_ordinal_t;
39 typedef GlobalOrdinal global_ordinal_t;
42 typedef Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> matrix_type;
43 typedef typename matrix_type::impl_scalar_type impl_scalar_type;
45 typedef typename matrix_type::nonconst_global_inds_host_view_type global_host_idx_type;
46 typedef typename matrix_type::nonconst_values_host_view_type global_host_val_type;
48 typedef row_access major_access;
51 template <
typename Scalar,
52 typename LocalOrdinal,
53 typename GlobalOrdinal,
56 Tpetra::CrsMatrix<Scalar,
60 typedef Scalar scalar_t;
61 typedef LocalOrdinal local_ordinal_t;
62 typedef GlobalOrdinal global_ordinal_t;
65 typedef Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> matrix_type;
66 typedef typename matrix_type::impl_scalar_type impl_scalar_type;
68 typedef typename matrix_type::nonconst_global_inds_host_view_type global_host_idx_type;
69 typedef typename matrix_type::nonconst_values_host_view_type global_host_val_type;
71 typedef row_access major_access;
74 template <
typename Scalar,
75 typename LocalOrdinal,
78 KokkosSparse::CrsMatrix<Scalar,
81 typedef Scalar scalar_t;
82 typedef LocalOrdinal local_ordinal_t;
83 typedef Tpetra::Map<>::global_ordinal_type global_ordinal_t;
84 typedef LocalOrdinal global_size_t;
86 typedef KokkosSparse::CrsMatrix<Scalar, LocalOrdinal, DeviceType> matrix_type;
87 typedef Scalar impl_scalar_type;
88 typedef Tpetra::Map<>::node_type node_t;
90 typedef typename matrix_type::host_mirror_type::index_type global_host_idx_type;
91 typedef typename matrix_type::host_mirror_type::values_type global_host_val_type;
93 typedef row_access major_access;
Utility functions for Amesos2.