45 #ifndef AMESOS2_MATRIXTRAITS_HPP 46 #define AMESOS2_MATRIXTRAITS_HPP 48 #include "Amesos2_config.h" 50 #include <Tpetra_CrsMatrix.hpp> 53 #ifdef HAVE_TPETRA_INST_INT_INT 54 #ifdef HAVE_AMESOS2_EPETRA 55 # include <Epetra_RowMatrix.h> 56 # include <Epetra_CrsMatrix.h> 58 # include <Epetra_VbrMatrix.h> 68 template <
class Matrix>
69 struct MatrixTraits {};
75 template <
typename Scalar,
76 typename LocalOrdinal,
77 typename GlobalOrdinal,
80 Tpetra::RowMatrix<Scalar,
84 typedef Scalar scalar_t;
85 typedef LocalOrdinal local_ordinal_t;
86 typedef GlobalOrdinal global_ordinal_t;
89 typedef Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> matrix_type;
90 typedef typename matrix_type::local_matrix_type local_matrix_t;
91 typedef typename matrix_type::local_matrix_type::row_map_type::pointer_type sparse_ptr_type;
92 typedef typename matrix_type::local_matrix_type::index_type::pointer_type sparse_idx_type;
93 typedef typename matrix_type::local_matrix_type::values_type::pointer_type sparse_values_type;
95 typedef row_access major_access;
98 template <
typename Scalar,
99 typename LocalOrdinal,
100 typename GlobalOrdinal,
103 Tpetra::CrsMatrix<Scalar,
107 typedef Scalar scalar_t;
108 typedef LocalOrdinal local_ordinal_t;
109 typedef GlobalOrdinal global_ordinal_t;
112 typedef Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> matrix_type;
113 typedef typename matrix_type::local_matrix_type local_matrix_t;
114 typedef typename matrix_type::local_matrix_type::row_map_type::pointer_type sparse_ptr_type;
115 typedef typename matrix_type::local_matrix_type::index_type::pointer_type sparse_idx_type;
116 typedef typename matrix_type::local_matrix_type::values_type::pointer_type sparse_values_type;
118 typedef row_access major_access;
122 #ifdef HAVE_TPETRA_INST_INT_INT 123 #ifdef HAVE_AMESOS2_EPETRA 126 struct MatrixTraits<Epetra_RowMatrix> {
127 typedef double scalar_t;
128 typedef int local_ordinal_t;
129 typedef int global_ordinal_t;
130 typedef Tpetra::Map<>::node_type node_t;
132 typedef Epetra_RowMatrix matrix_type;
133 typedef matrix_type local_matrix_t;
134 typedef int* sparse_ptr_type;
135 typedef int* sparse_idx_type;
136 typedef double* sparse_values_type;
138 typedef row_access major_access;
142 struct MatrixTraits<Epetra_CrsMatrix> {
143 typedef double scalar_t;
144 typedef int local_ordinal_t;
145 typedef int global_ordinal_t;
146 typedef Tpetra::Map<>::node_type node_t;
148 typedef Epetra_CrsMatrix matrix_type;
149 typedef matrix_type local_matrix_t;
150 typedef int* sparse_ptr_type;
151 typedef int* sparse_idx_type;
152 typedef double* sparse_values_type;
154 typedef row_access major_access;
168 struct MatrixTraits<Epetra_VbrMatrix> {
169 typedef double scalar_t;
170 typedef int local_ordinal_t;
171 typedef int global_ordinal_t;
172 typedef Tpetra::Map<>::node_type node_t;
174 typedef Epetra_VbrMatrix matrix_type;
175 typedef matrix_type local_matrix_t;
176 typedef int* sparse_ptr_type;
177 typedef int* sparse_idx_type;
178 typedef double* sparse_values_type;
180 typedef row_access major_access;
188 #endif // AMESOS2_MATRIXTRAITS_HPP Utility functions for Amesos2.
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48