<h3>Specific improvements</h3>
<ol>
+ <li>
+ Fixed: the DerivativeApproximation class was not working correctly when
+ used with parallel vectors.
+ (Timo Heister, 2013/10/28)
+ </li>
+
<li>
~Subscriptor and ~GrowingVectorMemory no longer throw an exception (the
former if disable_abort_on_exception was called) to be compatible with the
#include <deal.II/fe/fe_update_flags.h>
#include <deal.II/fe/mapping.h>
#include <deal.II/lac/vector.h>
+#include <deal.II/grid/filtered_iterator.h>
+
#include <utility>
DEAL_II_NAMESPACE_OPEN
template <class DerivativeDescription, int dim,
template <int, int> class DH, class InputVector, int spacedim>
static void
- approximate (SynchronousIterators<std_cxx1x::tuple<typename DH<dim,spacedim>
- ::active_cell_iterator,Vector<float>::iterator> > const &cell,
+ approximate (SynchronousIterators<std_cxx1x::tuple<FilteredIterator<typename DH<dim,spacedim>::active_cell_iterator>,
+ Vector<float>::iterator> > const &cell,
const Mapping<dim,spacedim> &mapping,
const DH<dim,spacedim> &dof,
const InputVector &solution,
// Only act on the locally owned cells
typedef FilteredIterator<typename DH<dim,spacedim>::active_cell_iterator> CellFilter;
- typedef std_cxx1x::tuple<typename DH<dim,spacedim>::active_cell_iterator,Vector<float>::iterator>
+ typedef std_cxx1x::tuple<CellFilter,Vector<float>::iterator>
Iterators;
SynchronousIterators<Iterators> begin(Iterators (CellFilter(IteratorFilters::LocallyOwnedCell(),
dof_handler.begin_active()),derivative_norm.begin())),
template <class DerivativeDescription, int dim,
template <int, int> class DH, class InputVector, int spacedim>
void
-DerivativeApproximation::approximate (SynchronousIterators<std_cxx1x::tuple<typename DH<dim,spacedim>
- ::active_cell_iterator,Vector<float>::iterator> > const &cell,
+DerivativeApproximation::approximate (SynchronousIterators<std_cxx1x::tuple<FilteredIterator<typename DH<dim,spacedim>::active_cell_iterator>,Vector<float>::iterator> > const &cell,
const Mapping<dim,spacedim> &mapping,
const DH<dim,spacedim> &dof_handler,
const InputVector &solution,
// ...and the place where it lives
const Point<dim> this_center = fe_midpoint_value.quadrature_point(0);
-
// loop over all neighbors and
// accumulate the difference
// quotients from them. note