]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Instantiate compute_interpolation_to/from_quadrature_points_matrix also for dim!... 5476/head
authorDaniel Arndt <d.arndt@math.uni-goettingen.de>
Thu, 16 Nov 2017 16:36:51 +0000 (17:36 +0100)
committerDaniel Arndt <d.arndt@math.uni-goettingen.de>
Thu, 16 Nov 2017 21:50:56 +0000 (22:50 +0100)
source/fe/fe_tools.inst.in
tests/bits/fe_tools_cpfqpm_05.cc [new file with mode: 0644]
tests/bits/fe_tools_cpfqpm_05.output [new file with mode: 0644]

index d122f11ae0dfbb79b4ffd6d884ac4e7fc077a144..30b1a8b698a4b6b2664f11f480e99018a45abc8b 100644 (file)
@@ -133,6 +133,20 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
     template FiniteElement<deal_II_dimension,deal_II_space_dimension> *
     get_fe_by_name<deal_II_dimension,deal_II_space_dimension> (const std::string &);
 
+    template
+    void
+    compute_interpolation_to_quadrature_points_matrix
+    (const FiniteElement<deal_II_dimension,deal_II_space_dimension> &,
+     const Quadrature<deal_II_dimension> &,
+     FullMatrix<double> &);
+
+    template
+    void
+    compute_projection_from_quadrature_points_matrix
+    (const FiniteElement<deal_II_dimension, deal_II_space_dimension> &,
+     const Quadrature<deal_II_dimension> &,
+     const Quadrature<deal_II_dimension> &,
+     FullMatrix<double> &);
 #endif
 
 #if deal_II_dimension == deal_II_space_dimension
@@ -188,13 +202,6 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
     (const FiniteElement<deal_II_dimension> &, FullMatrix<double> ( &)[GeometryInfo<deal_II_dimension>::max_children_per_face],
      unsigned int, unsigned int, const double);
 
-    template
-    void
-    compute_projection_from_quadrature_points_matrix (const FiniteElement<deal_II_dimension> &,
-            const Quadrature<deal_II_dimension> &,
-            const Quadrature<deal_II_dimension> &,
-            FullMatrix<double> &);
-
     template
     void
     compute_projection_from_quadrature_points(
@@ -209,13 +216,6 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
         const std::vector<SymmetricTensor<2, deal_II_dimension> > &,
         std::vector<SymmetricTensor<2, deal_II_dimension> > &);
 
-
-    template
-    void
-    compute_interpolation_to_quadrature_points_matrix (const FiniteElement<deal_II_dimension> &,
-            const Quadrature<deal_II_dimension> &,
-            FullMatrix<double> &);
-
 #if deal_II_dimension != 1
     template
     void
diff --git a/tests/bits/fe_tools_cpfqpm_05.cc b/tests/bits/fe_tools_cpfqpm_05.cc
new file mode 100644 (file)
index 0000000..8f5018c
--- /dev/null
@@ -0,0 +1,240 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2005 - 2017 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_tools.h>
+
+#include <fstream>
+#include <iomanip>
+#include <iomanip>
+#include <memory>
+#include <string>
+
+// check
+//   FETools::compute_projection_from_quadrature_points_matrix
+// we put this into the fe_tools_common framework for simplicity, but
+// in fact we ignore the second FE it passes to the check_this() function
+// and we can only test as well for scalar elements, since this is all
+// the function presently supports.
+//
+// this test makes sure that projecting onto a finite element space
+// sufficiently fine to hold the quadrature point data, then interpolating
+// back to the quadrature points is an identity operation
+//
+// This is the same as fe_tools_cpfqpm_02 but testing dim<spacedim
+
+// output some indicators for a given matrix. we don't write out the
+// entire matrix since this would blow up our output files beyond
+// reasonable limits
+void
+output_matrix (const FullMatrix<double> &m)
+{
+  if ((m.m() == 0) || (m.n() == 0))
+    {
+      deallog << "(Empty matrix)" << std::endl;
+      return;
+    }
+
+  deallog << m.l1_norm() << ' ' << m.linfty_norm()
+          << std::endl;
+  if (m.m() == m.n())
+    deallog << m.frobenius_norm() << std::endl;
+
+  for (unsigned int i=0; i<std::min(m.m(),m.n()); ++i)
+    deallog << m(i,i) << ' ' << m(i,std::min(m.m(),m.n())-i-1) << ' ';
+  deallog << std::endl;
+}
+
+
+
+template <int dim, int spacedim>
+void
+check_this (const FiniteElement<dim, spacedim> &fe,
+            const FiniteElement<dim, spacedim> &/*fe2*/)
+{
+  // only check if both elements have
+  // support points. otherwise,
+  // interpolation doesn't really
+  // work
+  if (fe.n_components() != 1)
+    return;
+
+  // ignore this check if this fe has already
+  // been treated
+  static std::set<std::string> already_checked;
+  if (already_checked.find(fe.get_name()) != already_checked.end())
+    return;
+  already_checked.insert (fe.get_name());
+
+
+  // test with the same quadrature formulas
+  // of a degree that is high enough to
+  // exactly capture the data
+  QGauss<dim> q_lhs(fe.degree+1);
+  QGauss<dim> q_rhs(fe.degree+1);
+
+  // this test can only succeed if there are
+  // at least as many degrees of freedom in
+  // the finite element as there are
+  // quadrature points
+  if (fe.dofs_per_cell < q_rhs.size())
+    return;
+
+  deallog << "dofs_per_cell=" << fe.dofs_per_cell
+          << ", n_q_points=" << q_rhs.size()
+          << std::endl;
+
+  FullMatrix<double> X (fe.dofs_per_cell,
+                        q_rhs.size());
+
+  FETools::compute_projection_from_quadrature_points_matrix (fe,
+                                                             q_lhs, q_rhs,
+                                                             X);
+
+  // then compute the matrix that
+  // interpolates back to the quadrature
+  // points
+  FullMatrix<double> I_q (q_rhs.size(), fe.dofs_per_cell);
+  FETools::compute_interpolation_to_quadrature_points_matrix (fe, q_rhs,
+                                                              I_q);
+
+  FullMatrix<double> product (q_rhs.size(),
+                              q_rhs.size());
+  I_q.mmult (product, X);
+
+  // the product should be the identity
+  // matrix now. make sure that this is
+  // indeed the case
+  for (unsigned int i=0; i<product.m(); ++i)
+    product(i,i) -= 1;
+
+  output_matrix (product);
+  AssertThrow (product.frobenius_norm() < 1e-10, ExcInternalError());
+}
+
+
+template <int dim, int spacedim>
+void
+check (const FiniteElement<dim, spacedim> &fe1,
+       const FiniteElement<dim, spacedim> &fe2,
+       const std::string        &name)
+{
+  deallog << "Checking " << name
+          << " in " << dim << "d and spacedim " << spacedim
+          << std::endl;
+
+  // call main function in .cc files
+  check_this (fe1, fe2);
+}
+
+
+
+
+
+#define CHECK(EL1,deg1,EL2,deg2,dim,spacedim)\
+  { FE_ ## EL1<dim,spacedim> fe1(deg1);   \
+    FE_ ## EL2<dim,spacedim> fe2(deg2);   \
+    check(fe1, fe2, #EL1 #deg1 " against " #EL2 #deg2); \
+    check(fe2, fe1, #EL2 #deg2 " against " #EL1 #deg1); \
+  }
+
+#define CHECK_ALL(EL1,deg1,EL2,deg2)\
+  { CHECK(EL1,deg1,EL2,deg2,1,2); \
+    CHECK(EL1,deg1,EL2,deg2,1,3); \
+    CHECK(EL1,deg1,EL2,deg2,2,3); \
+  }
+
+
+int
+main()
+{
+  try
+    {
+      std::ofstream logfile("output");
+      deallog << std::setprecision (8);
+      deallog.attach(logfile);
+      deallog.depth_console(0);
+
+      CHECK_ALL(Q,1,Q,1);
+      CHECK_ALL(Q,1,Q,2);
+      CHECK_ALL(Q,1,Q,3);
+      CHECK_ALL(Q,2,Q,2);
+      CHECK_ALL(Q,2,Q,3);
+      CHECK_ALL(Q,3,Q,3);
+
+      CHECK_ALL(DGQ,0,DGQ,0);
+      CHECK_ALL(DGQ,0,DGQ,1);
+      CHECK_ALL(DGQ,0,DGQ,2);
+      CHECK_ALL(DGQ,0,DGQ,4);
+      CHECK_ALL(DGQ,1,DGQ,1);
+      CHECK_ALL(DGQ,1,DGQ,3);
+      CHECK_ALL(DGQ,2,DGQ,2);
+      CHECK_ALL(DGQ,2,DGQ,2);
+      CHECK_ALL(DGQ,2,DGQ,4);
+      CHECK_ALL(DGQ,3,DGQ,3);
+
+      CHECK_ALL(DGP,0,DGP,0);
+      CHECK_ALL(DGP,0,DGP,1);
+      CHECK_ALL(DGP,0,DGP,2);
+      CHECK_ALL(DGP,0,DGP,4);
+      CHECK_ALL(DGP,1,DGP,1);
+      CHECK_ALL(DGP,1,DGP,3);
+      CHECK_ALL(DGP,2,DGP,2);
+      CHECK_ALL(DGP,2,DGP,2);
+      CHECK_ALL(DGP,2,DGP,4);
+      CHECK_ALL(DGP,3,DGP,3);
+
+      return 0;
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      deallog << "Exception on processing: " << std::endl
+              << exc.what() << std::endl
+              << "Aborting!" << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      deallog << "Unknown exception!" << std::endl
+              << "Aborting!" << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      return 1;
+    }
+}
diff --git a/tests/bits/fe_tools_cpfqpm_05.output b/tests/bits/fe_tools_cpfqpm_05.output
new file mode 100644 (file)
index 0000000..5924dcb
--- /dev/null
@@ -0,0 +1,297 @@
+
+DEAL::Checking Q1 against Q1 in 1d and spacedim 2
+DEAL::dofs_per_cell=2, n_q_points=2
+DEAL::1.1102230e-16 1.1102230e-16
+DEAL::1.5700925e-16
+DEAL::0.0000000 1.1102230e-16 0.0000000 1.1102230e-16 
+DEAL::Checking Q1 against Q1 in 1d and spacedim 2
+DEAL::Checking Q1 against Q1 in 1d and spacedim 3
+DEAL::dofs_per_cell=2, n_q_points=2
+DEAL::1.1102230e-16 1.1102230e-16
+DEAL::1.5700925e-16
+DEAL::0.0000000 1.1102230e-16 0.0000000 1.1102230e-16 
+DEAL::Checking Q1 against Q1 in 1d and spacedim 3
+DEAL::Checking Q1 against Q1 in 2d and spacedim 3
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::6.8348105e-16 6.0715322e-16
+DEAL::6.0194655e-16
+DEAL::-2.2204460e-16 6.9388939e-17 -3.3306691e-16 8.3266727e-17 2.2204460e-16 1.1102230e-16 0.0000000 1.5265567e-16 
+DEAL::Checking Q1 against Q1 in 2d and spacedim 3
+DEAL::Checking Q1 against Q2 in 1d and spacedim 2
+DEAL::Checking Q2 against Q1 in 1d and spacedim 2
+DEAL::dofs_per_cell=3, n_q_points=3
+DEAL::2.2204460e-16 2.2204460e-16
+DEAL::3.8459254e-16
+DEAL::2.2204460e-16 0.0000000 2.2204460e-16 2.2204460e-16 2.2204460e-16 0.0000000 
+DEAL::Checking Q1 against Q2 in 1d and spacedim 3
+DEAL::Checking Q2 against Q1 in 1d and spacedim 3
+DEAL::dofs_per_cell=3, n_q_points=3
+DEAL::2.2204460e-16 2.2204460e-16
+DEAL::3.8459254e-16
+DEAL::2.2204460e-16 0.0000000 2.2204460e-16 2.2204460e-16 2.2204460e-16 0.0000000 
+DEAL::Checking Q1 against Q2 in 2d and spacedim 3
+DEAL::Checking Q2 against Q1 in 2d and spacedim 3
+DEAL::dofs_per_cell=9, n_q_points=9
+DEAL::8.0560558e-16 8.3285331e-16
+DEAL::7.7012237e-16
+DEAL::-1.1102230e-16 3.7820330e-17 0.0000000 -1.2767565e-16 0.0000000 4.7210777e-17 -4.4408921e-16 -7.7715612e-17 0.0000000 0.0000000 0.0000000 -7.2164497e-17 0.0000000 4.7327734e-17 0.0000000 -1.6098234e-16 4.4408921e-16 2.8030892e-17 
+DEAL::Checking Q1 against Q3 in 1d and spacedim 2
+DEAL::Checking Q3 against Q1 in 1d and spacedim 2
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::6.4965394e-16 8.6562701e-16
+DEAL::7.2411823e-16
+DEAL::-5.5511151e-16 3.2959746e-17 -1.1102230e-16 -1.1102230e-16 -2.2204460e-16 -8.3266727e-17 -2.2204460e-16 1.5612511e-17 
+DEAL::Checking Q1 against Q3 in 1d and spacedim 3
+DEAL::Checking Q3 against Q1 in 1d and spacedim 3
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::6.4965394e-16 8.6562701e-16
+DEAL::7.2411823e-16
+DEAL::-5.5511151e-16 3.2959746e-17 -1.1102230e-16 -1.1102230e-16 -2.2204460e-16 -8.3266727e-17 -2.2204460e-16 1.5612511e-17 
+DEAL::Checking Q1 against Q3 in 2d and spacedim 3
+DEAL::Checking Q3 against Q1 in 2d and spacedim 3
+DEAL::dofs_per_cell=16, n_q_points=16
+DEAL::1.4809117e-15 1.7010183e-15
+DEAL::1.6019149e-15
+DEAL::-3.3306691e-16 4.0657581e-18 -2.2204460e-16 -2.2551405e-17 2.2204460e-16 -1.7780916e-17 -3.3306691e-16 -5.0415401e-17 0.0000000 5.2041704e-18 -5.5511151e-16 -2.0816682e-17 -2.2204460e-16 -2.4286129e-17 0.0000000 -1.3444107e-17 0.0000000 -3.9031278e-18 -4.4408921e-16 -1.7347235e-17 -2.2204460e-16 -1.0408341e-17 0.0000000 2.4286129e-17 -1.1102230e-16 -4.7840421e-17 -2.2204460e-16 -9.9746600e-18 0.0000000 1.7347235e-18 6.6613381e-16 -4.4343869e-17 
+DEAL::Checking Q2 against Q2 in 1d and spacedim 2
+DEAL::Checking Q2 against Q2 in 1d and spacedim 2
+DEAL::Checking Q2 against Q2 in 1d and spacedim 3
+DEAL::Checking Q2 against Q2 in 1d and spacedim 3
+DEAL::Checking Q2 against Q2 in 2d and spacedim 3
+DEAL::Checking Q2 against Q2 in 2d and spacedim 3
+DEAL::Checking Q2 against Q3 in 1d and spacedim 2
+DEAL::Checking Q3 against Q2 in 1d and spacedim 2
+DEAL::Checking Q2 against Q3 in 1d and spacedim 3
+DEAL::Checking Q3 against Q2 in 1d and spacedim 3
+DEAL::Checking Q2 against Q3 in 2d and spacedim 3
+DEAL::Checking Q3 against Q2 in 2d and spacedim 3
+DEAL::Checking Q3 against Q3 in 1d and spacedim 2
+DEAL::Checking Q3 against Q3 in 1d and spacedim 2
+DEAL::Checking Q3 against Q3 in 1d and spacedim 3
+DEAL::Checking Q3 against Q3 in 1d and spacedim 3
+DEAL::Checking Q3 against Q3 in 2d and spacedim 3
+DEAL::Checking Q3 against Q3 in 2d and spacedim 3
+DEAL::Checking DGQ0 against DGQ0 in 1d and spacedim 2
+DEAL::dofs_per_cell=1, n_q_points=1
+DEAL::0.0000000 0.0000000
+DEAL::0.0000000
+DEAL::0.0000000 0.0000000 
+DEAL::Checking DGQ0 against DGQ0 in 1d and spacedim 2
+DEAL::Checking DGQ0 against DGQ0 in 1d and spacedim 3
+DEAL::dofs_per_cell=1, n_q_points=1
+DEAL::0.0000000 0.0000000
+DEAL::0.0000000
+DEAL::0.0000000 0.0000000 
+DEAL::Checking DGQ0 against DGQ0 in 1d and spacedim 3
+DEAL::Checking DGQ0 against DGQ0 in 2d and spacedim 3
+DEAL::dofs_per_cell=1, n_q_points=1
+DEAL::0.0000000 0.0000000
+DEAL::0.0000000
+DEAL::0.0000000 0.0000000 
+DEAL::Checking DGQ0 against DGQ0 in 2d and spacedim 3
+DEAL::Checking DGQ0 against DGQ1 in 1d and spacedim 2
+DEAL::Checking DGQ1 against DGQ0 in 1d and spacedim 2
+DEAL::dofs_per_cell=2, n_q_points=2
+DEAL::1.1102230e-16 1.1102230e-16
+DEAL::1.5700925e-16
+DEAL::0.0000000 1.1102230e-16 0.0000000 1.1102230e-16 
+DEAL::Checking DGQ0 against DGQ1 in 1d and spacedim 3
+DEAL::Checking DGQ1 against DGQ0 in 1d and spacedim 3
+DEAL::dofs_per_cell=2, n_q_points=2
+DEAL::1.1102230e-16 1.1102230e-16
+DEAL::1.5700925e-16
+DEAL::0.0000000 1.1102230e-16 0.0000000 1.1102230e-16 
+DEAL::Checking DGQ0 against DGQ1 in 2d and spacedim 3
+DEAL::Checking DGQ1 against DGQ0 in 2d and spacedim 3
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::6.8348105e-16 6.0715322e-16
+DEAL::6.0194655e-16
+DEAL::-2.2204460e-16 6.9388939e-17 -3.3306691e-16 8.3266727e-17 2.2204460e-16 1.1102230e-16 0.0000000 1.5265567e-16 
+DEAL::Checking DGQ0 against DGQ2 in 1d and spacedim 2
+DEAL::Checking DGQ2 against DGQ0 in 1d and spacedim 2
+DEAL::dofs_per_cell=3, n_q_points=3
+DEAL::2.4980018e-16 2.6367797e-16
+DEAL::3.8609193e-16
+DEAL::2.2204460e-16 2.7755576e-17 2.2204460e-16 2.2204460e-16 2.2204460e-16 0.0000000 
+DEAL::Checking DGQ0 against DGQ2 in 1d and spacedim 3
+DEAL::Checking DGQ2 against DGQ0 in 1d and spacedim 3
+DEAL::dofs_per_cell=3, n_q_points=3
+DEAL::2.4980018e-16 2.6367797e-16
+DEAL::3.8609193e-16
+DEAL::2.2204460e-16 2.7755576e-17 2.2204460e-16 2.2204460e-16 2.2204460e-16 0.0000000 
+DEAL::Checking DGQ0 against DGQ2 in 2d and spacedim 3
+DEAL::Checking DGQ2 against DGQ0 in 2d and spacedim 3
+DEAL::dofs_per_cell=9, n_q_points=9
+DEAL::5.1967837e-16 5.0201419e-16
+DEAL::5.4101618e-16
+DEAL::-1.1102230e-16 2.4286129e-17 -2.2204460e-16 0.0000000 -1.1102230e-16 6.9388939e-17 0.0000000 -5.5511151e-17 0.0000000 0.0000000 2.2204460e-16 -1.1102230e-16 -1.1102230e-16 4.1633363e-17 0.0000000 2.7755576e-17 -1.1102230e-16 5.5511151e-17 
+DEAL::Checking DGQ0 against DGQ4 in 1d and spacedim 2
+DEAL::Checking DGQ4 against DGQ0 in 1d and spacedim 2
+DEAL::dofs_per_cell=5, n_q_points=5
+DEAL::5.0653925e-16 4.0939474e-16
+DEAL::4.1721835e-16
+DEAL::2.2204460e-16 4.8572257e-17 0.0000000 -6.5919492e-17 0.0000000 0.0000000 -1.1102230e-16 -5.8980598e-17 0.0000000 4.8572257e-17 
+DEAL::Checking DGQ0 against DGQ4 in 1d and spacedim 3
+DEAL::Checking DGQ4 against DGQ0 in 1d and spacedim 3
+DEAL::dofs_per_cell=5, n_q_points=5
+DEAL::5.0653925e-16 4.0939474e-16
+DEAL::4.1721835e-16
+DEAL::2.2204460e-16 4.8572257e-17 0.0000000 -6.5919492e-17 0.0000000 0.0000000 -1.1102230e-16 -5.8980598e-17 0.0000000 4.8572257e-17 
+DEAL::Checking DGQ0 against DGQ4 in 2d and spacedim 3
+DEAL::Checking DGQ4 against DGQ0 in 2d and spacedim 3
+DEAL::dofs_per_cell=25, n_q_points=25
+DEAL::1.8003635e-15 2.3892224e-15
+DEAL::1.9039663e-15
+DEAL::-5.5511151e-16 2.4286129e-17 0.0000000 1.9515639e-17 0.0000000 -1.3877788e-17 -5.5511151e-16 -8.6736174e-18 -4.4408921e-16 -8.2399365e-18 -3.3306691e-16 5.4210109e-18 -3.3306691e-16 -2.2226145e-17 -2.2204460e-16 -2.4286129e-17 -1.1102230e-16 -2.2226145e-17 0.0000000 -1.7997756e-17 -2.2204460e-16 2.7755576e-17 -2.2204460e-16 6.9388939e-17 2.2204460e-16 2.2204460e-16 -1.1102230e-16 -3.8163916e-17 0.0000000 1.3877788e-17 2.2204460e-16 1.8865118e-17 -3.3306691e-16 -2.4502969e-17 -2.2204460e-16 3.4694470e-18 -2.2204460e-16 -1.3010426e-18 -3.3306691e-16 -2.4936650e-17 -4.4408921e-16 -9.1072982e-18 -2.2204460e-16 -1.7347235e-18 0.0000000 -2.0816682e-17 -2.2204460e-16 1.0842022e-18 0.0000000 -1.2143064e-17 
+DEAL::Checking DGQ1 against DGQ1 in 1d and spacedim 2
+DEAL::Checking DGQ1 against DGQ1 in 1d and spacedim 2
+DEAL::Checking DGQ1 against DGQ1 in 1d and spacedim 3
+DEAL::Checking DGQ1 against DGQ1 in 1d and spacedim 3
+DEAL::Checking DGQ1 against DGQ1 in 2d and spacedim 3
+DEAL::Checking DGQ1 against DGQ1 in 2d and spacedim 3
+DEAL::Checking DGQ1 against DGQ3 in 1d and spacedim 2
+DEAL::Checking DGQ3 against DGQ1 in 1d and spacedim 2
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::4.3801768e-16 4.4408921e-16
+DEAL::5.0062403e-16
+DEAL::-3.3306691e-16 1.3877788e-17 0.0000000 -9.0205621e-17 -2.2204460e-16 -4.8572257e-17 -2.2204460e-16 5.5511151e-17 
+DEAL::Checking DGQ1 against DGQ3 in 1d and spacedim 3
+DEAL::Checking DGQ3 against DGQ1 in 1d and spacedim 3
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::4.3801768e-16 4.4408921e-16
+DEAL::5.0062403e-16
+DEAL::-3.3306691e-16 1.3877788e-17 0.0000000 -9.0205621e-17 -2.2204460e-16 -4.8572257e-17 -2.2204460e-16 5.5511151e-17 
+DEAL::Checking DGQ1 against DGQ3 in 2d and spacedim 3
+DEAL::Checking DGQ3 against DGQ1 in 2d and spacedim 3
+DEAL::dofs_per_cell=16, n_q_points=16
+DEAL::1.4873628e-15 1.4771611e-15
+DEAL::1.6644460e-15
+DEAL::-3.3306691e-16 -7.0256301e-17 -5.5511151e-16 -1.3010426e-18 -3.3306691e-16 -4.2500725e-17 0.0000000 -8.6736174e-19 -5.5511151e-16 -2.0816682e-17 -3.3306691e-16 -2.3310347e-17 -5.5511151e-16 -1.7889336e-17 -1.1102230e-16 1.3444107e-17 0.0000000 -3.4694470e-18 -3.3306691e-16 -2.3960868e-17 -4.4408921e-16 -6.4726870e-17 -2.2204460e-16 1.3010426e-17 0.0000000 -1.7347235e-17 -3.3306691e-16 -6.9388939e-18 0.0000000 -3.7730236e-17 4.4408921e-16 -2.4286129e-17 
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 2
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 2
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 2d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 2d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 2
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 2
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 1d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 2d and spacedim 3
+DEAL::Checking DGQ2 against DGQ2 in 2d and spacedim 3
+DEAL::Checking DGQ2 against DGQ4 in 1d and spacedim 2
+DEAL::Checking DGQ4 against DGQ2 in 1d and spacedim 2
+DEAL::Checking DGQ2 against DGQ4 in 1d and spacedim 3
+DEAL::Checking DGQ4 against DGQ2 in 1d and spacedim 3
+DEAL::Checking DGQ2 against DGQ4 in 2d and spacedim 3
+DEAL::Checking DGQ4 against DGQ2 in 2d and spacedim 3
+DEAL::Checking DGQ3 against DGQ3 in 1d and spacedim 2
+DEAL::Checking DGQ3 against DGQ3 in 1d and spacedim 2
+DEAL::Checking DGQ3 against DGQ3 in 1d and spacedim 3
+DEAL::Checking DGQ3 against DGQ3 in 1d and spacedim 3
+DEAL::Checking DGQ3 against DGQ3 in 2d and spacedim 3
+DEAL::Checking DGQ3 against DGQ3 in 2d and spacedim 3
+DEAL::Checking DGP0 against DGP0 in 1d and spacedim 2
+DEAL::dofs_per_cell=1, n_q_points=1
+DEAL::0.0000000 0.0000000
+DEAL::0.0000000
+DEAL::0.0000000 0.0000000 
+DEAL::Checking DGP0 against DGP0 in 1d and spacedim 2
+DEAL::Checking DGP0 against DGP0 in 1d and spacedim 3
+DEAL::dofs_per_cell=1, n_q_points=1
+DEAL::0.0000000 0.0000000
+DEAL::0.0000000
+DEAL::0.0000000 0.0000000 
+DEAL::Checking DGP0 against DGP0 in 1d and spacedim 3
+DEAL::Checking DGP0 against DGP0 in 2d and spacedim 3
+DEAL::dofs_per_cell=1, n_q_points=1
+DEAL::0.0000000 0.0000000
+DEAL::0.0000000
+DEAL::0.0000000 0.0000000 
+DEAL::Checking DGP0 against DGP0 in 2d and spacedim 3
+DEAL::Checking DGP0 against DGP1 in 1d and spacedim 2
+DEAL::Checking DGP1 against DGP0 in 1d and spacedim 2
+DEAL::dofs_per_cell=2, n_q_points=2
+DEAL::5.5511151e-17 5.5511151e-17
+DEAL::7.8504623e-17
+DEAL::0.0000000 5.5511151e-17 0.0000000 5.5511151e-17 
+DEAL::Checking DGP0 against DGP1 in 1d and spacedim 3
+DEAL::Checking DGP1 against DGP0 in 1d and spacedim 3
+DEAL::dofs_per_cell=2, n_q_points=2
+DEAL::5.5511151e-17 5.5511151e-17
+DEAL::7.8504623e-17
+DEAL::0.0000000 5.5511151e-17 0.0000000 5.5511151e-17 
+DEAL::Checking DGP0 against DGP1 in 2d and spacedim 3
+DEAL::Checking DGP1 against DGP0 in 2d and spacedim 3
+DEAL::Checking DGP0 against DGP2 in 1d and spacedim 2
+DEAL::Checking DGP2 against DGP0 in 1d and spacedim 2
+DEAL::dofs_per_cell=3, n_q_points=3
+DEAL::1.1102230e-16 2.2204460e-16
+DEAL::1.3597400e-16
+DEAL::0.0000000 0.0000000 -1.1102230e-16 -1.1102230e-16 0.0000000 0.0000000 
+DEAL::Checking DGP0 against DGP2 in 1d and spacedim 3
+DEAL::Checking DGP2 against DGP0 in 1d and spacedim 3
+DEAL::dofs_per_cell=3, n_q_points=3
+DEAL::1.1102230e-16 2.2204460e-16
+DEAL::1.3597400e-16
+DEAL::0.0000000 0.0000000 -1.1102230e-16 -1.1102230e-16 0.0000000 0.0000000 
+DEAL::Checking DGP0 against DGP2 in 2d and spacedim 3
+DEAL::Checking DGP2 against DGP0 in 2d and spacedim 3
+DEAL::Checking DGP0 against DGP4 in 1d and spacedim 2
+DEAL::Checking DGP4 against DGP0 in 1d and spacedim 2
+DEAL::dofs_per_cell=5, n_q_points=5
+DEAL::4.4408921e-16 3.7470027e-16
+DEAL::3.3594567e-16
+DEAL::0.0000000 0.0000000 0.0000000 -5.5511151e-17 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -9.7144515e-17 
+DEAL::Checking DGP0 against DGP4 in 1d and spacedim 3
+DEAL::Checking DGP4 against DGP0 in 1d and spacedim 3
+DEAL::dofs_per_cell=5, n_q_points=5
+DEAL::4.4408921e-16 3.7470027e-16
+DEAL::3.3594567e-16
+DEAL::0.0000000 0.0000000 0.0000000 -5.5511151e-17 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -9.7144515e-17 
+DEAL::Checking DGP0 against DGP4 in 2d and spacedim 3
+DEAL::Checking DGP4 against DGP0 in 2d and spacedim 3
+DEAL::Checking DGP1 against DGP1 in 1d and spacedim 2
+DEAL::Checking DGP1 against DGP1 in 1d and spacedim 2
+DEAL::Checking DGP1 against DGP1 in 1d and spacedim 3
+DEAL::Checking DGP1 against DGP1 in 1d and spacedim 3
+DEAL::Checking DGP1 against DGP1 in 2d and spacedim 3
+DEAL::Checking DGP1 against DGP1 in 2d and spacedim 3
+DEAL::Checking DGP1 against DGP3 in 1d and spacedim 2
+DEAL::Checking DGP3 against DGP1 in 1d and spacedim 2
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::3.8857806e-16 4.0245585e-16
+DEAL::3.3680450e-16
+DEAL::0.0000000 -2.7755576e-17 0.0000000 0.0000000 -1.1102230e-16 5.5511151e-17 0.0000000 -1.3877788e-17 
+DEAL::Checking DGP1 against DGP3 in 1d and spacedim 3
+DEAL::Checking DGP3 against DGP1 in 1d and spacedim 3
+DEAL::dofs_per_cell=4, n_q_points=4
+DEAL::3.8857806e-16 4.0245585e-16
+DEAL::3.3680450e-16
+DEAL::0.0000000 -2.7755576e-17 0.0000000 0.0000000 -1.1102230e-16 5.5511151e-17 0.0000000 -1.3877788e-17 
+DEAL::Checking DGP1 against DGP3 in 2d and spacedim 3
+DEAL::Checking DGP3 against DGP1 in 2d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 2
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 2
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 2d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 2d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 2
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 2
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 1d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 2d and spacedim 3
+DEAL::Checking DGP2 against DGP2 in 2d and spacedim 3
+DEAL::Checking DGP2 against DGP4 in 1d and spacedim 2
+DEAL::Checking DGP4 against DGP2 in 1d and spacedim 2
+DEAL::Checking DGP2 against DGP4 in 1d and spacedim 3
+DEAL::Checking DGP4 against DGP2 in 1d and spacedim 3
+DEAL::Checking DGP2 against DGP4 in 2d and spacedim 3
+DEAL::Checking DGP4 against DGP2 in 2d and spacedim 3
+DEAL::Checking DGP3 against DGP3 in 1d and spacedim 2
+DEAL::Checking DGP3 against DGP3 in 1d and spacedim 2
+DEAL::Checking DGP3 against DGP3 in 1d and spacedim 3
+DEAL::Checking DGP3 against DGP3 in 1d and spacedim 3
+DEAL::Checking DGP3 against DGP3 in 2d and spacedim 3
+DEAL::Checking DGP3 against DGP3 in 2d and spacedim 3

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.