From: Matthias Maier <tamiko@43-1.org>
Date: Fri, 25 May 2018 22:05:49 +0000 (-0500)
Subject: RCM: Update non_matching: coupling
X-Git-Tag: v9.1.0-rc1~1067^2~24
X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5d55b604f6bfb260993c4ce5bb05e8128b8f638;p=dealii.git

RCM: Update non_matching: coupling
---

diff --git a/include/deal.II/non_matching/coupling.h b/include/deal.II/non_matching/coupling.h
index 3b22d4aebc..b8e134abd8 100644
--- a/include/deal.II/non_matching/coupling.h
+++ b/include/deal.II/non_matching/coupling.h
@@ -28,7 +28,7 @@
 
 #include <deal.II/grid/grid_tools_cache.h>
 
-#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/lac/affine_constraints.h>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -90,15 +90,19 @@ namespace NonMatching
    *
    * @author Luca Heltai, 2018
    */
-  template <int dim0, int dim1, int spacedim, typename Sparsity>
+  template <int dim0,
+            int dim1,
+            int spacedim,
+            typename Sparsity,
+            typename number = double>
   void
   create_coupling_sparsity_pattern(
     const DoFHandler<dim0, spacedim> &space_dh,
     const DoFHandler<dim1, spacedim> &immersed_dh,
     const Quadrature<dim1> &          quad,
     Sparsity &                        sparsity,
-    const ConstraintMatrix &          constraints    = ConstraintMatrix(),
-    const ComponentMask &             space_comps    = ComponentMask(),
+    const AffineConstraints<number> & constraints = AffineConstraints<number>(),
+    const ComponentMask &             space_comps = ComponentMask(),
     const ComponentMask &             immersed_comps = ComponentMask(),
     const Mapping<dim0, spacedim> &   space_mapping =
       StaticMappingQ1<dim0, spacedim>::mapping,
@@ -113,7 +117,11 @@ namespace NonMatching
    *
    * @author Luca Heltai, 2018
    */
-  template <int dim0, int dim1, int spacedim, typename Sparsity>
+  template <int dim0,
+            int dim1,
+            int spacedim,
+            typename Sparsity,
+            typename number = double>
   void
   create_coupling_sparsity_pattern(
     const GridTools::Cache<dim0, spacedim> &cache,
@@ -121,10 +129,10 @@ namespace NonMatching
     const DoFHandler<dim1, spacedim> &      immersed_dh,
     const Quadrature<dim1> &                quad,
     Sparsity &                              sparsity,
-    const ConstraintMatrix &                constraints    = ConstraintMatrix(),
-    const ComponentMask &                   space_comps    = ComponentMask(),
-    const ComponentMask &                   immersed_comps = ComponentMask(),
-    const Mapping<dim1, spacedim> &         immersed_mapping =
+    const AffineConstraints<number> &constraints = AffineConstraints<number>(),
+    const ComponentMask &            space_comps = ComponentMask(),
+    const ComponentMask &            immersed_comps = ComponentMask(),
+    const Mapping<dim1, spacedim> &  immersed_mapping =
       StaticMappingQ1<dim1, spacedim>::mapping);
 
 
@@ -176,14 +184,15 @@ namespace NonMatching
   template <int dim0, int dim1, int spacedim, typename Matrix>
   void
   create_coupling_mass_matrix(
-    const DoFHandler<dim0, spacedim> &space_dh,
-    const DoFHandler<dim1, spacedim> &immersed_dh,
-    const Quadrature<dim1> &          quad,
-    Matrix &                          matrix,
-    const ConstraintMatrix &          constraints    = ConstraintMatrix(),
-    const ComponentMask &             space_comps    = ComponentMask(),
-    const ComponentMask &             immersed_comps = ComponentMask(),
-    const Mapping<dim0, spacedim> &   space_mapping =
+    const DoFHandler<dim0, spacedim> &                    space_dh,
+    const DoFHandler<dim1, spacedim> &                    immersed_dh,
+    const Quadrature<dim1> &                              quad,
+    Matrix &                                              matrix,
+    const AffineConstraints<typename Matrix::value_type> &constraints =
+      AffineConstraints<typename Matrix::value_type>(),
+    const ComponentMask &          space_comps    = ComponentMask(),
+    const ComponentMask &          immersed_comps = ComponentMask(),
+    const Mapping<dim0, spacedim> &space_mapping =
       StaticMappingQ1<dim0, spacedim>::mapping,
     const Mapping<dim1, spacedim> &immersed_mapping =
       StaticMappingQ1<dim1, spacedim>::mapping);
@@ -199,15 +208,16 @@ namespace NonMatching
   template <int dim0, int dim1, int spacedim, typename Matrix>
   void
   create_coupling_mass_matrix(
-    const GridTools::Cache<dim0, spacedim> &cache,
-    const DoFHandler<dim0, spacedim> &      space_dh,
-    const DoFHandler<dim1, spacedim> &      immersed_dh,
-    const Quadrature<dim1> &                quad,
-    Matrix &                                matrix,
-    const ConstraintMatrix &                constraints    = ConstraintMatrix(),
-    const ComponentMask &                   space_comps    = ComponentMask(),
-    const ComponentMask &                   immersed_comps = ComponentMask(),
-    const Mapping<dim1, spacedim> &         immersed_mapping =
+    const GridTools::Cache<dim0, spacedim> &              cache,
+    const DoFHandler<dim0, spacedim> &                    space_dh,
+    const DoFHandler<dim1, spacedim> &                    immersed_dh,
+    const Quadrature<dim1> &                              quad,
+    Matrix &                                              matrix,
+    const AffineConstraints<typename Matrix::value_type> &constraints =
+      AffineConstraints<typename Matrix::value_type>(),
+    const ComponentMask &          space_comps    = ComponentMask(),
+    const ComponentMask &          immersed_comps = ComponentMask(),
+    const Mapping<dim1, spacedim> &immersed_mapping =
       StaticMappingQ1<dim1, spacedim>::mapping);
 } // namespace NonMatching
 DEAL_II_NAMESPACE_CLOSE
diff --git a/source/non_matching/coupling.cc b/source/non_matching/coupling.cc
index cc78a61c8a..2e5a07a018 100644
--- a/source/non_matching/coupling.cc
+++ b/source/non_matching/coupling.cc
@@ -41,14 +41,18 @@
 DEAL_II_NAMESPACE_OPEN
 namespace NonMatching
 {
-  template <int dim0, int dim1, int spacedim, typename Sparsity>
+  template <int dim0,
+            int dim1,
+            int spacedim,
+            typename Sparsity,
+            typename number>
   void
   create_coupling_sparsity_pattern(
     const DoFHandler<dim0, spacedim> &space_dh,
     const DoFHandler<dim1, spacedim> &immersed_dh,
     const Quadrature<dim1> &          quad,
     Sparsity &                        sparsity,
-    const ConstraintMatrix &          constraints,
+    const AffineConstraints<number> & constraints,
     const ComponentMask &             space_comps,
     const ComponentMask &             immersed_comps,
     const Mapping<dim0, spacedim> &   space_mapping,
@@ -69,7 +73,11 @@ namespace NonMatching
 
 
 
-  template <int dim0, int dim1, int spacedim, typename Sparsity>
+  template <int dim0,
+            int dim1,
+            int spacedim,
+            typename Sparsity,
+            typename number>
   void
   create_coupling_sparsity_pattern(
     const GridTools::Cache<dim0, spacedim> &cache,
@@ -77,7 +85,7 @@ namespace NonMatching
     const DoFHandler<dim1, spacedim> &      immersed_dh,
     const Quadrature<dim1> &                quad,
     Sparsity &                              sparsity,
-    const ConstraintMatrix &                constraints,
+    const AffineConstraints<number> &       constraints,
     const ComponentMask &                   space_comps,
     const ComponentMask &                   immersed_comps,
     const Mapping<dim1, spacedim> &         immersed_mapping)
@@ -187,15 +195,16 @@ namespace NonMatching
 
   template <int dim0, int dim1, int spacedim, typename Matrix>
   void
-  create_coupling_mass_matrix(const DoFHandler<dim0, spacedim> &space_dh,
-                              const DoFHandler<dim1, spacedim> &immersed_dh,
-                              const Quadrature<dim1> &          quad,
-                              Matrix &                          matrix,
-                              const ConstraintMatrix &          constraints,
-                              const ComponentMask &             space_comps,
-                              const ComponentMask &             immersed_comps,
-                              const Mapping<dim0, spacedim> &   space_mapping,
-                              const Mapping<dim1, spacedim> &immersed_mapping)
+  create_coupling_mass_matrix(
+    const DoFHandler<dim0, spacedim> &                    space_dh,
+    const DoFHandler<dim1, spacedim> &                    immersed_dh,
+    const Quadrature<dim1> &                              quad,
+    Matrix &                                              matrix,
+    const AffineConstraints<typename Matrix::value_type> &constraints,
+    const ComponentMask &                                 space_comps,
+    const ComponentMask &                                 immersed_comps,
+    const Mapping<dim0, spacedim> &                       space_mapping,
+    const Mapping<dim1, spacedim> &                       immersed_mapping)
   {
     GridTools::Cache<dim0, spacedim> cache(space_dh.get_triangulation(),
                                            space_mapping);
@@ -214,15 +223,16 @@ namespace NonMatching
 
   template <int dim0, int dim1, int spacedim, typename Matrix>
   void
-  create_coupling_mass_matrix(const GridTools::Cache<dim0, spacedim> &cache,
-                              const DoFHandler<dim0, spacedim> &      space_dh,
-                              const DoFHandler<dim1, spacedim> &immersed_dh,
-                              const Quadrature<dim1> &          quad,
-                              Matrix &                          matrix,
-                              const ConstraintMatrix &          constraints,
-                              const ComponentMask &             space_comps,
-                              const ComponentMask &             immersed_comps,
-                              const Mapping<dim1, spacedim> &immersed_mapping)
+  create_coupling_mass_matrix(
+    const GridTools::Cache<dim0, spacedim> &              cache,
+    const DoFHandler<dim0, spacedim> &                    space_dh,
+    const DoFHandler<dim1, spacedim> &                    immersed_dh,
+    const Quadrature<dim1> &                              quad,
+    Matrix &                                              matrix,
+    const AffineConstraints<typename Matrix::value_type> &constraints,
+    const ComponentMask &                                 space_comps,
+    const ComponentMask &                                 immersed_comps,
+    const Mapping<dim1, spacedim> &                       immersed_mapping)
   {
     AssertDimension(matrix.m(), space_dh.n_dofs());
     AssertDimension(matrix.n(), immersed_dh.n_dofs());
diff --git a/source/non_matching/coupling.inst.in b/source/non_matching/coupling.inst.in
index 8846120d98..fa3ddaa833 100644
--- a/source/non_matching/coupling.inst.in
+++ b/source/non_matching/coupling.inst.in
@@ -15,7 +15,8 @@
 
 
 for (dim0 : DIMENSIONS; dim1 : DIMENSIONS; spacedim : SPACE_DIMENSIONS;
-     Sparsity : SPARSITY_PATTERNS)
+     Sparsity : SPARSITY_PATTERNS;
+     S : REAL_AND_COMPLEX_SCALARS)
   {
 #if dim1 <= dim0 && dim0 <= spacedim
     template void create_coupling_sparsity_pattern(
@@ -23,7 +24,7 @@ for (dim0 : DIMENSIONS; dim1 : DIMENSIONS; spacedim : SPACE_DIMENSIONS;
       const DoFHandler<dim1, spacedim> &immersed_dh,
       const Quadrature<dim1> &          quad,
       Sparsity &                        sparsity,
-      const ConstraintMatrix &          constraints,
+      const AffineConstraints<S> &      constraints,
       const ComponentMask &             space_comps,
       const ComponentMask &             immersed_comps,
       const Mapping<dim0, spacedim> &   space_mapping,
@@ -35,7 +36,7 @@ for (dim0 : DIMENSIONS; dim1 : DIMENSIONS; spacedim : SPACE_DIMENSIONS;
       const DoFHandler<dim1, spacedim> &      immersed_dh,
       const Quadrature<dim1> &                quad,
       Sparsity &                              sparsity,
-      const ConstraintMatrix &                constraints,
+      const AffineConstraints<S> &            constraints,
       const ComponentMask &                   space_comps,
       const ComponentMask &                   immersed_comps,
       const Mapping<dim1, spacedim> &         immersed_mapping);
@@ -48,25 +49,25 @@ for (dim0 : DIMENSIONS; dim1 : DIMENSIONS; spacedim : SPACE_DIMENSIONS;
   {
 #if dim1 <= dim0 && dim0 <= spacedim
     template void create_coupling_mass_matrix(
-      const DoFHandler<dim0, spacedim> &space_dh,
-      const DoFHandler<dim1, spacedim> &immersed_dh,
-      const Quadrature<dim1> &          quad,
-      Matrix &                          matrix,
-      const ConstraintMatrix &          constraints,
-      const ComponentMask &             space_comps,
-      const ComponentMask &             immersed_comps,
-      const Mapping<dim0, spacedim> &   space_mapping,
-      const Mapping<dim1, spacedim> &   immersed_mapping);
+      const DoFHandler<dim0, spacedim> &           space_dh,
+      const DoFHandler<dim1, spacedim> &           immersed_dh,
+      const Quadrature<dim1> &                     quad,
+      Matrix &                                     matrix,
+      const AffineConstraints<Matrix::value_type> &constraints,
+      const ComponentMask &                        space_comps,
+      const ComponentMask &                        immersed_comps,
+      const Mapping<dim0, spacedim> &              space_mapping,
+      const Mapping<dim1, spacedim> &              immersed_mapping);
 
     template void create_coupling_mass_matrix(
-      const GridTools::Cache<dim0, spacedim> &cache,
-      const DoFHandler<dim0, spacedim> &      space_dh,
-      const DoFHandler<dim1, spacedim> &      immersed_dh,
-      const Quadrature<dim1> &                quad,
-      Matrix &                                matrix,
-      const ConstraintMatrix &                constraints,
-      const ComponentMask &                   space_comps,
-      const ComponentMask &                   immersed_comps,
-      const Mapping<dim1, spacedim> &         immersed_mapping);
+      const GridTools::Cache<dim0, spacedim> &     cache,
+      const DoFHandler<dim0, spacedim> &           space_dh,
+      const DoFHandler<dim1, spacedim> &           immersed_dh,
+      const Quadrature<dim1> &                     quad,
+      Matrix &                                     matrix,
+      const AffineConstraints<Matrix::value_type> &constraints,
+      const ComponentMask &                        space_comps,
+      const ComponentMask &                        immersed_comps,
+      const Mapping<dim1, spacedim> &              immersed_mapping);
 #endif
   }