]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Fix has_support_on_face for FE_Q. Have a testcase for this function and a number...
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 21 Oct 2002 21:25:06 +0000 (21:25 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 21 Oct 2002 21:25:06 +0000 (21:25 +0000)
git-svn-id: https://svn.dealii.org/trunk@6703 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/source/fe/fe_q.cc
tests/fe/Makefile
tests/fe/roy_1.cc [new file with mode: 0644]
tests/fe/roy_1.checked [new file with mode: 0644]

index 06e5381ec42235760e48f10219d76ad05d45c2b3..68ffba70aca6910dad9740ef8d192115f02b7d8a 100644 (file)
@@ -1330,15 +1330,14 @@ FE_Q<dim>::element_multiplicity (const unsigned int index) const
 
 template <int dim>
 bool
-FE_Q<dim>::has_support_on_face (const unsigned int shape_index_,
+FE_Q<dim>::has_support_on_face (const unsigned int shape_index,
                                const unsigned int face_index) const
 {
-  Assert (shape_index_ < this->dofs_per_cell,
-         ExcIndexRange (shape_index_, 0, this->dofs_per_cell));
+  Assert (shape_index < this->dofs_per_cell,
+         ExcIndexRange (shape_index, 0, this->dofs_per_cell));
   Assert (face_index < GeometryInfo<dim>::faces_per_cell,
          ExcIndexRange (face_index, 0, GeometryInfo<dim>::faces_per_cell));
 
-  unsigned int shape_index = shape_index_;
 
                                   // in 1d, things are simple. since
                                   // there is only one degree of
@@ -1352,71 +1351,105 @@ FE_Q<dim>::has_support_on_face (const unsigned int shape_index_,
   else
                                     // more dimensions
     {
-      Assert (dim<=3, ExcNotImplemented());
-      
-      const unsigned int cell_start = (dim==2)
-                                     ? this->first_quad_index
-                                     : this->first_hex_index;
-      const unsigned int face_start = (dim==2)
-                                     ? this->first_line_index
-                                     : this->first_quad_index;
-      const unsigned int edge_start = this->first_line_index;
-      
-      const unsigned int dofs_per_face = (dim==2)
-                                        ? this->dofs_per_line
-                                        : this->dofs_per_quad;
-      const unsigned int dofs_per_edge = this->dofs_per_line;
-      
-                                      // Interior degrees of
-                                      // freedom correspond to
-                                      // shape functions with
-                                      // support inside the cell.
-      if (shape_index >= cell_start)
-       return false;
-                                      // Shape functions are sorted
-                                      // by face. If we divide by
-                                      // the number of shapes per
-                                      // face, the result must be
-                                      // equal to the face index.
-      if (shape_index >= face_start)
-       {
-         shape_index -= face_start;
-         shape_index /=  dofs_per_face;
-         return (shape_index == face_index);
-       }
-                                      // In 3D, we must process edges
-                                      // like faces.
-      if (shape_index >= edge_start)
-       {
-         shape_index -= edge_start;
-         shape_index /=  dofs_per_edge;
-         return (shape_index == face_index);
-       }
-      
-                                      // Only degrees of freedom on
-                                      // a vertex are left.
-      shape_index /=  this->dofs_per_vertex;
-                                      // Use a table to figure out
-                                      // which face is neighbor to
-                                      // which vertex. This seems to
-                                      // be the most reasonable way,
-                                      // considering the way how
-                                      // edges and faces are numbered
-      switch (100*dim+10*face_index+shape_index)
-       {
-         case 200:       case 230:       case 201:       case 211:
-         case 212:       case 222:       case 223:       case 233:
-         case 300:       case 320:       case 350:       case 301:
-         case 321:       case 331:       case 302:       case 332:
-         case 342:       case 303:       case 343:       case 353:
-         case 314:       case 324:       case 354:       case 315:
-         case 325:       case 335:       case 316:       case 336:
-         case 346:       case 317:       case 347:       case 357:
-           return true;
-         default:
-           return false;
-       }
-      return true;
+                                       // let's see whether this is a
+                                       // vertex
+      if (shape_index < first_line_index) 
+        {
+                                           // for Q elements, there is
+                                           // one dof per vertex, so
+                                           // shape_index==vertex_number. check
+                                           // whether this vertex is
+                                           // on the given face. thus,
+                                           // for each face, give a
+                                           // list of vertices
+          const unsigned int vertex_no = shape_index;
+          Assert (vertex_no < GeometryInfo<dim>::vertices_per_cell,
+                  ExcInternalError());
+          switch (dim)
+            {
+              case 2:
+              {
+                static const unsigned int face_vertices[4][2] =
+                  { {0,1},{1,2},{2,3},{0,3} };
+                return ((face_vertices[face_index][0] == vertex_no)
+                        ||
+                        (face_vertices[face_index][1] == vertex_no));
+              };
+
+              case 3:
+              {
+                static const unsigned int face_vertices[6][4] =
+                  { {0,1,2,3},{4,5,6,7},{0,1,5,4},
+                    {1,5,6,2},{3,2,6,7},{0,4,7,3} };
+                return ((face_vertices[face_index][0] == vertex_no)||
+                        (face_vertices[face_index][1] == vertex_no)||
+                        (face_vertices[face_index][2] == vertex_no)||
+                        (face_vertices[face_index][3] == vertex_no));
+              };
+
+              default:
+                    Assert (false, ExcNotImplemented());
+            };
+        }
+      else if (shape_index < first_quad_index)
+                                         // ok, dof is on a line
+        {
+          const unsigned int line_index
+            = (shape_index - first_line_index) / dofs_per_line;
+          Assert (line_index < GeometryInfo<dim>::lines_per_cell,
+                  ExcInternalError());
+
+                                           // in 2d, the line is the
+                                           // face, so get the line
+                                           // index
+          if (dim == 2)
+            return (line_index == face_index);
+          else if (dim == 3)
+            {
+                                               // see whether the
+                                               // given line is on the
+                                               // given face. use
+                                               // table technique
+                                               // again
+              static const unsigned int face_lines[6][4] =
+                { {0,1,2,3},{4,5,6,7},{0,8,9,4},
+                  {1,9,5,10},{2,10,6,11},{3,8,7,11} };
+              return ((face_lines[face_index][0] == line_index)||
+                      (face_lines[face_index][1] == line_index)||
+                      (face_lines[face_index][2] == line_index)||
+                      (face_lines[face_index][3] == line_index));
+            }
+          else
+            Assert (false, ExcNotImplemented());
+        }
+      else if (shape_index < first_hex_index)
+                                         // dof is on a quad
+        {
+          const unsigned int quad_index 
+            = (shape_index - first_quad_index) / dofs_per_quad;
+          Assert (quad_index < GeometryInfo<dim>::quads_per_cell,
+                  ExcInternalError());
+          
+                                           // in 2d, cell bubble are
+                                           // zero on all faces
+          if (dim == 2)
+            return false;
+                                           // in 3d,
+                                           // quad_index=face_index
+          else if (dim == 3)
+            return (quad_index == face_index);
+          else
+            Assert (false, ExcNotImplemented());
+        }
+      else
+                                         // dof on hex
+        {
+          Assert (dim == 3, ExcNotImplemented());
+                                           // in 3d, hex dofs are
+                                           // bubbles and are zero on
+                                           // the boundary
+          return false;
+        };
     };
 };
 
index ac92ea458cc764d759641280c17429d74bbb97c4..00522c3230141bc891a8938dfced44dd363e29ee 100644 (file)
@@ -42,12 +42,14 @@ up_and_down.exe         : up_and_down.go     $(libraries)
 anna_1.exe              : anna_1.go              $(libraries)
 anna_2.exe              : anna_2.go              $(libraries)
 anna_3.exe              : anna_3.go              $(libraries)
+roy_1.exe               : roy_1.go               $(libraries)
 
 tests = fe_data_test fe_traits fe_tools_test mapping \
         mapping_c1 shapes derivatives numbering mapping_q1_eulerian \
         transfer internals \
         non_primitive_1 non_primitive_2 \
-        nedelec nedelec_2 nedelec_3 up_and_down anna_1 anna_2 anna_3
+        nedelec nedelec_2 nedelec_3 up_and_down anna_1 anna_2 anna_3 \
+       roy_1
 
 ############################################################
 
diff --git a/tests/fe/roy_1.cc b/tests/fe/roy_1.cc
new file mode 100644 (file)
index 0000000..1ae2089
--- /dev/null
@@ -0,0 +1,74 @@
+//----------------------------  anna_1.cc  ---------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 2002 by the deal.II authors and Anna Schneebeli
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------  anna_1.cc  ---------------------------
+
+
+// check has_support_on_face for some elements
+//
+// this program is a modified version of one by Roy Stogner, 
+// University of Texas at Austin
+
+#include <base/logstream.h>
+#include <fe/fe_q.h>
+#include <fe/fe_dgq.h>
+#include <fe/fe_dgp.h>
+#include <fe/fe_nedelec.h>
+#include <fstream>
+
+
+template <int dim>
+void check (const FiniteElement<dim> &fe) {
+    for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell;
+         face++)
+      for (unsigned int i = 0; i < fe.dofs_per_cell; i++)
+        if (fe.has_support_on_face(i, face))
+          deallog << "Basis function " << i
+                  << " has support on face " << face << std::endl;
+}
+
+
+#define check_el(fe) { deallog << #fe << std::endl; check(fe); }
+
+template <int dim>
+void check () 
+{
+  deallog << "************ dim = " << dim << std::endl;
+  check_el (FE_Q<dim>(1));
+  check_el (FE_Q<dim>(2));
+  check_el (FE_Q<dim>(3));
+
+  check_el (FE_DGQ<dim>(0));
+  check_el (FE_DGQ<dim>(1));
+  check_el (FE_DGQ<dim>(2));
+  check_el (FE_DGQ<dim>(3));
+
+  check_el (FE_DGP<dim>(0));
+  check_el (FE_DGP<dim>(1));
+  check_el (FE_DGP<dim>(2));
+
+  if (dim > 1)
+    check_el (FE_Nedelec<dim>(1));
+};
+
+
+int main () 
+{
+  std::ofstream logfile("roy_1.output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+
+  check<1> ();
+  check<2> ();
+  check<3> ();  
+  
+  return 0;
+};
diff --git a/tests/fe/roy_1.checked b/tests/fe/roy_1.checked
new file mode 100644 (file)
index 0000000..97637c6
--- /dev/null
@@ -0,0 +1,695 @@
+
+DEAL::************ dim = 1
+DEAL::FE_Q<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_Q<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_Q<dim>(3)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_DGQ<dim>(0)
+DEAL::Basis function 0 has support on face 0
+DEAL::FE_DGQ<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_DGQ<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_DGQ<dim>(3)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_DGP<dim>(0)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::FE_DGP<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::FE_DGP<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::************ dim = 2
+DEAL::FE_Q<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::FE_Q<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 4 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 6 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 7 has support on face 3
+DEAL::FE_Q<dim>(3)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 4 has support on face 0
+DEAL::Basis function 5 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 9 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 10 has support on face 3
+DEAL::Basis function 11 has support on face 3
+DEAL::FE_DGQ<dim>(0)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::FE_DGQ<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::FE_DGQ<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 8 has support on face 1
+DEAL::Basis function 6 has support on face 2
+DEAL::Basis function 7 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 6 has support on face 3
+DEAL::FE_DGQ<dim>(3)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 11 has support on face 1
+DEAL::Basis function 15 has support on face 1
+DEAL::Basis function 12 has support on face 2
+DEAL::Basis function 13 has support on face 2
+DEAL::Basis function 14 has support on face 2
+DEAL::Basis function 15 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 4 has support on face 3
+DEAL::Basis function 8 has support on face 3
+DEAL::Basis function 12 has support on face 3
+DEAL::FE_DGP<dim>(0)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::FE_DGP<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::FE_DGP<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 4 has support on face 0
+DEAL::Basis function 5 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 4 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 4 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::FE_Nedelec<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::************ dim = 3
+DEAL::FE_Q<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 4 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::Basis function 6 has support on face 3
+DEAL::Basis function 2 has support on face 4
+DEAL::Basis function 3 has support on face 4
+DEAL::Basis function 6 has support on face 4
+DEAL::Basis function 7 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 3 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 7 has support on face 5
+DEAL::FE_Q<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 8 has support on face 0
+DEAL::Basis function 9 has support on face 0
+DEAL::Basis function 10 has support on face 0
+DEAL::Basis function 11 has support on face 0
+DEAL::Basis function 20 has support on face 0
+DEAL::Basis function 4 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 12 has support on face 1
+DEAL::Basis function 13 has support on face 1
+DEAL::Basis function 14 has support on face 1
+DEAL::Basis function 15 has support on face 1
+DEAL::Basis function 21 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 12 has support on face 2
+DEAL::Basis function 16 has support on face 2
+DEAL::Basis function 17 has support on face 2
+DEAL::Basis function 22 has support on face 2
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::Basis function 6 has support on face 3
+DEAL::Basis function 9 has support on face 3
+DEAL::Basis function 13 has support on face 3
+DEAL::Basis function 17 has support on face 3
+DEAL::Basis function 18 has support on face 3
+DEAL::Basis function 23 has support on face 3
+DEAL::Basis function 2 has support on face 4
+DEAL::Basis function 3 has support on face 4
+DEAL::Basis function 6 has support on face 4
+DEAL::Basis function 7 has support on face 4
+DEAL::Basis function 10 has support on face 4
+DEAL::Basis function 14 has support on face 4
+DEAL::Basis function 18 has support on face 4
+DEAL::Basis function 19 has support on face 4
+DEAL::Basis function 24 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 3 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 7 has support on face 5
+DEAL::Basis function 11 has support on face 5
+DEAL::Basis function 15 has support on face 5
+DEAL::Basis function 16 has support on face 5
+DEAL::Basis function 19 has support on face 5
+DEAL::Basis function 25 has support on face 5
+DEAL::FE_Q<dim>(3)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 8 has support on face 0
+DEAL::Basis function 9 has support on face 0
+DEAL::Basis function 10 has support on face 0
+DEAL::Basis function 11 has support on face 0
+DEAL::Basis function 12 has support on face 0
+DEAL::Basis function 13 has support on face 0
+DEAL::Basis function 14 has support on face 0
+DEAL::Basis function 15 has support on face 0
+DEAL::Basis function 32 has support on face 0
+DEAL::Basis function 33 has support on face 0
+DEAL::Basis function 34 has support on face 0
+DEAL::Basis function 35 has support on face 0
+DEAL::Basis function 4 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 16 has support on face 1
+DEAL::Basis function 17 has support on face 1
+DEAL::Basis function 18 has support on face 1
+DEAL::Basis function 19 has support on face 1
+DEAL::Basis function 20 has support on face 1
+DEAL::Basis function 21 has support on face 1
+DEAL::Basis function 22 has support on face 1
+DEAL::Basis function 23 has support on face 1
+DEAL::Basis function 36 has support on face 1
+DEAL::Basis function 37 has support on face 1
+DEAL::Basis function 38 has support on face 1
+DEAL::Basis function 39 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 9 has support on face 2
+DEAL::Basis function 16 has support on face 2
+DEAL::Basis function 17 has support on face 2
+DEAL::Basis function 24 has support on face 2
+DEAL::Basis function 25 has support on face 2
+DEAL::Basis function 26 has support on face 2
+DEAL::Basis function 27 has support on face 2
+DEAL::Basis function 40 has support on face 2
+DEAL::Basis function 41 has support on face 2
+DEAL::Basis function 42 has support on face 2
+DEAL::Basis function 43 has support on face 2
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::Basis function 6 has support on face 3
+DEAL::Basis function 10 has support on face 3
+DEAL::Basis function 11 has support on face 3
+DEAL::Basis function 18 has support on face 3
+DEAL::Basis function 19 has support on face 3
+DEAL::Basis function 26 has support on face 3
+DEAL::Basis function 27 has support on face 3
+DEAL::Basis function 28 has support on face 3
+DEAL::Basis function 29 has support on face 3
+DEAL::Basis function 44 has support on face 3
+DEAL::Basis function 45 has support on face 3
+DEAL::Basis function 46 has support on face 3
+DEAL::Basis function 47 has support on face 3
+DEAL::Basis function 2 has support on face 4
+DEAL::Basis function 3 has support on face 4
+DEAL::Basis function 6 has support on face 4
+DEAL::Basis function 7 has support on face 4
+DEAL::Basis function 12 has support on face 4
+DEAL::Basis function 13 has support on face 4
+DEAL::Basis function 20 has support on face 4
+DEAL::Basis function 21 has support on face 4
+DEAL::Basis function 28 has support on face 4
+DEAL::Basis function 29 has support on face 4
+DEAL::Basis function 30 has support on face 4
+DEAL::Basis function 31 has support on face 4
+DEAL::Basis function 48 has support on face 4
+DEAL::Basis function 49 has support on face 4
+DEAL::Basis function 50 has support on face 4
+DEAL::Basis function 51 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 3 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 7 has support on face 5
+DEAL::Basis function 14 has support on face 5
+DEAL::Basis function 15 has support on face 5
+DEAL::Basis function 22 has support on face 5
+DEAL::Basis function 23 has support on face 5
+DEAL::Basis function 24 has support on face 5
+DEAL::Basis function 25 has support on face 5
+DEAL::Basis function 30 has support on face 5
+DEAL::Basis function 31 has support on face 5
+DEAL::Basis function 52 has support on face 5
+DEAL::Basis function 53 has support on face 5
+DEAL::Basis function 54 has support on face 5
+DEAL::Basis function 55 has support on face 5
+DEAL::FE_DGQ<dim>(0)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 0 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::FE_DGQ<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 4 has support on face 0
+DEAL::Basis function 5 has support on face 0
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::Basis function 7 has support on face 3
+DEAL::Basis function 4 has support on face 4
+DEAL::Basis function 5 has support on face 4
+DEAL::Basis function 6 has support on face 4
+DEAL::Basis function 7 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 2 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 6 has support on face 5
+DEAL::FE_DGQ<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 9 has support on face 0
+DEAL::Basis function 10 has support on face 0
+DEAL::Basis function 11 has support on face 0
+DEAL::Basis function 18 has support on face 0
+DEAL::Basis function 19 has support on face 0
+DEAL::Basis function 20 has support on face 0
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 8 has support on face 1
+DEAL::Basis function 15 has support on face 1
+DEAL::Basis function 16 has support on face 1
+DEAL::Basis function 17 has support on face 1
+DEAL::Basis function 24 has support on face 1
+DEAL::Basis function 25 has support on face 1
+DEAL::Basis function 26 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 6 has support on face 2
+DEAL::Basis function 7 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::Basis function 8 has support on face 3
+DEAL::Basis function 11 has support on face 3
+DEAL::Basis function 14 has support on face 3
+DEAL::Basis function 17 has support on face 3
+DEAL::Basis function 20 has support on face 3
+DEAL::Basis function 23 has support on face 3
+DEAL::Basis function 26 has support on face 3
+DEAL::Basis function 18 has support on face 4
+DEAL::Basis function 19 has support on face 4
+DEAL::Basis function 20 has support on face 4
+DEAL::Basis function 21 has support on face 4
+DEAL::Basis function 22 has support on face 4
+DEAL::Basis function 23 has support on face 4
+DEAL::Basis function 24 has support on face 4
+DEAL::Basis function 25 has support on face 4
+DEAL::Basis function 26 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 3 has support on face 5
+DEAL::Basis function 6 has support on face 5
+DEAL::Basis function 9 has support on face 5
+DEAL::Basis function 12 has support on face 5
+DEAL::Basis function 15 has support on face 5
+DEAL::Basis function 18 has support on face 5
+DEAL::Basis function 21 has support on face 5
+DEAL::Basis function 24 has support on face 5
+DEAL::FE_DGQ<dim>(3)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 16 has support on face 0
+DEAL::Basis function 17 has support on face 0
+DEAL::Basis function 18 has support on face 0
+DEAL::Basis function 19 has support on face 0
+DEAL::Basis function 32 has support on face 0
+DEAL::Basis function 33 has support on face 0
+DEAL::Basis function 34 has support on face 0
+DEAL::Basis function 35 has support on face 0
+DEAL::Basis function 48 has support on face 0
+DEAL::Basis function 49 has support on face 0
+DEAL::Basis function 50 has support on face 0
+DEAL::Basis function 51 has support on face 0
+DEAL::Basis function 12 has support on face 1
+DEAL::Basis function 13 has support on face 1
+DEAL::Basis function 14 has support on face 1
+DEAL::Basis function 15 has support on face 1
+DEAL::Basis function 28 has support on face 1
+DEAL::Basis function 29 has support on face 1
+DEAL::Basis function 30 has support on face 1
+DEAL::Basis function 31 has support on face 1
+DEAL::Basis function 44 has support on face 1
+DEAL::Basis function 45 has support on face 1
+DEAL::Basis function 46 has support on face 1
+DEAL::Basis function 47 has support on face 1
+DEAL::Basis function 60 has support on face 1
+DEAL::Basis function 61 has support on face 1
+DEAL::Basis function 62 has support on face 1
+DEAL::Basis function 63 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 6 has support on face 2
+DEAL::Basis function 7 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 9 has support on face 2
+DEAL::Basis function 10 has support on face 2
+DEAL::Basis function 11 has support on face 2
+DEAL::Basis function 12 has support on face 2
+DEAL::Basis function 13 has support on face 2
+DEAL::Basis function 14 has support on face 2
+DEAL::Basis function 15 has support on face 2
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 7 has support on face 3
+DEAL::Basis function 11 has support on face 3
+DEAL::Basis function 15 has support on face 3
+DEAL::Basis function 19 has support on face 3
+DEAL::Basis function 23 has support on face 3
+DEAL::Basis function 27 has support on face 3
+DEAL::Basis function 31 has support on face 3
+DEAL::Basis function 35 has support on face 3
+DEAL::Basis function 39 has support on face 3
+DEAL::Basis function 43 has support on face 3
+DEAL::Basis function 47 has support on face 3
+DEAL::Basis function 51 has support on face 3
+DEAL::Basis function 55 has support on face 3
+DEAL::Basis function 59 has support on face 3
+DEAL::Basis function 63 has support on face 3
+DEAL::Basis function 48 has support on face 4
+DEAL::Basis function 49 has support on face 4
+DEAL::Basis function 50 has support on face 4
+DEAL::Basis function 51 has support on face 4
+DEAL::Basis function 52 has support on face 4
+DEAL::Basis function 53 has support on face 4
+DEAL::Basis function 54 has support on face 4
+DEAL::Basis function 55 has support on face 4
+DEAL::Basis function 56 has support on face 4
+DEAL::Basis function 57 has support on face 4
+DEAL::Basis function 58 has support on face 4
+DEAL::Basis function 59 has support on face 4
+DEAL::Basis function 60 has support on face 4
+DEAL::Basis function 61 has support on face 4
+DEAL::Basis function 62 has support on face 4
+DEAL::Basis function 63 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 8 has support on face 5
+DEAL::Basis function 12 has support on face 5
+DEAL::Basis function 16 has support on face 5
+DEAL::Basis function 20 has support on face 5
+DEAL::Basis function 24 has support on face 5
+DEAL::Basis function 28 has support on face 5
+DEAL::Basis function 32 has support on face 5
+DEAL::Basis function 36 has support on face 5
+DEAL::Basis function 40 has support on face 5
+DEAL::Basis function 44 has support on face 5
+DEAL::Basis function 48 has support on face 5
+DEAL::Basis function 52 has support on face 5
+DEAL::Basis function 56 has support on face 5
+DEAL::Basis function 60 has support on face 5
+DEAL::FE_DGP<dim>(0)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 0 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::FE_DGP<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 0 has support on face 4
+DEAL::Basis function 1 has support on face 4
+DEAL::Basis function 2 has support on face 4
+DEAL::Basis function 3 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 1 has support on face 5
+DEAL::Basis function 2 has support on face 5
+DEAL::Basis function 3 has support on face 5
+DEAL::FE_DGP<dim>(2)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 1 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 4 has support on face 0
+DEAL::Basis function 5 has support on face 0
+DEAL::Basis function 6 has support on face 0
+DEAL::Basis function 7 has support on face 0
+DEAL::Basis function 8 has support on face 0
+DEAL::Basis function 9 has support on face 0
+DEAL::Basis function 0 has support on face 1
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 4 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 8 has support on face 1
+DEAL::Basis function 9 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 4 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 6 has support on face 2
+DEAL::Basis function 7 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 9 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 4 has support on face 3
+DEAL::Basis function 5 has support on face 3
+DEAL::Basis function 6 has support on face 3
+DEAL::Basis function 7 has support on face 3
+DEAL::Basis function 8 has support on face 3
+DEAL::Basis function 9 has support on face 3
+DEAL::Basis function 0 has support on face 4
+DEAL::Basis function 1 has support on face 4
+DEAL::Basis function 2 has support on face 4
+DEAL::Basis function 3 has support on face 4
+DEAL::Basis function 4 has support on face 4
+DEAL::Basis function 5 has support on face 4
+DEAL::Basis function 6 has support on face 4
+DEAL::Basis function 7 has support on face 4
+DEAL::Basis function 8 has support on face 4
+DEAL::Basis function 9 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 1 has support on face 5
+DEAL::Basis function 2 has support on face 5
+DEAL::Basis function 3 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 5 has support on face 5
+DEAL::Basis function 6 has support on face 5
+DEAL::Basis function 7 has support on face 5
+DEAL::Basis function 8 has support on face 5
+DEAL::Basis function 9 has support on face 5
+DEAL::FE_Nedelec<dim>(1)
+DEAL::Basis function 0 has support on face 0
+DEAL::Basis function 2 has support on face 0
+DEAL::Basis function 3 has support on face 0
+DEAL::Basis function 4 has support on face 0
+DEAL::Basis function 5 has support on face 0
+DEAL::Basis function 6 has support on face 0
+DEAL::Basis function 7 has support on face 0
+DEAL::Basis function 9 has support on face 0
+DEAL::Basis function 10 has support on face 0
+DEAL::Basis function 11 has support on face 0
+DEAL::Basis function 1 has support on face 1
+DEAL::Basis function 2 has support on face 1
+DEAL::Basis function 3 has support on face 1
+DEAL::Basis function 4 has support on face 1
+DEAL::Basis function 5 has support on face 1
+DEAL::Basis function 6 has support on face 1
+DEAL::Basis function 7 has support on face 1
+DEAL::Basis function 8 has support on face 1
+DEAL::Basis function 10 has support on face 1
+DEAL::Basis function 11 has support on face 1
+DEAL::Basis function 0 has support on face 2
+DEAL::Basis function 1 has support on face 2
+DEAL::Basis function 2 has support on face 2
+DEAL::Basis function 3 has support on face 2
+DEAL::Basis function 5 has support on face 2
+DEAL::Basis function 7 has support on face 2
+DEAL::Basis function 8 has support on face 2
+DEAL::Basis function 9 has support on face 2
+DEAL::Basis function 10 has support on face 2
+DEAL::Basis function 11 has support on face 2
+DEAL::Basis function 0 has support on face 3
+DEAL::Basis function 1 has support on face 3
+DEAL::Basis function 2 has support on face 3
+DEAL::Basis function 3 has support on face 3
+DEAL::Basis function 4 has support on face 3
+DEAL::Basis function 6 has support on face 3
+DEAL::Basis function 8 has support on face 3
+DEAL::Basis function 9 has support on face 3
+DEAL::Basis function 10 has support on face 3
+DEAL::Basis function 11 has support on face 3
+DEAL::Basis function 0 has support on face 4
+DEAL::Basis function 1 has support on face 4
+DEAL::Basis function 3 has support on face 4
+DEAL::Basis function 4 has support on face 4
+DEAL::Basis function 5 has support on face 4
+DEAL::Basis function 6 has support on face 4
+DEAL::Basis function 7 has support on face 4
+DEAL::Basis function 8 has support on face 4
+DEAL::Basis function 9 has support on face 4
+DEAL::Basis function 10 has support on face 4
+DEAL::Basis function 11 has support on face 4
+DEAL::Basis function 0 has support on face 5
+DEAL::Basis function 1 has support on face 5
+DEAL::Basis function 2 has support on face 5
+DEAL::Basis function 4 has support on face 5
+DEAL::Basis function 5 has support on face 5
+DEAL::Basis function 6 has support on face 5
+DEAL::Basis function 7 has support on face 5
+DEAL::Basis function 8 has support on face 5
+DEAL::Basis function 9 has support on face 5
+DEAL::Basis function 10 has support on face 5
+DEAL::Basis function 11 has support on face 5

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.