From: heister Date: Fri, 3 Jan 2014 10:36:49 +0000 (+0000) Subject: meshworker loop: own_faces=both with hanging nodes not supported X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3906c88a489c9b7eb274c68df7f4567dd2597dbe;p=dealii-svn.git meshworker loop: own_faces=both with hanging nodes not supported git-svn-id: https://svn.dealii.org/trunk@32141 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/include/deal.II/meshworker/loop.h b/deal.II/include/deal.II/meshworker/loop.h index 2290f364ce..7d484ad553 100644 --- a/deal.II/include/deal.II/meshworker/loop.h +++ b/deal.II/include/deal.II/meshworker/loop.h @@ -333,20 +333,23 @@ namespace MeshWorker } else { - // Neighbor is - // on same - // level, but - // only do this - // from one side. - if (loop_control.own_faces != LoopControl::both && (neighbor < cell)) continue; - - // If iterator - // is active - // and neighbor - // is refined, - // skip + // If iterator is active and neighbor is refined, skip // internal face. if (internal::is_active_iterator(cell) && neighbor->has_children()) + { + Assert(loop_control.own_faces != LoopControl::both, ExcMessage( + "Assembling from both sides for own_faces is not " + "supported with hanging nodes!")); + continue; + } + + // Now neighbor is on same level + Assert(cell->level()==neighbor->level(), ExcInternalError()); + + // only do faces on same level from one side (unless + // LoopControl says otherwise) + if (loop_control.own_faces != LoopControl::both + && (neighbor < cell)) continue; const unsigned int neighbor_face_no = cell->neighbor_face_no(face_no);