issue for vector elements. Also added conformity tests for FEs.
--- /dev/null
+Added a simple mesh for debugging purposes that consists
+of two cubes where one of them can be chosen to have one face
+either flipped or rotated.
+<br>
+(Konrad Simon, 2021/01/28)
const Point<dim> & center = Point<dim>(),
const double radius = 1.);
+ /**
+ * Generate a 2D mesh consisting of the unit square joined with a copy shifted
+ * by $s = (1,0)$. Depending on the flags passed either the right or the left
+ * square is rotated by $\pi/2$. This way one can generate a mesh in which one
+ * square possibly contains an edge that has the opposite tangential (and
+ * hence also opposite normal) orientation of the neighboring edge of the
+ * other square.
+ *
+ * This mesh is not overly useful from a practical point of view. For
+ * debugging purposes it can be used to check for orientation issues for
+ * vector- or tensor-valued finite elements.
+ *
+ * @note If <code>rotate_left_square==rotate_right_square</code> the mesh is consistently oriented.
+ *
+ * @param[out] tria The input triangulation.
+ * @param[in] rotate_left_square <code>true</code> if the left square is
+ * rotated by $\pi/2$.
+ * @param[in] rotate_right_square <code>true</code> if the right square is
+ * rotated by $\pi/2$.
+ */
+ void non_standard_orientation_mesh(Triangulation<2> &tria,
+ const bool rotate_left_square,
+ const bool rotate_right_square);
+
+ /**
+ * Generate a 3D mesh consisting of the unit cube joined with a copy shifted
+ * by $s = (1,0,0)$. Depending on the flags passed either the right or the
+ * left cube (when looking at the positively oriented (x,z)-plane) contains a
+ * face that is either not in standard orientation and/or is rotated by either
+ * $\pi/2$, $\pi$ or $3/2\pi$.
+ *
+ * This mesh is not overly useful from a practical point of view. For
+ * debugging purposes it can be used to check for orientation issues for
+ * vector- or tensor-valued finite elements.
+ *
+ * @param[out] tria The input triangulation.
+ * @param[in] face_orientation <code>true</code> if the face is the not in
+ * standard orientation.
+ * @param[in] face_flip <code>true</code> if the face is rotated by +180
+ * degrees
+ * @param[in] face_rotation <code>true</code> if the face is rotated
+ * (additionally) by +90 degrees
+ * @param[in] manipulate_left_cube <code>true</code> if the left cube is
+ * to be re-ordered. If `false`, it is the right cube.
+ */
+ void non_standard_orientation_mesh(Triangulation<3> &tria,
+ const bool face_orientation,
+ const bool face_flip,
+ const bool face_rotation,
+ const bool manipulate_left_cube);
+
+
/**
* Creates a hyper sphere, i.e., a surface of a ball in @p spacedim
* dimensions. This function only exists for dim+1=spacedim in 2 and 3 space
}
+ void non_standard_orientation_mesh(Triangulation<2> &tria,
+ const bool rotate_left_square,
+ const bool rotate_right_square)
+ {
+ constexpr unsigned int dim = 2;
+
+ const unsigned int n_cells = 2;
+ std::vector<CellData<dim>> cells(n_cells);
+
+ // Corner points of the cube [0,1]^2
+ const std::vector<Point<dim>> vertices = {Point<dim>(0, 0), // 0
+ Point<dim>(1, 0), // 1
+ Point<dim>(0, 1), // 2
+ Point<dim>(1, 1), // 3
+ Point<dim>(2, 0), // 4
+ Point<dim>(2, 1)}; // 5
+
+
+ // consistent orientation
+ unsigned int cell_vertices[n_cells][4] = {{0, 1, 2, 3}, // unit cube
+ {1, 4, 3, 5}}; // shifted cube
+
+ // all 4 true-false combinations of (rotate_left_square | rotate_right_square) to a number 0..3
+ unsigned int this_case = 2 * rotate_left_square + rotate_right_square;
+
+ switch (this_case)
+ {
+ case /* rotate only right square */ 1:
+ {
+ cell_vertices[1][0] = 4;
+ cell_vertices[1][1] = 5;
+ cell_vertices[1][2] = 1;
+ cell_vertices[1][3] = 3;
+ break;
+ }
+
+ case /* rotate only left square */ 2:
+ {
+ cell_vertices[0][0] = 1;
+ cell_vertices[0][1] = 3;
+ cell_vertices[0][2] = 0;
+ cell_vertices[0][3] = 2;
+ break;
+ }
+
+ case /* rotate both squares (again consistent orientation) */ 3:
+ {
+ cell_vertices[0][0] = 1;
+ cell_vertices[0][1] = 3;
+ cell_vertices[0][2] = 0;
+ cell_vertices[0][3] = 2;
+
+ cell_vertices[1][0] = 4;
+ cell_vertices[1][1] = 5;
+ cell_vertices[1][2] = 1;
+ cell_vertices[1][3] = 3;
+ break;
+ }
+
+ default /* 0 */:
+ break;
+ } // switch
+
+ cells.resize(n_cells, CellData<dim>());
+
+ for (unsigned int cell_index = 0; cell_index < n_cells; ++cell_index)
+ {
+ for (const unsigned int vertex_index :
+ GeometryInfo<dim>::vertex_indices())
+ {
+ cells[cell_index].vertices[vertex_index] =
+ cell_vertices[cell_index][vertex_index];
+ cells[cell_index].material_id = 0;
+ }
+ }
+
+ tria.create_triangulation(vertices, cells, SubCellData());
+ }
+
+
+ void non_standard_orientation_mesh(Triangulation<3> &tria,
+ const bool face_orientation,
+ const bool face_flip,
+ const bool face_rotation,
+ const bool manipulate_left_cube)
+ {
+ constexpr unsigned int dim = 3;
+
+ const unsigned int n_cells = 2;
+ std::vector<CellData<dim>> cells(n_cells);
+
+ // Corner points of the cube [0,1]^3
+ const std::vector<Point<dim>> vertices = {Point<dim>(0, 0, 0), // 0
+ Point<dim>(1, 0, 0), // 1
+ Point<dim>(0, 1, 0), // 2
+ Point<dim>(1, 1, 0), // 3
+ Point<dim>(0, 0, 1), // 4
+ Point<dim>(1, 0, 1), // 5
+ Point<dim>(0, 1, 1), // 6
+ Point<dim>(1, 1, 1), // 7
+ Point<dim>(2, 0, 0), // 8
+ Point<dim>(2, 1, 0), // 9
+ Point<dim>(2, 0, 1), // 10
+ Point<dim>(2, 1, 1)}; // 11
+
+ unsigned int cell_vertices[n_cells][8] = {
+ {0, 1, 2, 3, 4, 5, 6, 7}, // unit cube
+ {1, 8, 3, 9, 5, 10, 7, 11}}; // shifted cube
+
+ // binary to case number
+ const unsigned int this_case =
+ 4 * face_orientation + 2 * face_flip + face_rotation;
+
+ if (manipulate_left_cube)
+ {
+ switch (this_case)
+ {
+ case 0:
+ {
+ cell_vertices[0][0] = 1;
+ cell_vertices[0][1] = 0;
+ cell_vertices[0][2] = 5;
+ cell_vertices[0][3] = 4;
+ cell_vertices[0][4] = 3;
+ cell_vertices[0][5] = 2;
+ cell_vertices[0][6] = 7;
+ cell_vertices[0][7] = 6;
+ break;
+ }
+
+ case 1:
+ {
+ cell_vertices[0][0] = 5;
+ cell_vertices[0][1] = 4;
+ cell_vertices[0][2] = 7;
+ cell_vertices[0][3] = 6;
+ cell_vertices[0][4] = 1;
+ cell_vertices[0][5] = 0;
+ cell_vertices[0][6] = 3;
+ cell_vertices[0][7] = 2;
+ break;
+ }
+
+ case 2:
+ {
+ cell_vertices[0][0] = 7;
+ cell_vertices[0][1] = 6;
+ cell_vertices[0][2] = 3;
+ cell_vertices[0][3] = 2;
+ cell_vertices[0][4] = 5;
+ cell_vertices[0][5] = 4;
+ cell_vertices[0][6] = 1;
+ cell_vertices[0][7] = 0;
+ break;
+ }
+ case 3:
+ {
+ cell_vertices[0][0] = 3;
+ cell_vertices[0][1] = 2;
+ cell_vertices[0][2] = 1;
+ cell_vertices[0][3] = 0;
+ cell_vertices[0][4] = 7;
+ cell_vertices[0][5] = 6;
+ cell_vertices[0][6] = 5;
+ cell_vertices[0][7] = 4;
+ break;
+ }
+
+ case 4:
+ {
+ cell_vertices[0][0] = 0;
+ cell_vertices[0][1] = 1;
+ cell_vertices[0][2] = 2;
+ cell_vertices[0][3] = 3;
+ cell_vertices[0][4] = 4;
+ cell_vertices[0][5] = 5;
+ cell_vertices[0][6] = 6;
+ cell_vertices[0][7] = 7;
+ break;
+ }
+
+ case 5:
+ {
+ cell_vertices[0][0] = 2;
+ cell_vertices[0][1] = 3;
+ cell_vertices[0][2] = 6;
+ cell_vertices[0][3] = 7;
+ cell_vertices[0][4] = 0;
+ cell_vertices[0][5] = 1;
+ cell_vertices[0][6] = 4;
+ cell_vertices[0][7] = 5;
+ break;
+ }
+
+ case 6:
+ {
+ cell_vertices[0][0] = 6;
+ cell_vertices[0][1] = 7;
+ cell_vertices[0][2] = 4;
+ cell_vertices[0][3] = 5;
+ cell_vertices[0][4] = 2;
+ cell_vertices[0][5] = 3;
+ cell_vertices[0][6] = 0;
+ cell_vertices[0][7] = 1;
+ break;
+ }
+
+ case 7:
+ {
+ cell_vertices[0][0] = 4;
+ cell_vertices[0][1] = 5;
+ cell_vertices[0][2] = 0;
+ cell_vertices[0][3] = 1;
+ cell_vertices[0][4] = 6;
+ cell_vertices[0][5] = 7;
+ cell_vertices[0][6] = 2;
+ cell_vertices[0][7] = 3;
+ break;
+ }
+ } // switch
+ }
+ else
+ {
+ switch (this_case)
+ {
+ case 0:
+ {
+ cell_vertices[1][0] = 8;
+ cell_vertices[1][1] = 1;
+ cell_vertices[1][2] = 10;
+ cell_vertices[1][3] = 5;
+ cell_vertices[1][4] = 9;
+ cell_vertices[1][5] = 3;
+ cell_vertices[1][6] = 11;
+ cell_vertices[1][7] = 7;
+ break;
+ }
+
+ case 1:
+ {
+ cell_vertices[1][0] = 10;
+ cell_vertices[1][1] = 5;
+ cell_vertices[1][2] = 11;
+ cell_vertices[1][3] = 7;
+ cell_vertices[1][4] = 8;
+ cell_vertices[1][5] = 1;
+ cell_vertices[1][6] = 9;
+ cell_vertices[1][7] = 3;
+ break;
+ }
+
+ case 2:
+ {
+ cell_vertices[1][0] = 11;
+ cell_vertices[1][1] = 7;
+ cell_vertices[1][2] = 9;
+ cell_vertices[1][3] = 3;
+ cell_vertices[1][4] = 10;
+ cell_vertices[1][5] = 5;
+ cell_vertices[1][6] = 8;
+ cell_vertices[1][7] = 1;
+ break;
+ }
+
+ case 3:
+ {
+ cell_vertices[1][0] = 9;
+ cell_vertices[1][1] = 3;
+ cell_vertices[1][2] = 8;
+ cell_vertices[1][3] = 1;
+ cell_vertices[1][4] = 11;
+ cell_vertices[1][5] = 7;
+ cell_vertices[1][6] = 10;
+ cell_vertices[1][7] = 5;
+ break;
+ }
+
+ case 4:
+ {
+ cell_vertices[1][0] = 1;
+ cell_vertices[1][1] = 8;
+ cell_vertices[1][2] = 3;
+ cell_vertices[1][3] = 9;
+ cell_vertices[1][4] = 5;
+ cell_vertices[1][5] = 10;
+ cell_vertices[1][6] = 7;
+ cell_vertices[1][7] = 11;
+ break;
+ }
+
+ case 5:
+ {
+ cell_vertices[1][0] = 5;
+ cell_vertices[1][1] = 10;
+ cell_vertices[1][2] = 1;
+ cell_vertices[1][3] = 8;
+ cell_vertices[1][4] = 7;
+ cell_vertices[1][5] = 11;
+ cell_vertices[1][6] = 3;
+ cell_vertices[1][7] = 9;
+ break;
+ }
+
+ case 6:
+ {
+ cell_vertices[1][0] = 7;
+ cell_vertices[1][1] = 11;
+ cell_vertices[1][2] = 5;
+ cell_vertices[1][3] = 10;
+ cell_vertices[1][4] = 3;
+ cell_vertices[1][5] = 9;
+ cell_vertices[1][6] = 1;
+ cell_vertices[1][7] = 8;
+ break;
+ }
+
+ case 7:
+ {
+ cell_vertices[1][0] = 3;
+ cell_vertices[1][1] = 9;
+ cell_vertices[1][2] = 7;
+ cell_vertices[1][3] = 11;
+ cell_vertices[1][4] = 1;
+ cell_vertices[1][5] = 8;
+ cell_vertices[1][6] = 5;
+ cell_vertices[1][7] = 10;
+ break;
+ }
+ } // switch
+ }
+
+ cells.resize(n_cells, CellData<dim>());
+
+ for (unsigned int cell_index = 0; cell_index < n_cells; ++cell_index)
+ {
+ for (const unsigned int vertex_index :
+ GeometryInfo<dim>::vertex_indices())
+ {
+ cells[cell_index].vertices[vertex_index] =
+ cell_vertices[cell_index][vertex_index];
+ cells[cell_index].material_id = 0;
+ }
+ }
+
+ tria.create_triangulation(vertices, cells, SubCellData());
+ }
+
+
template <int spacedim>
void hyper_sphere(Triangulation<spacedim - 1, spacedim> &tria,
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/fe/fe_abf.h>
+#include <deal.II/fe/fe_tools.h>
+
+#include "../tests.h"
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+
+ constexpr int dim = 2;
+
+ // Test only up to order 2 since the FE constructor will throw an
+ // exception for higher order
+ for (unsigned int fe_degree = 0; fe_degree < 2; ++fe_degree)
+ {
+ // H(div) conformal
+ FE_ABF<dim> fe(fe_degree);
+
+ {
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
--- /dev/null
+
+DEAL::
+DEAL::******* degree 0 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 6
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 6
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 6
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 6
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 8
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 8
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 8
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_ABF<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 8
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/fe/fe_bdm.h>
+
+#include "../tests.h"
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+
+ constexpr int dim = 2;
+
+ for (unsigned int fe_degree = 1; fe_degree < 5; ++fe_degree)
+ {
+ // H(div) conformal
+ FE_BDM<dim> fe(fe_degree);
+
+ {
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
--- /dev/null
+
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 8
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 8
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 8
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 8
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 14
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 14
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 14
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 14
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 2
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 22
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 6
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 22
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 6
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 22
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 6
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 22
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 6
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 32
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 32
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 32
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_BDM<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 32
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/fe/fe_nedelec.h>
+
+#include "../tests.h"
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+
+ constexpr int dim = 2;
+
+ for (unsigned int fe_degree = 0; fe_degree < 5; ++fe_degree)
+ {
+ // H(curl) conformal
+ FE_Nedelec<dim> fe(fe_degree);
+
+ {
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
--- /dev/null
+
+DEAL::
+DEAL::******* degree 0 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Nedelec<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/fe/fe_nedelec_sz.h>
+
+#include "../tests.h"
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+ constexpr int dim = 2;
+
+ for (unsigned int fe_degree = 0; fe_degree < 5; ++fe_degree)
+ {
+ // H(curl) conformal
+ FE_NedelecSZ<dim> fe(fe_degree);
+
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
\ No newline at end of file
--- /dev/null
+
+DEAL::
+DEAL::******* degree 0 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_NedelecSZ<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Tangential jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Tangential jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+#include <deal.II/fe/fe_q.h>
+
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+
+ constexpr int dim = 2;
+
+ for (unsigned int fe_degree = 1; fe_degree < 5; ++fe_degree)
+ {
+ // H1 conformal
+ FE_Q<dim> fe(fe_degree);
+
+ {
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
--- /dev/null
+
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(1)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 0
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(1)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 0
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(1)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 0
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(1)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 0
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(2)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 9
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 1
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(2)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 9
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 1
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(2)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 9
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 1
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(2)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 9
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 1
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(3)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 6
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(3)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 6
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(3)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 6
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(3)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 16
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 6
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(4)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 25
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 9
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 7
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(4)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 25
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 9
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 7
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(4)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 25
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 9
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 7
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_Q<2>(4)
+DEAL:: is_primitive : 1
+DEAL:: n_dofs_per_cell : 25
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 9
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 1
+DEAL::
+DEAL:: first_line_index : 4
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 2
+DEAL:: first_face_quad_index: 7
+DEAL::
+DEAL:: n_components : 1
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Function jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Function jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/fe/fe_raviart_thomas.h>
+
+#include "../tests.h"
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+
+ constexpr int dim = 2;
+
+ for (unsigned int fe_degree = 0; fe_degree < 5; ++fe_degree)
+ {
+ // H(div) conformal
+ FE_RaviartThomas<dim> fe(fe_degree);
+
+ {
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
--- /dev/null
+
+DEAL::
+DEAL::******* degree 0 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomas<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/fe/fe_raviart_thomas.h>
+
+#include "../tests.h"
+
+// STL
+#include <fstream>
+#include <iostream>
+
+// My test headers
+#include "fe_conformity_test.h"
+
+#define PRECISION 4
+
+int
+main(int, char **)
+{
+ std::ofstream logfile("output");
+ dealii::deallog << std::setprecision(PRECISION);
+ dealii::deallog << std::fixed;
+ logfile << std::setprecision(PRECISION);
+ logfile << std::fixed;
+ dealii::deallog.attach(logfile);
+
+ try
+ {
+ using namespace FEConforimityTest;
+ constexpr int dim = 2;
+
+ for (unsigned int fe_degree = 0; fe_degree < 5; ++fe_degree)
+ {
+ // H(div) conformal
+ FE_RaviartThomasNodal<dim> fe(fe_degree);
+
+ for (unsigned int this_switch = 0; this_switch < (dim == 2 ? 4 : 8);
+ ++this_switch)
+ {
+ deallog << std::endl
+ << "******* degree " << fe_degree
+ << " ******* orientation case " << this_switch
+ << " *******" << std::endl;
+
+ FEConformityTest<dim> fe_conformity_tester(fe, this_switch);
+ fe_conformity_tester.run();
+ }
+ } // ++fe_degree
+ }
+ catch (std::exception &exc)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Exception on processing: " << std::endl
+ << exc.what() << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+
+ return 1;
+ }
+ catch (...)
+ {
+ std::cerr << std::endl
+ << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ std::cerr << "Unknown exception!" << std::endl
+ << "Aborting!" << std::endl
+ << "----------------------------------------------------"
+ << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
\ No newline at end of file
--- /dev/null
+
+DEAL::
+DEAL::******* degree 0 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 0 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(0)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 4
+DEAL:: n_dofs_per_face : 1
+DEAL:: n_dofs_per_quad : 0
+DEAL:: n_dofs_per_line : 1
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 4
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 1
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 1 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(1)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 12
+DEAL:: n_dofs_per_face : 2
+DEAL:: n_dofs_per_quad : 4
+DEAL:: n_dofs_per_line : 2
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 8
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 2
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 2 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(2)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 24
+DEAL:: n_dofs_per_face : 3
+DEAL:: n_dofs_per_quad : 12
+DEAL:: n_dofs_per_line : 3
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 12
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 3
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 3 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(3)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 40
+DEAL:: n_dofs_per_face : 4
+DEAL:: n_dofs_per_quad : 24
+DEAL:: n_dofs_per_line : 4
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 16
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 4
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 0 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 1 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 1
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 2 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 0
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::
+DEAL::******* degree 4 ******* orientation case 3 *******
+DEAL::Element Info:
+DEAL:: name : FE_RaviartThomasNodal<2>(4)
+DEAL:: is_primitive : 0
+DEAL:: n_dofs_per_cell : 60
+DEAL:: n_dofs_per_face : 5
+DEAL:: n_dofs_per_quad : 40
+DEAL:: n_dofs_per_line : 5
+DEAL:: n_dofs_per_vertex : 0
+DEAL::
+DEAL:: first_line_index : 0
+DEAL:: first_quad_index : 20
+DEAL:: first_face_line_index: 0
+DEAL:: first_face_quad_index: 5
+DEAL::
+DEAL:: n_components : 2
+DEAL:: n_blocks : 1
+DEAL:: n_base_elements : 1
+DEAL::
+DEAL::Normal jumps (at quad points) in cell 0_0: at face 2
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+DEAL::Normal jumps (at quad points) in cell 1_0: at face 3
+DEAL:: interface jumps: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#pragma once
+
+#include <deal.II/lac/vector.h>
+
+#include <chrono>
+#include <fstream>
+#include <iostream>
+#include <map>
+#include <random>
+#include <typeinfo>
+#include <vector>
+
+namespace FEConforimityTest
+{
+ using namespace dealii;
+
+ /*
+ * Generate a random double number between [a,b)
+ */
+ class RandomNumberDouble
+ {
+ public:
+ RandomNumberDouble() = delete;
+
+ RandomNumberDouble(const double _a, const double _b);
+
+ double
+ generate();
+
+ private:
+ double a, b;
+
+ std::uniform_real_distribution<double> uniform_distribution;
+
+ uint64_t timeSeed;
+
+ std::seed_seq seed_sequence;
+
+ std::mt19937_64 rng;
+ };
+
+
+ RandomNumberDouble::RandomNumberDouble(const double _a, const double _b)
+ : a(_a)
+ , b(_b)
+ , uniform_distribution(a, b)
+ , timeSeed(
+ std::chrono::high_resolution_clock::now().time_since_epoch().count())
+ , seed_sequence({uint32_t(timeSeed & 0xffffffff), uint32_t(timeSeed >> 32)})
+ {
+ rng.seed(seed_sequence);
+ }
+
+ double
+ RandomNumberDouble::generate()
+ {
+ return uniform_distribution(rng);
+ }
+
+
+ void
+ fill_vector_randomly(Vector<double> &this_vector, double a = 0, double b = 1)
+ {
+ RandomNumberDouble random_double_generator(a, b);
+
+ for (auto &v : this_vector)
+ {
+ v = random_double_generator.generate();
+ }
+ }
+} // namespace FEConforimityTest
\ No newline at end of file
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 1998 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+#pragma once
+
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/tensor.h>
+#include <deal.II/base/utilities.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/fe/fe.h>
+#include <deal.II/fe/fe_base.h>
+#include <deal.II/fe/fe_interface_values.h>
+#include <deal.II/fe/fe_tools.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+
+#include <deal.II/lac/affine_constraints.h>
+
+// STL
+#include <fstream>
+#include <functional>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <vector>
+
+// My test headers
+#include "fe_conformity_fill_vector_random.h"
+
+namespace FEConforimityTest
+{
+ using namespace dealii;
+
+ template <int dim>
+ class FEConformityTest
+ {
+ public:
+ FEConformityTest(const FiniteElement<dim> &fe,
+ const unsigned int config_switch);
+
+ void
+ run();
+
+ private:
+ void
+ make_grid();
+
+ void
+ make_dofs();
+
+ void
+ run_test();
+
+ void
+ get_function_jump(const FEInterfaceValues<dim> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps);
+
+ void
+ get_normal_jump(const FEInterfaceValues<dim> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps);
+
+ void
+ get_tangential_jump(const FEInterfaceValues<dim> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps);
+
+ SmartPointer<const FiniteElement<dim>> fe_ptr;
+ Triangulation<dim> triangulation;
+ DoFHandler<dim> dof_handler;
+ AffineConstraints<double> constraints;
+
+ Vector<double> random_fe_funtion;
+
+ const unsigned int config_switch;
+
+ const bool plot_mesh_properties = false;
+ };
+
+ template <int dim>
+ FEConformityTest<dim>::FEConformityTest(const FiniteElement<dim> &_fe,
+ const unsigned int config_switch)
+ : fe_ptr(&_fe)
+ , dof_handler(triangulation)
+ , config_switch(config_switch)
+ {
+ deallog
+ << "Element Info: " << std::endl
+ << " name : " << fe_ptr->get_name() << std::endl
+ << " is_primitive : " << fe_ptr->is_primitive() << std::endl
+ << " n_dofs_per_cell : " << fe_ptr->dofs_per_cell << std::endl
+ << " n_dofs_per_face : " << fe_ptr->dofs_per_face << std::endl
+ << " n_dofs_per_quad : " << fe_ptr->dofs_per_quad << std::endl
+ << " n_dofs_per_line : " << fe_ptr->dofs_per_line << std::endl
+ << " n_dofs_per_vertex : " << fe_ptr->dofs_per_vertex << std::endl
+ << std::endl
+ << " first_line_index : " << fe_ptr->first_line_index << std::endl
+ << " first_quad_index : " << fe_ptr->first_quad_index << std::endl
+ << " first_face_line_index: " << fe_ptr->first_face_line_index
+ << std::endl
+ << " first_face_quad_index: " << fe_ptr->first_face_quad_index
+ << std::endl
+ << std::endl
+ << " n_components : " << fe_ptr->n_components() << std::endl
+ << " n_blocks : " << fe_ptr->n_blocks() << std::endl
+ << " n_base_elements : " << fe_ptr->n_base_elements() << std::endl
+ << std::endl;
+
+ if (dim == 2)
+ AssertThrow(config_switch < 4,
+ ExcMessage("If dim=2 the config witch must be < 4."));
+
+ if (dim == 3)
+ AssertThrow(config_switch < 8,
+ ExcMessage("If dim=3 the config witch must be < 8."));
+ }
+
+
+
+ template <>
+ void
+ FEConformityTest<3>::make_grid()
+ {
+ triangulation.clear();
+
+ bool face_orientation = (((config_switch / 4) % 2) == 1);
+ bool face_flip = (((config_switch / 2) % 2) == 1);
+ bool face_rotation = ((config_switch % 2) == 1);
+
+ bool manipulate_first_cube = true;
+
+ GridGenerator::non_standard_orientation_mesh(triangulation,
+ face_orientation,
+ face_flip,
+ face_rotation,
+ manipulate_first_cube);
+
+ // GridTools::distort_random(/* factor */ 0.15,
+ // triangulation_coarse,
+ // /* keep_boundary */ false);
+
+ triangulation.refine_global(0);
+
+ if (plot_mesh_properties)
+ {
+ deallog << std::endl
+ << "3D Mesh properties: " << std::endl
+ << std::endl;
+ for (const auto &cell : triangulation.active_cell_iterators())
+ {
+ CellId current_cell_id(cell->id());
+
+ deallog
+ << "CellId = " << current_cell_id << std::endl
+ << " {face_index -> face_orientation | face_flip | face_rotation}: "
+ << std::endl;
+ for (unsigned int face_index = 0;
+ face_index < GeometryInfo<3>::faces_per_cell;
+ ++face_index)
+ {
+ deallog << " {" << face_index << " -> "
+ << cell->face_orientation(face_index) << " | "
+ << cell->face_flip(face_index) << " | "
+ << cell->face_rotation(face_index) << "}" << std::endl;
+ } // face_index
+
+ deallog << " {line_index -> line_orientation}: " << std::endl;
+ for (unsigned int line_index = 0;
+ line_index < GeometryInfo<3>::lines_per_cell;
+ ++line_index)
+ {
+ deallog << " {" << line_index << " -> "
+ << cell->line_orientation(line_index) << "}"
+ << std::endl;
+ } // line_index
+ } // cell
+ } // plot_mesh_properties
+ } // make_grid<3>()
+
+
+ template <>
+ void
+ FEConformityTest<2>::make_grid()
+ {
+ triangulation.clear();
+
+ const bool rotate_left_square = (((config_switch / 2) % 2) == 1);
+ const bool rotate_right_square = ((config_switch % 2) == 1);
+
+ GridGenerator::non_standard_orientation_mesh(triangulation,
+ rotate_left_square,
+ rotate_right_square);
+
+ // GridTools::distort_random(/* factor */ 0.15,
+ // triangulation_coarse,
+ // /* keep_boundary */ false);
+
+ triangulation.refine_global(0);
+
+ if (plot_mesh_properties)
+ {
+ deallog << std::endl
+ << "2D Mesh properties: " << std::endl
+ << std::endl;
+ for (const auto &cell : triangulation.active_cell_iterators())
+ {
+ CellId current_cell_id(cell->id());
+
+ deallog << "CellId = " << current_cell_id << std::endl
+ << " {face_index -> face_orientation}: " << std::endl;
+ for (unsigned int face_index = 0;
+ face_index < GeometryInfo<2>::faces_per_cell;
+ ++face_index)
+ {
+ deallog << " {" << face_index << " -> "
+ << cell->face_orientation(face_index) << "}"
+ << std::endl;
+ } // face_index
+
+ deallog << " {line_index -> line_orientation}: " << std::endl;
+ for (unsigned int line_index = 0;
+ line_index < GeometryInfo<2>::lines_per_cell;
+ ++line_index)
+ {
+ deallog << " {" << line_index << " -> "
+ << cell->line_orientation(line_index) << "}"
+ << std::endl;
+ } // line_index
+ } // cell
+ } // plot_mesh_properties
+ } // make_grid<2>()
+
+
+ template <int dim>
+ void
+ FEConformityTest<dim>::make_dofs()
+ {
+ dof_handler.clear();
+ constraints.clear();
+
+ dof_handler.distribute_dofs(*fe_ptr);
+
+ { // Constraints
+ constraints.clear();
+ DoFTools::make_hanging_node_constraints(dof_handler, constraints);
+ constraints.close();
+ }
+
+ random_fe_funtion.reinit(dof_handler.n_dofs());
+
+ // Fill vector with pseudo-random values
+ fill_vector_randomly(random_fe_funtion, /* min */ -5.0, /* max */ 5.0);
+ } // make_dofs()
+
+
+
+ template <int dim>
+ void
+ FEConformityTest<dim>::get_function_jump(
+ const FEInterfaceValues<dim> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps)
+ {
+ const unsigned n_q = fe_interface_values.n_quadrature_points;
+
+ Assert(jumps.size() == n_q,
+ ExcMessage(
+ "Length of \"jumps\" and number of quad points must coincide"));
+
+ std::array<std::vector<double>, 2> face_values;
+ for (unsigned i = 0; i < 2; ++i)
+ {
+ face_values[i].resize(n_q);
+ fe_interface_values.get_fe_face_values(i).get_function_values(
+ dof_vector, face_values[i]);
+ }
+
+ for (unsigned int q = 0; q < n_q; ++q)
+ jumps[q] = face_values[0][q] - face_values[1][q];
+ } // get_function_jump()
+
+
+
+ template <int dim>
+ void
+ FEConformityTest<dim>::get_normal_jump(
+ const FEInterfaceValues<dim> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps)
+ {
+ const unsigned n_q = fe_interface_values.n_quadrature_points;
+
+ Assert(jumps.size() == n_q,
+ ExcMessage(
+ "Length of \"jumps\" and number of quad points must coincide"));
+
+ const FEValuesExtractors::Vector normal_flux(0);
+
+ std::array<std::vector<Tensor<1, dim>>, 2> face_values;
+ for (unsigned i = 0; i < 2; ++i)
+ {
+ face_values[i].resize(n_q);
+
+ const auto &fe_face_values = fe_interface_values.get_fe_face_values(i);
+
+ fe_face_values[normal_flux].get_function_values(dof_vector,
+ face_values[i]);
+ }
+
+ const std::vector<Tensor<1, dim>> interface_normals =
+ fe_interface_values.get_normal_vectors();
+
+ for (unsigned int q = 0; q < n_q; ++q)
+ {
+ jumps[q] =
+ (face_values[0][q] - face_values[1][q]) * interface_normals[q];
+ }
+ } // get_normal_jump()
+
+
+
+ template <>
+ void
+ FEConformityTest<2>::get_tangential_jump(
+ const FEInterfaceValues<2> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps)
+ {
+ const unsigned n_q = fe_interface_values.n_quadrature_points;
+
+ Assert(jumps.size() == n_q,
+ ExcMessage(
+ "Length of \"jumps\" and number of quad points must coincide"));
+
+ const FEValuesExtractors::Vector tangent_flux(0);
+
+ std::array<std::vector<Tensor<1, 2>>, 2> face_values;
+ for (unsigned i = 0; i < 2; ++i)
+ {
+ face_values[i].resize(n_q);
+
+ const auto &fe_face_values = fe_interface_values.get_fe_face_values(i);
+
+ fe_face_values[tangent_flux].get_function_values(dof_vector,
+ face_values[i]);
+ }
+
+ const std::vector<Tensor<1, 2>> interface_normals =
+ fe_interface_values.get_normal_vectors();
+
+ for (unsigned int q = 0; q < n_q; ++q)
+ jumps[q] = cross_product_2d(face_values[0][q] - face_values[1][q]) *
+ interface_normals[q];
+ } // get_tangential_jump()
+
+
+
+ template <>
+ void
+ FEConformityTest<3>::get_tangential_jump(
+ const FEInterfaceValues<3> &fe_interface_values,
+ const Vector<double> & dof_vector,
+ std::vector<double> & jumps)
+ {
+ const unsigned n_q = fe_interface_values.n_quadrature_points;
+
+ Assert(jumps.size() == n_q,
+ ExcMessage(
+ "Length of \"jumps\" and number of quad points must coincide"));
+
+ const FEValuesExtractors::Vector tangent_flux(0);
+
+ std::array<std::vector<Tensor<1, 3>>, 2> face_values;
+ for (unsigned i = 0; i < 2; ++i)
+ {
+ face_values[i].resize(n_q);
+
+ const auto &fe_face_values = fe_interface_values.get_fe_face_values(i);
+
+ fe_face_values[tangent_flux].get_function_values(dof_vector,
+ face_values[i]);
+ }
+
+ const std::vector<Tensor<1, 3>> interface_normals =
+ fe_interface_values.get_normal_vectors();
+
+ for (unsigned int q = 0; q < n_q; ++q)
+ jumps[q] = cross_product_3d(face_values[0][q] - face_values[1][q],
+ interface_normals[q])
+ .norm();
+ } // get_tangential_jump()
+
+
+
+ template <int dim>
+ void
+ FEConformityTest<dim>::run_test()
+ {
+ QGauss<dim - 1> interface_quad_rule(fe_ptr->degree + 2);
+ const unsigned int n_interface_q_points = interface_quad_rule.size();
+
+ const UpdateFlags interface_update_flags =
+ (update_values | update_quadrature_points | update_JxW_values |
+ update_normal_vectors);
+
+ FEInterfaceValues<dim> fe_interface_values(*fe_ptr,
+ interface_quad_rule,
+ interface_update_flags);
+
+ std::vector<double> interface_jumps(n_interface_q_points);
+
+ // Loop over all (two) cells and faces. If at inner face check for
+ // appropriate jumps.
+ for (const auto &cell : dof_handler.active_cell_iterators())
+ {
+ for (unsigned int face_index = 0;
+ face_index < GeometryInfo<dim>::faces_per_cell;
+ ++face_index)
+ {
+ if (cell->face(face_index)->at_boundary())
+ continue;
+
+ fe_interface_values.reinit(
+ cell,
+ face_index,
+ /* sub_face_no */ numbers::invalid_unsigned_int,
+ /* cell_neighbor */ cell->neighbor(face_index),
+ /* face_no_neighbor */ cell->neighbor_face_no(face_index),
+ /* sub_face_no_neighbor */ numbers::invalid_unsigned_int);
+
+ switch (fe_ptr->conforming_space)
+ {
+ case FiniteElementData<dim>::Conformity::H1:
+ {
+ get_function_jump(fe_interface_values,
+ random_fe_funtion,
+ interface_jumps);
+
+ deallog << "Function jumps (at quad points) in cell "
+ << cell->id().to_string() << " at face "
+ << face_index << std::endl;
+
+ break;
+ } // H1
+
+ case FiniteElementData<dim>::Conformity::Hdiv:
+ {
+ get_normal_jump(fe_interface_values,
+ random_fe_funtion,
+ interface_jumps);
+
+ deallog << "Normal jumps (at quad points) in cell "
+ << cell->id().to_string() << " at face "
+ << face_index << std::endl;
+
+ break;
+ } // case H(div)
+
+ case FiniteElementData<dim>::Conformity::Hcurl:
+ {
+ get_tangential_jump(fe_interface_values,
+ random_fe_funtion,
+ interface_jumps);
+
+ deallog << "Tangential jumps (at quad points) in cell "
+ << cell->id().to_string() << " at face "
+ << face_index << std::endl;
+ break;
+ } // case H(curl)
+
+ default:
+ break;
+ } // switch (fe_ptr->conforming_space)
+
+ // loop over quad_points and print jumps
+ deallog << " interface jumps: ";
+ for (unsigned int q = 0; q < n_interface_q_points; ++q)
+ {
+ deallog << interface_jumps[q] << " ";
+ }
+ deallog << std::endl;
+ } // face_index
+ } // cell
+ } // run_test()
+
+
+
+ template <int dim>
+ void
+ FEConformityTest<dim>::run()
+ {
+ make_grid();
+ make_dofs();
+ run_test();
+ }
+} // namespace FEConforimityTest
\ No newline at end of file
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2003 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+
+/*
+ * Small test to analyse the equivalence of the normal component
+ * on the element edges for the Raviart-Thomas elements.
+ */
+
+
+
+#include "../tests.h"
+
+#define PRECISION 8
+
+#include <deal.II/grid/grid_generator.h>
+
+// STL
+#include <map>
+
+std::ofstream logfile("output");
+
+using namespace dealii;
+
+template <int dim>
+void
+plot_all_info(const Triangulation<dim> &tria)
+{
+ for (const auto &cell : tria.active_cell_iterators())
+ {
+ CellId current_cell_id(cell->id());
+
+ deallog << "CellId = " << current_cell_id << std::endl
+ << " {line_index -> face_orientation}: " << std::endl;
+ for (unsigned int face_index = 0;
+ face_index < GeometryInfo<dim>::faces_per_cell;
+ ++face_index)
+ {
+ deallog << " {" << face_index << " -> "
+ << cell->face_orientation(face_index) << "} " << std::endl;
+ } // face_index
+
+ // in 2D faces that are not consistently oriented should of course be also
+ // lines with the same property
+ deallog << " line orientation: { ";
+ for (unsigned int line_index = 0;
+ line_index < GeometryInfo<dim>::lines_per_cell;
+ ++line_index)
+ {
+ deallog << cell->line_orientation(line_index) << " ";
+ } // line_index
+ deallog << "}" << std::endl << std::endl;
+ } // cell
+}
+
+
+int
+main(int /*argc*/, char ** /*argv*/)
+{
+ deallog << std::setprecision(PRECISION);
+ deallog << std::fixed;
+ deallog.attach(logfile);
+
+ /*
+ * 3D test only
+ */
+ const int dim = 2;
+ Triangulation<dim> tria_test;
+
+ deallog << "Testing 2D mesh for orientation tests:" << std::endl;
+
+ for (unsigned int config_switch = 0; config_switch < 4; ++config_switch)
+ {
+ tria_test.clear();
+
+ bool rotate_left_square = (((config_switch / 2) % 2) == 1);
+ bool rotate_right_square = ((config_switch % 2) == 1);
+
+ bool manipulate_first_cube = true;
+
+ GridGenerator::non_standard_orientation_mesh(tria_test,
+ rotate_left_square,
+ rotate_right_square);
+
+ plot_all_info(tria_test);
+
+ deallog << "****************" << std::endl;
+ } // config_switch++
+
+ deallog << "Testing 2D orientation mesh done." << std::endl;
+
+ return 0;
+}
--- /dev/null
+
+DEAL::Testing 2D mesh for orientation tests:
+DEAL::CellId = 0_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {line_index -> face_orientation}:
+DEAL:: {0 -> 1}
+DEAL:: {1 -> 1}
+DEAL:: {2 -> 1}
+DEAL:: {3 -> 1}
+DEAL:: line orientation: { 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::Testing 2D orientation mesh done.
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2003 - 2020 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.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+
+/*
+ * Small test to analyse the equivalence of the normal component
+ * on the element edges for the Raviart-Thomas elements.
+ */
+
+
+
+#include "../tests.h"
+
+#define PRECISION 8
+
+#include <deal.II/grid/grid_generator.h>
+
+// STL
+#include <map>
+
+std::ofstream logfile("output");
+
+
+using namespace dealii;
+
+template <int dim>
+void
+plot_all_info(const Triangulation<dim> &tria)
+{
+ for (const auto &cell : tria.active_cell_iterators())
+ {
+ CellId current_cell_id(cell->id());
+
+ deallog << "CellId = " << current_cell_id << std::endl
+ << " {index -> face_orientation | face_flip | face_rotation}: "
+ << std::endl;
+ for (unsigned int face_index = 0;
+ face_index < GeometryInfo<dim>::faces_per_cell;
+ ++face_index)
+ {
+ deallog << " {" << face_index << " -> "
+ << cell->face_orientation(face_index) << " | "
+ << cell->face_flip(face_index) << " | "
+ << cell->face_rotation(face_index) << " } " << std::endl;
+ } // face_index
+
+ deallog << " line orientation: { ";
+ for (unsigned int line_index = 0;
+ line_index < GeometryInfo<dim>::lines_per_cell;
+ ++line_index)
+ {
+ deallog << cell->line_orientation(line_index) << " ";
+ } // line_index
+ deallog << "}" << std::endl << std::endl;
+ } // cell
+}
+
+
+int
+main(int /*argc*/, char ** /*argv*/)
+{
+ deallog << std::setprecision(PRECISION);
+ deallog << std::fixed;
+ deallog.attach(logfile);
+
+ /*
+ * 3D test only
+ */
+ const int dim = 3;
+ Triangulation<dim> tria_test;
+
+ deallog << "Testing 3D mesh for orientation tests:" << std::endl;
+
+ for (unsigned int config_switch = 0; config_switch < 8; ++config_switch)
+ {
+ tria_test.clear();
+
+ bool face_orientation = (((config_switch / 4) % 2) == 1);
+ bool face_flip = (((config_switch / 2) % 2) == 1);
+ bool face_rotation = ((config_switch % 2) == 1);
+
+ bool manipulate_first_cube = true;
+
+ GridGenerator::non_standard_orientation_mesh(tria_test,
+ face_orientation,
+ face_flip,
+ face_rotation,
+ manipulate_first_cube);
+
+ plot_all_info(tria_test);
+
+ deallog << "****************" << std::endl;
+ } // config_switch++
+
+ deallog << "Testing 3D orientation mesh done." << std::endl;
+
+ return 0;
+}
--- /dev/null
+
+DEAL::Testing 3D mesh for orientation tests:
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 0 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 0 | 0 | 1 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 0 1 0 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 0 | 1 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 0 1 1 1 0 1 1 1 0 1 0 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 0 | 1 | 1 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 0 1 1 1 0 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 1 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 0 1 1 1 0 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 1 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 0 1 1 1 0 1 1 1 0 1 0 1 }
+DEAL::
+DEAL::****************
+DEAL::CellId = 0_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 0 | 0 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 1 1 1 1 }
+DEAL::
+DEAL::CellId = 1_0:
+DEAL:: {index -> face_orientation | face_flip | face_rotation}:
+DEAL:: {0 -> 1 | 1 | 1 }
+DEAL:: {1 -> 1 | 0 | 0 }
+DEAL:: {2 -> 1 | 0 | 0 }
+DEAL:: {3 -> 1 | 0 | 0 }
+DEAL:: {4 -> 1 | 0 | 0 }
+DEAL:: {5 -> 1 | 0 | 0 }
+DEAL:: line orientation: { 1 1 1 1 1 1 1 1 0 1 0 1 }
+DEAL::
+DEAL::****************
+DEAL::Testing 3D orientation mesh done.