From: Martin Kronbichler Date: Fri, 10 Jun 2022 06:11:30 +0000 (+0200) Subject: Fix case of wedge and pyramid elements X-Git-Tag: v9.5.0-rc1~1165^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0e77323e374995c1b8ae05902b136fe43bfb6a9;p=dealii.git Fix case of wedge and pyramid elements --- diff --git a/include/deal.II/dofs/dof_accessor.templates.h b/include/deal.II/dofs/dof_accessor.templates.h index 7bf28b8ab8..89b9dc072d 100644 --- a/include/deal.II/dofs/dof_accessor.templates.h +++ b/include/deal.II/dofs/dof_accessor.templates.h @@ -1032,7 +1032,8 @@ namespace internal unsigned int index = 0; - // 1) VERTEX dofs + // 1) VERTEX dofs, only step into the functions if we actually have + // DoFs on them if (fe.n_dofs_per_vertex() > 0) for (const auto vertex : accessor.vertex_indices()) dof_operation.process_vertex_dofs( @@ -1108,8 +1109,13 @@ namespace internal dof_processor); } - // 4) INNER dofs - if (fe.template n_dofs_per_object() > 0) + // 4) INNER dofs - here we need to make sure that the shortcut to not + // run the function does not miss the faces of wedge and pyramid + // elements where n_dofs_per_object might not return the largest + // possible value + if (((dim == 3 && structdim == 2) ? + fe.max_dofs_per_quad() : + fe.template n_dofs_per_object()) > 0) dof_operation.process_dofs( accessor, [&](const auto d) { return d; },