# include <deal.II/lac/exceptions.h>
# include <deal.II/lac/identity_matrix.h>
+# include <iterator>
# include <memory>
*/
using value_type = const Accessor<number, Constness> &;
+ /**
+ * A type that denotes what data types is used to express the difference
+ * between two iterators.
+ */
+ using difference_type = types::global_dof_index;
+
/**
* Constructor. Create an iterator into the matrix @p matrix for the given
* row and the index within it.
} // namespace ChunkSparseMatrixIterators
+DEAL_II_NAMESPACE_CLOSE
+
+namespace std
+{
+ template <typename number, bool Constness>
+ struct iterator_traits<
+ dealii::ChunkSparseMatrixIterators::Iterator<number, Constness>>
+ {
+ using iterator_category = forward_iterator_tag;
+ using value_type = typename dealii::ChunkSparseMatrixIterators::
+ Iterator<number, Constness>::value_type;
+ using difference_type = typename dealii::ChunkSparseMatrixIterators::
+ Iterator<number, Constness>::difference_type;
+ };
+} // namespace std
+
+DEAL_II_NAMESPACE_OPEN
+
/**
# include <mpi.h>
# endif
+# include <iterator>
# include <memory>
*/
using value_type = const Accessor<number, Constness> &;
+ /**
+ * A type that denotes what data types is used to express the difference
+ * between two iterators.
+ */
using difference_type = size_type;
/**
} // namespace SparseMatrixIterators
+DEAL_II_NAMESPACE_CLOSE
+
+namespace std
+{
+ template <typename number, bool Constness>
+ struct iterator_traits<
+ dealii::SparseMatrixIterators::Iterator<number, Constness>>
+ {
+ using iterator_category = forward_iterator_tag;
+ using value_type =
+ typename dealii::SparseMatrixIterators::Iterator<number,
+ Constness>::value_type;
+ using difference_type = typename dealii::SparseMatrixIterators::
+ Iterator<number, Constness>::difference_type;
+ };
+} // namespace std
+
+DEAL_II_NAMESPACE_OPEN
+
/**
* @}
*/
# include <mpi.h>
# include <cmath>
+# include <iterator>
# include <memory>
# include <type_traits>
# include <vector>
value();
};
+
+
/**
* The specialization for a const Accessor.
*/
*/
using size_type = dealii::types::global_dof_index;
+ /**
+ * A type that denotes what data types is used to express the difference
+ * between two iterators.
+ */
+ using difference_type = dealii::types::global_dof_index;
+
+ /**
+ * An alias for the type you get when you dereference an iterator of the
+ * current kind.
+ */
+ using value_type = TrilinosScalar;
+
/**
* Typedef for the matrix type (including constness) we are to operate
* on.
};
} // namespace SparseMatrixIterators
+} // namespace TrilinosWrappers
+DEAL_II_NAMESPACE_CLOSE
+namespace std
+{
+ template <bool Constness>
+ struct iterator_traits<
+ dealii::TrilinosWrappers::SparseMatrixIterators::Iterator<Constness>>
+ {
+ using iterator_category = forward_iterator_tag;
+ using value_type =
+ typename dealii::TrilinosWrappers::SparseMatrixIterators::Iterator<
+ Constness>::value_type;
+ using difference_type =
+ typename dealii::TrilinosWrappers::SparseMatrixIterators::Iterator<
+ Constness>::difference_type;
+ };
+} // namespace std
+
+DEAL_II_NAMESPACE_OPEN
+
+
+namespace TrilinosWrappers
+{
/**
* This class implements a wrapper to use the Trilinos distributed sparse
* matrix class Epetra_FECrsMatrix. This is precisely the kind of matrix we