]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Enable get_face_interpolation_matrix() in 1D on FE_Q and FE_Bernstein
authorSimon Sticko <simon@sticko.se>
Tue, 8 Jun 2021 07:42:28 +0000 (09:42 +0200)
committerSimon Sticko <simon@sticko.se>
Tue, 8 Jun 2021 11:29:09 +0000 (13:29 +0200)
Currently, get_face_interpolation_matrix() on FE_Q and FE_Bernstein
throws an ExcImpossibleInDim(1) exception in 1D. This is strange
because the interpolation matrix should just be a 1-by-1 unit matrix.
Remove the dim > 1 assert in FE_Q_base and FE_Bernstein to fix this
and modify two tests to check that it works.

source/fe/fe_bernstein.cc
source/fe/fe_q_base.cc
tests/bits/face_interpolation.cc
tests/bits/face_interpolation.output
tests/fe/face_interpolation_fe_Bernstein_2_fe_q.cc
tests/fe/face_interpolation_fe_Bernstein_2_fe_q.output

index b25f172e44591478b9e0de4ba53ba53d8cde435d..9f1f10ff3bb6cc6311f9acdefef9064b6036d9cc 100644 (file)
@@ -98,7 +98,6 @@ FE_Bernstein<dim, spacedim>::get_face_interpolation_matrix(
   FullMatrix<double> &                interpolation_matrix,
   const unsigned int                  face_no) const
 {
-  Assert(dim > 1, ExcImpossibleInDim(1));
   get_subface_interpolation_matrix(source_fe,
                                    numbers::invalid_unsigned_int,
                                    interpolation_matrix,
@@ -145,8 +144,8 @@ FE_Bernstein<dim, spacedim>::get_subface_interpolation_matrix(
       // Rule of thumb for FP accuracy, that can be expected for a given
       // polynomial degree.  This value is used to cut off values close to
       // zero.
-      double eps =
-        2e-13 * std::max(this->degree, source_fe->degree) * (dim - 1);
+      const double eps = 2e-13 * std::max(this->degree, source_fe->degree) *
+                         std::max(dim - 1, 1);
 
       // compute the interpolation matrix by simply taking the value at the
       // support points.
index f0eb0cd8e0d310e212e5adfadc45404ce28df897..ab3d5cef45dbc32acbf8a3524474344aecfac16d 100644 (file)
@@ -611,7 +611,6 @@ FE_Q_Base<dim, spacedim>::get_face_interpolation_matrix(
   FullMatrix<double> &                interpolation_matrix,
   const unsigned int                  face_no) const
 {
-  Assert(dim > 1, ExcImpossibleInDim(1));
   get_subface_interpolation_matrix(source_fe,
                                    numbers::invalid_unsigned_int,
                                    interpolation_matrix,
@@ -660,7 +659,7 @@ FE_Q_Base<dim, spacedim>::get_subface_interpolation_matrix(
       // Rule of thumb for FP accuracy, that can be expected for a given
       // polynomial degree.  This value is used to cut off values close to
       // zero.
-      double eps = 2e-13 * this->q_degree * (dim - 1);
+      const double eps = 2e-13 * this->q_degree * std::max(dim - 1, 1);
 
       // compute the interpolation matrix by simply taking the value at the
       // support points.
index 11321aef7f0da98c1fc780bbec114f8e65a25643..69f2c673626d250b5c7a432263b04db7c1aae20c 100644 (file)
@@ -27,9 +27,6 @@ template <int dim>
 void
 check_this(const FiniteElement<dim> &fe1, const FiniteElement<dim> &fe2)
 {
-  if (dim == 1)
-    return;
-
   // check all combinations of fe1 and fe2
   FullMatrix<double> face_constraints;
   try
index 5b9de4c838c571741d145090c3fbdeb8c4d3492a..bd3cbfee26b22282103401c4d54b3813a3290c29 100644 (file)
@@ -1,6 +1,38 @@
 
 DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q1 against Q1 in 1d:
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q1 against Q1 in 2d:
 DEAL::FE_Q<2>(1)  vs.  FE_Q<2>(1)
 DEAL::1.0000000 1.0000000
@@ -70,7 +102,39 @@ DEAL::1.0000000 1.0000000
 DEAL::2.0000000
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 
 DEAL::Checking Q1 against Q2 in 1d:
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q2 against Q1 in 1d:
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q1 against Q2 in 2d:
 DEAL::FE_Q<2>(1)  vs.  FE_Q<2>(1)
 DEAL::1.0000000 1.0000000
@@ -120,7 +184,39 @@ DEAL::FE_Q<3>(1)  vs.  FE_Q<3>(2)
 DEAL::2.2500000 1.0000000
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 
 DEAL::Checking Q1 against Q3 in 1d:
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q3 against Q1 in 1d:
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(1)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(1)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q1 against Q3 in 2d:
 DEAL::FE_Q<2>(1)  vs.  FE_Q<2>(1)
 DEAL::1.0000000 1.0000000
@@ -170,7 +266,39 @@ DEAL::FE_Q<3>(1)  vs.  FE_Q<3>(3)
 DEAL::4.0000000 1.0000000
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 
 DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q2 against Q2 in 1d:
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q2 against Q2 in 2d:
 DEAL::FE_Q<2>(2)  vs.  FE_Q<2>(2)
 DEAL::1.0000000 1.0000000
@@ -240,7 +368,39 @@ DEAL::1.0000000 1.0000000
 DEAL::3.0000000
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 1.0000000 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 
 DEAL::Checking Q2 against Q3 in 1d:
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q3 against Q2 in 1d:
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(2)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(2)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q2 against Q3 in 2d:
 DEAL::FE_Q<2>(2)  vs.  FE_Q<2>(2)
 DEAL::1.0000000 1.0000000
@@ -290,7 +450,39 @@ DEAL::FE_Q<3>(2)  vs.  FE_Q<3>(3)
 DEAL::2.5600000 1.5555418
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 0.80000000 0.80000000 0 0 0 0 0 -0.12360680 0 0.32360680 
 DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q3 against Q3 in 1d:
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
+DEAL::FE_Q<1>(3)  vs.  FE_Q<1>(3)
+DEAL::1.0000000 1.0000000
+DEAL::1.0000000
+DEAL::1.0000000 1.0000000 
 DEAL::Checking Q3 against Q3 in 2d:
 DEAL::FE_Q<2>(3)  vs.  FE_Q<2>(3)
 DEAL::1.0000000 1.0000000
@@ -360,7 +552,23 @@ DEAL::1.0000000 1.0000000
 DEAL::4.0000000
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 
 DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ0 in 2d:
 DEAL::FE_DGQ<2>(0)  vs.  FE_DGQ<2>(0)
 DEAL::(Empty matrix)
@@ -398,7 +606,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(0)  vs.  FE_DGQ<3>(0)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ1 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ1 in 2d:
 DEAL::FE_DGQ<2>(0)  vs.  FE_DGQ<2>(0)
 DEAL::(Empty matrix)
@@ -436,7 +660,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(0)  vs.  FE_DGQ<3>(1)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ2 in 2d:
 DEAL::FE_DGQ<2>(0)  vs.  FE_DGQ<2>(0)
 DEAL::(Empty matrix)
@@ -474,7 +714,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(0)  vs.  FE_DGQ<3>(2)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ4 against DGQ0 in 1d:
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(0)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ0 against DGQ4 in 2d:
 DEAL::FE_DGQ<2>(0)  vs.  FE_DGQ<2>(0)
 DEAL::(Empty matrix)
@@ -512,7 +768,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(0)  vs.  FE_DGQ<3>(4)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ1 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ1 against DGQ1 in 2d:
 DEAL::FE_DGQ<2>(1)  vs.  FE_DGQ<2>(1)
 DEAL::(Empty matrix)
@@ -550,7 +822,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(1)  vs.  FE_DGQ<3>(1)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ1 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ3 against DGQ1 in 1d:
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(1)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ1 against DGQ3 in 2d:
 DEAL::FE_DGQ<2>(1)  vs.  FE_DGQ<2>(1)
 DEAL::(Empty matrix)
@@ -588,7 +876,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(1)  vs.  FE_DGQ<3>(3)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ2 in 2d:
 DEAL::FE_DGQ<2>(2)  vs.  FE_DGQ<2>(2)
 DEAL::(Empty matrix)
@@ -626,7 +930,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(2)  vs.  FE_DGQ<3>(2)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ2 in 2d:
 DEAL::FE_DGQ<2>(2)  vs.  FE_DGQ<2>(2)
 DEAL::(Empty matrix)
@@ -664,7 +984,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(2)  vs.  FE_DGQ<3>(2)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ4 in 1d:
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ4 against DGQ2 in 1d:
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(4)  vs.  FE_DGQ<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(2)  vs.  FE_DGQ<1>(4)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ2 against DGQ4 in 2d:
 DEAL::FE_DGQ<2>(2)  vs.  FE_DGQ<2>(2)
 DEAL::(Empty matrix)
@@ -702,7 +1038,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(2)  vs.  FE_DGQ<3>(4)
 DEAL::(Empty matrix)
 DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ3 against DGQ3 in 1d:
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGQ<1>(3)  vs.  FE_DGQ<1>(3)
+DEAL::(Empty matrix)
 DEAL::Checking DGQ3 against DGQ3 in 2d:
 DEAL::FE_DGQ<2>(3)  vs.  FE_DGQ<2>(3)
 DEAL::(Empty matrix)
@@ -740,7 +1092,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGQ<3>(3)  vs.  FE_DGQ<3>(3)
 DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP0 in 1d:
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP0 in 2d:
 DEAL::FE_DGP<2>(0)  vs.  FE_DGP<2>(0)
 DEAL::(Empty matrix)
@@ -778,7 +1146,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(0)  vs.  FE_DGP<3>(0)
 DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP1 in 1d:
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGP1 against DGP0 in 1d:
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP1 in 2d:
 DEAL::FE_DGP<2>(0)  vs.  FE_DGP<2>(0)
 DEAL::(Empty matrix)
@@ -816,7 +1200,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(0)  vs.  FE_DGP<3>(1)
 DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP2 in 1d:
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP0 in 1d:
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP2 in 2d:
 DEAL::FE_DGP<2>(0)  vs.  FE_DGP<2>(0)
 DEAL::(Empty matrix)
@@ -854,7 +1254,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(0)  vs.  FE_DGP<3>(2)
 DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP4 in 1d:
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
 DEAL::Checking DGP4 against DGP0 in 1d:
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(0)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(0)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
 DEAL::Checking DGP0 against DGP4 in 2d:
 DEAL::FE_DGP<2>(0)  vs.  FE_DGP<2>(0)
 DEAL::(Empty matrix)
@@ -892,7 +1308,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(0)  vs.  FE_DGP<3>(4)
 DEAL::(Empty matrix)
 DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGP1 against DGP1 in 1d:
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGP1 against DGP1 in 2d:
 DEAL::FE_DGP<2>(1)  vs.  FE_DGP<2>(1)
 DEAL::(Empty matrix)
@@ -930,7 +1362,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(1)  vs.  FE_DGP<3>(1)
 DEAL::(Empty matrix)
 DEAL::Checking DGP1 against DGP3 in 1d:
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
 DEAL::Checking DGP3 against DGP1 in 1d:
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(1)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(1)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
 DEAL::Checking DGP1 against DGP3 in 2d:
 DEAL::FE_DGP<2>(1)  vs.  FE_DGP<2>(1)
 DEAL::(Empty matrix)
@@ -968,7 +1416,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(1)  vs.  FE_DGP<3>(3)
 DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP2 in 2d:
 DEAL::FE_DGP<2>(2)  vs.  FE_DGP<2>(2)
 DEAL::(Empty matrix)
@@ -1006,7 +1470,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(2)  vs.  FE_DGP<3>(2)
 DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP2 in 1d:
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP2 in 2d:
 DEAL::FE_DGP<2>(2)  vs.  FE_DGP<2>(2)
 DEAL::(Empty matrix)
@@ -1044,7 +1524,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(2)  vs.  FE_DGP<3>(2)
 DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP4 in 1d:
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
 DEAL::Checking DGP4 against DGP2 in 1d:
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(4)  vs.  FE_DGP<1>(2)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(2)  vs.  FE_DGP<1>(4)
+DEAL::(Empty matrix)
 DEAL::Checking DGP2 against DGP4 in 2d:
 DEAL::FE_DGP<2>(2)  vs.  FE_DGP<2>(2)
 DEAL::(Empty matrix)
@@ -1082,7 +1578,23 @@ DEAL::(Empty matrix)
 DEAL::FE_DGP<3>(2)  vs.  FE_DGP<3>(4)
 DEAL::(Empty matrix)
 DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
 DEAL::Checking DGP3 against DGP3 in 1d:
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
+DEAL::FE_DGP<1>(3)  vs.  FE_DGP<1>(3)
+DEAL::(Empty matrix)
 DEAL::Checking DGP3 against DGP3 in 2d:
 DEAL::FE_DGP<2>(3)  vs.  FE_DGP<2>(3)
 DEAL::(Empty matrix)
@@ -1188,11 +1700,75 @@ DEAL::1.0000000 1.0000000
 DEAL::2.0000000
 DEAL::1.0000000 0 1.0000000 0 1.0000000 0 1.0000000 0 
 DEAL::Checking FE_Q<1>(1)3 against FE_Q<1>(2)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(1)^3]  vs.  FESystem<1>[FE_Q<1>(1)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
+DEAL::FESystem<1>[FE_Q<1>(2)^3]  vs.  FESystem<1>[FE_Q<1>(2)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
+DEAL::FESystem<1>[FE_Q<1>(1)^3]  vs.  FESystem<1>[FE_Q<1>(2)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
+DEAL::FESystem<1>[FE_Q<1>(2)^3]  vs.  FESystem<1>[FE_Q<1>(1)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
 DEAL::Checking FE_Q<1>(2)3 against FE_Q<1>(1)3 in 1d:
+DEAL::FESystem<1>[FE_Q<1>(2)^3]  vs.  FESystem<1>[FE_Q<1>(2)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
+DEAL::FESystem<1>[FE_Q<1>(1)^3]  vs.  FESystem<1>[FE_Q<1>(1)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
+DEAL::FESystem<1>[FE_Q<1>(2)^3]  vs.  FESystem<1>[FE_Q<1>(1)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
+DEAL::FESystem<1>[FE_Q<1>(1)^3]  vs.  FESystem<1>[FE_Q<1>(2)^3]
+DEAL::1.0000000 1.0000000
+DEAL::1.7320508
+DEAL::1.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.0000000 
 DEAL::Checking FE_DGQ<1>(2)2 against FE_DGQ<1>(3)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2]  vs.  FESystem<1>[FE_DGQ<1>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2]  vs.  FESystem<1>[FE_DGQ<1>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2]  vs.  FESystem<1>[FE_DGQ<1>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2]  vs.  FESystem<1>[FE_DGQ<1>(2)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGQ<1>(3)2 against FE_DGQ<1>(2)2 in 1d:
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2]  vs.  FESystem<1>[FE_DGQ<1>(3)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2]  vs.  FESystem<1>[FE_DGQ<1>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGQ<1>(3)^2]  vs.  FESystem<1>[FE_DGQ<1>(2)^2]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGQ<1>(2)^2]  vs.  FESystem<1>[FE_DGQ<1>(3)^2]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<1>(3)1 against FE_DGP<1>(1)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(3)]  vs.  FESystem<1>[FE_DGP<1>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGP<1>(1)]  vs.  FESystem<1>[FE_DGP<1>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGP<1>(3)]  vs.  FESystem<1>[FE_DGP<1>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGP<1>(1)]  vs.  FESystem<1>[FE_DGP<1>(3)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_DGP<1>(1)1 against FE_DGP<1>(3)1 in 1d:
+DEAL::FESystem<1>[FE_DGP<1>(1)]  vs.  FESystem<1>[FE_DGP<1>(1)]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGP<1>(3)]  vs.  FESystem<1>[FE_DGP<1>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGP<1>(1)]  vs.  FESystem<1>[FE_DGP<1>(3)]
+DEAL::(Empty matrix)
+DEAL::FESystem<1>[FE_DGP<1>(3)]  vs.  FESystem<1>[FE_DGP<1>(1)]
+DEAL::(Empty matrix)
 DEAL::Checking FE_Q<2>(1)3 against FE_Q<2>(2)3 in 2d:
 DEAL::FESystem<2>[FE_Q<2>(1)^3]  vs.  FESystem<2>[FE_Q<2>(1)^3]
 DEAL::1.0000000 1.0000000
index 8dc698a6587638faa107dafdebedd233b388425d..292afc23addc27e94d5185eee129705e490474c7 100644 (file)
@@ -14,8 +14,8 @@
 // ---------------------------------------------------------------------
 
 // Test that we can use FE_Bernstein::get_face_interpolation_matrix to create
-// an interpolation matrix between FE_Bernstein and an element that has support
-// points.
+// an interpolation matrix when the incoming element is either FE_Bernstein or
+// FE_Q.
 
 #include <deal.II/fe/fe_bernstein.h>
 #include <deal.II/fe/fe_q.h>
 #include "../tests.h"
 
 
-// Set up an FE_Q element and an FE_Bernstein element with the incoming order.
 // Call get_face_interpolation_matrix to create the interpolation matrix
-// between these and write it to deallog.
+// between the two incoming elements and write it to deallog.
 template <int dim>
 void
-create_and_print_face_interpolation_matrix(const unsigned int order)
+create_and_print_face_interpolation_matrix(
+  const FiniteElement<dim> &fe_destination,
+  const FiniteElement<dim> &fe_source)
 {
-  deallog << "dim = " << dim << ", order = " << order << std::endl;
-
-  const FE_Q<dim>         fe_q(order);
-  const FE_Bernstein<dim> fe_bernstein(order);
-
-  FullMatrix<double> interpolation_matrix(fe_q.n_dofs_per_face(),
-                                          fe_bernstein.n_dofs_per_face());
+  deallog << fe_source.get_name() << " to " << fe_destination.get_name()
+          << std::endl;
+  FullMatrix<double> interpolation_matrix(fe_destination.n_dofs_per_face(),
+                                          fe_source.n_dofs_per_face());
   const unsigned int face_index = 0;
 
-
-  fe_bernstein.get_face_interpolation_matrix(fe_q,
-                                             interpolation_matrix,
-                                             face_index);
+  fe_source.get_face_interpolation_matrix(fe_destination,
+                                          interpolation_matrix,
+                                          face_index);
 
   interpolation_matrix.print(deallog);
   deallog << std::endl;
@@ -52,14 +49,28 @@ create_and_print_face_interpolation_matrix(const unsigned int order)
 
 
 
+template <int dim>
+void
+run_test()
+{
+  const std::vector<unsigned int> orders = {1, 2};
+  for (const unsigned int order : orders)
+    {
+      const FE_Q<dim>         fe_q(order);
+      const FE_Bernstein<dim> fe_bernstein(order);
+      create_and_print_face_interpolation_matrix<dim>(fe_q, fe_bernstein);
+      create_and_print_face_interpolation_matrix<dim>(fe_bernstein,
+                                                      fe_bernstein);
+    }
+}
+
+
+
 int
 main()
 {
   initlog();
 
-  const int dim = 2;
-
-  const std::vector<unsigned int> orders = {1, 2};
-  for (const unsigned int order : orders)
-    create_and_print_face_interpolation_matrix<dim>(order);
+  run_test<1>();
+  run_test<2>();
 }
index 9096def1549fa90ca741e6dd7227d258b8b647df..83c2fd77cdb5a50f6cd02267efca5aba43fb6b72 100644 (file)
@@ -1,9 +1,30 @@
 
-DEAL::dim = 2, order = 1
+DEAL::FE_Bernstein<1>(1) to FE_Q<1>(1)
+DEAL::1.0  
+DEAL::
+DEAL::FE_Bernstein<1>(1) to FE_Bernstein<1>(1)
+DEAL::1.0  
+DEAL::
+DEAL::FE_Bernstein<1>(2) to FE_Q<1>(2)
+DEAL::1.0  
+DEAL::
+DEAL::FE_Bernstein<1>(2) to FE_Bernstein<1>(2)
+DEAL::1.0  
+DEAL::
+DEAL::FE_Bernstein<2>(1) to FE_Q<2>(1)
 DEAL::1.0  0.0  
 DEAL::0.0  1.0  
 DEAL::
-DEAL::dim = 2, order = 2
+DEAL::FE_Bernstein<2>(1) to FE_Bernstein<2>(1)
+DEAL::1.0  0.0  
+DEAL::0.0  1.0  
+DEAL::
+DEAL::FE_Bernstein<2>(2) to FE_Q<2>(2)
+DEAL::1.0  0.0  0.0  
+DEAL::0.0  1.0  0.0  
+DEAL::0.25 0.25 0.50 
+DEAL::
+DEAL::FE_Bernstein<2>(2) to FE_Bernstein<2>(2)
 DEAL::1.0  0.0  0.0  
 DEAL::0.0  1.0  0.0  
 DEAL::0.25 0.25 0.50 

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.