From c06a6af499490b529112bb16dcdef520353e50e2 Mon Sep 17 00:00:00 2001
From: Peter Munch <peterrmuench@gmail.com>
Date: Sat, 23 Apr 2022 08:52:20 +0200
Subject: [PATCH] Remove parameter use_fast_hanging_node_algorithm from MF

---
 include/deal.II/matrix_free/matrix_free.h      | 15 +++------------
 .../matrix_free/matrix_free.templates.h        |  8 +++-----
 .../matrix_free/mixed_mesh_hn_algorithm_01.cc  | 18 ------------------
 .../mixed_mesh_hn_algorithm_01.output          | 16 ----------------
 4 files changed, 6 insertions(+), 51 deletions(-)

diff --git a/include/deal.II/matrix_free/matrix_free.h b/include/deal.II/matrix_free/matrix_free.h
index c8d7e110de..a9f5138a1e 100644
--- a/include/deal.II/matrix_free/matrix_free.h
+++ b/include/deal.II/matrix_free/matrix_free.h
@@ -224,8 +224,7 @@ public:
       const bool         overlap_communication_computation    = true,
       const bool         hold_all_faces_to_owned_cells        = false,
       const bool         cell_vectorization_categories_strict = false,
-      const bool         allow_ghosted_vectors_in_loops       = true,
-      const bool         use_fast_hanging_node_algorithm      = true)
+      const bool         allow_ghosted_vectors_in_loops       = true)
       : tasks_parallel_scheme(tasks_parallel_scheme)
       , tasks_block_size(tasks_block_size)
       , mapping_update_flags(mapping_update_flags)
@@ -241,7 +240,6 @@ public:
       , cell_vectorization_categories_strict(
           cell_vectorization_categories_strict)
       , allow_ghosted_vectors_in_loops(allow_ghosted_vectors_in_loops)
-      , use_fast_hanging_node_algorithm(use_fast_hanging_node_algorithm)
       , communicator_sm(MPI_COMM_SELF)
     {}
 
@@ -268,7 +266,6 @@ public:
       , cell_vectorization_categories_strict(
           other.cell_vectorization_categories_strict)
       , allow_ghosted_vectors_in_loops(other.allow_ghosted_vectors_in_loops)
-      , use_fast_hanging_node_algorithm(other.use_fast_hanging_node_algorithm)
       , communicator_sm(other.communicator_sm)
     {}
 
@@ -296,9 +293,8 @@ public:
       cell_vectorization_category   = other.cell_vectorization_category;
       cell_vectorization_categories_strict =
         other.cell_vectorization_categories_strict;
-      allow_ghosted_vectors_in_loops  = other.allow_ghosted_vectors_in_loops;
-      use_fast_hanging_node_algorithm = other.use_fast_hanging_node_algorithm;
-      communicator_sm                 = other.communicator_sm;
+      allow_ghosted_vectors_in_loops = other.allow_ghosted_vectors_in_loops;
+      communicator_sm                = other.communicator_sm;
 
       return *this;
     }
@@ -535,11 +531,6 @@ public:
      */
     bool allow_ghosted_vectors_in_loops;
 
-    /**
-     * Flag that allows to disable the fast hanging-node algorithm.
-     */
-    bool use_fast_hanging_node_algorithm;
-
     /**
      * Shared-memory MPI communicator. Default: MPI_COMM_SELF.
      */
diff --git a/include/deal.II/matrix_free/matrix_free.templates.h b/include/deal.II/matrix_free/matrix_free.templates.h
index f406690258..9e3528b7b3 100644
--- a/include/deal.II/matrix_free/matrix_free.templates.h
+++ b/include/deal.II/matrix_free/matrix_free.templates.h
@@ -1064,8 +1064,7 @@ namespace internal
     std::vector<MatrixFreeFunctions::DoFInfo> &         dof_info,
     MatrixFreeFunctions::FaceSetup<dim> &               face_setup,
     MatrixFreeFunctions::ConstraintValues<double> &     constraint_values,
-    const bool use_vector_data_exchanger_full,
-    const bool use_fast_hanging_node_algorithm_in)
+    const bool use_vector_data_exchanger_full)
   {
     if (do_face_integrals)
       face_setup.initialize(dof_handler[0]->get_triangulation(),
@@ -1091,7 +1090,7 @@ namespace internal
 
     bool cell_categorization_enabled = !cell_vectorization_category.empty();
 
-    bool use_fast_hanging_node_algorithm = use_fast_hanging_node_algorithm_in;
+    bool use_fast_hanging_node_algorithm = true;
 
     if (use_fast_hanging_node_algorithm)
       {
@@ -1825,8 +1824,7 @@ MatrixFree<dim, Number, VectorizedArrayType>::initialize_indices(
     dof_info,
     face_setup,
     constraint_values,
-    additional_data.communicator_sm != MPI_COMM_SELF,
-    additional_data.use_fast_hanging_node_algorithm);
+    additional_data.communicator_sm != MPI_COMM_SELF);
 
   // set constraint pool from the std::map and reorder the indices
   std::vector<const std::vector<double> *> constraints(
diff --git a/tests/matrix_free/mixed_mesh_hn_algorithm_01.cc b/tests/matrix_free/mixed_mesh_hn_algorithm_01.cc
index a9f6ae2ae1..803a7bbdb5 100644
--- a/tests/matrix_free/mixed_mesh_hn_algorithm_01.cc
+++ b/tests/matrix_free/mixed_mesh_hn_algorithm_01.cc
@@ -145,22 +145,4 @@ main()
 
     print("use_fast_hanging_node_algorithm = true", matrix_free);
   }
-
-  {
-    typename MatrixFree<dim, double, VectorizedArray<double, 1>>::AdditionalData
-      additional_data;
-    additional_data.mapping_update_flags = update_gradients | update_values;
-    additional_data.use_fast_hanging_node_algorithm = false;
-
-    MatrixFree<dim, double, VectorizedArray<double, 1>> matrix_free;
-    matrix_free.reinit(
-      mapping, dof_handler, constraints, quadrature_formula, additional_data);
-
-    for (const auto &i :
-         matrix_free.get_dof_info(0).hanging_node_constraint_masks)
-      deallog << static_cast<unsigned int>(i) << std::endl;
-    deallog << std::endl;
-
-    print("use_fast_hanging_node_algorithm = false", matrix_free);
-  }
 }
diff --git a/tests/matrix_free/mixed_mesh_hn_algorithm_01.output b/tests/matrix_free/mixed_mesh_hn_algorithm_01.output
index 5402316913..b10dff3893 100644
--- a/tests/matrix_free/mixed_mesh_hn_algorithm_01.output
+++ b/tests/matrix_free/mixed_mesh_hn_algorithm_01.output
@@ -14,19 +14,3 @@ DEAL::0   : 8   12  10  14
 DEAL::17  : 9   10  3   1   
 DEAL::16  : 10  14  3   1   
 DEAL::
-DEAL::
-DEAL::use_fast_hanging_node_algorithm = false
-DEAL::0   : 12  13  14  
-DEAL::0   : 13  2   1   2   
-DEAL::0   : 14  1   2   1   
-DEAL::0   : 13  1   2   14  
-DEAL::0   : 0   1   2   
-DEAL::0   : 3   1   4   
-DEAL::0   : 5   4   1   
-DEAL::0   : 1   0   5   
-DEAL::0   : 6   5   0   
-DEAL::0   : 7   8   9   10  
-DEAL::0   : 8   12  10  14  
-DEAL::0   : 9   10  3   1   3   
-DEAL::0   : 10  14  1   3   1   
-DEAL::
-- 
2.39.5