]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Fix bug in FEFaceEvaluationSelector::process_and_io 10831/head
authorPeter Munch <peterrmuench@gmail.com>
Sat, 15 Aug 2020 15:41:35 +0000 (17:41 +0200)
committerPeter Munch <peterrmuench@gmail.com>
Sun, 16 Aug 2020 04:51:06 +0000 (06:51 +0200)
include/deal.II/matrix_free/evaluation_kernels.h

index 1a06ec4a525022b98bc36a6a787400873b71f1f2..76256a27e23d3a681691a351157282ccff209308 100644 (file)
@@ -2361,9 +2361,34 @@ namespace internal
     {
       const unsigned int cell = cells[0];
 
+
+      // In the case of integration, we do not need to reshuffle the
+      // data at the quadrature points to adjust for the face
+      // orientation if the shape functions are nodal at the cell
+      // boundaries (and we only requested the integration of the
+      // values) or Hermite shape functions are used. These cases are
+      // handled later when the values are written back into the
+      // glrobal vector.
       if (integrate &&
           (face_orientations[0] > 0 &&
-           subface_index < GeometryInfo<dim>::max_children_per_cell))
+           (subface_index < GeometryInfo<dim>::max_children_per_cell ||
+            !(((do_gradients == false &&
+                data.data.front().nodal_at_cell_boundaries == true) ||
+               (data.element_type ==
+                  MatrixFreeFunctions::tensor_symmetric_hermite &&
+                fe_degree > 1)) &&
+              (dof_info.index_storage_variants[dof_access_index][cell] ==
+                 MatrixFreeFunctions::DoFInfo::IndexStorageVariants::
+                   interleaved_contiguous ||
+               dof_info.index_storage_variants[dof_access_index][cell] ==
+                 MatrixFreeFunctions::DoFInfo::IndexStorageVariants::
+                   interleaved_contiguous_strided ||
+               dof_info.index_storage_variants[dof_access_index][cell] ==
+                 MatrixFreeFunctions::DoFInfo::IndexStorageVariants::
+                   interleaved_contiguous_mixed_strides ||
+               dof_info.index_storage_variants[dof_access_index][cell] ==
+                 MatrixFreeFunctions::DoFInfo::IndexStorageVariants::
+                   contiguous)))))
         {
           AssertDimension(face_orientations.size(), 1);
           adjust_for_face_orientation(face_orientations[0],

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.