From ed0d0f455d56a2f2c7dcc21c7560b84df97dfb4d Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Thu, 2 Apr 1998 16:44:28 +0000 Subject: [PATCH] Correct previously introduced bug. git-svn-id: https://svn.dealii.org/trunk@126 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/grid/tria.cc | 32 ++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/deal.II/deal.II/source/grid/tria.cc b/deal.II/deal.II/source/grid/tria.cc index 49c87f7449..8501106000 100644 --- a/deal.II/deal.II/source/grid/tria.cc +++ b/deal.II/deal.II/source/grid/tria.cc @@ -1116,8 +1116,8 @@ typename TriaDimensionInfo::raw_line_iterator Triangulation::begin_raw_line (unsigned int level) const { Assert (levellines.lines.size() != 0, - ExcEmptyLevel (level)); + if (levels[level]->lines.lines.size() == 0) + return end_line (); return raw_line_iterator ((Triangulation*)this, level, @@ -1140,8 +1140,10 @@ typename TriaDimensionInfo::raw_quad_iterator Triangulation::begin_raw_quad (unsigned int level) const { Assert (levelquads.quads.size() != 0, - ExcEmptyLevel (level)); + + if (levels[level]->quads.quads.size() == 0) + return end_quad(); + return raw_quad_iterator ((Triangulation*)this, level, 0); @@ -1217,7 +1219,7 @@ template typename TriaDimensionInfo::active_quad_iterator Triangulation::begin_active_quad (unsigned int level) const { // level is checked in begin_raw - quad_iterator i = begin(level); + quad_iterator i = begin_quad (level); if (i.state() != valid) return i; while (i->has_children()) @@ -1511,6 +1513,11 @@ unsigned int Triangulation::n_lines () const { template unsigned int Triangulation::n_lines (const unsigned int level) const { + if (levels[level]->lines.lines.size() == 0) + return 0; + + // only evaluate begin_/end_line if there + // are lines. line_iterator line = begin_line (level), endc = (level == levels.size()-1 ? line_iterator(end_line()) : @@ -1535,6 +1542,11 @@ unsigned int Triangulation::n_active_lines () const { template unsigned int Triangulation::n_active_lines (const unsigned int level) const { + if (levels[level]->lines.lines.size() == 0) + return 0; + + // only evaluate begin_/end_line if there + // are lines. active_line_iterator line = begin_active_line (level), endc = (level == levels.size()-1 ? active_line_iterator(end_line()) : @@ -1566,6 +1578,11 @@ unsigned int Triangulation<1>::n_quads (const unsigned int) const { template unsigned int Triangulation::n_quads (const unsigned int level) const { + if (levels[level]->quads.quads.size() == 0) + return 0; + + // only evaluate begin_/end_quad if there + // are quads. quad_iterator quad = begin_quad (level), endc = (level == levels.size()-1 ? quad_iterator(end_quad()) : @@ -1597,6 +1614,11 @@ unsigned int Triangulation<1>::n_active_quads (const unsigned int) const { template unsigned int Triangulation::n_active_quads (const unsigned int level) const { + if (levels[level]->quads.quads.size() == 0) + return 0; + + // only evaluate begin_/end_quad if there + // are quads. active_quad_iterator quad = begin_active_quad (level), endc = (level == levels.size()-1 ? active_quad_iterator(end_quad()) : -- 2.39.5