From: Peter Munch Date: Fri, 26 Feb 2021 12:35:22 +0000 (+0100) Subject: Fix DataAccessOnFaces::values for meshes containing non-hypercube cells X-Git-Tag: v9.3.0-rc1~406^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F11814%2Fhead;p=dealii.git Fix DataAccessOnFaces::values for meshes containing non-hypercube cells --- diff --git a/include/deal.II/matrix_free/dof_info.templates.h b/include/deal.II/matrix_free/dof_info.templates.h index 59274ade9d..4dfee437bd 100644 --- a/include/deal.II/matrix_free/dof_info.templates.h +++ b/include/deal.II/matrix_free/dof_info.templates.h @@ -1310,13 +1310,17 @@ namespace internal const std::function &)> &loop) { - bool all_nodal = true; + bool all_nodal_and_tensorial = true; for (unsigned int c = 0; c < n_base_elements; ++c) - if (!shape_info(global_base_element_offset + c, 0) - .data.front() - .nodal_at_cell_boundaries) - all_nodal = false; - if (all_nodal == false) + { + const auto &si = + shape_info(global_base_element_offset + c, 0).data.front(); + if (!si.nodal_at_cell_boundaries || + (si.element_type == + internal::MatrixFreeFunctions::ElementType::tensor_none)) + all_nodal_and_tensorial = false; + } + if (all_nodal_and_tensorial == false) vector_partitioner_values = vector_partitioner; else {