From: wolf Date: Mon, 21 Oct 2002 21:25:06 +0000 (+0000) Subject: Fix has_support_on_face for FE_Q. Have a testcase for this function and a number... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3bd583a672ddb0d59798da9e1edc24ab4d31ac48;p=dealii-svn.git Fix has_support_on_face for FE_Q. Have a testcase for this function and a number of finite elements. Results are hand-checked and are ok except for the Nedelec-Element which is presently wrong in 3d. git-svn-id: https://svn.dealii.org/trunk@6703 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/source/fe/fe_q.cc b/deal.II/deal.II/source/fe/fe_q.cc index 06e5381ec4..68ffba70ac 100644 --- a/deal.II/deal.II/source/fe/fe_q.cc +++ b/deal.II/deal.II/source/fe/fe_q.cc @@ -1330,15 +1330,14 @@ FE_Q::element_multiplicity (const unsigned int index) const template bool -FE_Q::has_support_on_face (const unsigned int shape_index_, +FE_Q::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::faces_per_cell, ExcIndexRange (face_index, 0, GeometryInfo::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::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::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::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::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; + }; }; }; diff --git a/tests/fe/Makefile b/tests/fe/Makefile index ac92ea458c..00522c3230 100644 --- a/tests/fe/Makefile +++ b/tests/fe/Makefile @@ -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 index 0000000000..1ae20899ca --- /dev/null +++ b/tests/fe/roy_1.cc @@ -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 +#include +#include +#include +#include +#include + + +template +void check (const FiniteElement &fe) { + for (unsigned int face = 0; face < GeometryInfo::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 +void check () +{ + deallog << "************ dim = " << dim << std::endl; + check_el (FE_Q(1)); + check_el (FE_Q(2)); + check_el (FE_Q(3)); + + check_el (FE_DGQ(0)); + check_el (FE_DGQ(1)); + check_el (FE_DGQ(2)); + check_el (FE_DGQ(3)); + + check_el (FE_DGP(0)); + check_el (FE_DGP(1)); + check_el (FE_DGP(2)); + + if (dim > 1) + check_el (FE_Nedelec(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 index 0000000000..97637c6e46 --- /dev/null +++ b/tests/fe/roy_1.checked @@ -0,0 +1,695 @@ + +DEAL::************ dim = 1 +DEAL::FE_Q(1) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 1 has support on face 1 +DEAL::FE_Q(2) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 1 has support on face 1 +DEAL::FE_Q(3) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 1 has support on face 1 +DEAL::FE_DGQ(0) +DEAL::Basis function 0 has support on face 0 +DEAL::FE_DGQ(1) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 1 has support on face 1 +DEAL::FE_DGQ(2) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 1 has support on face 1 +DEAL::FE_DGQ(3) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 1 has support on face 1 +DEAL::FE_DGP(0) +DEAL::Basis function 0 has support on face 0 +DEAL::Basis function 0 has support on face 1 +DEAL::FE_DGP(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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