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 <Tpetra_DefaultPlatform.hpp> 56 # include <Epetra_RowMatrix.h> 57 # include <Epetra_CrsMatrix.h> 59 # include <Epetra_VbrMatrix.h> 69 template <
class Matrix>
70 struct MatrixTraits {};
76 template <
typename Scalar,
77 typename LocalOrdinal,
78 typename GlobalOrdinal,
81 Tpetra::RowMatrix<Scalar,
85 typedef Scalar scalar_t;
86 typedef LocalOrdinal local_ordinal_t;
87 typedef GlobalOrdinal global_ordinal_t;
90 typedef Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> matrix_type;
91 typedef typename matrix_type::local_matrix_type local_matrix_t;
92 typedef typename matrix_type::local_matrix_type::row_map_type::pointer_type sparse_ptr_type;
93 typedef typename matrix_type::local_matrix_type::index_type::pointer_type sparse_idx_type;
94 typedef typename matrix_type::local_matrix_type::values_type::pointer_type sparse_values_type;
96 typedef row_access major_access;
99 template <
typename Scalar,
100 typename LocalOrdinal,
101 typename GlobalOrdinal,
104 Tpetra::CrsMatrix<Scalar,
108 typedef Scalar scalar_t;
109 typedef LocalOrdinal local_ordinal_t;
110 typedef GlobalOrdinal global_ordinal_t;
113 typedef Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> matrix_type;
114 typedef typename matrix_type::local_matrix_type local_matrix_t;
115 typedef typename matrix_type::local_matrix_type::row_map_type::pointer_type sparse_ptr_type;
116 typedef typename matrix_type::local_matrix_type::index_type::pointer_type sparse_idx_type;
117 typedef typename matrix_type::local_matrix_type::values_type::pointer_type sparse_values_type;
119 typedef row_access major_access;
123 #ifdef HAVE_TPETRA_INST_INT_INT 124 #ifdef HAVE_AMESOS2_EPETRA 127 struct MatrixTraits<Epetra_RowMatrix> {
128 typedef double scalar_t;
129 typedef int local_ordinal_t;
130 typedef int global_ordinal_t;
131 typedef Tpetra::DefaultPlatform::DefaultPlatformType::NodeType node_t;
133 typedef Epetra_RowMatrix matrix_type;
134 typedef matrix_type local_matrix_t;
135 typedef int* sparse_ptr_type;
136 typedef int* sparse_idx_type;
137 typedef double* sparse_values_type;
139 typedef row_access major_access;
143 struct MatrixTraits<Epetra_CrsMatrix> {
144 typedef double scalar_t;
145 typedef int local_ordinal_t;
146 typedef int global_ordinal_t;
147 typedef Tpetra::DefaultPlatform::DefaultPlatformType::NodeType node_t;
149 typedef Epetra_CrsMatrix matrix_type;
150 typedef matrix_type local_matrix_t;
151 typedef int* sparse_ptr_type;
152 typedef int* sparse_idx_type;
153 typedef double* sparse_values_type;
155 typedef row_access major_access;
169 struct MatrixTraits<Epetra_VbrMatrix> {
170 typedef double scalar_t;
171 typedef int local_ordinal_t;
172 typedef int global_ordinal_t;
173 typedef Tpetra::DefaultPlatform::DefaultPlatformType::NodeType node_t;
175 typedef Epetra_VbrMatrix matrix_type;
176 typedef matrix_type local_matrix_t;
177 typedef int* sparse_ptr_type;
178 typedef int* sparse_idx_type;
179 typedef double* sparse_values_type;
181 typedef row_access major_access;
189 #endif // AMESOS2_MATRIXTRAITS_HPP Utility functions for Amesos2.
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48