]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add non-standard oriented quadrature on subfaces 18398/head
authorDominik Still <dominik.still@tum.de>
Tue, 29 Apr 2025 08:24:47 +0000 (10:24 +0200)
committerDominik Still <dominik.still@tum.de>
Tue, 29 Apr 2025 08:24:47 +0000 (10:24 +0200)
source/base/qprojector.cc
source/fe/fe_poly_tensor.cc
tests/base/qprojector_subfaces.cc [new file with mode: 0644]
tests/base/qprojector_subfaces.output [new file with mode: 0644]
tests/base/quadrature_sorted_test.cc
tests/base/quadrature_test.cc

index 79cea08ca507628be62e0968e7ffe567c56314d0..fa12b02e6d462e964921c1bd05d8baa663c190e8 100644 (file)
@@ -1021,38 +1021,37 @@ QProjector<2>::project_to_all_subfaces(const ReferenceCell &reference_cell,
 
   const unsigned int dim = 2;
 
-  const unsigned int n_points = quadrature.size(),
-                     n_faces  = GeometryInfo<dim>::faces_per_cell,
-                     subfaces_per_face =
-                       GeometryInfo<dim>::max_children_per_face;
-
-  // first fix quadrature points
   std::vector<Point<dim>> q_points;
-  q_points.reserve(n_points * n_faces * subfaces_per_face);
-  std::vector<Point<dim>> help(n_points);
+  std::vector<double>     weights;
 
   // project to each face and copy
   // results
-  for (unsigned int face = 0; face < n_faces; ++face)
-    for (unsigned int subface = 0; subface < subfaces_per_face; ++subface)
-      {
-        project_to_subface(reference_cell, quadrature, face, subface, help);
-        std::copy(help.begin(), help.end(), std::back_inserter(q_points));
-      }
-
-  // next copy over weights
-  std::vector<double> weights;
-  weights.reserve(n_points * n_faces * subfaces_per_face);
-  for (unsigned int face = 0; face < n_faces; ++face)
-    for (unsigned int subface = 0; subface < subfaces_per_face; ++subface)
-      std::copy(quadrature.get_weights().begin(),
-                quadrature.get_weights().end(),
-                std::back_inserter(weights));
-
-  Assert(q_points.size() == n_points * n_faces * subfaces_per_face,
-         ExcInternalError());
-  Assert(weights.size() == n_points * n_faces * subfaces_per_face,
-         ExcInternalError());
+  for (unsigned int face = 0; face < reference_cell.n_faces(); ++face)
+    for (types::geometric_orientation orientation = 0;
+         orientation < reference_cell.n_face_orientations(face);
+         ++orientation)
+      for (unsigned int subface = 0;
+           subface <
+           reference_cell.face_reference_cell(face).n_isotropic_children();
+           ++subface)
+        {
+          const unsigned int local_subface =
+            orientation == numbers::reverse_line_orientation ? 1 - subface :
+                                                               subface;
+          const auto sub_quadrature =
+            project_to_subface(reference_cell,
+                               quadrature,
+                               face,
+                               local_subface,
+                               orientation,
+                               RefinementCase<dim - 1>::isotropic_refinement);
+          q_points.insert(q_points.end(),
+                          sub_quadrature.get_points().begin(),
+                          sub_quadrature.get_points().end());
+          weights.insert(weights.end(),
+                         sub_quadrature.get_weights().begin(),
+                         sub_quadrature.get_weights().end());
+        }
 
   return Quadrature<dim>(std::move(q_points), std::move(weights));
 }
@@ -1425,21 +1424,27 @@ QProjector<1>::DataSetDescriptor::subface(
 template <>
 QProjector<2>::DataSetDescriptor
 QProjector<2>::DataSetDescriptor::subface(
-  const ReferenceCell &reference_cell,
-  const unsigned int   face_no,
-  const unsigned int   subface_no,
-  const types::geometric_orientation /*combined_orientation*/,
-  const unsigned int n_quadrature_points,
+  const ReferenceCell               &reference_cell,
+  const unsigned int                 face_no,
+  const unsigned int                 subface_no,
+  const types::geometric_orientation combined_orientation,
+  const unsigned int                 n_quadrature_points,
   const internal::SubfaceCase<2>)
 {
   Assert(reference_cell == ReferenceCells::Quadrilateral, ExcNotImplemented());
-  (void)reference_cell;
 
-  Assert(face_no < GeometryInfo<2>::faces_per_cell, ExcInternalError());
-  Assert(subface_no < GeometryInfo<2>::max_children_per_face,
-         ExcInternalError());
+  const unsigned int n_faces = reference_cell.n_faces();
+  const unsigned int n_subfaces =
+    reference_cell.face_reference_cell(face_no).n_isotropic_children();
+  const unsigned int n_orientations =
+    reference_cell.n_face_orientations(face_no);
+
+  AssertIndexRange(face_no, n_faces);
+  AssertIndexRange(subface_no, n_subfaces);
+  AssertIndexRange(combined_orientation, n_orientations);
 
-  return ((face_no * GeometryInfo<2>::max_children_per_face + subface_no) *
+  return ((face_no * n_orientations * n_subfaces +
+           combined_orientation * n_subfaces + subface_no) *
           n_quadrature_points);
 }
 
index 3efe77137d5a809536e831ab8399d7a847adc2c2..c3426e46c776030fc5dfc5d12f8d6f6b0b1aa9a0 100644 (file)
@@ -1871,14 +1871,14 @@ FE_PolyTensor<dim, spacedim>::fill_fe_subface_values(
   // offset determines which data set
   // to take (all data sets for all
   // sub-faces are stored contiguously)
-  const auto offset =
-    QProjector<dim>::DataSetDescriptor::subface(this->reference_cell(),
-                                                face_no,
-                                                sub_no,
-                                                cell->combined_face_orientation(
-                                                  face_no),
-                                                n_q_points,
-                                                cell->subface_case(face_no));
+  const auto offset = QProjector<dim>::DataSetDescriptor::subface(
+    this->reference_cell(),
+    face_no,
+    sub_no,
+    dim == 2 ? numbers::default_geometric_orientation :
+               cell->combined_face_orientation(face_no),
+    n_q_points,
+    cell->subface_case(face_no));
 
   // TODO: Size assertions
 
diff --git a/tests/base/qprojector_subfaces.cc b/tests/base/qprojector_subfaces.cc
new file mode 100644 (file)
index 0000000..f4d5f92
--- /dev/null
@@ -0,0 +1,191 @@
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2020 - 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+
+// Test FESubfaceValues for different subface quadrature rules.
+
+
+#include <deal.II/base/function_lib.h>
+#include <deal.II/base/qprojector.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/reference_cell.h>
+
+#include <deal.II/hp/q_collection.h>
+
+#include <deal.II/numerics/vector_tools.h>
+
+#include "../tests.h"
+
+template <int dim>
+void
+test()
+{}
+
+template <>
+void
+test<2>()
+{
+  const unsigned int dim = 2;
+
+  // test: QProjector::project_to_all_subfaces
+  {
+    deallog.push("project_to_all_subfaces");
+    const hp::QCollection<dim - 1> quad_ref(QGauss<dim - 1>(1),
+                                            QGauss<dim - 1>(2),
+                                            QGauss<dim - 1>(3),
+                                            QGauss<dim - 1>(4));
+
+    for (unsigned int current_quad = 0; current_quad < quad_ref.size();
+         ++current_quad)
+      {
+        const auto quad = QProjector<dim>::project_to_all_subfaces(
+          ReferenceCells::Quadrilateral, quad_ref[current_quad]);
+
+        for (unsigned int q = 0; q < quad.size(); ++q)
+          {
+            deallog << quad.point(q) << ' ';
+            deallog << quad.weight(q) << ' ';
+            deallog << std::endl;
+          }
+        deallog << std::endl;
+      }
+    deallog << std::endl;
+    deallog.pop();
+  }
+
+
+  // test unsigned int DataSetDescriptor::subface
+  {
+    deallog.push("DataSetDescriptor::subface");
+    for (unsigned int nq = 1; nq < 6; ++nq)
+      for (const unsigned int face_no :
+           ReferenceCells::get_hypercube<dim>().face_indices())
+        for (unsigned int o = 0; o < 2; ++o)
+          for (unsigned int subface_no = 0; subface_no < 2; ++subface_no)
+            {
+              unsigned int offset = QProjector<dim>::DataSetDescriptor::subface(
+                ReferenceCells::get_hypercube<dim>(),
+                face_no,
+                subface_no,
+                o,
+                nq);
+              deallog << "Face:" << face_no << " subface:" << subface_no
+                      << " orientation:" << o << " offset:" << offset
+                      << std::endl;
+            }
+    deallog.pop();
+  }
+
+
+  // test FESubFaceValues for FE_Q
+  {
+    deallog.push("FESubFaceValues");
+    const hp::QCollection<dim - 1> quad_ref(QGauss<dim - 1>(1),
+                                            QGauss<dim - 1>(2),
+                                            QGauss<dim - 1>(3),
+                                            QGauss<dim - 1>(4));
+
+    MappingQ<dim> mapping(1);
+    FE_Q<dim>     fe(3);
+
+    const UpdateFlags flags =
+      update_values | update_quadrature_points | update_JxW_values;
+
+    Triangulation<dim> tria;
+    GridGenerator::hyper_cube(tria);
+    tria.begin_active()->set_refine_flag(
+      RefinementCase<dim>::isotropic_refinement);
+    tria.execute_coarsening_and_refinement();
+
+    DoFHandler<dim> dof_handler(tria);
+    dof_handler.distribute_dofs(fe);
+
+    Vector<double> vector_0(dof_handler.n_dofs());
+    Vector<double> vector_1(dof_handler.n_dofs());
+
+    VectorTools::interpolate(mapping,
+                             dof_handler,
+                             Functions::Monomial<dim, double>(
+                               Tensor<1, dim, double>({1., 0.})),
+                             vector_0);
+    VectorTools::interpolate(mapping,
+                             dof_handler,
+                             Functions::Monomial<dim, double>(
+                               Tensor<1, dim, double>({0., 1.})),
+                             vector_1);
+
+    std::vector<double> values_0, values_1;
+
+    for (unsigned int current_quad = 0; current_quad < quad_ref.size();
+         ++current_quad)
+      {
+        FESubfaceValues<dim> fe_face_values(mapping,
+                                            fe,
+                                            quad_ref[current_quad],
+                                            flags);
+
+        for (const auto &cell : dof_handler.active_cell_iterators())
+          for (const auto face_no : cell->face_indices())
+            for (unsigned int subface_no = 0; subface_no < 2; ++subface_no)
+              {
+                fe_face_values.reinit(cell, face_no, subface_no);
+
+                values_0.resize(fe_face_values.n_quadrature_points);
+                values_1.resize(fe_face_values.n_quadrature_points);
+
+                fe_face_values.get_function_values(vector_0, values_0);
+                fe_face_values.get_function_values(vector_1, values_1);
+
+                for (unsigned int q = 0; q < values_0.size(); ++q)
+                  {
+                    if (std::abs(values_0[q] -
+                                 fe_face_values.quadrature_point(q)[0]) < 1e-12)
+                      deallog << "Ok"
+                              << " ";
+                    else
+                      deallog << "False"
+                              << " ";
+
+                    if (std::abs(values_1[q] -
+                                 fe_face_values.quadrature_point(q)[1]) < 1e-12)
+                      deallog << "Ok"
+                              << " ";
+                    else
+                      deallog << "False"
+                              << " ";
+                    deallog << std::endl;
+                  }
+              }
+      }
+    deallog << std::endl;
+  }
+}
+
+
+int
+main()
+{
+  initlog();
+
+  deallog.push("dim=2");
+  test<2>();
+  deallog.pop();
+}
diff --git a/tests/base/qprojector_subfaces.output b/tests/base/qprojector_subfaces.output
new file mode 100644 (file)
index 0000000..aeaa62d
--- /dev/null
@@ -0,0 +1,567 @@
+
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.250000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.750000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.750000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.250000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.250000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.750000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.750000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.250000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.250000 0.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.750000 0.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.750000 0.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.250000 0.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.250000 1.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.750000 1.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.750000 1.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::0.250000 1.00000 1.00000 
+DEAL:dim=2:project_to_all_subfaces::
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.105662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.394338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.605662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.894338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.894338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.605662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.394338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.105662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.105662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.394338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.605662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.894338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.894338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.605662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.394338 0.500000 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.105662 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.105662 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.394338 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.605662 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.894338 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.894338 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.605662 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.394338 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.105662 0.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.105662 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.394338 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.605662 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.894338 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.894338 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.605662 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.394338 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::0.105662 1.00000 0.500000 
+DEAL:dim=2:project_to_all_subfaces::
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.0563508 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.250000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.443649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.556351 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.750000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.943649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.943649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.750000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.556351 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.443649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.250000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.0563508 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.0563508 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.250000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.443649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.556351 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.750000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.943649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.943649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.750000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.556351 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.443649 0.277778 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.250000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.0563508 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.0563508 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.250000 0.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.443649 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.556351 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.750000 0.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.943649 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.943649 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.750000 0.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.556351 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.443649 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.250000 0.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.0563508 0.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.0563508 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.250000 1.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.443649 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.556351 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.750000 1.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.943649 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.943649 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.750000 1.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.556351 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.443649 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::0.250000 1.00000 0.444444 
+DEAL:dim=2:project_to_all_subfaces::0.0563508 1.00000 0.277778 
+DEAL:dim=2:project_to_all_subfaces::
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.0347159 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.165005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.334995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.465284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.534716 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.665005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.834995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.965284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.965284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.834995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.665005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.534716 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.465284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.334995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.165005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.00000 0.0347159 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.0347159 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.165005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.334995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.465284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.534716 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.665005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.834995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.965284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.965284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.834995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.665005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.534716 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.465284 0.173927 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.334995 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.165005 0.326073 
+DEAL:dim=2:project_to_all_subfaces::1.00000 0.0347159 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.0347159 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.165005 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.334995 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.465284 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.534716 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.665005 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.834995 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.965284 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.965284 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.834995 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.665005 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.534716 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.465284 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.334995 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.165005 0.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.0347159 0.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.0347159 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.165005 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.334995 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.465284 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.534716 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.665005 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.834995 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.965284 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.965284 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.834995 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.665005 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.534716 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.465284 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::0.334995 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.165005 1.00000 0.326073 
+DEAL:dim=2:project_to_all_subfaces::0.0347159 1.00000 0.173927 
+DEAL:dim=2:project_to_all_subfaces::
+DEAL:dim=2:project_to_all_subfaces::
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:1
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:2
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:3
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:4
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:5
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:6
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:7
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:8
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:9
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:10
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:11
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:0 offset:12
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:0 offset:13
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:1 offset:14
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:1 offset:15
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:2
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:4
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:6
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:8
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:10
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:12
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:14
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:16
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:18
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:20
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:22
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:0 offset:24
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:0 offset:26
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:1 offset:28
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:1 offset:30
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:3
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:6
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:9
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:12
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:15
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:18
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:21
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:24
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:27
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:30
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:33
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:0 offset:36
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:0 offset:39
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:1 offset:42
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:1 offset:45
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:4
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:8
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:12
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:16
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:20
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:24
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:28
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:32
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:36
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:40
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:44
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:0 offset:48
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:0 offset:52
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:1 offset:56
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:1 offset:60
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:5
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:10
+DEAL:dim=2:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:15
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:20
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:25
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:30
+DEAL:dim=2:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:35
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:40
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:45
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:50
+DEAL:dim=2:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:55
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:0 offset:60
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:0 offset:65
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:0 orientation:1 offset:70
+DEAL:dim=2:DataSetDescriptor::subface::Face:3 subface:1 orientation:1 offset:75
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::
index 3257d14fb20fb5cf114006640c3ca6b4a9d7d035..ff11134d213083004ff8dd896cae69e247fc7a01 100644 (file)
@@ -155,11 +155,7 @@ check_faces(const std::vector<Quadrature<dim - 1> *> &quadratures,
           switch (dim)
             {
               case 2:
-                // TODO: once we support multiple orientations per subface in 2d
-                // we can get rid of the second ternary if here (because we will
-                // always integrate over all orientations: i.e., both of them in
-                // 2d).
-                exact_int = 2 * (sub ? 2 : 1) * (sub ? 1 : 2) / (double)(i + 1);
+                exact_int = 2 * (sub ? 2 : 1) * 2 / (double)(i + 1);
                 break;
               case 3:
                 exact_int =
index 6009fb82e632bc16e03185a839ffde7fe646ca9d..71c228ba2e3229cbe19cfcb68f261914c67248a0 100644 (file)
@@ -176,11 +176,7 @@ check_faces(const std::vector<Quadrature<dim - 1> *> &quadratures,
           switch (dim)
             {
               case 2:
-                // TODO: once we support multiple orientations per subface in 2d
-                // we can get rid of the second ternary if here (because we will
-                // always integrate over all orientations: i.e., both of them in
-                // 2d).
-                exact_int = 2 * (sub ? 2 : 1) * (sub ? 1 : 2) / (double)(i + 1);
+                exact_int = 2 * (sub ? 2 : 1) * 2 / (double)(i + 1);
                 break;
               case 3:
                 exact_int =

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.