const value_type * src_pointer_to_current_range,
value_type * dst_pointer_to_current_range) const
{
- AssertIndexRange(begin_range, diagonal.locally_owned_elements().n_elements());
+ AssertIndexRange(begin_range,
+ diagonal.locally_owned_elements().n_elements() + 1);
AssertIndexRange(end_range,
diagonal.locally_owned_elements().n_elements() + 1);
deallog << "(" << i.first << "," << i.second << ") ";
deallog << std::endl;
- for (const auto i : dof_info.row_starts)
- deallog << "(" << i.first << "," << i.second << ") ";
+ // make sure to filter out contributions that only get filled up to make
+ // all SIMD lanes populated
+ for (unsigned int i = 0; i < dof_info.row_starts.size(); ++i)
+ if (i == 0 ||
+ (dof_info.row_starts[i].first > dof_info.row_starts[i - 1].first))
+ deallog << "(" << dof_info.row_starts[i].first << ","
+ << dof_info.row_starts[i].second << ") ";
deallog << std::endl;
deallog << std::endl;
DEAL::
DEAL::11 11 2 11 2 11 2 2 2 2
DEAL::(0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (1,0) (1,0) (0,0) (0,0) (0,0) (1,0) (0,0) (1,0) (0,0) (1,0) (0,0) (0,0)
-DEAL::(0,0) (1,3) (3,5) (5,7) (7,9) (8,12) (9,15) (10,18) (10,18)
+DEAL::(0,0) (1,3) (3,5) (5,7) (7,9) (8,12) (9,15) (10,18)
DEAL::
Process #0
Local range: [0, 14), global size: 14
const Number * src_pointer_to_current_range,
Number * dst_pointer_to_current_range) const
{
- AssertIndexRange(begin_range, vec.locally_owned_elements().n_elements());
+ AssertIndexRange(begin_range,
+ vec.locally_owned_elements().n_elements() + 1);
AssertIndexRange(end_range, vec.locally_owned_elements().n_elements() + 1);
const Number * diagonal_entry = vec.begin() + begin_range;