]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Set correct assertion.
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Fri, 20 Oct 2017 16:28:24 +0000 (18:28 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Fri, 20 Oct 2017 17:44:12 +0000 (19:44 +0200)
source/dofs/dof_handler.cc

index 5013af979d45faad29b0f83fc32cc6f21009e1a5..48fedcb0a2fc30be477f33e5d78297b3e28662e6 100644 (file)
@@ -1136,8 +1136,28 @@ DoFHandler<dim,spacedim>::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<types::global_dof_index> tmp(new_numbers);
+      std::sort (tmp.begin(), tmp.end());
+      std::vector<types::global_dof_index>::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; i<new_numbers.size(); ++i)
+      Assert (new_numbers[i] < n_dofs(level),
+              ExcMessage ("New DoF index is not less than the total number of dofs."));
+#endif
 
   mg_number_cache[level] = policy->renumber_mg_dofs (level, new_numbers);
 }

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.