From 03e498d187159044c0663b8acd686c20960bc2ed Mon Sep 17 00:00:00 2001 From: Martin Kronbichler Date: Fri, 20 Oct 2017 18:28:24 +0200 Subject: [PATCH] Set correct assertion. --- source/dofs/dof_handler.cc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/source/dofs/dof_handler.cc b/source/dofs/dof_handler.cc index 5013af979d..48fedcb0a2 100644 --- a/source/dofs/dof_handler.cc +++ b/source/dofs/dof_handler.cc @@ -1136,8 +1136,28 @@ DoFHandler::renumber_dofs (const unsigned int { Assert(mg_levels.size()>0 && levels.size()>0, ExcMessage("You need to distribute active and level DoFs before you can renumber level DoFs.")); - AssertIndexRange(level, levels.size()); - AssertDimension (new_numbers.size(), n_dofs(level)); + AssertIndexRange(level, get_triangulation().n_global_levels()); + AssertDimension (new_numbers.size(), locally_owned_mg_dofs(level).n_elements()); + +#ifdef DEBUG + // assert that the new indices are consecutively numbered if we are working + // on a single processor. this doesn't need to hold in the case of a + // parallel mesh since we map the interval [0...n_dofs(level)) into itself + // but only globally, not on each processor + if (n_locally_owned_dofs() == n_dofs()) + { + std::vector tmp(new_numbers); + std::sort (tmp.begin(), tmp.end()); + std::vector::const_iterator p = tmp.begin(); + types::global_dof_index i = 0; + for (; p!=tmp.end(); ++p, ++i) + Assert (*p == i, ExcNewNumbersNotConsecutive(i)); + } + else + for (types::global_dof_index i=0; irenumber_mg_dofs (level, new_numbers); } -- 2.39.5