<h3>Specific improvements</h3>
<ol>
+ <li> New: TrilinosWrappers::BlockSparseMatrix now has member functions
+ TrilinosWrappers::BlockSparseMatrix::domain_paritioner() and
+ TrilinosWrappers::BlockSparseMatrix::range_partitioner() that return a
+ vector of the underlying block Epetra_Map.
+ <br>
+ (Matthias Maier, 2015/04/08)
+
+ </li>
<li> Fixed: The class SymmetricTensor<2,dim> is now usable also for dim>3.
<br>
(Martin Kronbichler, 2015/04/14)
// ---------------------------------------------------------------------
//
-// Copyright (C) 2008 - 2014 by the deal.II authors
+// Copyright (C) 2008 - 2015 by the deal.II authors
//
// This file is part of the deal.II library.
//
*/
size_type n_nonzero_elements () const;
+ /**
+ * Return a vector of the underlying Trilinos Epetra_Map that sets the
+ * partitioning of the domain space of this block matrix, i.e., the
+ * partitioning of the individual block vectors this matrix has to be
+ * multiplied with.
+ */
+ std::vector<Epetra_Map> domain_partitioner () const;
+
+ /**
+ * Return a vector of the underlying Trilinos Epetra_Map that sets the
+ * partitioning of the range space of this block matrix, i.e., the
+ * partitioning of the individual block vectors that are the result
+ * from matrix-vector products.
+ */
+ std::vector<Epetra_Map> range_partitioner () const;
+
+
/**
* Matrix-vector multiplication: let $dst = M*src$ with $M$ being this
* matrix. The vector types can be block vectors or non-block vectors
+ inline
+ std::vector<Epetra_Map>
+ BlockSparseMatrix::domain_partitioner () const
+ {
+ Assert (this->n_block_cols() != 0, ExcNotInitialized());
+ Assert (this->n_block_rows() != 0, ExcNotInitialized());
+
+ std::vector<Epetra_Map> domain_partitioner;
+ for (size_type c = 0; c < this->n_block_cols(); ++c)
+ domain_partitioner.push_back(this->sub_objects[0][c]->domain_partitioner());
+
+ return domain_partitioner;
+ }
+
+
+
+ inline
+ std::vector<Epetra_Map>
+ BlockSparseMatrix::range_partitioner () const
+ {
+ Assert (this->n_block_cols() != 0, ExcNotInitialized());
+ Assert (this->n_block_rows() != 0, ExcNotInitialized());
+
+ std::vector<Epetra_Map> range_partitioner;
+ for (size_type r = 0; r < this->n_block_rows(); ++r)
+ range_partitioner.push_back(this->sub_objects[r][0]->range_partitioner());
+
+ return range_partitioner;
+ }
+
+
+
inline
BlockSparseMatrix &
BlockSparseMatrix::operator = (const double d)