#include <lac/exceptions.h>
#include <lac/vector.h>
#include <lac/trilinos_vector_base.h>
+#include <lac/trilinos_sparse_matrix.h>
#ifdef DEAL_II_USE_TRILINOS
Vector &
operator = (const ::dealii::Vector<Number> &v);
+ /**
+ * This reinit function is
+ * meant to be used for
+ * parallel calculations where
+ * some non-local data has to
+ * be used. The typical
+ * situation where one needs
+ * this function is the call of
+ * the
+ * FEValues<dim>::get_function_values
+ * function (or of some
+ * derivatives) in
+ * parallel. Since it is
+ * usually faster to retrieve
+ * the data in advance, this
+ * function can be called
+ * before the assembly forks
+ * out to the different
+ * processors. What this
+ * function does is the
+ * following: It takes the
+ * information in the columns
+ * of the given matrix and
+ * looks which data couples
+ * between the different
+ * processors. That data is
+ * then queried from the input
+ * vector. Note that you should
+ * not write to the resulting
+ * vector any more, since the
+ * some data can be stored
+ * several times on different
+ * processors, leading to
+ * unpredictable results. In
+ * particular, such a vector
+ * cannot be used for
+ * matrix-vector products as
+ * for example done during the
+ * solution of linear systems.
+ */
+ void do_data_exchange (const dealii::TrilinosWrappers::SparseMatrix &matrix,
+ const Vector &vector);
+
private:
/**
* The Epetra map is used to map