From: Martin Kronbichler Date: Mon, 19 Jun 2023 17:06:05 +0000 (+0200) Subject: MatrixFree: Only set up the inner faces when so requested X-Git-Tag: relicensing~825^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F15381%2Fhead;p=dealii.git MatrixFree: Only set up the inner faces when so requested --- diff --git a/doc/news/changes/incompatibilities/20230619Kronbichler b/doc/news/changes/incompatibilities/20230619Kronbichler new file mode 100644 index 0000000000..57a57cdba5 --- /dev/null +++ b/doc/news/changes/incompatibilities/20230619Kronbichler @@ -0,0 +1,9 @@ +MatrixFree::reinit() would always set up the data structures for inner faces, +also in case only +MatrixFree::AdditionalData::mapping_updates_flags_boundary_faces was set. As +this can lead to considerably higher memory consumption, the inner faces are +now only set up when requested, increasing efficiency. When inner faces are +desired, make sure to set +MatrixFree::AdditionalData::mapping_updates_flags_inner_faces. +
+(Martin Kronbichler, 2023/06/19) diff --git a/include/deal.II/matrix_free/matrix_free.templates.h b/include/deal.II/matrix_free/matrix_free.templates.h index 4f66144506..7b458add7b 100644 --- a/include/deal.II/matrix_free/matrix_free.templates.h +++ b/include/deal.II/matrix_free/matrix_free.templates.h @@ -1969,12 +1969,13 @@ MatrixFree::initialize_indices( true); } - internal::MatrixFreeFunctions::collect_faces_vectorization( - face_setup.inner_faces, - hard_vectorization_boundary, - task_info.face_partition_data, - face_info.faces, - dof_info[0].cell_active_fe_index); + if (additional_data.mapping_update_flags_inner_faces != update_default) + internal::MatrixFreeFunctions::collect_faces_vectorization( + face_setup.inner_faces, + hard_vectorization_boundary, + task_info.face_partition_data, + face_info.faces, + dof_info[0].cell_active_fe_index); // on boundary faces, we must also respect the vectorization boundary of // the inner faces because we might have dependencies on ghosts of