From: Martin Kronbichler Date: Fri, 1 May 2020 10:14:56 +0000 (+0200) Subject: Better document missing refinement edge data in MF for DG X-Git-Tag: v9.2.0-rc1~149^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F10004%2Fhead;p=dealii.git Better document missing refinement edge data in MF for DG --- diff --git a/include/deal.II/matrix_free/face_setup_internal.h b/include/deal.II/matrix_free/face_setup_internal.h index b019cd3cc4..0276a9fcb7 100644 --- a/include/deal.II/matrix_free/face_setup_internal.h +++ b/include/deal.II/matrix_free/face_setup_internal.h @@ -937,9 +937,6 @@ namespace internal task_info.boundary_partition_data[partition + 1] = task_info.boundary_partition_data[partition] + boundary_counter; } - Assert(refinement_edge_faces.empty(), - ExcNotImplemented("Setting up data structures on MG levels with " - "hanging nodes is currently not supported.")); task_info.ghost_face_partition_data.resize(2); task_info.ghost_face_partition_data[0] = 0; task_info.ghost_face_partition_data[1] = inner_ghost_faces.size(); diff --git a/include/deal.II/matrix_free/matrix_free.templates.h b/include/deal.II/matrix_free/matrix_free.templates.h index 783378cdee..ae734a743b 100644 --- a/include/deal.II/matrix_free/matrix_free.templates.h +++ b/include/deal.II/matrix_free/matrix_free.templates.h @@ -996,10 +996,8 @@ MatrixFree::initialize_indices( std::vector dof_indices; if (additional_data.mg_level + 1 < dof_handler.get_triangulation().n_global_levels()) - for (typename DoFHandler::cell_iterator cell = - dof_handler.begin(additional_data.mg_level + 1); - cell != dof_handler.end(additional_data.mg_level + 1); - ++cell) + for (const auto &cell : dof_handler.cell_iterators_on_level( + additional_data.mg_level + 1)) if (cell->level_subdomain_id() == task_info.my_pid) for (const unsigned int f : GeometryInfo::face_indices()) if ((cell->at_boundary(f) == false || @@ -1292,6 +1290,10 @@ MatrixFree::initialize_indices( dof_handlers.hp_dof_handler[0]->get_triangulation(), cell_level_index, task_info); + if (additional_data.mapping_update_flags_inner_faces != update_default) + Assert(face_setup.refinement_edge_faces.empty(), + ExcNotImplemented("Setting up data structures on MG levels with " + "hanging nodes is currently not supported.")); face_info.faces.clear(); std::vector hard_vectorization_boundary(