--- /dev/null
+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.
+<br>
+(Martin Kronbichler, 2023/06/19)
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