]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Merged from trunk r32657 through r32762
authorLuca Heltai <luca.heltai@sissa.it>
Fri, 11 Apr 2014 13:03:21 +0000 (13:03 +0000)
committerLuca Heltai <luca.heltai@sissa.it>
Fri, 11 Apr 2014 13:03:21 +0000 (13:03 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_manifold_id_intermediate@32766 0785d39b-7218-0410-832d-ea1e28bc413d

183 files changed:
deal.II/bundled/muparser_v2_2_3/src/muParserBytecode.cpp
deal.II/doc/external-libs/petsc.html
deal.II/doc/news/changes.h
deal.II/doc/publications/index.html
deal.II/examples/step-22/step-22.cc
deal.II/examples/step-31/doc/intro.dox
deal.II/examples/step-37/step-37.cc
deal.II/examples/step-40/step-40.cc
deal.II/include/deal.II/algorithms/any_data.h
deal.II/include/deal.II/base/aligned_vector.h
deal.II/include/deal.II/base/config.h.in
deal.II/include/deal.II/base/data_out_base.h
deal.II/include/deal.II/base/memory_consumption.h
deal.II/include/deal.II/base/parallel.h
deal.II/include/deal.II/base/table.h
deal.II/include/deal.II/base/time_stepping.h
deal.II/include/deal.II/base/time_stepping.templates.h
deal.II/include/deal.II/dofs/dof_accessor.h
deal.II/include/deal.II/dofs/dof_accessor.templates.h
deal.II/include/deal.II/dofs/dof_tools.h
deal.II/include/deal.II/fe/fe.h
deal.II/include/deal.II/fe/fe_base.h
deal.II/include/deal.II/fe/fe_bdm.h
deal.II/include/deal.II/fe/fe_dgp.h
deal.II/include/deal.II/fe/fe_dgq.h
deal.II/include/deal.II/fe/fe_face.h
deal.II/include/deal.II/fe/fe_nedelec.h
deal.II/include/deal.II/fe/fe_q_base.h
deal.II/include/deal.II/fe/fe_q_dg0.h
deal.II/include/deal.II/fe/fe_q_hierarchical.h
deal.II/include/deal.II/fe/fe_raviart_thomas.h
deal.II/include/deal.II/fe/fe_system.h
deal.II/include/deal.II/fe/mapping.h
deal.II/include/deal.II/grid/grid_generator.h
deal.II/include/deal.II/grid/grid_tools.h
deal.II/include/deal.II/grid/tria_accessor.h
deal.II/include/deal.II/grid/tria_accessor.templates.h
deal.II/include/deal.II/grid/tria_iterator.h
deal.II/include/deal.II/grid/tria_levels.h
deal.II/include/deal.II/lac/constraint_matrix.templates.h
deal.II/include/deal.II/lac/lapack_full_matrix.h
deal.II/include/deal.II/lac/pointer_matrix.h
deal.II/include/deal.II/lac/sparse_matrix.h
deal.II/include/deal.II/lac/sparse_matrix.templates.h
deal.II/include/deal.II/lac/sparse_matrix_ez.h
deal.II/include/deal.II/lac/trilinos_precondition.h
deal.II/include/deal.II/lac/vector.templates.h
deal.II/include/deal.II/matrix_free/dof_info.templates.h
deal.II/include/deal.II/matrix_free/mapping_info.templates.h
deal.II/include/deal.II/matrix_free/matrix_free.templates.h
deal.II/include/deal.II/meshworker/loop.h
deal.II/include/deal.II/numerics/derivative_approximation.h
deal.II/include/deal.II/numerics/vector_tools.h
deal.II/include/deal.II/numerics/vector_tools.templates.h
deal.II/source/distributed/tria.cc
deal.II/source/dofs/dof_tools.cc
deal.II/source/fe/fe.cc
deal.II/source/fe/fe_bdm.cc
deal.II/source/fe/fe_dgp.cc
deal.II/source/fe/fe_dgq.cc
deal.II/source/fe/fe_face.cc
deal.II/source/fe/fe_nedelec.cc
deal.II/source/fe/fe_q.cc
deal.II/source/fe/fe_q_base.cc
deal.II/source/fe/fe_q_dg0.cc
deal.II/source/fe/fe_q_hierarchical.cc
deal.II/source/fe/fe_raviart_thomas.cc
deal.II/source/fe/fe_system.cc
deal.II/source/grid/grid_generator.cc
deal.II/source/grid/grid_generator.inst.in
deal.II/source/grid/grid_tools.cc
deal.II/source/grid/grid_tools.inst.in
deal.II/source/grid/tria_accessor.cc
deal.II/source/lac/lapack_full_matrix.cc
deal.II/source/lac/lapack_full_matrix.inst.in
deal.II/source/lac/petsc_solver.cc
deal.II/source/lac/trilinos_precondition.cc
deal.II/source/numerics/derivative_approximation.cc
deal.II/source/numerics/derivative_approximation.inst.in
deal.II/source/numerics/solution_transfer.cc
deal.II/source/numerics/vector_tools_constraints.inst.in
tests/base/aligned_vector_01.cc [new file with mode: 0644]
tests/base/aligned_vector_01.output [new file with mode: 0644]
tests/base/aligned_vector_02.cc [moved from tests/base/vectorization_03.cc with 100% similarity]
tests/base/aligned_vector_02.output [moved from tests/base/vectorization_03.output with 100% similarity]
tests/base/aligned_vector_03.cc [new file with mode: 0644]
tests/base/aligned_vector_03.output [new file with mode: 0644]
tests/base/vectorization_01.cc
tests/base/vectorization_01.output
tests/base/vectorization_04.cc [deleted file]
tests/base/vectorization_04.output [deleted file]
tests/bits/find_cell_12.cc [new file with mode: 0644]
tests/bits/find_cell_12.output [new file with mode: 0644]
tests/deal.II/curl_curl_01.cc
tests/deal.II/grid_transform.cc
tests/deal.II/grid_transform_02.cc [new file with mode: 0644]
tests/deal.II/grid_transform_02.output [new file with mode: 0644]
tests/deal.II/grid_transform_coefficient.cc [new file with mode: 0644]
tests/deal.II/grid_transform_coefficient.output [new file with mode: 0644]
tests/deal.II/normal_flux_inhom_01.cc [new file with mode: 0644]
tests/deal.II/normal_flux_inhom_01.output [new file with mode: 0644]
tests/deal.II/tangential_flux_inhom_01.cc [new file with mode: 0644]
tests/deal.II/tangential_flux_inhom_01.output [new file with mode: 0644]
tests/distributed_grids/coarse_grid_common.h
tests/fail/merge_triangulations_02.cc [new file with mode: 0644]
tests/fe/bdm_1.cc [new file with mode: 0644]
tests/fe/bdm_1.output [new file with mode: 0644]
tests/fe/bdm_10.cc [new file with mode: 0644]
tests/fe/bdm_10.output [new file with mode: 0644]
tests/fe/bdm_11.cc [new file with mode: 0644]
tests/fe/bdm_11.output [new file with mode: 0644]
tests/fe/bdm_12.cc [new file with mode: 0644]
tests/fe/bdm_12.output [new file with mode: 0644]
tests/fe/bdm_13.cc [new file with mode: 0644]
tests/fe/bdm_13.output [new file with mode: 0644]
tests/fe/bdm_14.cc [new file with mode: 0644]
tests/fe/bdm_14.output [new file with mode: 0644]
tests/fe/bdm_15.cc [new file with mode: 0644]
tests/fe/bdm_15.output [new file with mode: 0644]
tests/fe/bdm_2.cc [new file with mode: 0644]
tests/fe/bdm_2.output [new file with mode: 0644]
tests/fe/bdm_3.cc [new file with mode: 0644]
tests/fe/bdm_3.output [new file with mode: 0644]
tests/fe/bdm_5.cc [new file with mode: 0644]
tests/fe/bdm_5.output [new file with mode: 0644]
tests/fe/bdm_8.cc [new file with mode: 0644]
tests/fe/bdm_8.output [new file with mode: 0644]
tests/fe/bdm_9.cc [new file with mode: 0644]
tests/fe/bdm_9.output [new file with mode: 0644]
tests/fe/element_constant_modes.cc
tests/fe/element_constant_modes.output
tests/fe/get_name_01.cc [new file with mode: 0644]
tests/fe/get_name_01.output [new file with mode: 0644]
tests/grid/ordering_01.cc [deleted file]
tests/grid/ordering_01.output [deleted file]
tests/lac/pointer_matrix_01.cc [new file with mode: 0644]
tests/lac/pointer_matrix_01.output [new file with mode: 0644]
tests/lac/pointer_matrix_02.cc [new file with mode: 0644]
tests/lac/pointer_matrix_02.output [new file with mode: 0644]
tests/lac/pointer_matrix_03.cc [new file with mode: 0644]
tests/lac/pointer_matrix_03.output [new file with mode: 0644]
tests/lac/pointer_matrix_04.cc [new file with mode: 0644]
tests/lac/pointer_matrix_04.output [new file with mode: 0644]
tests/lac/pointer_matrix_05.cc [new file with mode: 0644]
tests/lac/pointer_matrix_05.output [new file with mode: 0644]
tests/lac/pointer_matrix_06.cc [new file with mode: 0644]
tests/lac/pointer_matrix_06.output [new file with mode: 0644]
tests/lac/pointer_matrix_07.cc [new file with mode: 0644]
tests/lac/pointer_matrix_07.output [new file with mode: 0644]
tests/lac/pointer_matrix_08.cc [new file with mode: 0644]
tests/lac/pointer_matrix_08.output [new file with mode: 0644]
tests/lac/pointer_matrix_09.cc [new file with mode: 0644]
tests/lac/pointer_matrix_09.output [new file with mode: 0644]
tests/lac/pointer_matrix_10.cc [new file with mode: 0644]
tests/lac/pointer_matrix_10.output [new file with mode: 0644]
tests/lac/shifted_matrix_01.cc [new file with mode: 0644]
tests/lac/shifted_matrix_01.output [new file with mode: 0644]
tests/lac/shifted_matrix_02.cc [new file with mode: 0644]
tests/lac/shifted_matrix_02.output [new file with mode: 0644]
tests/lac/shifted_matrix_03.cc [new file with mode: 0644]
tests/lac/shifted_matrix_03.output [new file with mode: 0644]
tests/lac/shifted_matrix_04.cc [new file with mode: 0644]
tests/lac/shifted_matrix_04.output [new file with mode: 0644]
tests/lac/shifted_matrix_05.cc [new file with mode: 0644]
tests/lac/shifted_matrix_05.output [new file with mode: 0644]
tests/lac/vector_view_01.cc [new file with mode: 0644]
tests/lac/vector_view_01.output [new file with mode: 0644]
tests/lac/vector_view_02.cc [new file with mode: 0644]
tests/lac/vector_view_02.output [new file with mode: 0644]
tests/lac/vector_view_03.cc [new file with mode: 0644]
tests/lac/vector_view_03.output [new file with mode: 0644]
tests/lac/vector_view_04.cc [new file with mode: 0644]
tests/lac/vector_view_04.output [new file with mode: 0644]
tests/lac/vector_view_05.cc [new file with mode: 0644]
tests/lac/vector_view_05.output [new file with mode: 0644]
tests/lapack/full_matrix_00.cc [new file with mode: 0644]
tests/lapack/full_matrix_00.output [new file with mode: 0644]
tests/mpi/extract_constant_modes_02.cc [new file with mode: 0644]
tests/mpi/extract_constant_modes_02.mpirun=4.output [new file with mode: 0644]
tests/mpi/mesh_worker_05.cc [new file with mode: 0644]
tests/mpi/mesh_worker_05.mpirun=3.output [new file with mode: 0644]
tests/mpi/torus.cc [new file with mode: 0644]
tests/mpi/torus.mpirun=2.output [new file with mode: 0644]

index e0cb6f218eec550957d2d5e21489b713e3099d16..c01bcba60b8ec36cfabc0a1f484891de8f2400af 100644 (file)
@@ -30,6 +30,7 @@
 #include <stack>\r
 #include <vector>\r
 #include <iostream>\r
+#include <algorithm>\r
 \r
 #include "muParserDef.h"\r
 #include "muParserError.h"\r
index 252e88222a3a931117ca86d9e1814f6790a632b0..3230d590f51bd9a86cb85696e83ce899fa55a035 100644 (file)
@@ -4,7 +4,7 @@
   <head>
     <title>The deal.II Readme on interfacing to PETSc</title>
     <link href="../screen.css" rel="StyleSheet">
-    <meta name="copyright" content="Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013 by the deal.II authors">
+    <meta name="copyright" content="Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014 by the deal.II authors">
     <meta name="date" content="$Date$">
     <meta name="svn_id" content="$Id$">
     <meta name="keywords" content="deal.II">
 
     <h4>Installing <acronym>deal.II</acronym> with PETSc</h4>
 
-    <p style="color: red"><b>Note:</b> The latest version of PETSc tested is
-       3.4.2. Major releases after this version may cause problems, so we
-       recommend sticking to this version if at all possible.
+    <p style="color: red"><b>Note:</b> The most recent version of
+       PETSc that has been reported to be compatible
+       with <acronym>deal.II</acronym> is version 3.4. If you use a
+       later version than this and encounter problems, let us know.
     </p>
 
     <p>
-      PETSc usually requires you to set the
+      When you compile and install PETSc, you need to set
       environment variables <code>PETSC_DIR</code> and <code>PETSC_ARCH</code>
       to a path to PETSc and denoting the architecture for which PETSc is
-      compiled (a string you can choose however you like, it is simply
-      intended to identify one of possibly several different PETSc
-      installations). If these environment variables are set, then
-      <acronym>deal.II</acronym> will pick them up during
-      configuration, and store them. It will then also recognize that
-      PETSc shall be used, and enable the wrapper classes.
+      compiled. <code>PETSC_ARCH</code> is in reality just a name you give to
+      your installation, it is a string you can choose however you like. The
+      point of it is that it allows you to have multiple possibly different
+      PETSc installations. A consequence of this is that you need to
+      let <acronym>deal.II</acronym>'s <code>cmake</code> scripts know which
+      one of these installations you want it to use, i.e., you need to set the
+      <code>PETSC_ARCH</code> variable to the same value you used when you
+      installed PETSc. The same is true for <code>PETSC_DIR</code>. You can
+      this via environment variables. <code>cmake</code> will then also
+      recognize that PETSc shall be used, and enable the wrapper classes,
+      without you having to explicitly say that you want to use PETSc.
     </p>
 
     <p>
index 258320b307f3d879a76342555e322371da7ceef1..5c2f730fe7506acae6721b2e5edcf4fef84a490a 100644 (file)
@@ -1,4 +1,4 @@
- // ---------------------------------------------------------------------
+// ---------------------------------------------------------------------
 // $Id$
 //
 // Copyright (C) 2013, 2014 by the deal.II authors
@@ -56,7 +56,7 @@ inconvenience this causes.
   longer supported. Comparing for equality is done using '==' instead of '='.
   <br>
   (Timo Heister, 2014/02/10)
-  </li>  
+  </li>
 
   <li> Changed: The various classes generating graphical output, such
   as DataOut or DataOutStack, are all derived from a common interface
@@ -90,12 +90,11 @@ inconvenience this causes.
 
 
 <ol>
-
-  <li> Changed: the functionparser library bundled with deal.II got replaced
-  by the muparser library.  
+  <li> Changed: The functionparser library bundled with deal.II got replaced
+  by the muparser library.
   <br>
   (Timo Heister, 2014/02/10)
-  </li>  
+  </li>
 
   <li> Changed: It was possible to call DoFAccessor::set_active_fe_index()
   on non-active cells. However, this made no sense: Since degrees of
@@ -149,6 +148,63 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+  <li> Changed: TableBase<N,T> now uses AlignedVector for storing data
+  instead of std::vector, which allows its use for VectorizedArray<Number>
+  data fields which require more alignment.
+  <br>
+  (Martin Kronbichler, 2014/04/09)
+  </li>
+
+  <li> Improved: Piola transformation for FE_BDM is now active.
+  <br>
+  (Guido Kanschat, 2014/04/09)
+  </li>
+
+  <li> Changed: operator< for cell iterators no longer looks at
+  (level-)subdomain ids but only compares level() and index(). This makes the
+  ordering inconsistent between processes on a
+  parallel::distributed::Triangulation, but fixes the problem that the
+  ordering of cells changes under mesh refinement or other causes for changing
+  the subdomain id.
+  <br>
+  (Timo Heister, 2014/04/08)
+  </li>
+  
+  <li> New: GridTools::laplace_transform() now takes an addition, optional
+  parameter that indicates the "stiffness" of the mapping.
+  <br>
+  (Denis Davydov, Jean-Paul Pelteret, 2014/04/07)
+  </li>
+
+  <li> Fixed: DoFTools::extract_constant_modes now correctly identifies both
+  constant modes in the scalar element FE_Q_DG0, which has been realized by a
+  few modifications in how the constant modes propagate from the element to
+  the extract_constant_modes() function.
+  <br>
+  (Martin Kronbichler, 2014/04/04)
+  </li>
+
+  <li> Fixed: GridTools::laplace_transform had previously announced in
+  the documentation that one can also set the location of interior points,
+  but this was not in fact what was implemented. This has now been fixed:
+  the code can now do that.
+  <br>
+  (Denis Davydov, Wolfgang Bangerth, 2014/03/23)
+  </li>
+
+  <li> Improved: Inhomogeneous tangential and normal flow constraints can
+       now be treated via VectorTools::compute_nonzero_normal_flux_constraints
+       and VectorTools::compute_nonzero_tangential_flux_constraints.
+  <br>
+  (Daniel Arndt, 2014/03/16)
+  </li>
+
+  <li> Changed: Class TriaAccessor had a function parent_index(), but this function
+  could only work for cell accessors. The function has consequently been moved
+  to class CellAccessor.
+  <br>
+  (Wolfgang Bangerth, 2014/03/15)
+  </li>
 
   <li> Fixed: step-32 had a piece of code where we accessed an internal
   representation of how Trilinos vectors are actually stored. This is poor
@@ -162,7 +218,7 @@ inconvenience this causes.
   <br>
   (Markus B&uuml;rg, 2014/03/10)
   </li>
-  
+
   <li> Fixed: ParameterHandler will no longer output an error if the file
   to be read ends with "end" without a newline.
   <br>
index ad1ecbca1625d46a7e8e57cebdebbbdad0867c35..46a7fffa9d3d42798933b97c78707f438dc38e65 100644 (file)
          SIAM J. Optim., vol. 24, pp. 108-126, 2014.
         </li>
 
-       <li> T. Wick, G. Singh, M.F. Wheeler
+       <li> J. Reinhardt, A. Scacchi, J. M. Bader
          <br>
-         <strong>Pressurized-Fracture propagation using a phase-field approach coupled to a reservoir simulator
+         <strong>Microrheology close to an equilibrium phase transition
          </strong>
          <br>
-         SPE 168597-MS, SPE HFTC Proc., 2014.
+         J. Chem. Phys., vol. 140, article 144901, 2014.
         </li>
 
        <li> M.F. Wheeler, T. Wick, W. Wollner
@@ -317,12 +317,20 @@ Pressurized Fractures
          Comput. Methods Appl. Mech. Engrg., vol. 271, pp. 69-85, 2014.
         </li>
 
+       <li> T. Wick, G. Singh, M.F. Wheeler
+         <br>
+         <strong>Pressurized-Fracture propagation using a phase-field approach coupled to a reservoir simulator
+         </strong>
+         <br>
+         SPE 168597-MS, SPE HFTC Proc., 2014.
+        </li>
+
        <li> J. Willems
          <br>
          <strong>Robust Multilevel Methods for General Symmetric Positive Definite Operators
          </strong>
          <br>
-         SIAM J. Numer. Anal.  52  (2014),  no. 1, 103-124.
+         SIAM J. Numer. Anal.  52  (2014),  no. 1, 103-124, 2014.
         </li>
 
 
index 69fbc3b615cea3fe934a5b3eeeb2fc4f58d0dbf4..d52c0bbde9f864b069c4ec8c4ff3964b049d6cc2 100644 (file)
@@ -1,7 +1,7 @@
 /* ---------------------------------------------------------------------
  * $Id$
  *
- * Copyright (C) 2008 - 2013 by the deal.II authors
+ * Copyright (C) 2008 - 2014 by the deal.II authors
  *
  * This file is part of the deal.II library.
  *
@@ -685,7 +685,7 @@ namespace Step22
                // 1=y velocity, 2=pressure in 2d), which we use to pick out
                // the correct component of the right-hand side vector to
                // multiply with.
-               
+
                 const unsigned int component_i =
                   fe.system_to_component_index(i).first;
                 local_rhs(i) += fe_values.shape_value(i,q) *
@@ -710,7 +710,7 @@ namespace Step22
         // simultaneously use the ConstraintMatrix object to apply Dirichlet
         // boundary conditions and eliminate hanging node constraints, as we
         // discussed in the introduction), we have to be careful about one
-        // thing, though. We have only build up half of the local matrix
+        // thing, though. We have only built half of the local matrix
         // because of symmetry, but we're going to save the full system matrix
         // in order to use the standard functions for solution. This is done
         // by flipping the indices in case we are pointing into the empty part
index 7676de331c69a53dfe02c6ea81c5740678407021..2735157a58cc0428101971fc6d9d1204243c7e4e 100644 (file)
@@ -421,7 +421,7 @@ equivalent form:
   \nabla \cdot \kappa \nabla (T^\alpha)
   +
   \kappa(\alpha-1)
-  T^{\alpha-2} |\nabla T|^\alpha
+  T^{\alpha-2} |\nabla T|^2
   -
   \gamma
   T^{\alpha-1}
index 9cf1b00a84537b230e8394a9c74b3969437a4fbc..2f071517505a9600968066857ce08ca68b0adf21 100644 (file)
@@ -221,17 +221,18 @@ namespace Step37
   // twice. Rather, we would keep this object in the main class and simply
   // store a reference.
   //
-  // @note Observe how we store the values for the coefficient: We use a
-  // vector type <code>AlignedVector<VectorizedArray<number> ></code>
-  // structure. One would think that one can use
-  // <code>std::vector<VectorizedArray<number> ></code> as well, but there are
-  // some technicalities with vectorization: A certain alignment of the data
-  // with the memory address boundaries is required (essentially, a
-  // VectorizedArray of 16 bytes length as in SSE needs to start at a memory
-  // address that is divisible by 16). The chosen class makes sure that this
-  // alignment is respected, whereas std::vector can in general not, which may
-  // lead to segmentation faults at strange places for some systems or
-  // suboptimal performance for other systems.
+  // @note Note that storing values of type
+  // <code>VectorizedArray<number></code> requires care: Here, we use the
+  // deal.II table class which is prepared to hold the data with correct
+  // alignment. However, storing it in e.g.
+  // <code>std::vector<VectorizedArray<number> ></code> is not possible with
+  // vectorization: A certain alignment of the data with the memory address
+  // boundaries is required (essentially, a VectorizedArray of 16 bytes length
+  // as in SSE needs to start at a memory address that is divisible by
+  // 16). The table class (as well as the AlignedVector class it is based on)
+  // makes sure that this alignment is respected, whereas std::vector can in
+  // general not, which may lead to segmentation faults at strange places for
+  // some systems or suboptimal performance for other systems.
   template <int dim, int fe_degree, typename number>
   class LaplaceOperator : public Subscriptor
   {
@@ -271,7 +272,7 @@ namespace Step37
     void evaluate_coefficient(const Coefficient<dim> &function);
 
     MatrixFree<dim,number>      data;
-    AlignedVector<VectorizedArray<number> > coefficient;
+    Table<2, VectorizedArray<number> > coefficient;
 
     Vector<number>  diagonal_values;
     bool            diagonal_is_available;
@@ -389,12 +390,12 @@ namespace Step37
   {
     const unsigned int n_cells = data.n_macro_cells();
     FEEvaluation<dim,fe_degree,fe_degree+1,1,number> phi (data);
-    coefficient.resize (n_cells * phi.n_q_points);
+    coefficient.reinit (n_cells, phi.n_q_points);
     for (unsigned int cell=0; cell<n_cells; ++cell)
       {
         phi.reinit (cell);
         for (unsigned int q=0; q<phi.n_q_points; ++q)
-          coefficient[cell*phi.n_q_points+q] =
+          coefficient(cell,q) =
             coefficient_function.value(phi.quadrature_point(q));
       }
   }
@@ -499,7 +500,6 @@ namespace Step37
                const std::pair<unsigned int,unsigned int> &cell_range) const
   {
     FEEvaluation<dim,fe_degree,fe_degree+1,1,number> phi (data);
-    AssertDimension (coefficient.size(), data.n_macro_cells() * phi.n_q_points);
 
     for (unsigned int cell=cell_range.first; cell<cell_range.second; ++cell)
       {
@@ -507,7 +507,7 @@ namespace Step37
         phi.read_dof_values(src);
         phi.evaluate (false,true,false);
         for (unsigned int q=0; q<phi.n_q_points; ++q)
-          phi.submit_gradient (coefficient[cell*phi.n_q_points+q] *
+          phi.submit_gradient (coefficient(cell,q) *
                                phi.get_gradient(q), q);
         phi.integrate (false,true);
         phi.distribute_local_to_global (dst);
index 3a99cd12fa17ef7b8744209aeeab287e62ea27e6..d8068b059697283adf1fe427dd9995b0f2b0d952 100644 (file)
@@ -1,7 +1,7 @@
 /* ---------------------------------------------------------------------
  * $Id$
  *
- * Copyright (C) 2009 - 2013 by the deal.II authors
+ * Copyright (C) 2009 - 2014 by the deal.II authors
  *
  * This file is part of the deal.II library.
  *
@@ -468,7 +468,7 @@ namespace Step40
 #ifdef USE_PETSC_LA
     data.symmetric_operator = true;
 #else
-    //trilinos defaults are good
+    /* Trilinos defaults are good */
 #endif
     preconditioner.initialize(system_matrix, data);
 
index 70407aea448ecef1635ce4f9ae48dd0a1395ec6f..d5a92111d9f563e1fa75e7e17806d88ceba3069e 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id: named_data.h 30036 2013-07-18 16:55:32Z maier $
 //
-// Copyright (C) 2000 - 2013 by the deal.II authors
+// Copyright (C) 2000 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -164,7 +164,7 @@ inline
 unsigned int
 AnyData::find(const std::string& n) const
 {
-  typename std::vector<std::string>::const_iterator it =
+  std::vector<std::string>::const_iterator it =
     std::find(names.begin(), names.end(), n);
   
   Assert(it != names.end(), ExcMessage("An entry with this name does not exist"));
index 7c8241a2734813858309a13cdc82ef8bf37708c1..07f1a24ecbf76f34982eda8651a71378aed557e8 100644 (file)
@@ -23,6 +23,8 @@
 #include <deal.II/base/exceptions.h>
 #include <deal.II/base/memory_consumption.h>
 #include <deal.II/base/parallel.h>
+#include <boost/serialization/array.hpp>
+#include <boost/serialization/split_member.hpp>
 
 #include <cstring>
 
@@ -152,6 +154,11 @@ public:
   void insert_back (ForwardIterator begin,
                     ForwardIterator end);
 
+  /**
+   * Fills the vector with size() copies of the given input
+   */
+  void fill (const T &element);
+
   /**
    * Swaps the given vector with the calling vector.
    */
@@ -211,6 +218,22 @@ public:
    */
   size_type memory_consumption () const;
 
+  /**
+   * Write the data of this object to
+   * a stream for the purpose of serialization.
+   */
+  template <class Archive>
+  void save (Archive &ar, const unsigned int version) const;
+
+  /**
+   * Read the data of this object
+   * from a stream for the purpose of serialization.
+   */
+  template <class Archive>
+  void load (Archive &ar, const unsigned int version);
+
+  BOOST_SERIALIZATION_SPLIT_MEMBER()
+
 private:
 
   /**
@@ -341,7 +364,11 @@ namespace internal
       if (size == 0)
         return;
 
-      if (std_cxx1x::is_trivial<T>::value == true)
+      // do not use memcmp for long double because on some systems it does not
+      // completely fill its memory and may lead to false positives in
+      // e.g. valgrind
+      if (std_cxx1x::is_trivial<T>::value == true &&
+          types_are_equal<T,long double>::value == false)
         {
           const unsigned char zero [sizeof(T)] = {};
           // cast element to (void*) to silence compiler warning for virtual
@@ -380,6 +407,7 @@ namespace internal
     mutable T *destination_;
     bool trivial_element;
   };
+
 } // end of namespace internal
 
 
@@ -441,7 +469,7 @@ inline
 AlignedVector<T>&
 AlignedVector<T>::operator = (const AlignedVector<T> &vec)
 {
-  clear();
+  resize(0);
   resize_fast (vec._end_data - vec._data);
   internal::AlignedVectorMove<T> (vec._data, vec._end_data, _data, true);
   return *this;
@@ -477,8 +505,7 @@ AlignedVector<T>::resize (const size_type size_in,
   // now _size is set correctly, need to set the
   // values
   if (size_in > old_size)
-    internal::AlignedVectorSet<T> (size_in-old_size, init,
-                                   _data+old_size);
+    dealii::internal::AlignedVectorSet<T> (size_in-old_size, init, _data+old_size);
 }
 
 
@@ -616,6 +643,16 @@ AlignedVector<T>::insert_back (ForwardIterator begin,
 
 
 
+template < class T >
+inline
+void
+AlignedVector<T>::fill (const T &value)
+{
+  dealii::internal::AlignedVectorSet<T> (size(), value, _data);
+}
+
+
+
 template < class T >
 inline
 void
@@ -720,13 +757,48 @@ AlignedVector<T>::end () const
 
 
 
+template < class T >
+template < class Archive >
+inline
+void
+AlignedVector<T>::save (Archive &ar, const unsigned int) const
+{
+  size_type vec_size (size());
+  ar &vec_size;
+  if (vec_size > 0)
+    ar &boost::serialization::make_array(_data, vec_size);
+}
+
+
+
+template < class T >
+template < class Archive >
+inline
+void
+AlignedVector<T>::load (Archive &ar, const unsigned int)
+{
+  size_type vec_size = 0;
+  ar &vec_size ;
+
+  if (vec_size > 0)
+    {
+      reserve(vec_size);
+      ar &boost::serialization::make_array(_data, vec_size);
+      _end_data = _data + vec_size;
+    }
+}
+
+
+
 template < class T >
 inline
 typename AlignedVector<T>::size_type
 AlignedVector<T>::memory_consumption () const
 {
-  size_type memory = sizeof(this);
-  memory += sizeof(T) * capacity();
+  size_type memory = sizeof(*this);
+  for (const T* t = _data ; t != _end_data; ++t)
+    memory += dealii::MemoryConsumption::memory_consumption(*t);
+  memory += sizeof(T) * (_end_allocated-_end_data);
   return memory;
 }
 
index d16140c8c0e1bd4b33916d0f134f2ff9b4c59c62..1d99e497ba8745314341051f86dad10748f5d406 100644 (file)
  * Defined if there is no const operator() in the class type returned
  * by std::bind.
  */
-#cmakedefine DEAL_II_BOOST_BIND_NO_CONST_OP_PARENTHESES
+#cmakedefine DEAL_II_BIND_NO_CONST_OP_PARENTHESES
 
 /** Defined if the compiler incorrectly deduces a constexpr as not being a
  * constant integral expression under certain optimization (notably
index ea0a249a98553fe4fa12344f4e5c0ab7c0f94277..fe2be969d1c86c929794cff07549626a9d1fdd00 100644 (file)
@@ -1762,7 +1762,8 @@ namespace DataOutBase
    * need a <code>.pvtu</code> file that describes which VTU files form
    * a group. The DataOutInterface::write_pvtu_record() function can
    * generate such a master record. Likewise,
-   * DataOutInterface::write_visit_record() does the same for VisIt.
+   * DataOutInterface::write_visit_record() does the same for VisIt
+   * (although VisIt can also read <code>pvtu</code> records since version 2.5.1).
    * Finally, for time dependent problems, you may also want to look
    * at DataOutInterface::write_pvd_record()
    *
@@ -2239,11 +2240,12 @@ public:
    * function can generate such a
    * master record. Likewise,
    * DataOutInterface::write_visit_record()
-   * does the same for VisIt. Finally,
-   * DataOutInterface::write_pvd_record()
-  * can be used to group together
-  * the files that jointly make up
-  * a time dependent simulation.
+   * does the same for older versions of VisIt
+   * (although VisIt can also read <code>pvtu</code> records since version 2.5.1).
+   * Finally, DataOutInterface::write_pvd_record()
+   * can be used to group together
+   * the files that jointly make up
+   * a time dependent simulation.
    */
   void write_vtu (std::ostream &out) const;
 
@@ -2297,17 +2299,15 @@ public:
    * @note The use of this function is
    * explained in step-40.
    *
-  * @note In order to tell Paraview to
-  * group together multiple <code>pvtu</code>
-  * files that each describe one time
-  * step of a time dependent simulation,
-  * see the
+   * @note In order to tell Paraview to
+   * group together multiple <code>pvtu</code>
+   * files that each describe one time
+   * step of a time dependent simulation,
+   * see the
    * DataOutInterface::write_pvd_record()
-  * function.
-  *
-   * @note At the time of writing,
-   * the other big VTK-based
-   * visualization program, VisIt,
+   * function.
+   *
+   * @note Older versions of VisIt (before 2.5.1),
    * can not read <code>pvtu</code>
    * records. However, it can read
    * visit records as written by
@@ -2374,7 +2374,7 @@ public:
 
   /**
    * This function is the exact equivalent of the write_pvtu_record()
-   * function but for the VisIt visualization program and for one visualization graph
+   * function but for older versions of the VisIt visualization program and for one visualization graph
    * (or one time step only). See there for the purpose of this function.
    *
    * This function is documented in the "Creating a master file for
index a42f4ca40167dbbd833f7080028bc16880512f67..b88f670ca2118ab274abdb2d3ed4712f8579cc88 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2000 - 2013 by the deal.II authors
+// Copyright (C) 2000 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
 DEAL_II_NAMESPACE_OPEN
 
 
+// forward declaration
+template <typename T> class VectorizedArray;
+
+
 /**
  * This namespace provides functions helping to determine the amount
  * of memory used by objects. The goal is not necessarily to give the
@@ -198,6 +202,14 @@ namespace MemoryConsumption
   inline
   std::size_t memory_consumption (const std::complex<T> &);
 
+  /**
+   * Determine the amount of memory in bytes consumed by a
+   * <tt>VectorizedArray</tt> variable.
+   */
+  template <typename T>
+  inline
+  std::size_t memory_consumption (const VectorizedArray<T> &);
+
   /**
    * Determine an estimate of the
    * amount of memory in bytes
@@ -522,6 +534,7 @@ namespace MemoryConsumption
   }
 
 
+
   template <typename T>
   inline
   std::size_t memory_consumption (const std::complex<T> &)
@@ -531,6 +544,15 @@ namespace MemoryConsumption
 
 
 
+  template <typename T>
+  inline
+  std::size_t memory_consumption (const VectorizedArray<T> &)
+  {
+    return sizeof(VectorizedArray<T>);
+  }
+
+
+
   inline
   std::size_t memory_consumption (const std::string &s)
   {
index 4ab52a338d294d16247dca0580e81f63c0c161fb..9a2e1751750e31b433145635958ae806e1ca4c83 100644 (file)
@@ -475,8 +475,9 @@ namespace parallel
     f (begin, end);
 #  else
     // work around a problem with MS VC++ where there is no const
-    // operator() in Function
-    Function(f) (begin, end);
+    // operator() in 'Function' if 'Function' is the result of std::bind
+    Function ff = f;
+    ff (begin, end);
 #  endif
 #else
     tbb::parallel_for (tbb::blocked_range<RangeType>
@@ -758,11 +759,12 @@ namespace parallel
     (void) grainsize;
 
 #  ifndef DEAL_II_BIND_NO_CONST_OP_PARENTHESES
-    f (begin, end);
+    return f (begin, end);
 #  else
     // work around a problem with MS VC++ where there is no const
-    // operator() in Function
-    Function(f) (begin, end);
+    // operator() in 'Function' if 'Function' is the result of std::bind
+    Function ff = f;
+    return ff (begin, end);
 #  endif
 #else
     internal::ReductionOnSubranges<ResultType,Function>
index 890d8d9af476cf83152abde593d7d7c3e9efb64b..a861fa0089c23ab8725ad668a5c15912169a5ccf 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2002 - 2013 by the deal.II authors
+// Copyright (C) 2002 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -22,6 +22,7 @@
 #include <deal.II/base/subscriptor.h>
 #include <deal.II/base/table_indices.h>
 #include <deal.II/base/memory_consumption.h>
+#include <deal.II/base/aligned_vector.h>
 
 #include <cstddef>
 #include <algorithm>
@@ -86,11 +87,11 @@ namespace internal
       typedef const T value_type;
       typedef const TableBase<N,T> TableType;
 
-      typedef typename std::vector<T>::const_iterator iterator;
-      typedef typename std::vector<T>::const_iterator const_iterator;
+      typedef typename AlignedVector<T>::const_iterator iterator;
+      typedef typename AlignedVector<T>::const_iterator const_iterator;
 
-      typedef typename std::vector<T>::const_reference reference;
-      typedef typename std::vector<T>::const_reference const_reference;
+      typedef typename AlignedVector<T>::const_reference reference;
+      typedef typename AlignedVector<T>::const_reference const_reference;
     };
 
     /**
@@ -104,11 +105,11 @@ namespace internal
       typedef T value_type;
       typedef TableBase<N,T> TableType;
 
-      typedef typename std::vector<T>::iterator iterator;
-      typedef typename std::vector<T>::const_iterator const_iterator;
+      typedef typename AlignedVector<T>::iterator iterator;
+      typedef typename AlignedVector<T>::const_iterator const_iterator;
 
-      typedef typename std::vector<T>::reference reference;
-      typedef typename std::vector<T>::const_reference const_reference;
+      typedef typename AlignedVector<T>::reference reference;
+      typedef typename AlignedVector<T>::const_reference const_reference;
     };
 
 
@@ -648,7 +649,7 @@ public:
    * Return a read-write reference
    * to the indicated element.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<N> &indices);
 
   /**
@@ -664,7 +665,7 @@ public:
    * don't know here whether
    * copying is expensive or not.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<N> &indices) const;
 
   /**
@@ -712,7 +713,7 @@ protected:
    * used internally and in
    * functions already checked.
    */
-  typename std::vector<T>::reference el (const TableIndices<N> &indices);
+  typename AlignedVector<T>::reference el (const TableIndices<N> &indices);
 
   /**
    * Return the value of the
@@ -732,7 +733,7 @@ protected:
    * don't know here whether
    * copying is expensive or not.
    */
-  typename std::vector<T>::const_reference el (const TableIndices<N> &indices) const;
+  typename AlignedVector<T>::const_reference el (const TableIndices<N> &indices) const;
 
   /**
    * @deprecated This function
@@ -746,13 +747,13 @@ protected:
    * cast from const), otherwise,
    * keep away!
    */
-  typename std::vector<T>::const_pointer data () const DEAL_II_DEPRECATED;
+  typename AlignedVector<T>::const_pointer data () const DEAL_II_DEPRECATED;
 
 protected:
   /**
    * Component-array.
    */
-  std::vector<T> values;
+  AlignedVector<T> values;
 
   /**
    * Size in each direction of the
@@ -869,7 +870,7 @@ public:
    * data element. Returns a
    * read-only reference.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator [] (const unsigned int i) const;
 
   /**
@@ -879,7 +880,7 @@ public:
    * data element. Returns a
    * read-write reference.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator [] (const unsigned int i);
 
   /**
@@ -889,7 +890,7 @@ public:
    * data element. Returns a
    * read-only reference.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const unsigned int i) const;
 
   /**
@@ -899,7 +900,7 @@ public:
    * data element. Returns a
    * read-write reference.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const unsigned int i);
 
   /**
@@ -908,7 +909,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<1> &indices);
 
   /**
@@ -917,7 +918,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<1> &indices) const;
 };
 
@@ -1049,7 +1050,7 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const unsigned int i,
                const unsigned int j) const;
 
@@ -1063,7 +1064,7 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const unsigned int i,
                const unsigned int j);
 
@@ -1073,7 +1074,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<2> &indices);
 
   /**
@@ -1082,7 +1083,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<2> &indices) const;
 
 
@@ -1118,8 +1119,8 @@ protected:
    * table classes for 2d arrays,
    * then called <tt>vector2d</tt>.
    */
-  typename std::vector<T>::reference el (const unsigned int i,
-                                         const unsigned int j);
+  typename AlignedVector<T>::reference el (const unsigned int i,
+                                           const unsigned int j);
 
   /**
    * Return the value of the
@@ -1145,8 +1146,8 @@ protected:
    * table classes for 2d arrays,
    * then called <tt>vector2d</tt>.
    */
-  typename std::vector<T>::const_reference el (const unsigned int i,
-                                               const unsigned int j) const;
+  typename AlignedVector<T>::const_reference el (const unsigned int i,
+                                                 const unsigned int j) const;
 };
 
 
@@ -1266,9 +1267,9 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference operator () (const unsigned int i,
-                                                        const unsigned int j,
-                                                        const unsigned int k) const;
+  typename AlignedVector<T>::const_reference operator () (const unsigned int i,
+                                                          const unsigned int j,
+                                                          const unsigned int k) const;
 
 
   /**
@@ -1280,9 +1281,9 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference operator () (const unsigned int i,
-                                                  const unsigned int j,
-                                                  const unsigned int k);
+  typename AlignedVector<T>::reference operator () (const unsigned int i,
+                                                    const unsigned int j,
+                                                    const unsigned int k);
 
   /**
    * Make the corresponding
@@ -1290,7 +1291,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference operator () (const TableIndices<3> &indices);
+  typename AlignedVector<T>::reference operator () (const TableIndices<3> &indices);
 
   /**
    * Make the corresponding
@@ -1298,7 +1299,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference operator () (const TableIndices<3> &indices) const;
+  typename AlignedVector<T>::const_reference operator () (const TableIndices<3> &indices) const;
 };
 
 
@@ -1370,10 +1371,10 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference operator () (const unsigned int i,
-                                                        const unsigned int j,
-                                                        const unsigned int k,
-                                                        const unsigned int l) const;
+  typename AlignedVector<T>::const_reference operator () (const unsigned int i,
+                                                          const unsigned int j,
+                                                          const unsigned int k,
+                                                          const unsigned int l) const;
 
 
   /**
@@ -1385,10 +1386,10 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference operator () (const unsigned int i,
-                                                  const unsigned int j,
-                                                  const unsigned int k,
-                                                  const unsigned int l);
+  typename AlignedVector<T>::reference operator () (const unsigned int i,
+                                                    const unsigned int j,
+                                                    const unsigned int k,
+                                                    const unsigned int l);
 
   /**
    * Make the corresponding
@@ -1396,7 +1397,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<4> &indices);
 
   /**
@@ -1405,7 +1406,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<4> &indices) const;
 };
 
@@ -1479,11 +1480,11 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference operator () (const unsigned int i,
-                                                        const unsigned int j,
-                                                        const unsigned int k,
-                                                        const unsigned int l,
-                                                        const unsigned int m) const;
+  typename AlignedVector<T>::const_reference operator () (const unsigned int i,
+                                                          const unsigned int j,
+                                                          const unsigned int k,
+                                                          const unsigned int l,
+                                                          const unsigned int m) const;
 
   /**
    * Direct access to one element
@@ -1494,11 +1495,11 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference operator () (const unsigned int i,
-                                                  const unsigned int j,
-                                                  const unsigned int k,
-                                                  const unsigned int l,
-                                                  const unsigned int m);
+  typename AlignedVector<T>::reference operator () (const unsigned int i,
+                                                    const unsigned int j,
+                                                    const unsigned int k,
+                                                    const unsigned int l,
+                                                    const unsigned int m);
 
   /**
    * Make the corresponding
@@ -1506,7 +1507,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<5> &indices);
 
   /**
@@ -1515,7 +1516,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<5> &indices) const;
 };
 
@@ -1590,12 +1591,12 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference operator () (const unsigned int i,
-                                                        const unsigned int j,
-                                                        const unsigned int k,
-                                                        const unsigned int l,
-                                                        const unsigned int m,
-                                                        const unsigned int n) const;
+  typename AlignedVector<T>::const_reference operator () (const unsigned int i,
+                                                          const unsigned int j,
+                                                          const unsigned int k,
+                                                          const unsigned int l,
+                                                          const unsigned int m,
+                                                          const unsigned int n) const;
 
   /**
    * Direct access to one element
@@ -1606,12 +1607,12 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference operator () (const unsigned int i,
-                                                  const unsigned int j,
-                                                  const unsigned int k,
-                                                  const unsigned int l,
-                                                  const unsigned int m,
-                                                  const unsigned int n);
+  typename AlignedVector<T>::reference operator () (const unsigned int i,
+                                                    const unsigned int j,
+                                                    const unsigned int k,
+                                                    const unsigned int l,
+                                                    const unsigned int m,
+                                                    const unsigned int n);
 
   /**
    * Make the corresponding
@@ -1619,7 +1620,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<6> &indices);
 
   /**
@@ -1628,7 +1629,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<6> &indices) const;
 };
 
@@ -1703,13 +1704,13 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference operator () (const unsigned int i,
-                                                        const unsigned int j,
-                                                        const unsigned int k,
-                                                        const unsigned int l,
-                                                        const unsigned int m,
-                                                        const unsigned int n,
-                                                        const unsigned int o) const;
+  typename AlignedVector<T>::const_reference operator () (const unsigned int i,
+                                                          const unsigned int j,
+                                                          const unsigned int k,
+                                                          const unsigned int l,
+                                                          const unsigned int m,
+                                                          const unsigned int n,
+                                                          const unsigned int o) const;
 
   /**
    * Direct access to one element
@@ -1720,13 +1721,13 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference operator () (const unsigned int i,
-                                                  const unsigned int j,
-                                                  const unsigned int k,
-                                                  const unsigned int l,
-                                                  const unsigned int m,
-                                                  const unsigned int n,
-                                                  const unsigned int o);
+  typename AlignedVector<T>::reference operator () (const unsigned int i,
+                                                    const unsigned int j,
+                                                    const unsigned int k,
+                                                    const unsigned int l,
+                                                    const unsigned int m,
+                                                    const unsigned int n,
+                                                    const unsigned int o);
 
   /**
    * Make the corresponding
@@ -1734,7 +1735,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::reference
+  typename AlignedVector<T>::reference
   operator () (const TableIndices<7> &indices);
 
   /**
@@ -1743,7 +1744,7 @@ public:
    * base class available also in
    * this class.
    */
-  typename std::vector<T>::const_reference
+  typename AlignedVector<T>::const_reference
   operator () (const TableIndices<7> &indices) const;
 };
 
@@ -1803,8 +1804,8 @@ public:
    * This version of the function
    * only allows read access.
    */
-  typename std::vector<T>::const_reference operator () (const unsigned int i,
-                                                        const unsigned int j) const;
+  typename AlignedVector<T>::const_reference operator () (const unsigned int i,
+                                                          const unsigned int j) const;
 
   /**
    * Direct access to one element
@@ -1815,8 +1816,8 @@ public:
    * This version of the function
    * allows read-write access.
    */
-  typename std::vector<T>::reference operator () (const unsigned int i,
-                                                  const unsigned int j);
+  typename AlignedVector<T>::reference operator () (const unsigned int i,
+                                                    const unsigned int j);
 
   /**
    * Number of rows. This function
@@ -1850,7 +1851,7 @@ protected:
    * table classes for 2d arrays,
    * then called <tt>vector2d</tt>.
    */
-  typename std::vector<T>::reference el (const unsigned int i,
+  typename AlignedVector<T>::reference el (const unsigned int i,
                                          const unsigned int j);
 
   /**
@@ -1877,7 +1878,7 @@ protected:
    * table classes for 2d arrays,
    * then called <tt>vector2d</tt>.
    */
-  typename std::vector<T>::const_reference el (const unsigned int i,
+  typename AlignedVector<T>::const_reference el (const unsigned int i,
                                                const unsigned int j) const;
 };
 
@@ -1921,9 +1922,8 @@ TableBase<N,T>::TableBase (const TableBase<N,T> &src)
   :
   Subscriptor ()
 {
-  reinit (src.table_size);
-  if (src.n_elements() != 0)
-    std::copy (src.values.begin(), src.values.end(), values.begin());
+  values = src.values;
+  reinit (src.table_size, true);
 }
 
 
@@ -2112,9 +2112,9 @@ inline
 TableBase<N,T> &
 TableBase<N,T>::operator = (const TableBase<N,T> &m)
 {
-  reinit (m.size());
-  if (!empty())
-    std::copy (m.values.begin(), m.values.end(), values.begin());
+  if (!m.empty())
+    values = m.values;
+  reinit (m.size(), true);
 
   return *this;
 }
@@ -2127,7 +2127,7 @@ inline
 TableBase<N,T> &
 TableBase<N,T>::operator = (const TableBase<N,T2> &m)
 {
-  reinit (m.size());
+  reinit (m.size(), true);
   if (!empty())
     std::copy (m.values.begin(), m.values.begin() + n_elements(),
                values.begin());
@@ -2151,8 +2151,9 @@ inline
 void
 TableBase<N,T>::reset_values ()
 {
+  // use parallel set operation
   if (n_elements() != 0)
-    std::fill (values.begin(), values.end(), T());
+    values.fill(T());
 }
 
 
@@ -2163,7 +2164,7 @@ void
 TableBase<N,T>::fill (const T &value)
 {
   if (n_elements() != 0)
-    std::fill (values.begin(), values.end(), value);
+    values.fill(value);
 }
 
 
@@ -2179,8 +2180,7 @@ TableBase<N,T>::reinit (const TableIndices<N> &new_sizes,
 
   const unsigned int new_size = n_elements();
 
-  // if zero size was given: free all
-  // memory
+  // if zero size was given: free all memory
   if (new_size == 0)
     {
       values.resize (0);
@@ -2193,27 +2193,11 @@ TableBase<N,T>::reinit (const TableIndices<N> &new_sizes,
       return;
     }
 
-  // if new size is nonzero:
-  // if necessary allocate
-  // additional memory
-  values.resize (new_size);
-
-  // reinitialize contents of old or
-  // new memory. note that we
-  // actually need to do this here,
-  // even in the case that we
-  // reallocated memory, since per
-  // C++ standard, clause 5.3.4/15
-  // the newly allocated objects are
-  // only default initialized by
-  // operator new[] if they are
-  // non-POD type. In other words, if
-  // we have a table of doubles, then
-  // their values after calling 'new
-  // double[val_size]' is
-  // indetermined.
-  if (fast == false)
-    reset_values ();
+  // if new size is nonzero: if necessary allocate additional memory, and if
+  // not fast resize, zero out all values)
+  values.resize_fast (new_size);
+  if (!fast)
+    values.fill(T());
 }
 
 
@@ -2317,7 +2301,7 @@ TableBase<N,T>::fill (InputIterator entries,
           ExcMessage("Trying to fill an empty matrix."));
 
   if (C_style_indexing)
-    for (typename std::vector<T>::iterator p = values.begin();
+    for (typename AlignedVector<T>::iterator p = values.begin();
         p != values.end(); ++p)
       *p = *entries++;
   else
@@ -2380,7 +2364,7 @@ TableBase<N,T>::position (const TableIndices<N> &indices) const
 
 template <int N, typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 TableBase<N,T>::operator () (const TableIndices<N> &indices) const
 {
   for (unsigned int n=0; n<N; ++n)
@@ -2393,7 +2377,7 @@ TableBase<N,T>::operator () (const TableIndices<N> &indices) const
 
 template <int N, typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 TableBase<N,T>::operator () (const TableIndices<N> &indices)
 {
   for (unsigned int n=0; n<N; ++n)
@@ -2406,7 +2390,7 @@ TableBase<N,T>::operator () (const TableIndices<N> &indices)
 
 template <int N, typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 TableBase<N,T>::el (const TableIndices<N> &indices) const
 {
   return values[position(indices)];
@@ -2416,7 +2400,7 @@ TableBase<N,T>::el (const TableIndices<N> &indices) const
 
 template <int N, typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 TableBase<N,T>::el (const TableIndices<N> &indices)
 {
   Assert (position(indices) < values.size(),
@@ -2428,11 +2412,11 @@ TableBase<N,T>::el (const TableIndices<N> &indices)
 
 template <int N, typename T>
 inline
-typename std::vector<T>::const_pointer
+typename AlignedVector<T>::const_pointer
 TableBase<N,T>::data () const
 {
   if (values.size() == 0)
-    return typename std::vector<T>::const_pointer();
+    return typename AlignedVector<T>::const_pointer();
   else
     return &values[0];
 }
@@ -2472,7 +2456,7 @@ Table<1,T>::Table (const unsigned int size,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<1,T>::operator [] (const unsigned int i) const
 {
   Assert (i < this->table_size[0],
@@ -2484,7 +2468,7 @@ Table<1,T>::operator [] (const unsigned int i) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<1,T>::operator [] (const unsigned int i)
 {
   Assert (i < this->table_size[0],
@@ -2496,7 +2480,7 @@ Table<1,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<1,T>::operator () (const unsigned int i) const
 {
   Assert (i < this->table_size[0],
@@ -2508,7 +2492,7 @@ Table<1,T>::operator () (const unsigned int i) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<1,T>::operator () (const unsigned int i)
 {
   Assert (i < this->table_size[0],
@@ -2520,7 +2504,7 @@ Table<1,T>::operator () (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<1,T>::operator () (const TableIndices<1> &indices) const
 {
   return TableBase<1,T>::operator () (indices);
@@ -2530,7 +2514,7 @@ Table<1,T>::operator () (const TableIndices<1> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<1,T>::operator () (const TableIndices<1> &indices)
 {
   return TableBase<1,T>::operator () (indices);
@@ -2611,7 +2595,7 @@ Table<2,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<2,T>::operator () (const unsigned int i,
                          const unsigned int j) const
 {
@@ -2626,7 +2610,7 @@ Table<2,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<2,T>::operator () (const unsigned int i,
                          const unsigned int j)
 {
@@ -2641,7 +2625,7 @@ Table<2,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<2,T>::operator () (const TableIndices<2> &indices) const
 {
   return TableBase<2,T>::operator () (indices);
@@ -2651,7 +2635,7 @@ Table<2,T>::operator () (const TableIndices<2> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<2,T>::operator () (const TableIndices<2> &indices)
 {
   return TableBase<2,T>::operator () (indices);
@@ -2661,7 +2645,7 @@ Table<2,T>::operator () (const TableIndices<2> &indices)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<2,T>::el (const unsigned int i,
                 const unsigned int j) const
 {
@@ -2672,7 +2656,7 @@ Table<2,T>::el (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<2,T>::el (const unsigned int i,
                 const unsigned int j)
 {
@@ -2734,7 +2718,7 @@ TransposeTable<T>::reinit (const unsigned int size1,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 TransposeTable<T>::operator () (const unsigned int i,
                                 const unsigned int j) const
 {
@@ -2749,7 +2733,7 @@ TransposeTable<T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 TransposeTable<T>::operator () (const unsigned int i,
                                 const unsigned int j)
 {
@@ -2764,7 +2748,7 @@ TransposeTable<T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 TransposeTable<T>::el (const unsigned int i,
                        const unsigned int j) const
 {
@@ -2775,7 +2759,7 @@ TransposeTable<T>::el (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 TransposeTable<T>::el (const unsigned int i,
                        const unsigned int j)
 {
@@ -2875,7 +2859,7 @@ Table<3,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<3,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k) const
@@ -2894,7 +2878,7 @@ Table<3,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<3,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k)
@@ -2913,7 +2897,7 @@ Table<3,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<3,T>::operator () (const TableIndices<3> &indices) const
 {
   return TableBase<3,T>::operator () (indices);
@@ -2923,7 +2907,7 @@ Table<3,T>::operator () (const TableIndices<3> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<3,T>::operator () (const TableIndices<3> &indices)
 {
   return TableBase<3,T>::operator () (indices);
@@ -2986,7 +2970,7 @@ Table<4,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<4,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3009,7 +2993,7 @@ Table<4,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<4,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3032,7 +3016,7 @@ Table<4,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<4,T>::operator () (const TableIndices<4> &indices) const
 {
   return TableBase<4,T>::operator () (indices);
@@ -3042,7 +3026,7 @@ Table<4,T>::operator () (const TableIndices<4> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<4,T>::operator () (const TableIndices<4> &indices)
 {
   return TableBase<4,T>::operator () (indices);
@@ -3108,7 +3092,7 @@ Table<5,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<5,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3135,7 +3119,7 @@ Table<5,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<5,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3162,7 +3146,7 @@ Table<5,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<5,T>::operator () (const TableIndices<5> &indices) const
 {
   return TableBase<5,T>::operator () (indices);
@@ -3172,7 +3156,7 @@ Table<5,T>::operator () (const TableIndices<5> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<5,T>::operator () (const TableIndices<5> &indices)
 {
   return TableBase<5,T>::operator () (indices);
@@ -3241,7 +3225,7 @@ Table<6,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<6,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3272,7 +3256,7 @@ Table<6,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<6,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3303,7 +3287,7 @@ Table<6,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<6,T>::operator () (const TableIndices<6> &indices) const
 {
   return TableBase<6,T>::operator () (indices);
@@ -3313,7 +3297,7 @@ Table<6,T>::operator () (const TableIndices<6> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<6,T>::operator () (const TableIndices<6> &indices)
 {
   return TableBase<6,T>::operator () (indices);
@@ -3385,7 +3369,7 @@ Table<7,T>::operator [] (const unsigned int i)
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<7,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3420,7 +3404,7 @@ Table<7,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<7,T>::operator () (const unsigned int i,
                          const unsigned int j,
                          const unsigned int k,
@@ -3455,7 +3439,7 @@ Table<7,T>::operator () (const unsigned int i,
 
 template <typename T>
 inline
-typename std::vector<T>::const_reference
+typename AlignedVector<T>::const_reference
 Table<7,T>::operator () (const TableIndices<7> &indices) const
 {
   return TableBase<7,T>::operator () (indices);
@@ -3465,7 +3449,7 @@ Table<7,T>::operator () (const TableIndices<7> &indices) const
 
 template <typename T>
 inline
-typename std::vector<T>::reference
+typename AlignedVector<T>::reference
 Table<7,T>::operator () (const TableIndices<7> &indices)
 {
   return TableBase<7,T>::operator () (indices);
index e3a75901139d6767ed7e00b30d6b692d95788bed..87a46e5313f967047fca4997a3a2564f4b06278a 100644 (file)
@@ -43,7 +43,7 @@ namespace TimeStepping
    *   - Implicit methods:
    *     - BACKWARD_EULER: first order
    *     - IMPLICIT_MIDPOINT: second order
-   *     - CRANK_NICHOLSON: second order
+   *     - CRANK_NICOLSON: second order
    *     - SDIRK_TWO_STAGES: second order
    *   - Embedded explicit methods:
    *     - HEUN_EULER: second order
index 8a97eb0f73e4299de7d89da8bfd302b51be3601c..c3c08f117d0dbbcd38559857474efcede58025c8 100644 (file)
@@ -505,7 +505,7 @@ namespace TimeStepping
         tmp[3] = -212./729.;
         this->a.push_back(tmp);
         tmp.resize(5);
-        tmp[0] = -9017./3168.;
+        tmp[0] = 9017./3168.;
         tmp[1] = -355./33.;
         tmp[2] = 46732./5247.;
         tmp[3] = 49./176.;
index 1c56c862d52c3bd5b4e26377f1d6091d427203ec..b2ed4084f5ec4106e13c36a2a774dc9b5ab0ba75 100644 (file)
@@ -290,12 +290,6 @@ public:
    */
   static bool is_level_cell();
 
-  /**
-   * Return an iterator pointing to the the parent.
-   */
-  TriaIterator<DoFAccessor<structdim,DH, level_dof_access> >
-  parent () const;
-
   /**
    *  @name Accessing sub-objects
    */
@@ -826,12 +820,6 @@ public:
    */
   void copy_from (const TriaAccessorBase<0, 1, spacedim> &da);
 
-  /**
-   * Return an iterator pointing to the the parent.
-   */
-  TriaIterator<DoFAccessor<0,DH<1,spacedim>, level_dof_access> >
-  parent () const;
-
   /**
    *  @name Accessing sub-objects
    */
@@ -1259,9 +1247,13 @@ public:
    */
 
   /**
-   * Return the parent as a DoF cell iterator. This function is needed
-   * since the parent function of the base class returns a cell
-   * accessor without access to the DoF data.
+   * Return the parent of this cell as a DoF cell iterator.
+   * If the parent does not exist (i.e., if the object is at the coarsest level of
+   * the mesh hierarchy), an exception is generated.
+   *
+   * This function is needed
+   * since the parent function of the base class CellAccessor returns a triangulation
+   * cell accessor without access to the DoF data.
    */
   TriaIterator<DoFCellAccessor<DH, level_dof_access> >
   parent () const;
index ec4b9754424cfd9a6b481d92073d97418f8c6c09..42446a05c0d516235405b33551b0d3a9cb3a0308 100644 (file)
@@ -188,34 +188,6 @@ DoFAccessor<structdim,DH,level_dof_access>::child (const unsigned int i) const
 }
 
 
-template <int structdim, class DH, bool level_dof_access>
-inline
-TriaIterator<DoFAccessor<structdim,DH,level_dof_access> >
-DoFAccessor<structdim,DH,level_dof_access>::parent () const
-{
-  Assert (static_cast<unsigned int>(this->level()) < this->dof_handler->levels.size(),
-          ExcMessage ("DoFHandler not initialized"));
-  Assert (this->level () > 0,
-          ExcMessage ("Cell is at coarsest level."));
-
-  int previous_level;
-
-  if (DH::dimension==structdim)
-    previous_level = this->level () - 1;
-
-  else
-    previous_level = 0;
-
-  TriaIterator<DoFAccessor<structdim,DH,level_dof_access> > q (this->tria,
-                                                  previous_level,
-                                                  this->parent_index (),
-                                                  this->dof_handler);
-
-  return q;
-}
-
-
-
 namespace internal
 {
   namespace DoFAccessor
index 22a6a74efa38bcda9043beeaf722fc440c503dbb..45f72ff92dc2b4b963483118c9e28f78eb589fba 100644 (file)
@@ -1656,18 +1656,23 @@ namespace DoFTools
    * works on algebraic properties of the respective matrix, it has no
    * chance to detect whether the matrix comes from a scalar or a
    * vector valued problem. However, a near null space supplies
-   * exactly the needed information about these components.  The null
-   * space will consist of as many vectors as there are true arguments
-   * in <tt>component_mask</tt> (see @ref GlossComponentMask), each of
-   * which will be one in one vector component and zero in all
-   * others. We store this object in a vector of vectors, where the
-   * outer vector is of the size of the number of selected components,
-   * and each inner vector has as many components as there are
-   * (locally owned) degrees of freedom in the selected
-   * components. Note that any matrix associated with this null space
+   * exactly the needed information about the components placement of vector
+   * components within the matrix. The null space (or rather, the constant
+   * modes) is provided by the finite element underlying the given DoFHandler
+   * and for most elements, the null space will consist of as many vectors as
+   * there are true arguments in <tt>component_mask</tt> (see @ref
+   * GlossComponentMask), each of which will be one in one vector component
+   * and zero in all others. However, the representation of the constant
+   * function for e.g. FE_DGP is different (the first component on each
+   * element one, all other components zero), and some scalar elements may
+   * even have two constant modes (FE_Q_DG0). Therefore, we store this object
+   * in a vector of vectors, where the outer vector contains the collection of
+   * the actual constant modes on the DoFHandler. Each inner vector has as
+   * many components as there are (locally owned) degrees of freedom in the
+   * selected components. Note that any matrix associated with this null space
    * must have been constructed using the same <tt>component_mask</tt>
-   * argument, since the numbering of DoFs is done relative to the
-   * selected dofs, not to all dofs.
+   * argument, since the numbering of DoFs is done relative to the selected
+   * dofs, not to all dofs.
    *
    * The main reason for this program is the use of the null space
    * with the AMG preconditioner.
index 761a1c4a0af9a0c67c3fc87e8aaafd584d3b1c3d..1be926e630b3694c7133ce09a97ab4673f7f5b34 100644 (file)
@@ -23,7 +23,7 @@
 #include <deal.II/fe/fe_values_extractors.h>
 #include <deal.II/fe/component_mask.h>
 #include <deal.II/fe/block_mask.h>
-
+#include <deal.II/fe/mapping.h>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -1314,13 +1314,22 @@ public:
   block_mask (const ComponentMask &component_mask) const;
 
   /**
-   * Returns a list of constant modes of the element. The returns table has as
-   * many rows as there are components in the element and dofs_per_cell
-   * columns. To each component of the finite element, the row in the returned
-   * table contains a basis representation of the constant function 1 on the
-   * element.
+   * Returns a list of constant modes of the element. The number of rows in
+   * the resulting table depends on the elements in use. For standard
+   * elements, the table has as many rows as there are components in the
+   * element and dofs_per_cell columns. To each component of the finite
+   * element, the row in the returned table contains a basis representation of
+   * the constant function 1 on the element. However, there are some scalar
+   * elements where there is more than one constant mode, e.g. the element
+   * FE_Q_DG0.
+   *
+   * In order to match the constant modes to the actual components in the
+   * element, the returned data structure also returns a vector with as many
+   * components as there are constant modes on the element that contains the
+   * component number.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>,std::vector<unsigned int> >
+  get_constant_modes () const;
 
   //@}
 
index 35e7dae1af82e65fafe233c924fa72af8b7f1339..6622706e59ad1b2c27a5b004caf9fdd1177b93e2 100644 (file)
@@ -26,8 +26,8 @@
 #include <deal.II/base/vector_slice.h>
 #include <deal.II/base/geometry_info.h>
 #include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/block_indices.h>
 #include <deal.II/fe/fe_update_flags.h>
-#include <deal.II/fe/mapping.h>
 
 #include <string>
 #include <vector>
index 25c9e9e3d0e6d7a0306550e71e9a463b803cbfd0..3eb640034185c95c9c252727fdbd636cd563fccd 100644 (file)
@@ -37,7 +37,7 @@ DEAL_II_NAMESPACE_OPEN
  *
  * @todo This is for 2D only.
  *
- * @todo Transformation works only for uniform, Cartesian meshes.
+ * @todo Restriction matrices are missing.
  *
  * The matching pressure space for FE_BDM of order <i>k</i> is the
  * element FE_DGP of order <i>k</i>.
index 6343a7c637fdc102dc5c623fc09fdf4612df2a39..9fd6a5f04a7f87930a61970c484574343f65f95d 100644 (file)
@@ -331,7 +331,8 @@ public:
    * Returns a list of constant modes of the element. For this element, the
    * first entry is true, all other are false.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
 protected:
 
index 103c135c7e6c2257da58a277bcd5b85d21c21040..ec0c7f9e18abd3049e31bc6a43a83cd1d8ed60d3 100644 (file)
@@ -331,7 +331,8 @@ public:
    * Returns a list of constant modes of the element. For this element, it
    * simply returns one row with all entries set to true.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
   /**
    * Determine an estimate for the
index f6bd4606b5027dad2e3c254d8601fe20536da107..2ee366f50fb55bd77443d0eba8320d3848d3e538 100644 (file)
@@ -128,7 +128,8 @@ public:
    * Returns a list of constant modes of the element. For this element, it
    * simply returns one row with all entries set to true.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
 private:
   /**
@@ -230,7 +231,8 @@ public:
    * Returns a list of constant modes of the element. For this element, it
    * simply returns one row with all entries set to true.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
 protected:
   virtual
@@ -437,9 +439,10 @@ public:
    * Returns a list of constant modes of the element. For this element, the
    * first entry on each face is true, all other are false (as the constant
    * function is represented by the first base function of Legendre
-   * polynomials.
+   * polynomials).
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
 private:
   /**
index 81dad103af2f725db6406de9bce67b5921cb2ba8..f09e5010bdb333cb1b71996b9b8a5ebd6c4c3980 100644 (file)
@@ -285,7 +285,8 @@ public:
   /**
    * Returns a list of constant modes of the element.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
   virtual std::size_t memory_consumption () const;
   virtual FiniteElement<dim> *clone() const;
index 6870f28fd27a8387dda487ae681cb8eb1d8a21ee..6bfb8a2ace2cabdd67e843670e866a970c8e02d4 100644 (file)
@@ -199,7 +199,8 @@ public:
    * Returns a list of constant modes of the element. For this element, the
    * list consists of true arguments for all components.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
   /**
    * @name Functions to support hp
index 6f0f339e01fc1d9a6fb7eecc666c831fdda63bf0..90b28f579acfb6cefe7e32fbc463ac1496490880 100644 (file)
@@ -312,6 +312,15 @@ public:
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
 
+  /**
+   * Returns a list of constant modes of the element. For this element, there
+   * are two constant modes despite the element is scalar: The first constant
+   * mode is all ones for the usual FE_Q basis and the second one only using
+   * the discontinuous part.
+   */
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
+
 protected:
   /**
    * @p clone function instead of a copy constructor.
index fd6602c5b11757ca88f15807f59227274e183e06..64d3b644cf97c1d6f1e6fc8618875c3d36321762 100644 (file)
@@ -386,7 +386,8 @@ public:
    * list consists of true arguments for the first vertex shape functions and
    * false for the remaining ones.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
 protected:
   /**
index bda93239da3c6ecc1662a9eca40d16d4ecd9acc6..01182aef014b9c49e754e6613b2a373474408ca1 100644 (file)
@@ -148,10 +148,11 @@ public:
     const VectorSlice<const std::vector<std::vector<double> > > &values) const;
 
   /**
-   * Returns a list of constant modes of the element. For this element, the
-   * list consists of true arguments for all components.
+   * Returns a list of constant modes of the element. This method is currently
+   * not correctly implemented because it returns ones for all components.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
   virtual std::size_t memory_consumption () const;
   virtual FiniteElement<dim> *clone() const;
index 7022cdd694e57a3940590bcdb7baeeece25506ec..3744e734cc19d95e731716a6a2ea108f585610f2 100644 (file)
@@ -214,7 +214,7 @@ public:
   /**
    * Same as above but for any number of base elements. Pointers to the base
    * elements and their multiplicities are passed as vectors to this
-   * constructor. The length of these vectors is assumed to be equal.
+   * constructor. The lengths of these vectors are assumed to be equal.
    */
 
   FESystem (const std::vector<const FiniteElement<dim,spacedim>*> &fes,
@@ -476,7 +476,8 @@ public:
    * table contains a basis representation of the constant function 1 on the
    * element. Concatenates the constant modes of each base element.
    */
-  virtual Table<2,bool> get_constant_modes () const;
+  virtual std::pair<Table<2,bool>, std::vector<unsigned int> >
+  get_constant_modes () const;
 
   /**
    * @name Functions to support hp
index 59975c19290141d561b741c567a44136eed6888b..95eb1d3056565c62c69fdb7c5667e564a0235ce4 100644 (file)
@@ -22,7 +22,6 @@
 #include <deal.II/base/derivative_form.h>
 #include <deal.II/base/vector_slice.h>
 #include <deal.II/grid/tria.h>
-#include <deal.II/dofs/dof_handler.h>
 #include <deal.II/fe/fe_update_flags.h>
 
 #include <cmath>
@@ -80,10 +79,8 @@ enum MappingType
    */
   mapping_piola = 0x0100,
   /**
-     transformation for the gradient of
-     for a vector field
-     correspoing to a mapping_piola
-     transformation (see Mapping::transform() for details).
+     transformation for the gradient of a vector field corresponding to a
+     mapping_piola transformation (see Mapping::transform() for details).
   */
 
   mapping_piola_gradient = 0x0101,
index 0c708ab4eab1cd19d25d6c1633fa5663c14e5d8d..efdd65a8ae0f30dca5916286948c7724b3366659 100644 (file)
@@ -22,6 +22,7 @@
 #include <deal.II/base/exceptions.h>
 #include <deal.II/base/point.h>
 #include <deal.II/base/table.h>
+#include <deal.II/base/function.h>
 #include <deal.II/grid/tria.h>
 #include <map>
 
@@ -681,7 +682,7 @@ namespace GridGenerator
                          Triangulation<3,3>        &result);
 
   /**
-   * This function transformes the @p Triangulation @p tria smoothly to a
+   * This function transforms the @p Triangulation @p tria smoothly to a
    * domain that is described by the boundary points in the map @p
    * new_points. This map maps the point indices to the boundary points in the
    * transformed domain.
@@ -692,11 +693,21 @@ namespace GridGenerator
    *
    * In 1d, this function is not currently implemented.
    *
+   * An optional @p coefficient for the Laplace problem an be used to control the amount of
+   * mesh deformation in different parts of the domain.
+   * Larger values make cells less prone to deformation (effectively increasing their stiffness).
+   * The coefficient is evaluated in the coordinate system of the old,
+   * undeformed configuration of the triangulation as input, i.e., before
+   * the transformation is applied.
+   * Should this function be provided, sensible results can only be expected if
+   * all coefficients are positive.
+   *
    * @deprecated This function has been moved to GridTools::laplace_transform
    */
   template <int dim>
   void laplace_transformation (Triangulation<dim> &tria,
-                               const std::map<unsigned int,Point<dim> > &new_points) DEAL_II_DEPRECATED;
+                               const std::map<unsigned int,Point<dim> > &new_points,
+                               const Function<dim> *coefficient = 0) DEAL_II_DEPRECATED;
 
   /**
    * Exception
index a439b3da7b1122c5b6367b12575f5009a0d94f52..09377b3774ece0f65601e49fb391176e747b3126 100644 (file)
@@ -236,8 +236,8 @@ namespace GridTools
                Triangulation<2> &triangulation);
 
   /**
-   * Transform the given triangulation smoothly to a different domain where
-   * each of the vertices at the boundary of the triangulation is mapped to
+   * Transform the given triangulation smoothly to a different domain where,
+   * typically, each of the vertices at the boundary of the triangulation is mapped to
    * the corresponding points in the @p new_points map.
    *
    * The way this function works is that it solves a Laplace equation for each
@@ -261,11 +261,20 @@ namespace GridTools
    * @param[in,out] tria The Triangulation object. This object is changed in-place,
    * i.e., the previous locations of vertices are overwritten.
    *
+   * @param[in] coefficient An optional coefficient for the Laplace problem.
+   * Larger values make cells less prone to deformation (effectively increasing their stiffness).
+   * The coefficient is evaluated in the coordinate system of the old,
+   * undeformed configuration of the triangulation as input, i.e., before
+   * the transformation is applied.
+   * Should this function be provided, sensible results can only be expected if
+   * all coefficients are positive.
+   *
    * @note This function is not currently implemented for the 1d case.
    */
   template <int dim>
   void laplace_transform (const std::map<unsigned int,Point<dim> > &new_points,
-                          Triangulation<dim> &tria);
+                          Triangulation<dim> &tria,
+                          const Function<dim> *coefficient = 0);
 
   /**
    * Scale the entire triangulation
index 9b701b0884973006cd66179f52e6372ae8ff318a..9b26287ef463441e265433c935f4a08b80f0ae73 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1998 - 2013 by the deal.II authors
+// Copyright (C) 1998 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -449,9 +449,20 @@ public:
    */
 
   /**
-   *  Return the level the element
-   *  pointed to belongs to.
-   *  This is only valid for cells.
+   * For cells, this function returns the level within the mesh hierarchy at
+   * which this cell is located. For all other objects, the function returns
+   * zero.
+   *
+   * @note Within a Triangulation object, cells are uniquely identified by a
+   * pair <code>(level, index)</code> where the former is the cell's
+   * refinement level and the latter is the index of the cell within
+   * this refinement level (the former being what this function
+   * returns). Consequently, there may be multiple cells on different
+   * refinement levels but with the same index within their level.
+   * Contrary to this, if the current object corresponds to a face or
+   * edge, then the object is uniquely identified solely by its index
+   * as faces and edges do not have a refinement level. For these objects,
+   * the current function always returns zero as the level.
    */
   int level () const;
 
@@ -460,7 +471,7 @@ public:
    * element presently pointed to
    * on the present level.
    *
-   * Within a Triangulation object cells are uniquely identified by a
+   * Within a Triangulation object, cells are uniquely identified by a
    * pair <code>(level, index)</code> where the former is the cell's
    * refinement level and the latter is the index of the cell within
    * this refinement level (the latter being what this function
@@ -732,18 +743,6 @@ public:
    */
   bool used () const;
 
-  /**
-   *  Index of the parent.
-   *  The level of the parent is one
-   *  lower than that of the
-   *  present cell, if the parent
-   *  of a cell is accessed. If the
-   *  parent does not exist, -1 is
-   *  returned.
-   */
-  int parent_index () const;
-
-
   /**
    *  @name Accessing sub-objects
    */
@@ -1686,11 +1685,6 @@ private:
    */
   void clear_refinement_case () const;
 
-  /**
-   * Set the parent of a cell.
-   */
-  void set_parent (const unsigned int parent_index);
-
   /**
    *  Set the index of the ith
    *  child. Since the children
@@ -1963,12 +1957,6 @@ public:
    * @}
    */
 
-  /**
-   *  Index of the parent. You
-   *  can't do this for points.
-   */
-  static int parent_index ();
-
   /**
    *  @name Accessing sub-objects
    */
@@ -2947,12 +2935,22 @@ public:
    */
   bool direction_flag () const;
 
-
+  /**
+   *  Index of the parent of this cell.
+   *  The level of the parent is one
+   *  lower than that of the
+   *  present cell, if the parent
+   *  of a cell is accessed. If the
+   *  parent does not exist (i.e., if the object is at the coarsest level of
+   *  the mesh hierarchy), an exception is generated.
+   */
+  int parent_index () const;
 
   /**
    *  Return an iterator to the
-   *  parent. Throws an exception if this cell has no parent, i.e. has
-   *  level 0.
+   *  parent. If the
+   *  parent does not exist (i.e., if the object is at the coarsest level of
+   *  the mesh hierarchy), an exception is generated.
    */
   TriaIterator<CellAccessor<dim,spacedim> >
   parent () const;
@@ -2978,16 +2976,6 @@ public:
    */
   bool active () const;
 
-  /**
-   * Ordering of accessors. This function implements a total ordering
-   * of cells even on a parallel::distributed::Triangulation. This
-   * function first compares level_subdomain_id(). If these are equal,
-   * and both cells are active, it compares subdomain_id(). If this is
-   * inconclusive, TriaAccessorBase::operator < () is called.
-   */
-  bool operator < (const CellAccessor<dim, spacedim> &other) const;
-
-
   /**
    * Return whether this cell is owned by the current processor
    * or is owned by another processor. The function always returns
@@ -3212,6 +3200,11 @@ protected:
 
 
 private:
+  /**
+   * Set the parent of a cell.
+   */
+  void set_parent (const unsigned int parent_index);
+
   /**
    * Set the orientation of this
    * cell.
index 6dcb43c05237fe27e3287e5699aa35267b996da8..0250414290e4c7094561b4a6234478a4d9065eaf 100644 (file)
@@ -1366,20 +1366,6 @@ TriaAccessor<structdim, dim, spacedim>::clear_used_flag () const
 }
 
 
-template <int structdim, int dim, int spacedim>
-int
-TriaAccessor<structdim, dim, spacedim>::
-parent_index () const
-{
-  Assert (this->present_level > 0, TriaAccessorExceptions::ExcCellHasNoParent ());
-
-  // the parent of two consecutive cells
-  // is stored only once, since it is
-  // the same
-  return this->tria->levels[this->present_level]->parents[this->present_index / 2];
-}
-
-
 template <int structdim, int dim, int spacedim>
 int
 TriaAccessor<structdim, dim, spacedim>::
@@ -1638,18 +1624,6 @@ TriaAccessor<structdim, dim, spacedim>::set_children (const unsigned int i,
 
 
 
-template <int structdim, int dim, int spacedim>
-void
-TriaAccessor<structdim, dim, spacedim>::set_parent (const unsigned int parent_index)
-{
-  Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
-  Assert (this->present_level > 0, TriaAccessorExceptions::ExcCellHasNoParent ());
-  this->tria->levels[this->present_level]->parents[this->present_index / 2]
-    = parent_index;
-}
-
-
-
 template <int structdim, int dim, int spacedim>
 void
 TriaAccessor<structdim, dim, spacedim>::clear_children () const
@@ -2277,16 +2251,6 @@ TriaAccessor<0, 1, spacedim>::operator != (const TriaAccessor &t) const
 
 
 
-
-template <int spacedim>
-inline
-int
-TriaAccessor<0, 1, spacedim>::parent_index ()
-{
-  return -1;
-}
-
-
 template <int spacedim>
 inline
 unsigned int
@@ -3093,6 +3057,18 @@ CellAccessor<dim,spacedim>::is_artificial () const
 
 
 
+template <int dim, int spacedim>
+inline
+types::subdomain_id
+CellAccessor<dim, spacedim>::subdomain_id () const
+{
+  Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
+  Assert (this->active(), ExcMessage("subdomains only work on active cells!"));
+  return this->tria->levels[this->present_level]->subdomain_ids[this->present_index];
+}
+
+
+
 template <int dim, int spacedim>
 inline
 unsigned int
@@ -3109,22 +3085,6 @@ CellAccessor<dim,spacedim>::neighbor_face_no (const unsigned int neighbor) const
 }
 
 
-template <int dim, int spacedim>
-inline
-bool
-CellAccessor<dim,spacedim>::operator < (const CellAccessor<dim,spacedim> &other) const
-{
-  Assert (this->tria == other.tria, TriaAccessorExceptions::ExcCantCompareIterators());
-
-  if (level_subdomain_id() != other.level_subdomain_id())
-    return (level_subdomain_id() < other.level_subdomain_id());
-
-  if (active() && other.active() &&
-      (subdomain_id() != other.subdomain_id()))
-    return (subdomain_id() < other.subdomain_id());
-
-  return TriaAccessorBase<dim,dim,spacedim>::operator < (other);
-}
 
 
 
index fc7beb902a80a4f18d14f7f0778f65027c94c287..013cb00bcc1bc70c1a503a102e489e8eb328fc89 100644 (file)
@@ -445,21 +445,13 @@ public:
   /**
    * Ordering relation for iterators.
    *
-   * This relation attempts a total ordering of cells. For lower
-   * dimensional objects on distributed meshes, we only attempt a
-   * partial ordering.
+   * This relation attempts a total ordering of cells.
    *
    * The relation is defined as follows:
    *
    * For objects of <tt>Accessor::structure_dimension <
    * Accessor::dimension</tt>, we simply compare the index of such an
-   * object. This consitutes an ordering of the elements of same
-   * dimension on a mesh on a single process. For a distributed mesh,
-   * the result of the ordering relation between faces across
-   * processes is not defined, but most likely irrelevant.
-   *
-   * For cells, there is a total ordering even in a
-   * distributed::parallel::Triangulation. The ordering is lexicographic
+   * object. The ordering is lexicographic
    * according to the following hierarchy (in the sense, that the next
    * test is only applied if the previous was inconclusive):
    *
@@ -468,11 +460,13 @@ public:
    * past-the-end iterators rank the same, thus false is returned in
    * that case.</li>
    *
-   * <li> The level subdomain id</li>
-   * <li> If both cells are active, the subdomain id.</li>
    * <li> The level of the cell.</li>
    * <li> The index of a cell inside the level.</li>
    * </ol>
+   *
+   * @Note: the ordering is not consistent between different processor in
+   * a parallel::distributed::Triangulation because we rely on index(),
+   * which is likely not the same.
    */
   bool operator < (const TriaRawIterator &) const;
 
index 1bdc99ab65f6cdd0a67534686d4765b8f9a57f83..90a107b544b302af4e6d07067be7b8fc552653cd 100644 (file)
@@ -39,7 +39,7 @@ namespace internal
      * In TriaLevel, all cell data is stored which is not dependent on the
      * dimension, e.g. a field to store the refinement flag for the cells
      * (what a cell actually is is declared elsewhere), etc. See also
-     * TriaObjects for non leveloriented data.
+     * TriaObjects for non level-oriented data.
      *
      * There is another field, which may fit in here, namely the
      * material data (for cells) or the boundary indicators (for faces),
@@ -154,6 +154,11 @@ namespace internal
        * One integer for every consecutive
        * pair of cells to store which
        * index their parent has.
+       *
+       * (We store this information once for each pair of cells since every
+       * refinement, isotropic or anisotropic, and in any space dimension,
+       * always creates children in multiples of two, so there is no need to
+       * store the parent index for every cell.)
        */
       std::vector<int> parents;
 
index 36c330466887a4ff15e75dc4c75a87e3b6a2be8d..2cf08a4f3d6ae53d3ae9336dad237707ad31edc4 100644 (file)
@@ -2798,7 +2798,7 @@ add_entries_local_to_global (const std::vector<size_type> &local_dof_indices,
         sparsity_pattern.add_entries(actual_dof_indices[i],
                                      actual_dof_indices.begin(),
                                      actual_dof_indices.end(),
-                                     true);
+                                   true);
 
       // need to add the whole row and column structure in case we keep
       // constrained entries. Unfortunately, we can't use the nice matrix
index 92e0dd09e8b5227c0364886f232ffb89e458289c..4f97d3464edf276edfc7df2477beb248a27d98a5 100644 (file)
@@ -34,6 +34,7 @@ DEAL_II_NAMESPACE_OPEN
 template<typename number> class Vector;
 template<typename number> class BlockVector;
 template<typename number> class FullMatrix;
+template<typename number> class SparseMatrix;
 
 
 /**
@@ -54,6 +55,7 @@ template <typename number>
 class LAPACKFullMatrix : public TransposeTable<number>
 {
 public:
+
   /**
    * Declare type for container size.
    */
@@ -68,7 +70,8 @@ public:
    *
    * By default, no memory is allocated.
    */
-  explicit LAPACKFullMatrix (const size_type n = 0);
+  explicit LAPACKFullMatrix (const size_type size = 0);
+
 
   /**
    * Constructor. Initialize the matrix as a rectangular matrix.
@@ -76,6 +79,7 @@ public:
   LAPACKFullMatrix (const size_type rows,
                     const size_type cols);
 
+
   /**
    * Copy constructor. This constructor does a deep copy of the
    * matrix. Therefore, it poses a possible efficiency problem, if for
@@ -95,14 +99,23 @@ public:
   operator = (const LAPACKFullMatrix<number> &);
 
   /**
-   * Assignment operator for a regular FullMatrix. Note that since LAPACK
-   * expects matrices in transposed order, this transposition is included
-   * here.
+   * Assignment operator from a regular FullMatrix. @note Since LAPACK
+   * expects matrices in transposed order, this transposition is
+   * included here.
    */
   template <typename number2>
   LAPACKFullMatrix<number> &
   operator = (const FullMatrix<number2> &);
 
+  /**
+   * Assignment operator from a regular SparseMatrix. @note Since
+   * LAPACK expects matrices in transposed order, this transposition
+   * is included here.
+   */
+  template <typename number2>
+  LAPACKFullMatrix<number> &
+  operator = (const SparseMatrix<number2> &);
+
   /**
    * This operator assigns a scalar to a matrix. To avoid confusion with
    * constructors, zero is the only value allowed for <tt>d</tt>
@@ -119,6 +132,33 @@ public:
   template <class MATRIX>
   void copy_from (const MATRIX &);
 
+  /**
+   * Regenerate the current matrix by one that has the same properties
+   * as if it were created by the constructor of this class with the
+   * same argument list as this present function.
+   */
+  void reinit (const size_type size);
+
+  /**
+   * Regenerate the current matrix by one that has the same properties
+   * as if it were created by the constructor of this class with the
+   * same argument list as this present function.
+   */
+  void reinit (const size_type rows,
+              const size_type cols);
+
+  /**
+   * Return the dimension of the range space. @note The matrix is of
+   * dimension $m \times n$.
+   */
+  unsigned int m () const;
+
+  /**
+   * Return the number of the range space. @note The matrix is of
+   * dimension $m \times n$.
+   */
+  unsigned int n () const;
+
   /**
    * Fill rectangular block.
    *
@@ -358,7 +398,7 @@ public:
    * system is to be performed.
    */
   void apply_lu_factorization (Vector<number> &v,
-                               const bool transposed) const;
+                               const bool      transposed) const;
 
   /**
    * Solve the linear system with multiple right hand sides (as many as there
@@ -370,7 +410,7 @@ public:
    * system is to be performed.
    */
   void apply_lu_factorization (LAPACKFullMatrix<number> &B,
-                               const bool transposed) const;
+                               const bool                transposed) const;
 
   /**
    * Compute eigenvalues of the matrix. After this routine has been called,
@@ -391,7 +431,7 @@ public:
    * @note Calls the LAPACK function Xgeev.
    */
   void compute_eigenvalues (const bool right_eigenvectors = false,
-                            const bool left_eigenvectors = false);
+                            const bool left_eigenvectors  = false);
 
   /**
    * Compute eigenvalues and eigenvectors of a real symmetric matrix. Only
@@ -411,12 +451,11 @@ public:
    * @note Calls the LAPACK function Xsyevx. For this to work, ./configure has
    * to be told to use LAPACK.
    */
-  void compute_eigenvalues_symmetric(
-    const number lower_bound,
-    const number upper_bound,
-    const number abs_accuracy,
-    Vector<number> &eigenvalues,
-    FullMatrix<number> &eigenvectors);
+  void compute_eigenvalues_symmetric (const number        lower_bound,
+                                     const number        upper_bound,
+                                     const number        abs_accuracy,
+                                     Vector<number>     &eigenvalues,
+                                     FullMatrix<number> &eigenvectors);
 
   /**
    * Compute generalized eigenvalues and eigenvectors of a real generalized
@@ -439,14 +478,13 @@ public:
    * @note Calls the LAPACK function Xsygvx. For this to work, ./configure has
    * to be told to use LAPACK.
    */
-  void compute_generalized_eigenvalues_symmetric(
-    LAPACKFullMatrix<number> &B,
-    const number lower_bound,
-    const number upper_bound,
-    const number abs_accuracy,
-    Vector<number> &eigenvalues,
-    std::vector<Vector<number> > &eigenvectors,
-    const int itype = 1);
+  void compute_generalized_eigenvalues_symmetric (LAPACKFullMatrix<number>     &B,
+                                                 const number                  lower_bound,
+                                                 const number                  upper_bound,
+                                                 const number                  abs_accuracy,
+                                                 Vector<number>               &eigenvalues,
+                                                 std::vector<Vector<number> > &eigenvectors,
+                                                 const int                     itype = 1);
 
   /**
    * Same as the other compute_generalized_eigenvalues_symmetric function
@@ -464,10 +502,9 @@ public:
    * @note Calls the LAPACK function Xsygv. For this to work, ./configure has
    * to be told to use LAPACK.
    */
-  void compute_generalized_eigenvalues_symmetric (
-    LAPACKFullMatrix<number> &B,
-    std::vector<Vector<number> > &eigenvectors,
-    const int itype = 1);
+  void compute_generalized_eigenvalues_symmetric (LAPACKFullMatrix<number>     &B,
+                                                 std::vector<Vector<number> > &eigenvectors,
+                                                 const int                     itype = 1);
 
   /**
    * Compute the singular value decomposition of the matrix using LAPACK
@@ -477,7 +514,7 @@ public:
    * #wr, #svd_u, and #svd_vt, and leaves the object in the #state
    * LAPACKSupport::svd.
    */
-  void compute_svd();
+  void compute_svd ();
 
   /**
    * Compute the inverse of the matrix by singular value decomposition.
@@ -544,9 +581,11 @@ public:
                         const double        threshold   = 0.) const;
 
 private:
+  
   /**
-   * Since LAPACK operations notoriously change the meaning of the matrix
-   * entries, we record the current state after the last operation here.
+   * Since LAPACK operations notoriously change the meaning of the
+   * matrix entries, we record the current state after the last
+   * operation here.
    */
   LAPACKSupport::State state;
 
@@ -636,7 +675,23 @@ private:
   SmartPointer<VectorMemory<Vector<number> >,PreconditionLU<number> > mem;
 };
 
+/*---------------------- Inline functions -----------------------------------*/
 
+template <typename number>
+inline
+unsigned int
+LAPACKFullMatrix<number>::m () const
+{
+  return this->n_rows ();
+}
+
+template <typename number>
+inline
+unsigned int
+LAPACKFullMatrix<number>::n () const
+{
+  return this->n_cols ();
+}
 
 template <typename number>
 template <class MATRIX>
index d430c659abd64322153abe1d55325f118a511fba..03072f6e6bb0296c00b46a5e8010ab4964d52c73 100644 (file)
@@ -72,8 +72,8 @@ public:
   /**
    * Virtual destructor.  Does
    * nothing except making sure that
-   * the destructor of the derived
-   * class is called.
+   * the destructor of any derived
+   * class is called whenever a pointer-to-base-class object is destroyed.
    */
   virtual ~PointerMatrixBase ();
 
@@ -109,6 +109,7 @@ public:
                            const VECTOR &src) const = 0;
 };
 
+
 /**
  * A pointer to be used as a matrix.  This class stores a pointer to a
  * matrix and can be used as a matrix itself in iterative methods.
@@ -136,9 +137,15 @@ public:
   PointerMatrix (const MATRIX *M=0);
 
   /**
-   * Constructor. The name argument
-   * is used to identify the
-   * SmartPointer for this object.
+   * Constructor.
+   *
+   * This class internally stores a pointer to a matrix via a SmartPointer
+   * object. The SmartPointer class allows to associate a name with the
+   * object pointed to that identifies the object that has the pointer,
+   * in order to identify objects that still refer to the object pointed to.
+   * The @p name argument to this function
+   * is used to this end, i.e., you can in essence assign a name to
+   * the current PointerMatrix object.
    */
   PointerMatrix(const char *name);
 
@@ -146,10 +153,15 @@ public:
    * Constructor. <tt>M</tt> points
    * to a matrix which must live
    * longer than the
-   * PointerMatrix. The name
-   * argument is used to identify
-   * the SmartPointer for this
-   * object.
+   * PointerMatrix.
+   *
+   * This class internally stores a pointer to a matrix via a SmartPointer
+   * object. The SmartPointer class allows to associate a name with the
+   * object pointed to that identifies the object that has the pointer,
+   * in order to identify objects that still refer to the object pointed to.
+   * The @p name argument to this function
+   * is used to this end, i.e., you can in essence assign a name to
+   * the current PointerMatrix object.
    */
   PointerMatrix(const MATRIX *M,
                 const char *name);
@@ -243,9 +255,15 @@ public:
 
   /**
    * Constructor not using a
-   * matrix. The name argument is
-   * used to identify the
-   * SmartPointer for this object.
+   * matrix.
+   *
+   * This class internally stores a pointer to a matrix via a SmartPointer
+   * object. The SmartPointer class allows to associate a name with the
+   * object pointed to that identifies the object that has the pointer,
+   * in order to identify objects that still refer to the object pointed to.
+   * The @p name argument to this function
+   * is used to this end, i.e., you can in essence assign a name to
+   * the current PointerMatrix object.
    */
   PointerMatrixAux(VectorMemory<VECTOR> *mem,
                    const char *name);
@@ -254,10 +272,15 @@ public:
    * Constructor. <tt>M</tt> points
    * to a matrix which must live
    * longer than the
-   * PointerMatrixAux. The name
-   * argument is used to identify
-   * the SmartPointer for this
-   * object.
+   * PointerMatrixAux.
+   *
+   * This class internally stores a pointer to a matrix via a SmartPointer
+   * object. The SmartPointer class allows to associate a name with the
+   * object pointed to that identifies the object that has the pointer,
+   * in order to identify objects that still refer to the object pointed to.
+   * The @p name argument to this function
+   * is used to this end, i.e., you can in essence assign a name to
+   * the current PointerMatrix object.
    */
   PointerMatrixAux(VectorMemory<VECTOR> *mem,
                    const MATRIX *M,
@@ -361,9 +384,15 @@ public:
   PointerMatrixVector (const Vector<number> *M=0);
 
   /**
-   * Constructor. The name argument
-   * is used to identify the
-   * SmartPointer for this object.
+   * Constructor.
+   *
+   * This class internally stores a pointer to a matrix via a SmartPointer
+   * object. The SmartPointer class allows to associate a name with the
+   * object pointed to that identifies the object that has the pointer,
+   * in order to identify objects that still refer to the object pointed to.
+   * The @p name argument to this function
+   * is used to this end, i.e., you can in essence assign a name to
+   * the current PointerMatrix object.
    */
   PointerMatrixVector (const char *name);
 
@@ -371,10 +400,15 @@ public:
    * Constructor. <tt>M</tt> points
    * to a matrix which must live
    * longer than the
-   * PointerMatrix. The name
-   * argument is used to identify
-   * the SmartPointer for this
-   * object.
+   * PointerMatrix.
+   *
+   * This class internally stores a pointer to a matrix via a SmartPointer
+   * object. The SmartPointer class allows to associate a name with the
+   * object pointed to that identifies the object that has the pointer,
+   * in order to identify objects that still refer to the object pointed to.
+   * The @p name argument to this function
+   * is used to this end, i.e., you can in essence assign a name to
+   * the current PointerMatrix object.
    */
   PointerMatrixVector (const Vector<number> *M,
                        const char *name);
index 2674965466ab944a984a4fc1dd6ff4fa83231090..037913ea1d34ea3894ee891884184c12faa95389 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1999 - 2013 by the deal.II authors
+// Copyright (C) 1999 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -24,7 +24,6 @@
 #include <deal.II/lac/sparsity_pattern.h>
 #include <deal.II/lac/identity_matrix.h>
 #include <deal.II/lac/exceptions.h>
-// Included for VectorOperation
 #include <deal.II/lac/vector.h>
 
 DEAL_II_NAMESPACE_OPEN
index 01caf34c11b73929ff5822a0a90f6992764aeda3..04a54fd2e886be67ec5687de56b34303f3215171 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1999 - 2013 by the deal.II authors
+// Copyright (C) 1999 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -1052,7 +1052,7 @@ SparseMatrix<number>::mmult (SparseMatrix<numberC>       &C,
             &B.val[new_cols-&sp_B.colnums[sp_B.rowstart[0]]];
           const numberB *const end_cols = &B.val[sp_B.rowstart[col+1]];
           for (; B_val_ptr != end_cols; ++B_val_ptr)
-            *new_ptr++ = A_val **B_val_ptr * (use_vector ? V(col) : 1);
+            *new_ptr++ = A_val * *B_val_ptr * (use_vector ? V(col) : 1);
 
           C.add (i, new_ptr-&new_entries[0], new_cols, &new_entries[0],
                  false, true);
index f4d45cad380a7c2785f8be6c1816c2f6a2a36a70..928300221ce42058270b27369feea090e8ca582f 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2002 - 2013 by the deal.II authors
+// Copyright (C) 2002 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -1077,14 +1077,6 @@ private:
    * Increment when a row grows.
    */
   unsigned int increment;
-
-  /**
-   * Make member classes
-   * friends. Not strictly
-   * necessary according to the
-   * standard, but some compilers
-   * require this...
-   */
 };
 
 /**
index eb8747a34de3c12e9c91b8b7033d710a50d0b96d..ba1d6ce23ec67dac146352e672d3fcbd6af09abb 100644 (file)
@@ -1420,6 +1420,11 @@ namespace TrilinosWrappers
       const char* coarse_type;
     };
 
+    /**
+     * Destructor.
+     */
+    ~PreconditionAMG();
+
 
     /**
      * Let Trilinos compute a multilevel hierarchy for the solution of a
index 3f64f3e5ce2ef824a47a16266cca39990ee73e83..881dd58c5c0e1b8f19d9d0960e4312bd45f1225b 100644 (file)
@@ -22,6 +22,7 @@
 #include <deal.II/base/numbers.h>
 #include <deal.II/base/parallel.h>
 #include <deal.II/base/thread_management.h>
+#include <deal.II/base/multithread_info.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
 
@@ -586,7 +587,8 @@ namespace internal
                      const Number2     *Y,
                      const ResultType   power,
                      const size_type    vec_size,
-                     ResultType        &result)
+                     ResultType        &result,
+                     const int          depth = -1)
     {
       if (vec_size <= 4096)
         {
@@ -672,29 +674,39 @@ namespace internal
           result = outer_results[0];
         }
 #ifdef DEAL_II_WITH_THREADS
-      else if (vec_size > 4 * internal::Vector::minimum_parallel_grain_size)
+      else if (multithread_info.n_threads() > 1 &&
+               vec_size > 4 * internal::Vector::minimum_parallel_grain_size &&
+               depth != 0)
         {
-          // split the vector into smaller pieces to be
-          // worked on recursively and create tasks for
-          // them. Make pieces divisible by 1024.
+          // split the vector into smaller pieces to be worked on recursively
+          // and create tasks for them. Make pieces divisible by 1024.
           const size_type new_size = (vec_size / 4096) * 1024;
           ResultType r0, r1, r2, r3;
+
+          // find out how many recursions we should make (avoid too deep
+          // hierarchies of tasks on large vectors), max use 8 *
+          // multithread_info.n_threads()
+          int next_depth = depth;
+          if (depth == -1)
+            next_depth = 8 * multithread_info.n_threads();
+          next_depth /= 4;
+
           Threads::TaskGroup<> task_group;
           task_group += Threads::new_task(&accumulate<Operation,Number,Number2,
                                           ResultType,size_type>,
-                                          op, X, Y, power, new_size, r0);
+                                          op, X, Y, power, new_size, r0, next_depth);
           task_group += Threads::new_task(&accumulate<Operation,Number,Number2,
                                           ResultType,size_type>,
                                           op, X+new_size, Y+new_size, power,
-                                          new_size, r1);
+                                          new_size, r1, next_depth);
           task_group += Threads::new_task(&accumulate<Operation,Number,Number2,
                                           ResultType,size_type>,
                                           op, X+2*new_size, Y+2*new_size, power,
-                                          new_size, r2);
+                                          new_size, r2, next_depth);
           task_group += Threads::new_task(&accumulate<Operation,Number,Number2,
                                           ResultType,size_type>,
                                           op, X+3*new_size, Y+3*new_size, power,
-                                          vec_size-3*new_size, r3);
+                                          vec_size-3*new_size, r3, next_depth);
           task_group.join_all();
           r0 += r1;
           r2 += r3;
index 34317489718d1d8edc2f0b00b92b6e2ef68e5139..9dcd2d8aad2732d5953e8d5352ae50421dcf6778 100644 (file)
@@ -830,9 +830,8 @@ no_constraint:
       // set up partitions. if we just use coloring without partitions, do
       // nothing here, assume all cells to belong to the zero partition (that
       // we otherwise use for MPI boundary cells)
-      unsigned int partition = 0, start_up = 0, counter = 0;
-      unsigned int start_nonboundary = numbers::invalid_unsigned_int;
-      bool work = true;
+      unsigned int start_up = 0,
+        start_nonboundary = numbers::invalid_unsigned_int;
       if (task_info.use_coloring_only == false)
         {
           start_nonboundary =
@@ -920,6 +919,8 @@ no_constraint:
                                true, connectivity);
 
       // Create cell-block  partitioning.
+      unsigned int partition = 0, counter = 0;
+      bool work = true;
 
       // For each block of cells, this variable saves to which partitions the
       // block belongs. Initialize all to n_macro_cells to mark them as not
@@ -1131,8 +1132,8 @@ no_constraint:
       }
 #endif
       AssertDimension(counter,size_info.n_active_cells);
-      task_info.evens = (partition+1)>>1;
-      task_info.odds  = (partition)>>1;
+      task_info.evens = (partition+1)/2;
+      task_info.odds  = (partition)/2;
       task_info.n_blocked_workers = task_info.odds-
                                     (task_info.odds+task_info.evens+1)%2;
       task_info.n_workers = task_info.partition_color_blocks_data.size()-1-
index 74051a1c85a9373102e52e4774bc1d3675af8d68..f93060e5b782e1e91fcde50aefc9e61e1a8d15ff 100644 (file)
@@ -850,7 +850,7 @@ namespace internal
       memory += MemoryConsumption::memory_consumption (affine_data);
       memory += MemoryConsumption::memory_consumption (cartesian_data);
       memory += MemoryConsumption::memory_consumption (cell_type);
-      memory += sizeof (this);
+      memory += sizeof (*this);
       return memory;
     }
 
index ad08fa64aaed6e5fd6a713a26fad90bd1830d09b..c01b4bc4d11e3a63aafa24f113fde289751f7395 100644 (file)
@@ -762,7 +762,7 @@ std::size_t MatrixFree<dim,Number>::memory_consumption () const
   memory += MemoryConsumption::memory_consumption (constraint_pool_data);
   memory += MemoryConsumption::memory_consumption (constraint_pool_row_index);
   memory += MemoryConsumption::memory_consumption (task_info);
-  memory += sizeof(this);
+  memory += sizeof(*this);
   memory += mapping_info.memory_consumption();
   return memory;
 }
@@ -853,7 +853,8 @@ namespace internal
     std::size_t
     TaskInfo::memory_consumption () const
     {
-      return (MemoryConsumption::memory_consumption (partition_color_blocks_row_index) +
+      return (sizeof(*this)+
+              MemoryConsumption::memory_consumption (partition_color_blocks_row_index) +
               MemoryConsumption::memory_consumption (partition_color_blocks_data)+
               MemoryConsumption::memory_consumption (partition_evens) +
               MemoryConsumption::memory_consumption (partition_odds) +
index 22110233a2c0d1c9891742a42f1d26ca7c31bc8c..cebc7916aee44db2cf2d6ef0509a0bc16fb3324c 100644 (file)
@@ -308,8 +308,9 @@ namespace MeshWorker
                   // Now neighbor is on same level, double-check this:
                   Assert(cell->level()==neighbor->level(), ExcInternalError());
 
-                  // only do faces on same level from one side (unless
-                  // LoopControl says otherwise)
+                  // If we own both cells only do faces from one side (unless
+                  // LoopControl says otherwise). Here, we rely on cell comparison
+                  // that will look at cell->index().
                   if (own_cell && own_neighbor
                       && loop_control.own_faces == LoopControl::one
                       && (neighbor < cell))
@@ -321,13 +322,13 @@ namespace MeshWorker
                   if (!own_cell)
                     continue;
 
-                  // now only one processor assembles faces_to_ghost. This
-                  // logic is based on the subdomain id and is handled inside
-                  // operator<.
+                  // now only one processor assembles faces_to_ghost. We let the
+                  // processor with the smaller (level-)subdomain id assemble the
+                  // face.
                   if (own_cell && !own_neighbor
                       && loop_control.faces_to_ghost == LoopControl::one
-                      && (neighbor < cell))
-                    continue;
+                      && (neighbid < csid))
+                        continue;
 
                   const unsigned int neighbor_face_no = cell->neighbor_face_no(face_no);
                   Assert (neighbor->face(neighbor_face_no) == face, ExcInternalError());
index 660365f7b1da625b88d986668ac8fb8300c4cc50..7b43be815100313bb55d1e509961d4d386894c11 100644 (file)
@@ -270,24 +270,24 @@ namespace DerivativeApproximation
    * In a parallel computation the @p solution vector needs to contain the
    * locally relevant unknowns.
    */
-  template <int dim, template <int, int> class DH, class InputVector, int order, int spacedim>
+  template <class DH, class InputVector, int order>
   void
-  approximate_derivative_tensor (const Mapping<dim,spacedim>                           &mapping,
-                                 const DH<dim,spacedim>                                &dof,
+  approximate_derivative_tensor (const Mapping<DH::dimension,DH::space_dimension> &mapping,
+                                 const DH                                     &dof,
                                  const InputVector                            &solution,
-                                 const typename DH<dim,spacedim>::active_cell_iterator &cell,
-                                 Tensor<order,dim>                            &derivative,
+                                 const typename DH::active_cell_iterator      &cell,
+                                 Tensor<order,DH::dimension>                  &derivative,
                                  const unsigned int                            component = 0);
 
   /**
    * Same as above, with <tt>mapping=MappingQ1@<dim@>()</tt>.
    */
-  template <int dim, template <int, int> class DH, class InputVector, int order, int spacedim>
+  template <class DH, class InputVector, int order>
   void
-  approximate_derivative_tensor (const DH<dim,spacedim>                                &dof,
+  approximate_derivative_tensor (const DH                                     &dof,
                                  const InputVector                            &solution,
-                                 const typename DH<dim,spacedim>::active_cell_iterator &cell,
-                                 Tensor<order,dim>                            &derivative,
+                                 const typename DH::active_cell_iterator      &cell,
+                                 Tensor<order,DH::dimension>                  &derivative,
                                  const unsigned int                            component = 0);
 
   /**
index b1570b6c67ab2bed57bffe748b43da83b4b9fbab..59c74cfccc4e4d268139b4971de935298e2ad28f 100644 (file)
@@ -1471,17 +1471,18 @@ namespace VectorTools
 
 
   /**
-   * This function computes the constraints that correspond to boundary conditions of the
-   * form $\vec n \cdot \vec u=0$, i.e. no normal flux if $\vec u$ is a
-   * vector-valued quantity. These conditions have exactly the form handled by
-   * the ConstraintMatrix class, so instead of creating a map between boundary
-   * degrees of freedom and corresponding value, we here create a list of
-   * constraints that are written into a ConstraintMatrix. This object may
-   * already have some content, for example from hanging node constraints,
-   * that remains untouched. These constraints have to be applied to the
-   * linear system like any other such constraints, i.e. you have to condense
-   * the linear system with the constraints before solving, and you have to
-   * distribute the solution vector afterwards.
+   * This function computes the constraints that correspond to boundary
+   * conditions of the form $\vec u \cdot \vec n=\vec u_\Gamma \cdot \vec n$,
+   * i.e. normal flux constraints if $\vec u$ is a vector-valued quantity.
+   * These conditions have exactly the form handled by the ConstraintMatrix
+   * class, so instead of creating a map between boundary degrees of freedom
+   * and corresponding value, we here create a list of constraints that are
+   * written into a ConstraintMatrix. This object may already have some
+   * content, for example from hanging node constraints, that remains
+   * untouched. These constraints have to be applied to the linear system
+   * like any other such constraints, i.e. you have to condense the linear
+   * system with the constraints before solving, and you have to distribute
+   * the solution vector afterwards.
    *
    * The use of this function is explained in more detail in step-31. It
    * doesn't make much sense in 1d, so the function throws an exception in
@@ -1494,11 +1495,11 @@ namespace VectorTools
    * first_vector_component would be zero. On the other hand, if we solved the
    * Maxwell equations in 3d and the finite element has components
    * $(E_x,E_y,E_z,B_x,B_y,B_z)$ and we want the boundary condition $\vec
-   * n\cdot \vec B=0$, then @p first_vector_component would be 3. Vectors are
-   * implicitly assumed to have exactly <code>dim</code> components that are
-   * ordered in the same way as we usually order the coordinate directions,
-   * i.e. $x$-, $y$-, and finally $z$-component. The function assumes, but
-   * can't check, that the vector components in the range
+   * B\cdot \vec n=\vec B_\Gamma\cdot \vec n$, then @p first_vector_component
+   * would be 3. Vectors are implicitly assumed to have exactly <code>dim</code>
+   * components that are ordered in the same way as we usually order the
+   * coordinate directions, i.e. $x$-, $y$-, and finally $z$-component. The
+   * function assumes, but can't check, that the vector components in the range
    * <code>[first_vector_component,first_vector_component+dim)</code> come
    * from the same base finite element. For example, in the Stokes example
    * above, it would not make sense to use a
@@ -1515,6 +1516,9 @@ namespace VectorTools
    * call the function onces with the whole set of boundary indicators at
    * once.
    *
+   * The forth parameter describes the boundary function that is used for
+   * computing these constraints. 
+   *
    * The mapping argument is used to compute the boundary points where the
    * function needs to request the normal vector $\vec n$ from the boundary
    * description.
@@ -1542,20 +1546,22 @@ namespace VectorTools
    * right are meant to approximate a curved boundary (as indicated by the
    * dashed line), then neither of the two computed normal vectors are equal
    * to the exact normal vector (though they approximate it as the mesh is
-   * refined further). What is worse, if we constrain $\vec n \cdot \vec u=0$
-   * at the common vertex with the normal vector from both cells, then we
-   * constrain the vector $\vec u$ with respect to two linearly independent
-   * vectors; consequently, the constraint would be $\vec u=0$ at this point
-   * (i.e. <i>all</i> components of the vector), which is not what we wanted.
+   * refined further). What is worse, if we constrain $\vec u \cdot \vec n=
+   * \vec u_\Gamma \cdot \vec n$ at the common vertex with the normal vector
+   * from both cells, then we constrain the vector $\vec u$ with respect to
+   * two linearly independent vectors; consequently, the constraint would be
+   * $\vec u=\vec u_\Gamma$ at this point (i.e. <i>all</i> components of the
+   * vector), which is not what we wanted.
    *
    * To deal with this situation, the algorithm works in the following way: at
    * each point where we want to constrain $\vec u$, we first collect all
    * normal vectors that adjacent cells might compute at this point. We then
-   * do not constrain $\vec n \cdot \vec u=0$ for <i>each</i> of these normal
-   * vectors but only for the <i>average</i> of the normal vectors. In the
-   * example above, we therefore record only a single constraint $\vec n \cdot
-   * \vec {\bar u}=0$, where $\vec {\bar u}$ is the average of the two
-   * indicated normal vectors.
+   * do not constrain $\vec u \cdot \vec n=\vec u_\Gamma \cdot \vec n$ for
+   * <i>each</i> of these normal vectors but only for the <i>average</i> of
+   * the normal vectors. In the example above, we therefore record only a
+   * single constraint $\vec u \cdot \vec {\bar n}=\vec u_\Gamma \cdot \vec
+   * {\bar n}$, where $\vec {\bar n}$ is the average of the two indicated
+   * normal vectors.
    *
    * Unfortunately, this is not quite enough. Consider the situation here:
    *
@@ -1598,7 +1604,7 @@ namespace VectorTools
    * point per invocation (because we consider only one boundary part at a
    * time), with the result that the normal vectors will not be averaged. This
    * situation also needs to be taken into account when using this function
-   * around reentrant corners on Cartesian meshes. If no-normal-flux boundary
+   * around reentrant corners on Cartesian meshes. If normal-flux boundary
    * conditions are to be enforced on non-Cartesian meshes around reentrant
    * corners, one may even get cycles in the constraints as one will in
    * general constrain different components from the two sides. In that case,
@@ -1632,7 +1638,7 @@ namespace VectorTools
    * front faces of the left cell belong to the boundary selected whereas only
    * the top face of the right cell belongs to it, maybe indicating the the entire
    * front part of the domain is a smooth manifold whereas the top really forms
-   * two separate manifolds that meet in a ridge, and that no-flux boundary
+   * two separate manifolds that meet in a ridge, and that normal-flux boundary
    * conditions are only desired on the front manifold and the right one on top.
    * In cases like these, it's difficult to define what should happen. The
    * current implementation simply ignores the one contribution from the
@@ -1667,6 +1673,22 @@ namespace VectorTools
    */
   template <int dim, template <int, int> class DH, int spacedim>
   void
+  compute_nonzero_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
+                                           const unsigned int     first_vector_component,
+                                           const std::set<types::boundary_id> &boundary_ids,
+                                           typename FunctionMap<spacedim>::type &function_map,
+                                           ConstraintMatrix      &constraints,
+                                           const Mapping<dim, spacedim>    &mapping = StaticMappingQ1<dim>::mapping);
+
+  /**
+   * Same as above for homogeneous normal-flux constraints.
+   *
+   * @ingroup constraints
+   *
+   * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+   */
+  template <int dim, template <int, int> class DH, int spacedim>
+  void
   compute_no_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
                                       const unsigned int     first_vector_component,
                                       const std::set<types::boundary_id> &boundary_ids,
@@ -1675,14 +1697,32 @@ namespace VectorTools
 
   /**
    * Compute the constraints that correspond to boundary conditions of the
-   * form $\vec n \times \vec u=0$. This corresponds to flow with no tangential
-   * component, i.e. flow is parallel to the normal vector to the boundary if $\vec
-   * u$ is a vector-valued quantity.
-   *
-   * This function constrains exactly those
-   * vector-valued components that are left unconstrained by
-   * compute_no_normal_flux_constraints, and leaves the one component
-   * unconstrained that is constrained by compute_no_normal_flux_constraints.
+   * form $\vec u \times \vec n=\vec u_\Gamma \times \vec n$, i.e. tangential
+   * flow constraints if $\vec u$ is a vector-valued quantity. This function
+   * constrains exactly those vector-valued components that are left
+   * unconstrained by compute_no_normal_flux_constraints, and leaves the one
+   * component unconstrained that is constrained by
+   * compute_no_normal_flux_constraints.
+   *
+   * @ingroup constraints
+   *
+   * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
+   */
+  template <int dim, template <int, int> class DH, int spacedim>
+  void
+  compute_nonzero_tangential_flux_constraints (const DH<dim,spacedim>         &dof_handler,
+                                               const unsigned int     first_vector_component,
+                                               const std::set<types::boundary_id> &boundary_ids,
+                                               typename FunctionMap<spacedim>::type &function_map,
+                                               ConstraintMatrix      &constraints,
+                                               const Mapping<dim, spacedim>    &mapping = StaticMappingQ1<dim>::mapping);
+  
+  /**
+   * Same as above for homogeneous tangential-flux constraints.
+   *
+   * @ingroup constraints
+   *
+   * @see @ref GlossBoundaryIndicator "Glossary entry on boundary indicators"
    */
   template <int dim, template <int, int> class DH, int spacedim>
   void
index cd33a7f5f2b0973f5f0bf62dcfda93494ca18a9a..cef2e584ce61ae297f7d5b754619f7eee3a748e6 100644 (file)
@@ -67,6 +67,7 @@
 #include <cmath>
 #include <limits>
 #include <set>
+#include <list>
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -1713,7 +1714,7 @@ namespace VectorTools
     // will be used
     template <class DH,
               template <int,int> class M_or_MC,
-             int dim_>
+                 int dim_>
     static inline
     void
     do_interpolate_boundary_values (const M_or_MC<DH::dimension, DH::space_dimension> &mapping,
@@ -2468,7 +2469,7 @@ namespace VectorTools
 
     /**
      * Add the constraint
-     * $\vec n \cdot \vec u = 0$
+     * $\vec n \cdot \vec u = inhom$
      * to the list of constraints.
      *
      * Here, $\vec u$ is represented
@@ -2485,7 +2486,8 @@ namespace VectorTools
     void
     add_constraint (const VectorDoFTuple<dim> &dof_indices,
                     const Tensor<1,dim>       &constraining_vector,
-                    ConstraintMatrix          &constraints)
+                    ConstraintMatrix          &constraints,
+                    const double              inhomogeneity=0)
     {
 
       // choose the DoF that has the
@@ -2566,6 +2568,11 @@ namespace VectorTools
                     constraints.add_entry (dof_indices.dof_indices[0],
                                            dof_indices.dof_indices[1],
                                            -constraining_vector[1]/constraining_vector[0]);
+                    
+                  if (std::fabs (inhomogeneity/constraining_vector[0])
+                      > std::numeric_limits<double>::epsilon())
+                    constraints.set_inhomogeneity(dof_indices.dof_indices[0],
+                                                  inhomogeneity/constraining_vector[0]);                  
                 }
             }
           else
@@ -2581,6 +2588,11 @@ namespace VectorTools
                     constraints.add_entry (dof_indices.dof_indices[1],
                                            dof_indices.dof_indices[0],
                                            -constraining_vector[0]/constraining_vector[1]);
+                    
+                  if (std::fabs (inhomogeneity/constraining_vector[1])
+                      > std::numeric_limits<double>::epsilon())
+                    constraints.set_inhomogeneity(dof_indices.dof_indices[1],
+                                                  inhomogeneity/constraining_vector[1]);                 
                 }
             }
           break;
@@ -2609,6 +2621,11 @@ namespace VectorTools
                     constraints.add_entry (dof_indices.dof_indices[0],
                                            dof_indices.dof_indices[2],
                                            -constraining_vector[2]/constraining_vector[0]);
+
+                  if (std::fabs (inhomogeneity/constraining_vector[0])
+                      > std::numeric_limits<double>::epsilon())
+                    constraints.set_inhomogeneity(dof_indices.dof_indices[0],
+                                                  inhomogeneity/constraining_vector[0]);
                 }
             }
           else if ((std::fabs(constraining_vector[1])+1e-10 >= std::fabs(constraining_vector[0]))
@@ -2632,6 +2649,11 @@ namespace VectorTools
                     constraints.add_entry (dof_indices.dof_indices[1],
                                            dof_indices.dof_indices[2],
                                            -constraining_vector[2]/constraining_vector[1]);
+
+                  if (std::fabs (inhomogeneity/constraining_vector[1])
+                      > std::numeric_limits<double>::epsilon())
+                    constraints.set_inhomogeneity(dof_indices.dof_indices[1],
+                                                  inhomogeneity/constraining_vector[1]);
                 }
             }
           else
@@ -2653,6 +2675,11 @@ namespace VectorTools
                     constraints.add_entry (dof_indices.dof_indices[2],
                                            dof_indices.dof_indices[1],
                                            -constraining_vector[1]/constraining_vector[2]);
+
+                  if (std::fabs (inhomogeneity/constraining_vector[2])
+                      > std::numeric_limits<double>::epsilon())
+                    constraints.set_inhomogeneity(dof_indices.dof_indices[2],
+                                                    inhomogeneity/constraining_vector[2]);
                 }
             }
 
@@ -2666,7 +2693,7 @@ namespace VectorTools
 
 
     /**
-     * Add the constraint $\vec u \|
+     * Add the constraint $(\vec u-\vec u_\Gamma) \|
      * \vec t$ to the list of
      * constraints. In 2d, this is a
      * single constraint, in 3d these
@@ -2684,9 +2711,11 @@ namespace VectorTools
      */
     template <int dim>
     void
-    add_tangentiality_constraints (const VectorDoFTuple<dim> &dof_indices,
-                                   const Tensor<1,dim>       &tangent_vector,
-                                   ConstraintMatrix          &constraints)
+    add_tangentiality_constraints
+      (const VectorDoFTuple<dim> &dof_indices,
+       const Tensor<1,dim>       &tangent_vector,
+       ConstraintMatrix          &constraints,
+       const Vector<double>      &b_values = Vector<double>(dim))
     {
 
       // choose the DoF that has the
@@ -2698,7 +2727,7 @@ namespace VectorTools
       // component 0 of the tangent
       // vector t is largest by
       // magnitude, then
-      // x1=t[1]/t[0]*x_0, etc.
+      // x1=(b[1]*t[0]-b[0]*t[1])/t[0]+t[1]/t[0]*x_0, etc.
       unsigned int largest_component = 0;
       for (unsigned int d=1; d<dim; ++d)
         if (std::fabs(tangent_vector[d]) > std::fabs(tangent_vector[largest_component]) + 1e-10)
@@ -2720,6 +2749,16 @@ namespace VectorTools
                 constraints.add_entry (dof_indices.dof_indices[d],
                                        dof_indices.dof_indices[largest_component],
                                        tangent_vector[d]/tangent_vector[largest_component]);
+
+              const double inhomogeneity
+                = (b_values(d)*tangent_vector[largest_component]
+                   -b_values(largest_component)*tangent_vector[d])
+                  /tangent_vector[largest_component];
+
+              if (std::fabs(inhomogeneity)
+                  > std::numeric_limits<double>::epsilon())
+                constraints.set_inhomogeneity(dof_indices.dof_indices[d],
+                                              inhomogeneity);
             }
     }
 
@@ -4264,6 +4303,29 @@ namespace VectorTools
                                       const std::set<types::boundary_id> &boundary_ids,
                                       ConstraintMatrix      &constraints,
                                       const Mapping<dim, spacedim>    &mapping)
+  {
+    ZeroFunction<dim>zero_function(dim);
+    typename FunctionMap<spacedim>::type function_map;
+    std::set<types::boundary_id>::const_iterator it
+      = boundary_ids.begin();
+    for (;it != boundary_ids.end(); ++it)
+      function_map[*it] = &zero_function;
+    compute_nonzero_normal_flux_constraints(dof_handler, 
+                                            first_vector_component, 
+                                            boundary_ids,
+                                            function_map,
+                                            constraints, 
+                                            mapping);
+  }
+  template <int dim, template <int, int> class DH, int spacedim>
+  void
+  compute_nonzero_normal_flux_constraints (const DH<dim,spacedim>         &dof_handler,
+                                           const unsigned int     first_vector_component,
+                                           const std::set<types::boundary_id> &boundary_ids,
+                                           typename FunctionMap<spacedim>::type &function_map,
+                                           ConstraintMatrix      &constraints,
+                                           const Mapping<dim, spacedim>    &mapping)
   {
     Assert (dim > 1,
             ExcMessage ("This function is not useful in 1d because it amounts "
@@ -4284,16 +4346,15 @@ namespace VectorTools
     // FE
     hp::QCollection<dim-1> face_quadrature_collection;
     for (unsigned int i=0; i<fe_collection.size(); ++i)
-      {
-        const std::vector<Point<dim-1> > &
-        unit_support_points = fe_collection[i].get_unit_face_support_points();
+    {
+      const std::vector<Point<dim-1> > &
+      unit_support_points = fe_collection[i].get_unit_face_support_points();
 
-        Assert (unit_support_points.size() == fe_collection[i].dofs_per_face,
-                ExcInternalError());
+      Assert (unit_support_points.size() == fe_collection[i].dofs_per_face,
+              ExcInternalError());
 
-        face_quadrature_collection
-        .push_back (Quadrature<dim-1> (unit_support_points));
-      }
+      face_quadrature_collection.push_back (Quadrature<dim-1> (unit_support_points));
+    }
 
     // now create the object with which we will generate the normal vectors
     hp::FEFaceValues<dim,spacedim> x_fe_face_values (mapping_collection,
@@ -4317,6 +4378,8 @@ namespace VectorTools
     std::multimap<internal::VectorDoFTuple<dim>,
         std::pair<Tensor<1,dim>, typename DH<dim,spacedim>::active_cell_iterator> >
         DoFToNormalsMap;
+    std::map<internal::VectorDoFTuple<dim>, Vector<double> >
+      dof_vector_to_b_values;
 
     DoFToNormalsMap dof_to_normals_map;
 
@@ -4324,129 +4387,136 @@ namespace VectorTools
     typename DH<dim,spacedim>::active_cell_iterator
     cell = dof_handler.begin_active(),
     endc = dof_handler.end();
+    std::set<types::boundary_id>::iterator b_id;
     for (; cell!=endc; ++cell)
       if (!cell->is_artificial())
         for (unsigned int face_no=0; face_no < GeometryInfo<dim>::faces_per_cell;
              ++face_no)
-          if (boundary_ids.find(cell->face(face_no)->boundary_indicator())
+          if ((b_id=boundary_ids.find(cell->face(face_no)->boundary_indicator()))
               != boundary_ids.end())
-            {
-              const FiniteElement<dim> &fe = cell->get_fe ();
-              typename DH<dim,spacedim>::face_iterator face = cell->face(face_no);
+          {
+            const FiniteElement<dim> &fe = cell->get_fe ();
+            typename DH<dim,spacedim>::face_iterator face = cell->face(face_no);
 
-              // get the indices of the dofs on this cell...
-              face_dofs.resize (fe.dofs_per_face);
-              face->get_dof_indices (face_dofs, cell->active_fe_index());
+            // get the indices of the dofs on this cell...
+            face_dofs.resize (fe.dofs_per_face);
+            face->get_dof_indices (face_dofs, cell->active_fe_index());
 
-              x_fe_face_values.reinit (cell, face_no);
-              const FEFaceValues<dim> &fe_values = x_fe_face_values.get_present_fe_values();
+            x_fe_face_values.reinit (cell, face_no);
+            const FEFaceValues<dim> &fe_values = x_fe_face_values.get_present_fe_values();
+
+            // then identify which of them correspond to the selected set of
+            // vector components
+            for (unsigned int i=0; i<face_dofs.size(); ++i)
+              if (fe.face_system_to_component_index(i).first ==
+                  first_vector_component)
+              {
+                // find corresponding other components of vector
+                internal::VectorDoFTuple<dim> vector_dofs;
+                vector_dofs.dof_indices[0] = face_dofs[i];
+                    
+                Assert(first_vector_component+dim<=fe.n_components(),
+                       ExcMessage("Error: the finite element does not have enough components "
+                                  "to define a normal direction."));
+                    
+                for (unsigned int k=0; k<fe.dofs_per_face; ++k)
+                  if ((k != i)
+                      &&
+                      (face_quadrature_collection[cell->active_fe_index()].point(k) ==
+                       face_quadrature_collection[cell->active_fe_index()].point(i))
+                      &&
+                      (fe.face_system_to_component_index(k).first >=
+                       first_vector_component)
+                      &&
+                      (fe.face_system_to_component_index(k).first <
+                       first_vector_component + dim))
+                    vector_dofs.dof_indices[fe.face_system_to_component_index(k).first -
+                                            first_vector_component]
+                      = face_dofs[k];
+
+                for (unsigned int d=0; d<dim; ++d)
+                  Assert (vector_dofs.dof_indices[d] < dof_handler.n_dofs(),
+                          ExcInternalError());
+
+                // we need the normal vector on this face. we know that it
+                // is a vector of length 1 but at least with higher order
+                // mappings it isn't always possible to guarantee that
+                // each component is exact up to zero tolerance. in
+                // particular, as shown in the deal.II/no_flux_06 test, if
+                // we just take the normal vector as given by the
+                // fe_values object, we can get entries in the normal
+                // vectors of the unit cube that have entries up to
+                // several times 1e-14.
+                //
+                // the problem with this is that this later yields
+                // constraints that are circular (e.g., in the testcase,
+                // we get constraints of the form
+                //
+                // x22 =  2.93099e-14*x21 + 2.93099e-14*x23
+                // x21 = -2.93099e-14*x22 + 2.93099e-14*x21
+                //
+                // in both of these constraints, the small numbers should
+                // be zero and the constraints should simply be
+                // x22 = x21 = 0
+                //
+                // to achieve this, we utilize that we know that the
+                // normal vector has (or should have) length 1 and that we
+                // can simply set small elements to zero (without having
+                // to check that they are small *relative to something
+                // else*). we do this and then normalize the length of the
+                // vector back to one, just to be on the safe side
+                //
+                // one more point: we would like to use the "real" normal
+                // vector here, as provided by the boundary description
+                // and as opposed to what we get from the FEValues object.
+                // we do this in the immediately next line, but as is
+                // obvious, the boundary only has a vague idea which side
+                // of a cell it is on -- indicated by the face number. in
+                // other words, it may provide the inner or outer normal.
+                // by and large, there is no harm from this, since the
+                // tangential vector we compute is still the same. however,
+                // we do average over normal vectors from adjacent cells
+                // and if they have recorded normal vectors from the inside
+                // once and from the outside the other time, then this
+                // averaging is going to run into trouble. as a consequence
+                // we ask the mapping after all for its normal vector,
+                // but we only ask it so that we can possibly correct the
+                // sign of the normal vector provided by the boundary
+                // if they should point in different directions. this is the
+                // case in tests/deal.II/no_flux_11.
+                Point<dim> normal_vector
+                  = (cell->face(face_no)->get_boundary().normal_vector
+                      (cell->face(face_no), fe_values.quadrature_point(i)));
+                if (normal_vector * fe_values.normal_vector(i) < 0)
+                  normal_vector *= -1;
+                Assert (std::fabs(normal_vector.norm() - 1) < 1e-14,
+                        ExcInternalError());
+                for (unsigned int d=0; d<dim; ++d)
+                  if (std::fabs(normal_vector[d]) < 1e-13)
+                    normal_vector[d] = 0;
+                normal_vector /= normal_vector.norm();
+
+                const Point<dim> point
+                  = fe_values.quadrature_point(i);                    
+                Vector<double> b_values(dim);
+                function_map[*b_id]->vector_value(point, b_values);
+
+                // now enter the (dofs,(normal_vector,cell)) entry into
+                // the map
+                dof_to_normals_map.insert
+                  (std::make_pair (vector_dofs,
+                                   std::make_pair (normal_vector,cell)));                                     
+                dof_vector_to_b_values.insert
+                  (std::make_pair(vector_dofs, b_values));
 
-              // then identify which of them correspond to the selected set of
-              // vector components
-              for (unsigned int i=0; i<face_dofs.size(); ++i)
-                if (fe.face_system_to_component_index(i).first ==
-                    first_vector_component)
-                  {
-                    // find corresponding other components of vector
-                    internal::VectorDoFTuple<dim> vector_dofs;
-                    vector_dofs.dof_indices[0] = face_dofs[i];
-
-                    Assert(first_vector_component+dim<=fe.n_components(),
-                           ExcMessage("Error: the finite element does not have enough components "
-                                      "to define a normal direction."));
-
-                    for (unsigned int k=0; k<fe.dofs_per_face; ++k)
-                      if ((k != i)
-                          &&
-                          (face_quadrature_collection[cell->active_fe_index()].point(k) ==
-                           face_quadrature_collection[cell->active_fe_index()].point(i))
-                          &&
-                          (fe.face_system_to_component_index(k).first >=
-                           first_vector_component)
-                          &&
-                          (fe.face_system_to_component_index(k).first <
-                           first_vector_component + dim))
-                        vector_dofs.dof_indices[fe.face_system_to_component_index(k).first -
-                                                first_vector_component]
-                          = face_dofs[k];
-
-                    for (unsigned int d=0; d<dim; ++d)
-                      Assert (vector_dofs.dof_indices[d] < dof_handler.n_dofs(),
-                              ExcInternalError());
-
-                    // we need the normal vector on this face. we know that it
-                    // is a vector of length 1 but at least with higher order
-                    // mappings it isn't always possible to guarantee that
-                    // each component is exact up to zero tolerance. in
-                    // particular, as shown in the deal.II/no_flux_06 test, if
-                    // we just take the normal vector as given by the
-                    // fe_values object, we can get entries in the normal
-                    // vectors of the unit cube that have entries up to
-                    // several times 1e-14.
-                    //
-                    // the problem with this is that this later yields
-                    // constraints that are circular (e.g., in the testcase,
-                    // we get constraints of the form
-                    //
-                    // x22 =  2.93099e-14*x21 + 2.93099e-14*x23
-                    // x21 = -2.93099e-14*x22 + 2.93099e-14*x21
-                    //
-                    // in both of these constraints, the small numbers should
-                    // be zero and the constraints should simply be
-                    // x22 = x21 = 0
-                    //
-                    // to achieve this, we utilize that we know that the
-                    // normal vector has (or should have) length 1 and that we
-                    // can simply set small elements to zero (without having
-                    // to check that they are small *relative to something
-                    // else*). we do this and then normalize the length of the
-                    // vector back to one, just to be on the safe side
-                    //
-                    // one more point: we would like to use the "real" normal
-                    // vector here, as provided by the boundary description
-                    // and as opposed to what we get from the FEValues object.
-                    // we do this in the immediately next line, but as is
-                    // obvious, the boundary only has a vague idea which side
-                    // of a cell it is on -- indicated by the face number. in
-                    // other words, it may provide the inner or outer normal.
-                    // by and large, there is no harm from this, since the
-                    // tangential vector we compute is still the same. however,
-                    // we do average over normal vectors from adjacent cells
-                    // and if they have recorded normal vectors from the inside
-                    // once and from the outside the other time, then this
-                    // averaging is going to run into trouble. as a consequence
-                    // we ask the mapping after all for its normal vector,
-                    // but we only ask it so that we can possibly correct the
-                    // sign of the normal vector provided by the boundary
-                    // if they should point in different directions. this is the
-                    // case in tests/deal.II/no_flux_11.
-                    Point<dim> normal_vector
-                      = (cell->face(face_no)->get_boundary()
-                         .normal_vector (cell->face(face_no),
-                                         fe_values.quadrature_point(i)));
-                    if (normal_vector * fe_values.normal_vector(i) < 0)
-                      normal_vector *= -1;
-                    Assert (std::fabs(normal_vector.norm() - 1) < 1e-14,
-                            ExcInternalError());
-                    for (unsigned int d=0; d<dim; ++d)
-                      if (std::fabs(normal_vector[d]) < 1e-13)
-                        normal_vector[d] = 0;
-                    normal_vector /= normal_vector.norm();
-
-                    // now enter the (dofs,(normal_vector,cell)) entry into
-                    // the map
-                    dof_to_normals_map
-                    .insert (std::make_pair (vector_dofs,
-                                             std::make_pair (normal_vector,
-                                                             cell)));
 #ifdef DEBUG_NO_NORMAL_FLUX
-                    std::cout << "Adding normal vector:" << std::endl
-                              << "   dofs=" << vector_dofs << std::endl
-                              << "   cell=" << cell << " at " << cell->center() << std::endl
-                              << "   normal=" << normal_vector << std::endl;
+                std::cout << "Adding normal vector:" << std::endl
+                          << "   dofs=" << vector_dofs << std::endl
+                          << "   cell=" << cell << " at " << cell->center() << std::endl
+                          << "   normal=" << normal_vector << std::endl;
 #endif
-                  }
-            }
+              }
+          }
 
     // Now do something with the collected information. To this end, loop
     // through all sets of pairs (dofs,normal_vector) and identify which
@@ -4457,332 +4527,338 @@ namespace VectorTools
     p = dof_to_normals_map.begin();
 
     while (p != dof_to_normals_map.end())
-      {
-        // first find the range of entries in the multimap that corresponds to
-        // the same vector-dof tuple. as usual, we define the range
-        // half-open. the first entry of course is 'p'
-        typename DoFToNormalsMap::const_iterator same_dof_range[2]
-          = { p };
-        for (++p; p != dof_to_normals_map.end(); ++p)
-          if (p->first != same_dof_range[0]->first)
-            {
-              same_dof_range[1] = p;
-              break;
-            }
-        if (p == dof_to_normals_map.end())
-          same_dof_range[1] = dof_to_normals_map.end();
+    {
+      // first find the range of entries in the multimap that corresponds to
+      // the same vector-dof tuple. as usual, we define the range
+      // half-open. the first entry of course is 'p'
+      typename DoFToNormalsMap::const_iterator same_dof_range[2] = { p };
+      for (++p; p != dof_to_normals_map.end(); ++p)
+        if (p->first != same_dof_range[0]->first)
+        {
+          same_dof_range[1] = p;
+          break;
+        }
+      if (p == dof_to_normals_map.end())
+        same_dof_range[1] = dof_to_normals_map.end();
 
 #ifdef DEBUG_NO_NORMAL_FLUX
-        std::cout << "For dof indices <" << p->first << ">, found the following normals"
+      std::cout << "For dof indices <" << p->first << ">, found the following normals"
+                << std::endl;
+      for (typename DoFToNormalsMap::const_iterator
+           q = same_dof_range[0];
+           q != same_dof_range[1]; ++q)
+        std::cout << "   " << q->second.first
+                  << " from cell " << q->second.second
                   << std::endl;
-        for (typename DoFToNormalsMap::const_iterator
-             q = same_dof_range[0];
-             q != same_dof_range[1]; ++q)
-          std::cout << "   " << q->second.first
-                    << " from cell " << q->second.second
-                    << std::endl;
 #endif
 
 
-        // now compute the reverse mapping: for each of the cells that
-        // contributed to the current set of vector dofs, add up the normal
-        // vectors. the values of the map are pairs of normal vectors and
-        // number of cells that have contributed
-        typedef
-        std::map
-        <typename DH<dim,spacedim>::active_cell_iterator,
-        std::pair<Tensor<1,dim>, unsigned int> >
+      // now compute the reverse mapping: for each of the cells that
+      // contributed to the current set of vector dofs, add up the normal
+      // vectors. the values of the map are pairs of normal vectors and
+      // number of cells that have contributed
+      typedef std::map<typename DH<dim,spacedim>::active_cell_iterator,
+                       std::pair<Tensor<1,dim>, unsigned int> >
         CellToNormalsMap;
 
-        CellToNormalsMap cell_to_normals_map;
-        for (typename DoFToNormalsMap::const_iterator
-             q = same_dof_range[0];
-             q != same_dof_range[1]; ++q)
-          if (cell_to_normals_map.find (q->second.second)
+      CellToNormalsMap cell_to_normals_map;
+      for (typename DoFToNormalsMap::const_iterator
+           q = same_dof_range[0];
+           q != same_dof_range[1]; ++q)
+        if (cell_to_normals_map.find (q->second.second)
               == cell_to_normals_map.end())
             cell_to_normals_map[q->second.second]
               = std::make_pair (q->second.first, 1U);
-          else
-            {
-              const Tensor<1,dim> old_normal
+        else
+        {
+          const Tensor<1,dim> old_normal
                 = cell_to_normals_map[q->second.second].first;
-              const unsigned int old_count
+          const unsigned int old_count
                 = cell_to_normals_map[q->second.second].second;
 
-              Assert (old_count > 0, ExcInternalError());
+          Assert (old_count > 0, ExcInternalError());
 
-              // in the same entry, store again the now averaged normal vector
-              // and the new count
-              cell_to_normals_map[q->second.second]
-                = std::make_pair ((old_normal * old_count + q->second.first) / (old_count + 1),
-                                  old_count + 1);
-            }
-        Assert (cell_to_normals_map.size() >= 1, ExcInternalError());
+          // in the same entry, store again the now averaged normal vector
+          // and the new count
+          cell_to_normals_map[q->second.second]
+            = std::make_pair ((old_normal * old_count + q->second.first) / (old_count + 1),
+                               old_count + 1);
+        }
+      Assert (cell_to_normals_map.size() >= 1, ExcInternalError());
 
 #ifdef DEBUG_NO_NORMAL_FLUX
-        std::cout << "   cell_to_normals_map:" << std::endl;
-        for (typename CellToNormalsMap::const_iterator
-             x = cell_to_normals_map.begin();
-             x != cell_to_normals_map.end(); ++x)
-          std::cout << "      " << x->first << " -> ("
-                    << x->second.first << ',' << x->second.second << ')'
-                    << std::endl;
+      std::cout << "   cell_to_normals_map:" << std::endl;
+      for (typename CellToNormalsMap::const_iterator
+           x = cell_to_normals_map.begin();
+           x != cell_to_normals_map.end(); ++x)
+        std::cout << "      " << x->first << " -> ("
+                  << x->second.first << ',' << x->second.second << ')'
+                  << std::endl;
 #endif
 
-        // count the maximum number of contributions from each cell
-        unsigned int max_n_contributions_per_cell = 1;
-        for (typename CellToNormalsMap::const_iterator
-             x = cell_to_normals_map.begin();
-             x != cell_to_normals_map.end(); ++x)
+      // count the maximum number of contributions from each cell
+      unsigned int max_n_contributions_per_cell = 1;
+      for (typename CellToNormalsMap::const_iterator
+           x = cell_to_normals_map.begin();
+           x != cell_to_normals_map.end(); ++x)
           max_n_contributions_per_cell
             = std::max (max_n_contributions_per_cell,
                         x->second.second);
 
-        // verify that each cell can have only contributed at most dim times,
-        // since that is the maximum number of faces that come together at a
-        // single place
-        Assert (max_n_contributions_per_cell <= dim, ExcInternalError());
-
-        switch (max_n_contributions_per_cell)
-          {
-          // first deal with the case that a number of cells all have
-          // registered that they have a normal vector defined at the
-          // location of a given vector dof, and that each of them have
-          // encountered this vector dof exactly once while looping over all
-          // their faces. as stated in the documentation, this is the case
-          // where we want to simply average over all normal vectors
-          //
-          // the typical case is in 2d where multiple cells meet at one
-          // vertex sitting on the boundary. same in 3d for a vertex that
-          // is associated with only one of the boundary indicators passed
-          // to this function
-          case 1:
-          {
-
-            // compute the average normal vector from all the ones that have
-            // the same set of dofs. we could add them up and divide them by
-            // the number of additions, or simply normalize them right away
-            // since we want them to have unit length anyway
-            Tensor<1,dim> normal;
-            for (typename CellToNormalsMap::const_iterator
-                 x = cell_to_normals_map.begin();
-                 x != cell_to_normals_map.end(); ++x)
-              normal += x->second.first;
-            normal /= normal.norm();
-
-            // normalize again
-            for (unsigned int d=0; d<dim; ++d)
-              if (std::fabs(normal[d]) < 1e-13)
-                normal[d] = 0;
-            normal /= normal.norm();
-
-            // then construct constraints from this:
-            const internal::VectorDoFTuple<dim> &
-            dof_indices = same_dof_range[0]->first;
-            internal::add_constraint (dof_indices, normal,
-                                      constraints);
+      // verify that each cell can have only contributed at most dim times,
+      // since that is the maximum number of faces that come together at a
+      // single place
+      Assert (max_n_contributions_per_cell <= dim, ExcInternalError());
 
-            break;
-          }
+      switch (max_n_contributions_per_cell)
+      {
+        // first deal with the case that a number of cells all have
+        // registered that they have a normal vector defined at the
+        // location of a given vector dof, and that each of them have
+        // encountered this vector dof exactly once while looping over all
+        // their faces. as stated in the documentation, this is the case
+        // where we want to simply average over all normal vectors
+        //
+        // the typical case is in 2d where multiple cells meet at one
+        // vertex sitting on the boundary. same in 3d for a vertex that
+        // is associated with only one of the boundary indicators passed
+        // to this function
+        case 1:
+        {
+          // compute the average normal vector from all the ones that have
+          // the same set of dofs. we could add them up and divide them by
+          // the number of additions, or simply normalize them right away
+          // since we want them to have unit length anyway
+          Tensor<1,dim> normal;
+          for (typename CellToNormalsMap::const_iterator
+               x = cell_to_normals_map.begin();
+               x != cell_to_normals_map.end(); ++x)
+            normal += x->second.first;
+          normal /= normal.norm();
+
+          // normalize again
+          for (unsigned int d=0; d<dim; ++d)
+            if (std::fabs(normal[d]) < 1e-13)
+              normal[d] = 0;
+          normal /= normal.norm();
+
+          // then construct constraints from this:
+          const internal::VectorDoFTuple<dim> &
+          dof_indices = same_dof_range[0]->first;
+          double normal_value = 0.;
+          const Vector<double> b_values = dof_vector_to_b_values[dof_indices];
+          for (unsigned int i=0; i<dim; ++i)
+            normal_value += b_values[i]*normal[i];
+          internal::add_constraint (dof_indices, normal,
+                                    constraints, normal_value);
+            
+          break;
+        }
 
+        // this is the slightly more complicated case that a single cell has
+        // contributed with exactly DIM normal vectors to the same set of
+        // vector dofs. this is what happens in a corner in 2d and 3d (but
+        // not on an edge in 3d, where we have only 2, i.e. <DIM,
+        // contributions. Here we do not want to average the normal
+        // vectors. Since we have DIM contributions, let's assume (and
+        // verify) that they are in fact all linearly independent; in that
+        // case, all vector components are constrained and we need to set all 
+        // of them to the corresponding boundary values
+        case dim:
+        {
+          // assert that indeed only a single cell has contributed
+          Assert (cell_to_normals_map.size() == 1,
+                  ExcInternalError());
 
-          // this is the slightly more complicated case that a single cell has
-          // contributed with exactly DIM normal vectors to the same set of
-          // vector dofs. this is what happens in a corner in 2d and 3d (but
-          // not on an edge in 3d, where we have only 2, i.e. <DIM,
-          // contributions. Here we do not want to average the normal
-          // vectors. Since we have DIM contributions, let's assume (and
-          // verify) that they are in fact all linearly independent; in that
-          // case, all vector components are constrained and we need to set
-          // them to zero
-          case dim:
+          // check linear independence by computing the determinant of the
+          // matrix created from all the normal vectors. if they are
+          // linearly independent, then the determinant is nonzero. if they
+          // are orthogonal, then the matrix is in fact equal to 1 (since
+          // they are all unit vectors); make sure the determinant is larger
+          // than 1e-3 to avoid cases where cells are degenerate
           {
-            // assert that indeed only a single cell has contributed
-            Assert (cell_to_normals_map.size() == 1,
-                    ExcInternalError());
+            Tensor<2,dim> t;
+              
+            typename DoFToNormalsMap::const_iterator x = same_dof_range[0];
+            for (unsigned int i=0; i<dim; ++i, ++x)
+              for (unsigned int j=0; j<dim; ++j)
+                t[i][j] = x->second.first[j];
+
+            Assert (std::fabs(determinant (t)) > 1e-3,
+                    ExcMessage("Found a set of normal vectors that are nearly collinear."));
+          }
 
-            // check linear independence by computing the determinant of the
-            // matrix created from all the normal vectors. if they are
-            // linearly independent, then the determinant is nonzero. if they
-            // are orthogonal, then the matrix is in fact equal to 1 (since
-            // they are all unit vectors); make sure the determinant is larger
-            // than 1e-3 to avoid cases where cells are degenerate
+          // so all components of this vector dof are constrained. enter
+          // this into the constraint matrix
+          //
+          // ignore dofs already constrained
+          const internal::VectorDoFTuple<dim> &
+          dof_indices = same_dof_range[0]->first;
+          const Vector<double> b_values = dof_vector_to_b_values[dof_indices];
+          for (unsigned int i=0; i<dim; ++i)
+            if (!constraints.is_constrained(same_dof_range[0]->first.dof_indices[i])
+                &&
+                constraints.can_store_line(same_dof_range[0]->first.dof_indices[i]))
             {
-              Tensor<2,dim> t;
-
-              typename DoFToNormalsMap::const_iterator x = same_dof_range[0];
-              for (unsigned int i=0; i<dim; ++i, ++x)
-                for (unsigned int j=0; j<dim; ++j)
-                  t[i][j] = x->second.first[j];
-
-              Assert (std::fabs(determinant (t)) > 1e-3,
-                      ExcMessage("Found a set of normal vectors that are nearly collinear."));
+              const types::global_dof_index line
+                = dof_indices.dof_indices[i];
+              constraints.add_line (line);
+              if (std::fabs(b_values[i])
+                  > std::numeric_limits<double>::epsilon())
+                constraints.set_inhomogeneity(line, b_values[i]);
+              // no add_entries here
             }
 
-            // so all components of this vector dof are constrained. enter
-            // this into the constraint matrix
-            //
-            // ignore dofs already constrained
-            for (unsigned int i=0; i<dim; ++i)
-              if (!constraints.is_constrained (same_dof_range[0]
-                                               ->first.dof_indices[i])
-                  &&
-                  constraints.can_store_line(
-                    same_dof_range[0]->first.dof_indices[i]))
-                {
-                  constraints.add_line (same_dof_range[0]->first.dof_indices[i]);
-                  // no add_entries here
-                }
-
             break;
           }
 
-
-          // this is the case of an edge contribution in 3d, i.e. the vector
-          // is constrained in two directions but not the third.
-          default:
-          {
-            Assert (dim >= 3, ExcNotImplemented());
-            Assert (max_n_contributions_per_cell == 2, ExcInternalError());
-
-            // as described in the documentation, let us first collect what
-            // each of the cells contributed at the current point. we use a
-            // std::list instead of a std::set (which would be more natural)
-            // because std::set requires that the stored elements are
-            // comparable with operator<
-            typedef
-            std::map<typename DH<dim,spacedim>::active_cell_iterator, std::list<Tensor<1,dim> > >
+        // this is the case of an edge contribution in 3d, i.e. the vector
+        // is constrained in two directions but not the third.
+        default:
+        {
+          Assert (dim >= 3, ExcNotImplemented());
+          Assert (max_n_contributions_per_cell == 2, ExcInternalError());
+
+          // as described in the documentation, let us first collect what
+          // each of the cells contributed at the current point. we use a
+          // std::list instead of a std::set (which would be more natural)
+          // because std::set requires that the stored elements are
+          // comparable with operator<
+          typedef std::map<typename DH<dim,spacedim>::active_cell_iterator,
+                           std::list<Tensor<1,dim> > >
             CellContributions;
-            CellContributions cell_contributions;
-
-            for (typename DoFToNormalsMap::const_iterator
-                 q = same_dof_range[0];
-                 q != same_dof_range[1]; ++q)
-              cell_contributions[q->second.second].push_back (q->second.first);
-            Assert (cell_contributions.size() >= 1, ExcInternalError());
-
-            // now for each cell that has contributed determine the number of
-            // normal vectors it has contributed. we currently only implement
-            // if this is dim-1 for all cells (if a single cell has
-            // contributed dim, or if all adjacent cells have contributed 1
-            // normal vector, this is already handled above).
-            //
-            // we only implement the case that all cells contribute
-            // dim-1 because we assume that we are following an edge
-            // of the domain (think: we are looking at a vertex
-            // located on one of the edges of a refined cube where the
-            // boundary indicators of the two adjacent faces of the
-            // cube are both listed in the set of boundary indicators
-            // passed to this function). in that case, all cells along
-            // that edge of the domain are assumed to have contributed
-            // dim-1 normal vectors. however, there are cases where
-            // this assumption is not justified (see the lengthy
-            // explanation in test no_flux_12.cc) and in those cases
-            // we simply ignore the cell that contributes only
-            // once. this is also discussed at length in the
-            // documentation of this function.
-            //
-            // for each contributing cell compute the tangential vector that
-            // remains unconstrained
-            std::list<Tensor<1,dim> > tangential_vectors;
-            for (typename CellContributions::const_iterator
-                 contribution = cell_contributions.begin();
-                 contribution != cell_contributions.end();
-                 ++contribution)
-              {
+          CellContributions cell_contributions;
+
+          for (typename DoFToNormalsMap::const_iterator
+               q = same_dof_range[0];
+               q != same_dof_range[1]; ++q)
+            cell_contributions[q->second.second].push_back (q->second.first);
+          Assert (cell_contributions.size() >= 1, ExcInternalError());
+
+          // now for each cell that has contributed determine the number of
+          // normal vectors it has contributed. we currently only implement
+          // if this is dim-1 for all cells (if a single cell has
+          // contributed dim, or if all adjacent cells have contributed 1
+          // normal vector, this is already handled above).
+          //
+          // we only implement the case that all cells contribute
+          // dim-1 because we assume that we are following an edge
+          // of the domain (think: we are looking at a vertex
+          // located on one of the edges of a refined cube where the
+          // boundary indicators of the two adjacent faces of the
+          // cube are both listed in the set of boundary indicators
+          // passed to this function). in that case, all cells along
+          // that edge of the domain are assumed to have contributed
+          // dim-1 normal vectors. however, there are cases where
+          // this assumption is not justified (see the lengthy
+          // explanation in test no_flux_12.cc) and in those cases
+          // we simply ignore the cell that contributes only
+          // once. this is also discussed at length in the
+          // documentation of this function.
+          //
+          // for each contributing cell compute the tangential vector that
+          // remains unconstrained
+          std::list<Tensor<1,dim> > tangential_vectors;
+          for (typename CellContributions::const_iterator
+               contribution = cell_contributions.begin();
+               contribution != cell_contributions.end();
+               ++contribution)
+          {
 #ifdef DEBUG_NO_NORMAL_FLUX
-                std::cout << "   Treating edge case with dim-1 contributions." << std::endl
-                          << "   Looking at cell " << contribution->first
-                          << " which has contributed these normal vectors:"
-                          << std::endl;
-                for (typename std::list<Tensor<1,dim> >::const_iterator
-                     t = contribution->second.begin();
-                     t != contribution->second.end();
-                     ++t)
-                  std::cout << "      " << *t << std::endl;
+            std::cout << "   Treating edge case with dim-1 contributions." << std::endl
+                      << "   Looking at cell " << contribution->first
+                      << " which has contributed these normal vectors:"
+                      << std::endl;
+            for (typename std::list<Tensor<1,dim> >::const_iterator
+                 t = contribution->second.begin();
+                 t != contribution->second.end();
+                 ++t)
+              std::cout << "      " << *t << std::endl;
 #endif
 
-                // as mentioned above, simply ignore cells that only
-                // contribute once
-                if (contribution->second.size() < dim-1)
-                  continue;
-
-                Tensor<1,dim> normals[dim-1];
-                {
-                  unsigned int index=0;
-                  for (typename std::list<Tensor<1,dim> >::const_iterator
-                       t = contribution->second.begin();
-                       t != contribution->second.end();
-                       ++t, ++index)
-                    normals[index] = *t;
-                  Assert (index == dim-1, ExcInternalError());
-                }
-
-                // calculate the tangent as the outer product of the normal
-                // vectors. since these vectors do not need to be orthogonal
-                // (think, for example, the case of the deal.II/no_flux_07
-                // test: a sheared cube in 3d, with Q2 elements, where we have
-                // constraints from the two normal vectors of two faces of the
-                // sheared cube that are not perpendicular to each other), we
-                // have to normalize the outer product
-                Tensor<1,dim> tangent;
-                switch (dim)
-                  {
-                  case 3:
-                    // take cross product between normals[0] and
-                    // normals[1]. write it in the current form (with [dim-2])
-                    // to make sure that compilers don't warn about
-                    // out-of-bounds accesses -- the warnings are bogus since
-                    // we get here only for dim==3, but at least one isn't
-                    // quite smart enough to notice this and warns when
-                    // compiling the function in 2d
-                    cross_product (tangent, normals[0], normals[dim-2]);
-                    break;
-                  default:
-                    Assert (false, ExcNotImplemented());
-                  }
-
-                Assert (std::fabs (tangent.norm()) > 1e-12,
-                        ExcMessage("Two normal vectors from adjacent faces are almost "
-                                   "parallel."));
-                tangent /= tangent.norm();
-
-                tangential_vectors.push_back (tangent);
-              }
+            // as mentioned above, simply ignore cells that only
+            // contribute once
+            if (contribution->second.size() < dim-1)
+              continue;
+              
+            Tensor<1,dim> normals[dim-1];
+            {
+              unsigned int index=0;
+              for (typename std::list<Tensor<1,dim> >::const_iterator
+                   t = contribution->second.begin();
+                   t != contribution->second.end();
+                   ++t, ++index)
+                normals[index] = *t;
+              Assert (index == dim-1, ExcInternalError());
+            }
 
-            // go through the list of tangents and make sure that they all
-            // roughly point in the same direction as the first one (i.e. have
-            // an angle less than 90 degrees); if they don't then flip their
-            // sign
+            // calculate the tangent as the outer product of the normal
+            // vectors. since these vectors do not need to be orthogonal
+            // (think, for example, the case of the deal.II/no_flux_07
+            // test: a sheared cube in 3d, with Q2 elements, where we have
+            // constraints from the two normal vectors of two faces of the
+            // sheared cube that are not perpendicular to each other), we
+            // have to normalize the outer product
+            Tensor<1,dim> tangent;
+            switch (dim)
             {
-              const Tensor<1,dim> first_tangent = tangential_vectors.front();
-              typename std::list<Tensor<1,dim> >::iterator
-              t = tangential_vectors.begin();
-              ++t;
-              for (; t != tangential_vectors.end(); ++t)
-                if (*t * first_tangent < 0)
-                  *t *= -1;
+              case 3:
+                // take cross product between normals[0] and
+                // normals[1]. write it in the current form (with [dim-2])
+                // to make sure that compilers don't warn about
+                // out-of-bounds accesses -- the warnings are bogus since
+                // we get here only for dim==3, but at least one isn't
+                // quite smart enough to notice this and warns when
+                // compiling the function in 2d
+                cross_product (tangent, normals[0], normals[dim-2]);
+                break;
+              default:
+                Assert (false, ExcNotImplemented());
             }
 
-            // now compute the average tangent and normalize it
-            Tensor<1,dim> average_tangent;
-            for (typename std::list<Tensor<1,dim> >::const_iterator
-                 t = tangential_vectors.begin();
-                 t != tangential_vectors.end();
-                 ++t)
-              average_tangent += *t;
-            average_tangent /= average_tangent.norm();
+            Assert (std::fabs (tangent.norm()) > 1e-12,
+                    ExcMessage("Two normal vectors from adjacent faces are almost "
+                               "parallel."));
+            tangent /= tangent.norm();
 
-            // now all that is left is that we add the constraints that the
-            // vector is parallel to the tangent
-            const internal::VectorDoFTuple<dim> &
-            dof_indices = same_dof_range[0]->first;
-            internal::add_tangentiality_constraints (dof_indices,
-                                                     average_tangent,
-                                                     constraints);
+            tangential_vectors.push_back (tangent);
           }
+
+          // go through the list of tangents and make sure that they all
+          // roughly point in the same direction as the first one (i.e. have
+          // an angle less than 90 degrees); if they don't then flip their
+          // sign
+          {
+            const Tensor<1,dim> first_tangent = tangential_vectors.front();
+            typename std::list<Tensor<1,dim> >::iterator
+              t = tangential_vectors.begin();
+            ++t;
+            for (; t != tangential_vectors.end(); ++t)
+              if (*t * first_tangent < 0)
+                *t *= -1;
           }
+
+          // now compute the average tangent and normalize it
+          Tensor<1,dim> average_tangent;
+          for (typename std::list<Tensor<1,dim> >::const_iterator
+               t = tangential_vectors.begin();
+               t != tangential_vectors.end();
+               ++t)
+            average_tangent += *t;
+          average_tangent /= average_tangent.norm();
+
+          // now all that is left is that we add the constraints that the
+          // vector is parallel to the tangent
+          const internal::VectorDoFTuple<dim> &
+            dof_indices = same_dof_range[0]->first;
+          const Vector<double> b_values = dof_vector_to_b_values[dof_indices];
+          internal::add_tangentiality_constraints (dof_indices,
+                                                   average_tangent,
+                                                   constraints,
+                                                   b_values);
+        }
       }
+    }
   }
 
 
@@ -4812,13 +4888,64 @@ namespace VectorTools
                                    const std::set<types::boundary_id> &boundary_ids,
                                    ConstraintMatrix      &constraints,
                                    const Mapping<dim, spacedim> &mapping)
+  {
+    ZeroFunction<dim>zero_function(dim);
+    typename FunctionMap<spacedim>::type function_map;
+    std::set<types::boundary_id>::const_iterator it
+      = boundary_ids.begin();
+    for (;it != boundary_ids.end(); ++it)
+      function_map[*it] = &zero_function;
+    compute_nonzero_tangential_flux_constraints(dof_handler,
+                                                first_vector_component,
+                                                boundary_ids,
+                                                function_map,
+                                                constraints,
+                                                mapping);
+  }
+
+  template <int dim, template <int, int> class DH, int spacedim>
+  void
+  compute_nonzero_tangential_flux_constraints (const DH<dim,spacedim> &dof_handler,
+                                               const unsigned int     first_vector_component,
+                                               const std::set<types::boundary_id> &boundary_ids,
+                                               typename FunctionMap<spacedim>::type &function_map,
+                                               ConstraintMatrix      &constraints,
+                                               const Mapping<dim, spacedim> &mapping)
   {
     ConstraintMatrix no_normal_flux_constraints(constraints.get_local_lines());
-    compute_no_normal_flux_constraints (dof_handler,
-                                        first_vector_component,
-                                        boundary_ids,
-                                        no_normal_flux_constraints,
-                                        mapping);
+    compute_nonzero_normal_flux_constraints (dof_handler,
+                                             first_vector_component,
+                                             boundary_ids,
+                                             function_map,
+                                             no_normal_flux_constraints,
+                                             mapping);
+
+    hp::FECollection<dim,spacedim>      fe_collection (dof_handler.get_fe());
+    hp::MappingCollection<dim,spacedim> mapping_collection;
+    for (unsigned int i=0; i<fe_collection.size(); ++i)
+      mapping_collection.push_back (mapping);
+    
+    // now also create a quadrature collection for the faces of a cell. fill
+    // it with a quadrature formula with the support points on faces for each
+    // FE
+    hp::QCollection<dim-1> face_quadrature_collection;
+    for (unsigned int i=0; i<fe_collection.size(); ++i)
+    {
+      const std::vector<Point<dim-1> > &
+      unit_support_points = fe_collection[i].get_unit_face_support_points();
+        
+      Assert (unit_support_points.size() == fe_collection[i].dofs_per_face,
+              ExcInternalError());
+       
+      face_quadrature_collection.push_back (Quadrature<dim-1> (unit_support_points));
+    }
+      
+    // now create the object with which we will generate the normal vectors
+    hp::FEFaceValues<dim,spacedim> x_fe_face_values (mapping_collection,
+                                                     fe_collection,
+                                                     face_quadrature_collection,
+                                                     update_q_points |
+                                                     update_normal_vectors);
 
     // Extract a list that collects all vector components that belong to the
     // same node (scalar basis function). When creating that list, we use an
@@ -4826,13 +4953,17 @@ namespace VectorTools
     std::set<std_cxx1x::array<types::global_dof_index,dim>, PointComparator<dim> > vector_dofs;
     std::vector<types::global_dof_index> face_dofs;
 
+    std::map<std_cxx1x::array<types::global_dof_index,dim>, Vector<double> >
+      dof_vector_to_b_values;
+
+    std::set<types::boundary_id>::iterator b_id;
     std::vector<std_cxx1x::array<types::global_dof_index,dim> > cell_vector_dofs;
     for (typename DH<dim,spacedim>::active_cell_iterator cell =
            dof_handler.begin_active(); cell != dof_handler.end(); ++cell)
       if (!cell->is_artificial())
         for (unsigned int face_no=0; face_no < GeometryInfo<dim>::faces_per_cell;
              ++face_no)
-          if (boundary_ids.find(cell->face(face_no)->boundary_indicator())
+          if ((b_id=boundary_ids.find(cell->face(face_no)->boundary_indicator()))
               != boundary_ids.end())
             {
               const FiniteElement<dim> &fe = cell->get_fe();
@@ -4842,25 +4973,50 @@ namespace VectorTools
               face_dofs.resize (fe.dofs_per_face);
               face->get_dof_indices (face_dofs, cell->active_fe_index());
 
+              x_fe_face_values.reinit (cell, face_no);
+              const FEFaceValues<dim> &fe_values = x_fe_face_values.get_present_fe_values();
+
+              std::map<types::global_dof_index, double> dof_to_b_value;
+              
               unsigned int n_scalar_indices = 0;
               cell_vector_dofs.resize(fe.dofs_per_face);
               for (unsigned int i=0; i<fe.dofs_per_face; ++i)
+              {
                 if (fe.face_system_to_component_index(i).first >= first_vector_component &&
                     fe.face_system_to_component_index(i).first < first_vector_component + dim)
-                  {
-                    n_scalar_indices =
-                      std::max(n_scalar_indices,
-                               fe.face_system_to_component_index(i).second+1);
-                    cell_vector_dofs[fe.face_system_to_component_index(i).second]
-                    [fe.face_system_to_component_index(i).first-first_vector_component]
-                      = face_dofs[i];
-                  }
+                {
+                  const unsigned int component
+                    = fe.face_system_to_component_index(i).first
+                      -first_vector_component;
+                  n_scalar_indices =
+                    std::max(n_scalar_indices,
+                             fe.face_system_to_component_index(i).second+1);
+                  cell_vector_dofs[fe.face_system_to_component_index(i).second]
+                    [component]
+                    = face_dofs[i];
+                
+                  const Point<dim> point
+                    = fe_values.quadrature_point(i);
+                  const double b_value
+                    = function_map[*b_id]->value(point, component);
+                  dof_to_b_value.insert
+                    (std::make_pair(face_dofs[i], b_value));
+                }
+              }
 
               // now we identified the vector indices on the cell, so next
               // insert them into the set (it would be expensive to directly
               // insert incomplete points into the set)
               for (unsigned int i=0; i<n_scalar_indices; ++i)
+              {
                 vector_dofs.insert(cell_vector_dofs[i]);
+                Vector<double> b_values(dim);
+                for (unsigned int j=0; j<dim; ++j)
+                  b_values[j]=dof_to_b_value[cell_vector_dofs[i][j]];
+                dof_vector_to_b_values.insert
+                  (std::make_pair(cell_vector_dofs[i], b_values));
+              }
+
             }
 
     // iterate over the list of all vector components we found and see if we
@@ -4886,11 +5042,15 @@ namespace VectorTools
             // if more than one no-flux constraint is present, we need to
             // constrain all vector degrees of freedom (we are in a corner
             // where several faces meet and to get a continuous FE solution we
-            // need to set all conditions to zero).
+            // need to set all conditions corresponding to the boundary function.).
             if (n_constraints > 1)
               {
+                const Vector<double> b_value = dof_vector_to_b_values[*it];
                 for (unsigned int d=0; d<dim; ++d)
+                {
                   constraints.add_line((*it)[d]);
+                  constraints.set_inhomogeneity((*it)[d], b_value(d));
+                }
                 continue;
               }
 
@@ -4921,6 +5081,7 @@ namespace VectorTools
                 Assert (index != -1, ExcInternalError());
                 normal[index] = (*constrained)[c].second;
               }
+            Vector<double> boundary_value = dof_vector_to_b_values[*it];
             for (unsigned int d=0; d<dim; ++d)
               {
                 if (is_constrained[d])
@@ -4932,6 +5093,7 @@ namespace VectorTools
                     if (std::abs(normal[d]) > 1e-13)
                       constraints.add_entry(new_index, (*it)[constrained_index],
                                             -normal[d]);
+                    constraints.set_inhomogeneity(new_index, boundary_value[d]);
                   }
               }
           }
index 4085903ce0b2afd76dd87113209becc1cc5f4e7c..6a22f877f596ce437f6191281bd9a6e42a3ef01e 100644 (file)
@@ -3530,104 +3530,52 @@ namespace parallel
       }
     }
 
-    template <>
-    void
-    Triangulation<1,1>::
-    fill_vertices_with_ghost_neighbors
-    (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
-     &vertices_with_ghost_neighbors)
-    {
-      Assert (false, ExcNotImplemented());
-    }
-
-    template <>
-    void
-    Triangulation<1,2>::
-    fill_vertices_with_ghost_neighbors
-    (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
-     &vertices_with_ghost_neighbors)
-    {
-      Assert (false, ExcNotImplemented());
-    }
-
-    template <>
-    void
-    Triangulation<1,3>::
-    fill_vertices_with_ghost_neighbors
-    (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
-     &vertices_with_ghost_neighbors)
-    {
-      Assert (false, ExcNotImplemented());
-    }
 
     /**
      * Determine the neighboring subdomains that are adjacent to each vertex.
-     * This is achieved via the p4est_iterate tool
+     * This is achieved via the p4est_iterate/p8est_iterate tool
      */
-    template <>
+    template <int dim, int spacedim>
     void
-    Triangulation<2,2>::
+    Triangulation<dim,spacedim>::
     fill_vertices_with_ghost_neighbors
     (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
      &vertices_with_ghost_neighbors)
     {
-      struct find_ghosts<2,2> fg;
-
-      fg.subids = sc_array_new (sizeof (dealii::types::subdomain_id));
-      fg.triangulation = this;
-      fg.vertices_with_ghost_neighbors = &(vertices_with_ghost_neighbors);
-
-      p4est_iterate (this->parallel_forest, this->parallel_ghost, static_cast<void *>(&fg),
-                     NULL, find_ghosts_face<2,2>, find_ghosts_corner<2,2>);
-
-      sc_array_destroy (fg.subids);
-    }
+      Assert (dim>1, ExcNotImplemented());
 
-    /**
-     * Determine the neighboring subdomains that are adjacent to each vertex.
-     * This is achieved via the p4est_iterate tool
-     */
-    template <>
-    void
-    Triangulation<2,3>::
-    fill_vertices_with_ghost_neighbors
-    (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
-     &vertices_with_ghost_neighbors)
-    {
-      struct find_ghosts<2,3> fg;
+      struct find_ghosts<dim,spacedim> fg;
 
       fg.subids = sc_array_new (sizeof (dealii::types::subdomain_id));
       fg.triangulation = this;
-      fg.vertices_with_ghost_neighbors = &(vertices_with_ghost_neighbors);
+      fg.vertices_with_ghost_neighbors = &vertices_with_ghost_neighbors;
 
-      p4est_iterate (this->parallel_forest, this->parallel_ghost, static_cast<void *>(&fg),
-                     NULL, find_ghosts_face<2,3>, find_ghosts_corner<2,3>);
+      // switch between functions. to make the compiler happy, we need to cast
+      // the first two arguments to the type p[48]est_iterate wants to see. this
+      // cast is the identity cast in each of the two branches, so it is safe.
+      switch (dim)
+      {
+      case 2:
+        p4est_iterate (reinterpret_cast<dealii::internal::p4est::types<2>::forest*>(this->parallel_forest),
+                       reinterpret_cast<dealii::internal::p4est::types<2>::ghost*>(this->parallel_ghost),
+                       static_cast<void *>(&fg),
+                       NULL, find_ghosts_face<2,spacedim>, find_ghosts_corner<2,spacedim>);
+        break;
+
+      case 3:
+        p8est_iterate (reinterpret_cast<dealii::internal::p4est::types<3>::forest*>(this->parallel_forest),
+                       reinterpret_cast<dealii::internal::p4est::types<3>::ghost*>(this->parallel_ghost),
+                       static_cast<void *>(&fg),
+                       NULL, find_ghosts_face<3,spacedim>, find_ghosts_edge<3,spacedim>, find_ghosts_corner<3,spacedim>);
+        break;
+
+      default:
+        Assert (false, ExcNotImplemented());
+      }
 
       sc_array_destroy (fg.subids);
     }
 
-    /**
-     * Determine the neighboring subdomains that are adjacent to each vertex.
-     * This is achieved via the p8est_iterate tool
-     */
-    template <>
-    void
-    Triangulation<3,3>::
-    fill_vertices_with_ghost_neighbors
-    (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
-     &vertices_with_ghost_neighbors)
-    {
-      struct find_ghosts<3,3> fg;
-
-      fg.subids = sc_array_new (sizeof (dealii::types::subdomain_id));
-      fg.triangulation = this;
-      fg.vertices_with_ghost_neighbors = &(vertices_with_ghost_neighbors);
-
-      p8est_iterate (this->parallel_forest, this->parallel_ghost, static_cast<void *>(&fg),
-                     NULL, find_ghosts_face<3,3>, find_ghosts_edge<3,3>, find_ghosts_corner<3,3>);
-
-      sc_array_destroy (fg.subids);
-    }
 
     template <int dim, int spacedim>
     MPI_Comm
@@ -3636,6 +3584,7 @@ namespace parallel
       return mpi_communicator;
     }
 
+
     template<int dim, int spacedim>
     void
     Triangulation<dim,spacedim>::add_periodicity
@@ -3909,162 +3858,71 @@ namespace parallel
 
 
 
-    // TODO: again problems with specialization in only one template argument
-    template <>
-    Triangulation<1,1>::Triangulation (MPI_Comm)
+    template <int spacedim>
+    Triangulation<1,spacedim>::Triangulation (MPI_Comm)
     {
       Assert (false, ExcNotImplemented());
     }
 
 
-    template <>
-    Triangulation<1,1>::~Triangulation ()
+    template <int spacedim>
+    Triangulation<1,spacedim>::~Triangulation ()
     {
       Assert (false, ExcNotImplemented());
     }
 
 
 
-    template <>
+    template <int spacedim>
     types::subdomain_id
-    Triangulation<1,1>::locally_owned_subdomain () const
+    Triangulation<1,spacedim>::locally_owned_subdomain () const
     {
       Assert (false, ExcNotImplemented());
       return 0;
     }
 
 
-    template <>
+    template <int spacedim>
     types::global_dof_index
-    Triangulation<1,1>::n_global_active_cells () const
+    Triangulation<1,spacedim>::n_global_active_cells () const
     {
       Assert (false, ExcNotImplemented());
       return 0;
     }
 
 
-    template <>
+    template <int spacedim>
     unsigned int
-    Triangulation<1,1>::n_global_levels () const
+    Triangulation<1,spacedim>::n_global_levels () const
     {
       Assert (false, ExcNotImplemented());
       return 0;
     }
 
 
-    template <>
+    template <int spacedim>
     MPI_Comm
-    Triangulation<1,1>::get_communicator () const
+    Triangulation<1,spacedim>::get_communicator () const
     {
       return MPI_COMM_WORLD;
     }
 
-    template <>
+    template <int spacedim>
     const std::vector<types::global_dof_index> &
-    Triangulation<1,1>::get_p4est_tree_to_coarse_cell_permutation() const
+    Triangulation<1,spacedim>::get_p4est_tree_to_coarse_cell_permutation() const
     {
       static std::vector<types::global_dof_index> a;
       return a;
     }
 
-
-    template <>
-    Triangulation<1,2>::Triangulation (MPI_Comm)
-    {
-      Assert (false, ExcNotImplemented());
-    }
-
-
-    template <>
-    Triangulation<1,2>::~Triangulation ()
-    {
-      Assert (false, ExcNotImplemented());
-    }
-
-
-
-    template <>
-    types::subdomain_id
-    Triangulation<1,2>::locally_owned_subdomain () const
-    {
-      Assert (false, ExcNotImplemented());
-      return 0;
-    }
-
-
-    template <>
-    types::global_dof_index
-    Triangulation<1,2>::n_global_active_cells () const
-    {
-      Assert (false, ExcNotImplemented());
-      return 0;
-    }
-
-
-    template <>
-    unsigned int
-    Triangulation<1,2>::n_global_levels () const
-    {
-      Assert (false, ExcNotImplemented());
-      return 0;
-    }
-
-
-    template <>
-    MPI_Comm
-    Triangulation<1,2>::get_communicator () const
-    {
-      return MPI_COMM_WORLD;
-    }
-
-
-    template <>
-    Triangulation<1,3>::Triangulation (MPI_Comm)
-    {
-      Assert (false, ExcNotImplemented());
-    }
-
-
-    template <>
-    Triangulation<1,3>::~Triangulation ()
-    {
-      Assert (false, ExcNotImplemented());
-    }
-
-
-
-    template <>
-    types::subdomain_id
-    Triangulation<1,3>::locally_owned_subdomain () const
-    {
-      Assert (false, ExcNotImplemented());
-      return 0;
-    }
-
-
-    template <>
-    types::global_dof_index
-    Triangulation<1,3>::n_global_active_cells () const
-    {
-      Assert (false, ExcNotImplemented());
-      return 0;
-    }
-
-
-    template <>
-    unsigned int
-    Triangulation<1,3>::n_global_levels () const
+    template <int spacedim>
+    void
+    Triangulation<1,spacedim>::
+    fill_vertices_with_ghost_neighbors
+    (std::map<unsigned int, std::set<dealii::types::subdomain_id> >
+     &vertices_with_ghost_neighbors)
     {
       Assert (false, ExcNotImplemented());
-      return 0;
-    }
-
-
-    template <>
-    MPI_Comm
-    Triangulation<1,3>::get_communicator () const
-    {
-      return MPI_COMM_WORLD;
     }
   }
 }
index 3ea549933447ed05ab9bf7388230f450e8851844..1ca207eb0da10f288cfa5ac6005bdaefdde4bb09 100644 (file)
@@ -984,12 +984,6 @@ namespace DoFTools
     Assert (component_mask.represents_n_components(n_components),
             ExcDimensionMismatch(n_components,
                                  component_mask.size()));
-    std::vector<unsigned int> localized_component (n_components,
-                                                   numbers::invalid_unsigned_int);
-    unsigned int n_components_selected = 0;
-    for (unsigned int i=0; i<n_components; ++i)
-      if (component_mask[i] == true)
-        localized_component[i] = n_components_selected++;
 
     std::vector<unsigned char> dofs_by_component (dof_handler.n_locally_owned_dofs());
     internal::get_component_association (dof_handler, component_mask,
@@ -1008,17 +1002,37 @@ namespace DoFTools
       if (component_mask[dofs_by_component[i]])
         component_numbering[i] = count++;
 
-    // First count the number of dofs in the current component.
-    constant_modes.clear ();
-    constant_modes.resize (n_components_selected, std::vector<bool>(n_selected_dofs,
-                           false));
-
-    // Loop over all owned cells and ask the element for the constant modes
+    // get the element constant modes and find a translation table between
+    // index in the constant modes and the components.
+    //
+    // TODO: We might be able to extend this also for elements which do not
+    // have the same constant modes, but that is messy...
     const dealii::hp::FECollection<DH::dimension,DH::space_dimension>
       fe_collection (dof_handler.get_fe());
     std::vector<Table<2,bool> > element_constant_modes;
+    std::vector<std::vector<std::pair<unsigned int, unsigned int> > >
+      constant_mode_to_component_translation(n_components);
+    unsigned int n_constant_modes = 0;
     for (unsigned int f=0; f<fe_collection.size(); ++f)
-      element_constant_modes.push_back(fe_collection[f].get_constant_modes());
+      {
+        std::pair<Table<2,bool>, std::vector<unsigned int> > data
+          = fe_collection[f].get_constant_modes();
+        element_constant_modes.push_back(data.first);
+        if (f==0)
+          for (unsigned int i=0; i<data.second.size(); ++i)
+            if (component_mask[data.second[i]])
+              constant_mode_to_component_translation[data.second[i]].
+                push_back(std::make_pair(n_constant_modes++,i));
+        AssertDimension(element_constant_modes.back().n_rows(),
+                        element_constant_modes[0].n_rows());
+      }
+
+    // First count the number of dofs in the current component.
+    constant_modes.clear ();
+    constant_modes.resize (n_constant_modes, std::vector<bool>(n_selected_dofs,
+                                                               false));
+
+    // Loop over all owned cells and ask the element for the constant modes
 
     typename DH::active_cell_iterator cell = dof_handler.begin_active(),
                                       endc = dof_handler.end();
@@ -1036,8 +1050,11 @@ namespace DoFTools
                   locally_owned_dofs.index_within_set(dof_indices[i]);
                 const unsigned int comp = dofs_by_component[loc_index];
                 if (component_mask[comp])
-                  constant_modes[localized_component[comp]][component_numbering[loc_index]] =
-                    element_constant_modes[cell->active_fe_index()](comp,i);
+                  for (unsigned int j=0; j<constant_mode_to_component_translation[comp].size(); ++j)
+                    constant_modes[constant_mode_to_component_translation[comp][j].first]
+                      [component_numbering[loc_index]] =
+                      element_constant_modes[cell->active_fe_index()]
+                      (constant_mode_to_component_translation[comp][j].second,i);
               }
         }
   }
index 8237022f8ab76c8d9395ce0ad03635e11c2ba39b..7e9d79bf4d78a9a96e9f34bdb7148e5431937d9d 100644 (file)
@@ -1104,11 +1104,13 @@ FiniteElement<dim,spacedim>::has_support_on_face (
 
 
 template <int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FiniteElement<dim,spacedim>::get_constant_modes () const
 {
   Assert (false, ExcNotImplemented());
-  return Table<2,bool>(this->n_components(), this->dofs_per_cell);
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (Table<2,bool>(this->n_components(), this->dofs_per_cell),
+     std::vector<unsigned int>(this->n_components()));
 }
 
 
index 5f53049c9066a9b2007cf9c6f0f8ea560d67b84c..105b50e41c297f9d3b891df79846d5965b151d39 100644 (file)
@@ -51,7 +51,7 @@ FE_BDM<dim>::FE_BDM (const unsigned int deg)
 
   const unsigned int n_dofs = this->dofs_per_cell;
 
-  this->mapping_type = mapping_piola;
+  this->mapping_type = mapping_bdm;
   // These must be done first, since
   // they change the evaluation of
   // basis functions
index ca52e4f1498728f6baf00bdb31592bbd2d42bb96..daa2b51d3a30f1a30f4359a1b90392113709a361 100644 (file)
@@ -238,12 +238,13 @@ FE_DGP<dim,spacedim>::has_support_on_face (const unsigned int,
 
 
 template <int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_DGP<dim,spacedim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
   constant_modes(0,0) = true;
-  return constant_modes;
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1, 0));
 }
 
 
index fd6319741748e7818067745cc75f77a27a08d80b..8fe34b6c6028adbc68802c063d8495bf3ee56dd6 100644 (file)
@@ -343,9 +343,7 @@ get_interpolation_matrix (const FiniteElement<dim, spacedim> &x_source_fe,
   // source FE is also a
   // DGQ element
   typedef FiniteElement<dim, spacedim> FE;
-  AssertThrow ((x_source_fe.get_name().find ("FE_DGQ<") == 0)
-               ||
-               (dynamic_cast<const FE_DGQ<dim, spacedim>*>(&x_source_fe) != 0),
+  AssertThrow ((dynamic_cast<const FE_DGQ<dim, spacedim>*>(&x_source_fe) != 0),
                typename FE::ExcInterpolationNotImplemented() );
 
   // ok, source is a Q element, so
@@ -432,9 +430,7 @@ get_face_interpolation_matrix (const FiniteElement<dim, spacedim> &x_source_fe,
   // is necessarily empty -- i.e. there isn't
   // much we need to do here.
   typedef FiniteElement<dim,spacedim> FE;
-  AssertThrow ((x_source_fe.get_name().find ("FE_DGQ<") == 0)
-               ||
-               (dynamic_cast<const FE_DGQ<dim, spacedim>*>(&x_source_fe) != 0),
+  AssertThrow ((dynamic_cast<const FE_DGQ<dim, spacedim>*>(&x_source_fe) != 0),
                typename FE::ExcInterpolationNotImplemented());
 
   Assert (interpolation_matrix.m() == 0,
@@ -461,9 +457,7 @@ get_subface_interpolation_matrix (const FiniteElement<dim, spacedim> &x_source_f
   // is necessarily empty -- i.e. there isn't
   // much we need to do here.
   typedef FiniteElement<dim, spacedim> FE;
-  AssertThrow ((x_source_fe.get_name().find ("FE_DGQ<") == 0)
-               ||
-               (dynamic_cast<const FE_DGQ<dim, spacedim>*>(&x_source_fe) != 0),
+  AssertThrow ((dynamic_cast<const FE_DGQ<dim, spacedim>*>(&x_source_fe) != 0),
                typename FE::ExcInterpolationNotImplemented());
 
   Assert (interpolation_matrix.m() == 0,
@@ -771,13 +765,13 @@ FE_DGQ<dim, spacedim>::has_support_on_face (const unsigned int shape_index,
 
 
 template <int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_DGQ<dim,spacedim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
-  for (unsigned int i=0; i<this->dofs_per_cell; ++i)
-    constant_modes(0,i) = true;
-  return constant_modes;
+  constant_modes.fill(true);
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1, 0));
 }
 
 
@@ -804,59 +798,39 @@ template <int dim, int spacedim>
 std::string
 FE_DGQArbitraryNodes<dim,spacedim>::get_name () const
 {
-  // note that the
-  // FETools::get_fe_from_name
-  // function does not work for
-  // FE_DGQArbitraryNodes since
-  // there is no initialization by
-  // a degree value.
+  // note that the FETools::get_fe_from_name function does not work for
+  // FE_DGQArbitraryNodes since there is no initialization by a degree value.
   std::ostringstream namebuf;
+  bool equidistant = true;
+  std::vector<double> points(this->degree+1);
 
-  bool type = true;
-  const unsigned int n_points = this->degree +1;
-  std::vector<double> points(n_points);
-  const unsigned int dofs_per_cell = this->dofs_per_cell;
-  const std::vector<Point<dim> > &unit_support_points = this->unit_support_points;
-  unsigned int index = 0;
+  std::vector<unsigned int> lexicographic = this->poly_space.get_numbering_inverse();
+  for (unsigned int j=0; j<=this->degree; j++)
+    points[j] = this->unit_support_points[lexicographic[j]][0];
 
-  // Decode the support points
-  // in one coordinate direction.
-  for (unsigned int j=0; j<dofs_per_cell; j++)
-    {
-      if ((dim>1) ? (unit_support_points[j](1)==0 &&
-                     ((dim>2) ? unit_support_points[j](2)==0: true)) : true)
-        {
-          points[index++] = unit_support_points[j](0);
-        }
-    }
-  Assert (index == n_points,
-          ExcMessage ("Could not decode support points in one coordinate direction."));
-
-  // Check whether the support
-  // points are equidistant.
-  for (unsigned int j=0; j<n_points; j++)
+  // Check whether the support points are equidistant.
+  for (unsigned int j=0; j<=this->degree; j++)
     if (std::fabs(points[j] - (double)j/this->degree) > 1e-15)
       {
-        type = false;
+        equidistant = false;
         break;
       }
 
-  if (type == true)
+  if (equidistant == true)
     namebuf << "FE_DGQ<" << dim << ">(" << this->degree << ")";
   else
     {
 
-      // Check whether the support
-      // points come from QGaussLobatto.
-      const QGaussLobatto<1> points_gl(n_points);
-      type = true;
-      for (unsigned int j=0; j<n_points; j++)
+      // Check whether the support points come from QGaussLobatto.
+      const QGaussLobatto<1> points_gl(this->degree+1);
+      bool gauss_lobatto = true;
+      for (unsigned int j=0; j<=this->degree; j++)
         if (points[j] != points_gl.point(j)(0))
           {
-            type = false;
+            gauss_lobatto = false;
             break;
           }
-      if (type == true)
+      if (gauss_lobatto == true)
         namebuf << "FE_DGQArbitraryNodes<" << dim << ">(QGaussLobatto(" << this->degree+1 << "))";
       else
         namebuf << "FE_DGQArbitraryNodes<" << dim << ">(QUnknownNodes(" << this->degree << "))";
@@ -871,15 +845,11 @@ template <int dim, int spacedim>
 FiniteElement<dim,spacedim> *
 FE_DGQArbitraryNodes<dim,spacedim>::clone() const
 {
-  // TODO[Prill] : There must be a better way
-  // to extract 1D quadrature points from the
-  // tensor product FE.
-
-  // Construct a dummy quadrature formula
-  // containing the FE's nodes:
+  // Construct a dummy quadrature formula containing the FE's nodes:
   std::vector<Point<1> > qpoints(this->degree+1);
+  std::vector<unsigned int> lexicographic = this->poly_space.get_numbering_inverse();
   for (unsigned int i=0; i<=this->degree; ++i)
-    qpoints[i] = Point<1>(this->unit_support_points[i][0]);
+    qpoints[i] = Point<1>(this->unit_support_points[lexicographic[i]][0]);
   Quadrature<1> pquadrature(qpoints);
 
   return new FE_DGQArbitraryNodes<dim,spacedim>(pquadrature);
index 9d62ff19d54edb7b79c31de16557adc957b70565..3a210bd849c79128c4d3206c471350c309a9a8d2 100644 (file)
@@ -289,13 +289,14 @@ compare_for_face_domination (const FiniteElement<dim,spacedim> &fe_other) const
 
 
 template <int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_FaceQ<dim,spacedim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
   for (unsigned int i=0; i<this->dofs_per_cell; ++i)
     constant_modes(0,i) = true;
-  return constant_modes;
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1, 0));
 }
 
 
@@ -416,13 +417,14 @@ compare_for_face_domination (const FiniteElement<1,spacedim> &fe_other) const
 
 
 template <int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_FaceQ<1,spacedim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
   for (unsigned int i=0; i<this->dofs_per_cell; ++i)
     constant_modes(0,i) = true;
-  return constant_modes;
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1,0));
 }
 
 
@@ -780,13 +782,14 @@ get_subface_interpolation_matrix (const FiniteElement<dim,spacedim> &x_source_fe
 
 
 template <int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_FaceP<dim,spacedim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
   for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
     constant_modes(0, face*this->dofs_per_face) = true;
-  return constant_modes;
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1, 0));
 }
 
 
index 29c15ced9494fb2366256934d88cc680e904a8da..40c14953f47389d6088f9667bd607d870755c1ba 100644 (file)
@@ -5466,14 +5466,18 @@ const
 
 
 template <int dim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_Nedelec<dim>::get_constant_modes() const
 {
   Table<2,bool> constant_modes(dim, this->dofs_per_cell);
   for (unsigned int d=0; d<dim; ++d)
     for (unsigned int i=0; i<this->dofs_per_cell; ++i)
       constant_modes(d,i) = true;
-  return constant_modes;
+  std::vector<unsigned int> components;
+  for (unsigned int d=0; d<dim; ++d)
+    components.push_back(d);
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, components);
 }
 
 
index 207187093a20ec6cf9c4a420de07ebe3d0eb2ed5..717d783d82308734d1530ba330f62b1dbc9d620e 100644 (file)
@@ -76,55 +76,36 @@ FE_Q<dim,spacedim>::get_name () const
   // kept in synch
 
   std::ostringstream namebuf;
-  bool type = true;
-  const unsigned int n_points = this->degree +1;
-  std::vector<double> points(n_points);
-  const unsigned int dofs_per_cell = this->dofs_per_cell;
-  const std::vector<Point<dim> > &unit_support_points = this->unit_support_points;
-  unsigned int index = 0;
+  bool equidistant = true;
+  std::vector<double> points(this->degree+1);
 
   // Decode the support points in one coordinate direction.
-  for (unsigned int j=0; j<dofs_per_cell; j++)
-    {
-      if ((dim>1) ? (unit_support_points[j](1)==0 &&
-                     ((dim>2) ? unit_support_points[j](2)==0: true)) : true)
-        {
-          if (index == 0)
-            points[index] = unit_support_points[j](0);
-          else if (index == 1)
-            points[n_points-1] = unit_support_points[j](0);
-          else
-            points[index-1] = unit_support_points[j](0);
-
-          index++;
-        }
-    }
-  Assert (index == n_points,
-          ExcMessage ("Could not decode support points in one coordinate direction."));
+  std::vector<unsigned int> lexicographic = this->poly_space.get_numbering_inverse();
+  for (unsigned int j=0; j<=this->degree; j++)
+    points[j] = this->unit_support_points[lexicographic[j]][0];
 
   // Check whether the support points are equidistant.
-  for (unsigned int j=0; j<n_points; j++)
+  for (unsigned int j=0; j<=this->degree; j++)
     if (std::fabs(points[j] - (double)j/this->degree) > 1e-15)
       {
-        type = false;
+        equidistant = false;
         break;
       }
 
-  if (type == true)
+  if (equidistant == true)
     namebuf << "FE_Q<" << dim << ">(" << this->degree << ")";
   else
     {
-
       // Check whether the support points come from QGaussLobatto.
-      const QGaussLobatto<1> points_gl(n_points);
-      type = true;
-      for (unsigned int j=0; j<n_points; j++)
+      const QGaussLobatto<1> points_gl(this->degree+1);
+      bool gauss_lobatto = true;
+      for (unsigned int j=0; j<=this->degree; j++)
         if (points[j] != points_gl.point(j)(0))
           {
-            type = false;
+            gauss_lobatto = false;
             break;
           }
-      if (type == true)
+      if (gauss_lobatto == true)
         namebuf << "FE_Q<" << dim << ">(QGaussLobatto(" << this->degree+1 << "))";
       else
         namebuf << "FE_Q<" << dim << ">(QUnknownNodes(" << this->degree << "))";
index 72122120631e85aa2910e774727a7d96eb826876..0e9b94ec33ada7d20a246b532e1302d1266c6e0e 100644 (file)
@@ -1495,14 +1495,15 @@ FE_Q_Base<POLY,dim,spacedim>::has_support_on_face (const unsigned int shape_inde
 
 
 template <typename POLY, int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_Q_Base<POLY,dim,spacedim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
-  // leave out last component
-  for (unsigned int i=0; i<Utilities::fixed_power<dim>(this->degree+1); ++i)
-    constant_modes(0, i) = true;
-  return constant_modes;
+  // FE_Q_DG0 should not use this function...
+  AssertDimension(this->dofs_per_cell, Utilities::fixed_power<dim>(this->degree+1));
+  constant_modes.fill(true);
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1, 0));
 }
 
 
index 8ecc7df8656cbf6afbd5f34b8d08d57c709dafe0..99ba0e946bae811dcae52a3586f7e37a393f2ecc 100644 (file)
@@ -307,6 +307,26 @@ FE_Q_DG0<dim,spacedim>::has_support_on_face (const unsigned int shape_index,
 }
 
 
+
+template <int dim, int spacedim>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
+FE_Q_DG0<dim,spacedim>::get_constant_modes () const
+{
+  Table<2,bool> constant_modes(2, this->dofs_per_cell);
+
+  // 1 represented by FE_Q part
+  for (unsigned int i=0; i<this->dofs_per_cell-1; ++i)
+    constant_modes(0, i) = true;
+
+  // 1 represented by DG0 part
+  constant_modes(1, this->dofs_per_cell-1) = true;
+
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int> (2, 0));
+}
+
+
+
 // explicit instantiations
 #include "fe_q_dg0.inst"
 
index b1800b63111645ae1307eb5ca180cdd470b5f64c..8d2d5bf0c6e1973b07fbb70011aebba9f3efbd21 100644 (file)
@@ -1862,7 +1862,7 @@ FE_Q_Hierarchical<dim>::get_embedding_dofs (const unsigned int sub_degree) const
 
 
 template <int dim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_Q_Hierarchical<dim>::get_constant_modes () const
 {
   Table<2,bool> constant_modes(1, this->dofs_per_cell);
@@ -1870,7 +1870,8 @@ FE_Q_Hierarchical<dim>::get_constant_modes () const
     constant_modes(0,i) = true;
   for (unsigned int i=GeometryInfo<dim>::vertices_per_cell; i<this->dofs_per_cell; ++i)
     constant_modes(0,i) = false;
-  return constant_modes;
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, std::vector<unsigned int>(1, 0));
 }
 
 
index 22208bae951905cd607824198c15cf99c6d34e6f..c799221bc71e00566001415ba49acaa4bcdc5835 100644 (file)
@@ -404,14 +404,18 @@ FE_RaviartThomas<dim>::get_dpo_vector (const unsigned int deg)
 
 
 template <int dim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FE_RaviartThomas<dim>::get_constant_modes() const
 {
   Table<2,bool> constant_modes(dim, this->dofs_per_cell);
   for (unsigned int d=0; d<dim; ++d)
     for (unsigned int i=0; i<this->dofs_per_cell; ++i)
       constant_modes(d,i) = true;
-  return constant_modes;
+  std::vector<unsigned int> components;
+  for (unsigned int d=0; d<dim; ++d)
+    components.push_back(d);
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >
+    (constant_modes, components);
 }
 
 
index 24cc2213c5b1afb4a434edda503ea4ce32b1e121..78bce6132b9f5429237499fb7e10f29af27e1651 100644 (file)
@@ -2983,28 +2983,55 @@ FESystem<dim,spacedim>::unit_face_support_point (const unsigned int index) const
 
 
 template <int dim, int spacedim>
-Table<2,bool>
+std::pair<Table<2,bool>, std::vector<unsigned int> >
 FESystem<dim,spacedim>::get_constant_modes () const
 {
+  // Note that this->n_components() is actually only an estimate of how many
+  // constant modes we will need. There might be more than one such mode
+  // (e.g. FE_Q_DG0).
   Table<2,bool> constant_modes(this->n_components(), this->dofs_per_cell);
-  unsigned int comp=0;
+  std::vector<unsigned int> components;
   for (unsigned int i=0; i<base_elements.size(); ++i)
     {
-      Table<2,bool> base_table = base_elements[i].first->get_constant_modes();
-      const unsigned int n_base_components = base_elements[i].first->n_components();
+      std::pair<Table<2,bool>, std::vector<unsigned int> >
+        base_table = base_elements[i].first->get_constant_modes();
+      AssertDimension(base_table.first.n_rows(), base_table.second.size());
+      const unsigned int element_multiplicity = this->element_multiplicity(i);
+
+      // there might be more than one constant mode for some scalar elements,
+      // so make sure the table actually fits: Create a new table with more
+      // rows
+      const unsigned int comp = components.size();
+      if (constant_modes.n_rows() < comp+base_table.first.n_rows()*element_multiplicity)
+        {
+          Table<2,bool> new_constant_modes(comp+base_table.first.n_rows()*
+                                           element_multiplicity,
+                                           constant_modes.n_cols());
+          for (unsigned int r=0; r<comp; ++r)
+            for (unsigned int c=0; c<this->dofs_per_cell; ++c)
+              new_constant_modes(r,c) = constant_modes(r,c);
+          constant_modes.swap(new_constant_modes);
+        }
+
+      // next, fill the constant modes from the individual components as well
+      // as the component numbers corresponding to the constant mode rows
       for (unsigned int k=0; k<this->dofs_per_cell; ++k)
         {
           std::pair<std::pair<unsigned int,unsigned int>, unsigned int> ind
             = this->system_to_base_index(k);
           if (ind.first.first == i)
-            for (unsigned int c=0; c<base_table.n_rows(); ++c)
-              constant_modes(comp+ind.first.second*n_base_components+c,k)
-                = base_table(c,ind.second);
+            for (unsigned int c=0; c<base_table.first.n_rows(); ++c)
+              constant_modes(comp+ind.first.second*base_table.first.n_rows()+c,k)
+                = base_table.first(c,ind.second);
         }
-      comp += n_base_components * base_elements[i].second;
+      for (unsigned int r=0; r<element_multiplicity; ++r)
+        for (unsigned int c=0; c<base_table.second.size(); ++c)
+          components.push_back(comp+r*this->base_elements[i].first->n_components()
+                               +base_table.second[c]);
     }
-  AssertDimension(comp, this->n_components());
-  return constant_modes;
+  AssertDimension(components.size(), constant_modes.n_rows());
+  return std::pair<Table<2,bool>, std::vector<unsigned int> >(constant_modes,
+                                                              components);
 }
 
 
index 954a06b25a2a143480bfa07c47e3303122f42bb4..2a466932c88e30338c4326bbeda93283ba470e0d 100644 (file)
@@ -3421,11 +3421,15 @@ namespace GridGenerator
         cells.push_back (this_cell);
       }
 
-    // throw out duplicated vertices from the two meshes
-    // and create the triangulation
+    // throw out duplicated vertices from the two meshes, reorder vertices as
+    // necessary and create the triangulation
     SubCellData subcell_data;
     std::vector<unsigned int> considered_vertices;
-    GridTools::delete_duplicated_vertices (vertices, cells, subcell_data, considered_vertices);
+    GridTools::delete_duplicated_vertices (vertices, cells,
+                                          subcell_data,
+                                          considered_vertices);
+    GridReordering<dim,spacedim>::reorder_cells (cells);
+
     result.clear ();
     result.create_triangulation (vertices, cells, subcell_data);
   }
@@ -3554,7 +3558,8 @@ namespace GridGenerator
 // Implementation for 1D only
   template <>
   void laplace_transformation (Triangulation<1> &,
-                               const std::map<unsigned int,Point<1> > &)
+                               const std::map<unsigned int,Point<1> > &,
+                               const Function<1> *)
   {
     Assert(false, ExcNotImplemented());
   }
@@ -3563,7 +3568,8 @@ namespace GridGenerator
 // Implementation for dimensions except 1
   template <int dim>
   void laplace_transformation (Triangulation<dim> &tria,
-                               const std::map<unsigned int,Point<dim> > &new_points)
+                               const std::map<unsigned int,Point<dim> > &new_points,
+                               const Function<dim> *coefficient)
   {
     // first provide everything that is
     // needed for solving a Laplace
@@ -3587,38 +3593,39 @@ namespace GridGenerator
 
     QGauss<dim> quadrature(4);
 
-    MatrixCreator::create_laplace_matrix(mapping_q1, dof_handler, quadrature, S);
+    MatrixCreator::create_laplace_matrix(mapping_q1, dof_handler, quadrature, S,coefficient);
 
     // set up the boundary values for
     // the laplace problem
     std::vector<std::map<unsigned int,double> > m(dim);
-    typename std::map<unsigned int,Point<dim> >::const_iterator map_iter;
     typename std::map<unsigned int,Point<dim> >::const_iterator map_end=new_points.end();
 
     // fill these maps using the data
     // given by new_points
     typename DoFHandler<dim>::cell_iterator cell=dof_handler.begin_active(),
-                                            endc=dof_handler.end();
-    typename DoFHandler<dim>::face_iterator face;
+        endc=dof_handler.end();
     for (; cell!=endc; ++cell)
       {
-        if (cell->at_boundary())
-          for (unsigned int face_no=0; face_no<GeometryInfo<dim>::faces_per_cell; ++face_no)
-            {
-              face=cell->face(face_no);
-              if (face->at_boundary())
-                for (unsigned int vertex_no=0;
-                     vertex_no<GeometryInfo<dim>::vertices_per_face; ++vertex_no)
-                  {
-                    const unsigned int vertex_index=face->vertex_index(vertex_no);
-                    map_iter=new_points.find(vertex_index);
+        for (unsigned int face_no=0; face_no<GeometryInfo<dim>::faces_per_cell; ++face_no)
+          {
+            const typename DoFHandler<dim>::face_iterator face=cell->face(face_no);
 
-                    if (map_iter!=map_end)
-                      for (unsigned int i=0; i<dim; ++i)
-                        m[i].insert(std::pair<unsigned int,double> (
-                                      face->vertex_dof_index(vertex_no, 0), map_iter->second(i)));
-                  }
-            }
+            // loop over all vertices of the cell and see if it is listed in the map
+            // given as first argument of the function
+            for (unsigned int vertex_no=0;
+                vertex_no<GeometryInfo<dim>::vertices_per_face; ++vertex_no)
+              {
+                const unsigned int vertex_index=face->vertex_index(vertex_no);
+
+                const typename std::map<unsigned int,Point<dim> >::const_iterator map_iter
+                = new_points.find(vertex_index);
+
+                if (map_iter!=map_end)
+                  for (unsigned int i=0; i<dim; ++i)
+                    m[i].insert(std::pair<unsigned int,double> (
+                        face->vertex_dof_index(vertex_no, 0), map_iter->second(i)));
+              }
+          }
       }
 
     // solve the dim problems with
index 684d5a0d62e21879fff55c4294bde4f03c53971a..913a91ab07ee7061320001b6f64e4791df316516 100644 (file)
@@ -92,7 +92,8 @@ namespace GridGenerator \{
 #if deal_II_dimension > 1
   template void
     laplace_transformation<deal_II_dimension> (Triangulation<deal_II_dimension> &,
-                                              const std::map<unsigned int,Point<deal_II_dimension> > &);
+                                              const std::map<unsigned int,Point<deal_II_dimension> > &,
+                                              const Function<deal_II_dimension> *);
 #endif
   
 \}  
index 84e781be1eb210034f4eeedc60516cbc766c3c82..34888a24bb1f950477f8e2f7f68da06efa085609 100644 (file)
@@ -623,11 +623,12 @@ namespace GridTools
   template <int dim>
   void
   laplace_transform (const std::map<unsigned int,Point<dim> > &new_points,
-                     Triangulation<dim> &triangulation)
+                     Triangulation<dim> &triangulation,
+                     const Function<dim> *coefficient)
   {
     //TODO: Move implementation of this function into the current
     // namespace
-    GridGenerator::laplace_transformation(triangulation, new_points);
+    GridGenerator::laplace_transformation(triangulation, new_points, coefficient);
   }
 
 
index a85fc66fb5269201f0e40c0eb55400f3ae2d4eec..20e2102a5c6cf06fa13a048392db9ae72d0d3803 100644 (file)
@@ -238,7 +238,8 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS
     template
     void
     laplace_transform (const std::map<unsigned int,Point<deal_II_dimension> > &new_points,
-                       Triangulation<deal_II_dimension> &triangulation);
+                       Triangulation<deal_II_dimension> &triangulation,
+                       const Function<deal_II_dimension> *coefficient);
 
     template
       Triangulation<deal_II_dimension,deal_II_space_dimension>::DistortedCellList
index c0df81098c37dab75b0d74ee8ac67cfd3622caf5..69a5ed21a2f5f1c07e04b8f2c2c3eebafa702e0c 100644 (file)
@@ -1353,16 +1353,6 @@ void CellAccessor<dim, spacedim>::recursively_set_material_id (const types::mate
 
 
 
-template <int dim, int spacedim>
-types::subdomain_id CellAccessor<dim, spacedim>::subdomain_id () const
-{
-  Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
-  Assert (this->active(), ExcMessage("subdomains only work on active cells!"));
-  return this->tria->levels[this->present_level]->subdomain_ids[this->present_index];
-}
-
-
-
 template <int dim, int spacedim>
 void
 CellAccessor<dim, spacedim>::set_subdomain_id (const types::subdomain_id new_subdomain_id) const
@@ -1421,6 +1411,32 @@ CellAccessor<dim, spacedim>::set_direction_flag (const bool new_direction_flag)
 
 
 
+template <int dim, int spacedim>
+void
+CellAccessor<dim, spacedim>::set_parent (const unsigned int parent_index)
+{
+  Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
+  Assert (this->present_level > 0, TriaAccessorExceptions::ExcCellHasNoParent ());
+  this->tria->levels[this->present_level]->parents[this->present_index / 2]
+    = parent_index;
+}
+
+
+
+template <int dim, int spacedim>
+int
+CellAccessor<dim, spacedim>::
+parent_index () const
+{
+  Assert (this->present_level > 0, TriaAccessorExceptions::ExcCellHasNoParent ());
+
+  // the parent of two consecutive cells
+  // is stored only once, since it is
+  // the same
+  return this->tria->levels[this->present_level]->parents[this->present_index / 2];
+}
+
+
 template <int dim, int spacedim>
 TriaIterator<CellAccessor<dim,spacedim> >
 CellAccessor<dim, spacedim>::parent () const
@@ -1428,7 +1444,7 @@ CellAccessor<dim, spacedim>::parent () const
   Assert (this->used(), TriaAccessorExceptions::ExcCellNotUsed());
   Assert (this->present_level > 0, TriaAccessorExceptions::ExcCellHasNoParent ());
   TriaIterator<CellAccessor<dim,spacedim> >
-  q (this->tria, this->present_level-1, this->parent_index ());
+  q (this->tria, this->present_level-1, parent_index ());
 
   return q;
 }
index 2cf6cbee9a094895cc68ed801ce407e9ee37fbf0..f1e45edc7f04d8480f557620399bfcc658d360a6 100644 (file)
@@ -19,6 +19,7 @@
 #include <deal.II/lac/lapack_templates.h>
 #include <deal.II/lac/lapack_support.h>
 #include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/sparse_matrix.h>
 #include <deal.II/lac/vector.h>
 #include <deal.II/lac/block_vector.h>
 
@@ -30,34 +31,30 @@ DEAL_II_NAMESPACE_OPEN
 using namespace LAPACKSupport;
 
 template <typename number>
-LAPACKFullMatrix<number>::LAPACKFullMatrix(const size_type n)
+LAPACKFullMatrix<number>::LAPACKFullMatrix (const size_type n)
   :
   TransposeTable<number> (n,n),
-  state(matrix)
+  state (matrix)
 {}
 
 
-
 template <typename number>
-LAPACKFullMatrix<number>::LAPACKFullMatrix(
-  const size_type m,
-  const size_type n)
+LAPACKFullMatrix<number>::LAPACKFullMatrix (const size_type m,
+                                           const size_type n)
   :
-  TransposeTable<number> (m,n),
-  state(matrix)
+  TransposeTable<number> (m, n),
+  state (matrix)
 {}
 
 
-
 template <typename number>
-LAPACKFullMatrix<number>::LAPACKFullMatrix(const LAPACKFullMatrix &M)
+LAPACKFullMatrix<number>::LAPACKFullMatrix (const LAPACKFullMatrix &M)
   :
   TransposeTable<number> (M),
-  state(matrix)
+  state (matrix)
 {}
 
 
-
 template <typename number>
 LAPACKFullMatrix<number> &
 LAPACKFullMatrix<number>::operator = (const LAPACKFullMatrix<number> &M)
@@ -68,6 +65,24 @@ LAPACKFullMatrix<number>::operator = (const LAPACKFullMatrix<number> &M)
 }
 
 
+template <typename number>
+void
+LAPACKFullMatrix<number>::reinit (const size_type n)
+{
+  this->TransposeTable<number>::reinit (n, n);
+  state = LAPACKSupport::matrix;
+}
+
+
+template <typename number>
+void
+LAPACKFullMatrix<number>::reinit (const size_type m,
+                                 const size_type n)
+{
+  this->TransposeTable<number>::reinit (m, n);
+  state = LAPACKSupport::matrix;
+}
+
 
 template <typename number>
 template <typename number2>
@@ -85,6 +100,21 @@ LAPACKFullMatrix<number>::operator = (const FullMatrix<number2> &M)
 }
 
 
+template <typename number>
+template <typename number2>
+LAPACKFullMatrix<number> &
+LAPACKFullMatrix<number>::operator = (const SparseMatrix<number2> &M)
+{
+  Assert (this->n_rows() == M.n(), ExcDimensionMismatch(this->n_rows(), M.n()));
+  Assert (this->n_cols() == M.m(), ExcDimensionMismatch(this->n_cols(), M.m()));
+  for (size_type i=0; i<this->n_rows(); ++i)
+    for (size_type j=0; j<this->n_cols(); ++j)
+      (*this)(i,j) = M.el(i,j);
+
+  state = LAPACKSupport::matrix;
+  return *this;
+}
+
 
 template <typename number>
 LAPACKFullMatrix<number> &
@@ -100,7 +130,6 @@ LAPACKFullMatrix<number>::operator = (const double d)
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::vmult (
@@ -159,7 +188,6 @@ LAPACKFullMatrix<number>::vmult (
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::Tvmult (
@@ -220,7 +248,6 @@ LAPACKFullMatrix<number>::Tvmult (
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::mmult(LAPACKFullMatrix<number>       &C,
@@ -244,7 +271,6 @@ LAPACKFullMatrix<number>::mmult(LAPACKFullMatrix<number>       &C,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::mmult(FullMatrix<number>             &C,
@@ -293,7 +319,6 @@ LAPACKFullMatrix<number>::Tmmult(LAPACKFullMatrix<number>       &C,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::Tmmult(FullMatrix<number>             &C,
@@ -318,7 +343,6 @@ LAPACKFullMatrix<number>::Tmmult(FullMatrix<number>             &C,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::mTmult(LAPACKFullMatrix<number>       &C,
@@ -367,7 +391,6 @@ LAPACKFullMatrix<number>::mTmult(FullMatrix<number>             &C,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::TmTmult(LAPACKFullMatrix<number>       &C,
@@ -391,7 +414,6 @@ LAPACKFullMatrix<number>::TmTmult(LAPACKFullMatrix<number>       &C,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::TmTmult(FullMatrix<number>             &C,
@@ -416,7 +438,6 @@ LAPACKFullMatrix<number>::TmTmult(FullMatrix<number>             &C,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::compute_lu_factorization()
@@ -436,7 +457,6 @@ LAPACKFullMatrix<number>::compute_lu_factorization()
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::compute_svd()
@@ -487,7 +507,6 @@ LAPACKFullMatrix<number>::compute_svd()
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::compute_inverse_svd(const double threshold)
@@ -509,7 +528,6 @@ LAPACKFullMatrix<number>::compute_inverse_svd(const double threshold)
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::invert()
@@ -542,7 +560,6 @@ LAPACKFullMatrix<number>::invert()
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::apply_lu_factorization(Vector<number> &v,
@@ -565,7 +582,6 @@ LAPACKFullMatrix<number>::apply_lu_factorization(Vector<number> &v,
 }
 
 
-
 template <typename number>
 void
 LAPACKFullMatrix<number>::apply_lu_factorization(LAPACKFullMatrix<number> &B,
@@ -588,12 +604,10 @@ LAPACKFullMatrix<number>::apply_lu_factorization(LAPACKFullMatrix<number> &B,
 }
 
 
-
 template <typename number>
 void
-LAPACKFullMatrix<number>::compute_eigenvalues(
-  const bool right,
-  const bool left)
+LAPACKFullMatrix<number>::compute_eigenvalues(const bool right,
+                                             const bool left)
 {
   Assert(state == matrix, ExcState(state));
   const int nn = this->n_cols();
@@ -662,12 +676,11 @@ LAPACKFullMatrix<number>::compute_eigenvalues(
 
 template <typename number>
 void
-LAPACKFullMatrix<number>::compute_eigenvalues_symmetric(
-  const number lower_bound,
-  const number upper_bound,
-  const number abs_accuracy,
-  Vector<number> &eigenvalues,
-  FullMatrix<number> &eigenvectors)
+LAPACKFullMatrix<number>::compute_eigenvalues_symmetric(const number        lower_bound,
+                                                       const number        upper_bound,
+                                                       const number        abs_accuracy,
+                                                       Vector<number>     &eigenvalues,
+                                                       FullMatrix<number> &eigenvectors)
 {
   Assert(state == matrix, ExcState(state));
   const int nn = (this->n_cols() > 0 ? this->n_cols() : 1);
@@ -744,6 +757,7 @@ LAPACKFullMatrix<number>::compute_eigenvalues_symmetric(
 
   eigenvalues.reinit(n_eigenpairs);
   eigenvectors.reinit(nn, n_eigenpairs, true);
+
   for (size_type i=0; i < static_cast<size_type> (n_eigenpairs); ++i)
     {
       eigenvalues(i) = wr[i];
@@ -844,6 +858,7 @@ LAPACKFullMatrix<number>::compute_generalized_eigenvalues_symmetric(
 
   eigenvalues.reinit(n_eigenpairs);
   eigenvectors.resize(n_eigenpairs);
+
   for (size_type i=0; i < static_cast<size_type> (n_eigenpairs); ++i)
     {
       eigenvalues(i) = wr[i];
@@ -968,6 +983,7 @@ LAPACKFullMatrix<number>::Tvmult_add (
   Tvmult(w, v, true);
 }
 
+
 template <typename number>
 void
 LAPACKFullMatrix<number>::print_formatted (
index 9db46db4a07de69bf2bf3c6cb005ad3203b1ef4d..23d91651bd5b666e88a3705b8ef058e00c389acd 100644 (file)
@@ -26,4 +26,7 @@ for (S1, S2 : REAL_SCALARS)
   {
     template LAPACKFullMatrix<S1> &
     LAPACKFullMatrix<S1>::operator = (const FullMatrix<S2> &M);
+
+    template LAPACKFullMatrix<S1> &
+    LAPACKFullMatrix<S1>::operator = (const SparseMatrix<S2> &M);
   }
index bf1cdbb142590894af7477b769d9be2e9dcaae33..4524e91c37ee7acff16b6b897f719e55455ed6df 100644 (file)
@@ -803,7 +803,9 @@ namespace PETScWrappers
 #else  // PETSC_HAVE_MUMPS
     Assert (false,
             ExcMessage ("Your PETSc installation does not include a copy of "
-                        "MUMPS package necessary for this solver"));
+                        "the MUMPS package necessary for this solver. You will need to configure "
+                        "PETSc so that it includes MUMPS, recompile it, and then re-configure "
+                        "and recompile deal.II as well."));
 
     // Cast to void to silence compiler warnings
     (void) A;
index be35b106638acc08ece69e42870509160172f4fb..a526b310d76fe851b2fb523f3f5e1b571854f288 100644 (file)
@@ -534,6 +534,12 @@ namespace TrilinosWrappers
   {}
 
 
+  PreconditionAMG::~PreconditionAMG()
+  {
+    preconditioner.reset();
+    trilinos_matrix.reset();
+  }
+
 
   void
   PreconditionAMG:: initialize (const SparseMatrix   &matrix,
index 4cf3e4bed69854b6d9468b8c4c649ae7339aa9d5..28ad54572bc74dcc5072fb649bc2b58ff59896a7 100644 (file)
@@ -1072,16 +1072,16 @@ namespace DerivativeApproximation
   }
 
 
-  template <int dim, template <int, int> class DH, class InputVector, int order, int spacedim>
+  template <class DH, class InputVector, int order>
   void
-  approximate_derivative_tensor (const Mapping<dim,spacedim>                           &mapping,
-                                 const DH<dim,spacedim>                                &dof,
+  approximate_derivative_tensor (const Mapping<DH::dimension,DH::space_dimension> &mapping,
+                                 const DH                                     &dof,
                                  const InputVector                            &solution,
-                                 const typename DH<dim,spacedim>::active_cell_iterator &cell,
-                                 Tensor<order,dim>                            &derivative,
+                                 const typename DH::active_cell_iterator      &cell,
+                                 Tensor<order,DH::dimension>                  &derivative,
                                  const unsigned int                            component)
   {
-      internal::approximate_cell<typename internal::DerivativeSelector<order,dim>::DerivDescr,dim,DH,InputVector>
+      internal::approximate_cell<typename internal::DerivativeSelector<order,DH::dimension>::DerivDescr>
       (mapping,
           dof,
           solution,
@@ -1092,17 +1092,17 @@ namespace DerivativeApproximation
 
 
 
-  template <int dim, template <int, int> class DH, class InputVector, int order, int spacedim>
+  template <class DH, class InputVector, int order>
   void
-  approximate_derivative_tensor (const DH<dim,spacedim>                                &dof,
+  approximate_derivative_tensor (const DH                                     &dof,
                                  const InputVector                            &solution,
-                                 const typename DH<dim,spacedim>::active_cell_iterator &cell,
-                                 Tensor<order,dim>                            &derivative,
+                                 const typename DH::active_cell_iterator      &cell,
+                                 Tensor<order,DH::dimension>                  &derivative,
                                  const unsigned int                            component)
   {
       // just call the respective function with Q1 mapping
-      approximate_derivative_tensor<dim,DH,InputVector,order,spacedim>
-      (StaticMappingQ1<dim>::mapping,
+      approximate_derivative_tensor<DH,InputVector,order>
+      (StaticMappingQ1<DH::dimension,DH::space_dimension>::mapping,
           dof,
           solution,
           cell,
index 430c8a095f0e7ebdbf738369e7ecc61763218725..10494f168be02d791d543b2ade11e0c574a0ca5f 100644 (file)
@@ -55,7 +55,7 @@ approximate_second_derivative<deal_II_dimension>
 
 template
 void
-approximate_derivative_tensor<deal_II_dimension>
+approximate_derivative_tensor
 (const Mapping<deal_II_dimension> &    mapping,
  const DH<deal_II_dimension> &dof_handler,
  const VEC &solution,
@@ -65,7 +65,7 @@ approximate_derivative_tensor<deal_II_dimension>
 
 template
 void
-approximate_derivative_tensor<deal_II_dimension>
+approximate_derivative_tensor
 (const Mapping<deal_II_dimension> &    mapping,
  const DH<deal_II_dimension> &dof_handler,
  const VEC &solution,
@@ -75,7 +75,7 @@ approximate_derivative_tensor<deal_II_dimension>
 
 template
 void
-approximate_derivative_tensor<deal_II_dimension>
+approximate_derivative_tensor
 (const Mapping<deal_II_dimension> &    mapping,
  const DH<deal_II_dimension> &dof_handler,
  const VEC &solution,
@@ -85,7 +85,7 @@ approximate_derivative_tensor<deal_II_dimension>
 
 template
 void
-approximate_derivative_tensor<deal_II_dimension>
+approximate_derivative_tensor
 (const DH<deal_II_dimension> &dof_handler,
  const VEC &solution,
  const DH<deal_II_dimension>::active_cell_iterator &cell,
@@ -94,7 +94,7 @@ approximate_derivative_tensor<deal_II_dimension>
 
 template
 void
-approximate_derivative_tensor<deal_II_dimension>
+approximate_derivative_tensor
 (const DH<deal_II_dimension> &dof_handler,
  const VEC &solution,
  const DH<deal_II_dimension>::active_cell_iterator &cell,
@@ -103,7 +103,7 @@ approximate_derivative_tensor<deal_II_dimension>
 
 template
 void
-approximate_derivative_tensor<deal_II_dimension>
+approximate_derivative_tensor
 (const DH<deal_II_dimension> &dof_handler,
  const VEC &solution,
  const DH<deal_II_dimension>::active_cell_iterator &cell,
index 0f5ffc5873b33ba057187447cf7cb54e5b11c51c..f7f38b4c26fcad0905cca6563583056804b889a6 100644 (file)
@@ -287,8 +287,6 @@ prepare_for_coarsening_and_refinement(const std::vector<VECTOR> &all_in)
    std::vector<Vector<typename VECTOR::value_type> > (in_size))
   .swap(dof_values_on_cell);
 
-  typename VECTOR::value_type zero_val = typename VECTOR::value_type();
-
   Table<2,FullMatrix<double> > interpolation_hp;
   std::vector<std::vector<bool> > restriction_is_additive;
 
index f3bfa2a7d34dfa5c187563df82b098997145d14d..e78a376eb88aa2c0a87e233cc6083c6e15d81feb 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1998 - 2013 by the deal.II authors
+// Copyright (C) 1998 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
 //TODO[SP]: replace <deal_II_dimension> by <deal_II_dimension, deal_II_space_dimension>
 // where applicable and move to codimension cases above also when applicable
 for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension :  SPACE_DIMENSIONS)
-  {
-    namespace VectorTools \{
+{
+  namespace VectorTools \{
 
 #if deal_II_dimension == deal_II_space_dimension
 #if deal_II_dimension != 1
-      template
-        void
-        compute_no_normal_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
-                                            const unsigned int     first_vector_component,
-                                            const std::set<types::boundary_id> &boundary_ids,
-                                            ConstraintMatrix      &constraints,
-                                            const Mapping<deal_II_dimension>    &mapping);
-      template
-        void
-        compute_no_normal_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
-                                            const unsigned int     first_vector_component,
-                                            const std::set<types::boundary_id> &boundary_ids,
-                                            ConstraintMatrix      &constraints,
-                                            const Mapping<deal_II_dimension>    &mapping);
+  template
+  void
+  compute_nonzero_normal_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
+                                           const unsigned int     first_vector_component,
+                                           const std::set<types::boundary_id> &boundary_ids,
+                                           FunctionMap<deal_II_dimension>::type &function_map,
+                                           ConstraintMatrix      &constraints,
+                                           const Mapping<deal_II_dimension>    &mapping);
 
-      template
-        void
-        compute_normal_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
-                                         const unsigned int     first_vector_component,
-                                         const std::set<types::boundary_id> &boundary_ids,
-                                         ConstraintMatrix      &constraints,
-                                         const Mapping<deal_II_dimension>    &mapping);
-      template
-        void
-        compute_normal_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
-                                         const unsigned int     first_vector_component,
-                                         const std::set<types::boundary_id> &boundary_ids,
-                                         ConstraintMatrix      &constraints,
-                                         const Mapping<deal_II_dimension>    &mapping);
+  template
+  void
+  compute_nonzero_normal_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
+                                           const unsigned int     first_vector_component,
+                                           const std::set<types::boundary_id> &boundary_ids,
+                                           FunctionMap<deal_II_dimension>::type &function_map,
+                                           ConstraintMatrix      &constraints,
+                                           const Mapping<deal_II_dimension>    &mapping);
+
+  template
+  void
+  compute_nonzero_tangential_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
+                                               const unsigned int     first_vector_component,
+                                               const std::set<types::boundary_id> &boundary_ids,
+                                               FunctionMap<deal_II_dimension>::type &function_map,
+                                               ConstraintMatrix      &constraints,
+                                               const Mapping<deal_II_dimension>    &mapping);
+  template
+  void
+  compute_nonzero_tangential_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
+                                               const unsigned int     first_vector_component,
+                                               const std::set<types::boundary_id> &boundary_ids,
+                                               FunctionMap<deal_II_dimension>::type &function_map,
+                                               ConstraintMatrix      &constraints,
+                                               const Mapping<deal_II_dimension>    &mapping);
+    
+  template
+  void
+  compute_no_normal_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
+                                      const unsigned int     first_vector_component,
+                                      const std::set<types::boundary_id> &boundary_ids,
+                                      ConstraintMatrix      &constraints,
+                                      const Mapping<deal_II_dimension>    &mapping);
+
+  template
+  void
+  compute_no_normal_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
+                                      const unsigned int     first_vector_component,
+                                      const std::set<types::boundary_id> &boundary_ids,
+                                      ConstraintMatrix      &constraints,
+                                      const Mapping<deal_II_dimension>    &mapping);
+    
+  template
+  void
+  compute_normal_flux_constraints (const DoFHandler<deal_II_dimension> &dof_handler,
+                                   const unsigned int     first_vector_component,
+                                   const std::set<types::boundary_id> &boundary_ids,
+                                   ConstraintMatrix      &constraints,
+                                   const Mapping<deal_II_dimension>    &mapping);
+
+  template
+  void
+  compute_normal_flux_constraints (const hp::DoFHandler<deal_II_dimension> &dof_handler,
+                                   const unsigned int     first_vector_component,
+                                   const std::set<types::boundary_id> &boundary_ids,
+                                   ConstraintMatrix      &constraints,
+                                   const Mapping<deal_II_dimension>    &mapping);
 #endif
 #endif
-      \}
-  }
+  \}
+}
\ No newline at end of file
diff --git a/tests/base/aligned_vector_01.cc b/tests/base/aligned_vector_01.cc
new file mode 100644 (file)
index 0000000..b2a1026
--- /dev/null
@@ -0,0 +1,101 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2012 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// test for AlignedVector<unsigned int> which tests the basic stuff in the
+// aligned vector
+
+#include "../tests.h"
+#include <iomanip>
+#include <fstream>
+#include <cmath>
+
+#include <deal.II/base/aligned_vector.h>
+
+
+void test ()
+{
+  typedef AlignedVector<unsigned int> VEC;
+  VEC a(4);
+  deallog << "Constructor: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a[2] = 1;
+  a.push_back (5);
+  a.push_back (42);
+
+  VEC b (a);
+  b.push_back (27);
+  a.insert_back (b.begin(), b.end());
+
+  deallog << "Insertion: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a.resize(4);
+  deallog << "Shrinking: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a.reserve(100);
+  deallog << "Reserve: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a = b;
+  deallog << "Assignment: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  // check setting elements for large vectors
+  a.resize (0);
+  a.resize (100000, 1);
+  deallog << "Check large initialization: ";
+  for (unsigned int i=0; i<100000; ++i)
+    AssertDimension (a[i], 1);
+  deallog << "OK" << std::endl;
+
+  // check resize for large vectors
+  deallog << "Check large resize: ";
+  a.resize (200000, 2);
+  a.resize (400000);
+  for (unsigned int i=0; i<100000; ++i)
+    AssertDimension (a[i], 1);
+  for (unsigned int i=100000; i<200000; ++i)
+    AssertDimension (a[i], 2);
+  for (unsigned int i=200000; i<400000; ++i)
+    AssertDimension (a[i], 0);
+  deallog << "OK" << std::endl;
+}
+
+
+
+
+int main()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  test ();
+}
diff --git a/tests/base/aligned_vector_01.output b/tests/base/aligned_vector_01.output
new file mode 100644 (file)
index 0000000..1b934a8
--- /dev/null
@@ -0,0 +1,8 @@
+
+DEAL::Constructor: 0 0 0 0 
+DEAL::Insertion: 0 0 1 0 5 42 0 0 1 0 5 42 27 
+DEAL::Shrinking: 0 0 1 0 
+DEAL::Reserve: 0 0 1 0 
+DEAL::Assignment: 0 0 1 0 5 42 27 
+DEAL::Check large initialization: OK
+DEAL::Check large resize: OK
diff --git a/tests/base/aligned_vector_03.cc b/tests/base/aligned_vector_03.cc
new file mode 100644 (file)
index 0000000..9cfbd5c
--- /dev/null
@@ -0,0 +1,103 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2012 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// test for AlignedVector<bool>
+
+#include "../tests.h"
+#include <iomanip>
+#include <fstream>
+#include <cmath>
+
+#include <deal.II/base/aligned_vector.h>
+
+
+void test ()
+{
+  typedef AlignedVector<bool> VEC;
+  VEC a(4);
+  deallog << "Constructor: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a[2] = true;
+  a.push_back (true);
+  a.push_back (false);
+
+  VEC b (a);
+  b.push_back (true);
+  a.insert_back (b.begin(), b.end());
+
+  deallog << "Insertion: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a.resize(4);
+  deallog << "Shrinking: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a.reserve(100);
+  deallog << "Reserve: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  a = b;
+  deallog << "Assignment: ";
+  for (unsigned int i=0; i<a.size(); ++i)
+    deallog << a[i] << " ";
+  deallog << std::endl;
+
+  // check setting elements for large vectors
+  a.resize (0);
+  a.resize (100000, true);
+  deallog << "Check large initialization: ";
+  for (unsigned int i=0; i<100000; ++i)
+    AssertDimension (a[i], true);
+  deallog << "OK" << std::endl;
+
+  // check resize for large vectors
+  deallog << "Check large resize: ";
+  a.resize (200000, false);
+  a.resize (400000, true);
+  for (unsigned int i=0; i<100000; ++i)
+    AssertDimension (a[i], true);
+  for (unsigned int i=100000; i<200000; ++i)
+    AssertDimension (a[i], false);
+  for (unsigned int i=200000; i<400000; ++i)
+    AssertDimension (a[i], true);
+  deallog << "OK" << std::endl;
+
+  deallog << "Memory consumption: " << a.memory_consumption()
+          << " for a.size()=" << a.size() << std::endl;
+}
+
+
+
+
+int main()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  test ();
+}
diff --git a/tests/base/aligned_vector_03.output b/tests/base/aligned_vector_03.output
new file mode 100644 (file)
index 0000000..15be0b9
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL::Constructor: 0 0 0 0 
+DEAL::Insertion: 0 0 1 0 1 0 0 0 1 0 1 0 1 
+DEAL::Shrinking: 0 0 1 0 
+DEAL::Reserve: 0 0 1 0 
+DEAL::Assignment: 0 0 1 0 1 0 1 
+DEAL::Check large initialization: OK
+DEAL::Check large resize: OK
+DEAL::Memory consumption: 400024 for a.size()=400000
index b2a10264158a6298aeb8b1aa344a76b94bf6a69c..bb2e43046f2e250f90d2ef0a32b012887adcb11b 100644 (file)
 // ---------------------------------------------------------------------
 
 
-// test for AlignedVector<unsigned int> which tests the basic stuff in the
-// aligned vector
+// test for arithmetic operations on VectorizedArray
 
 #include "../tests.h"
 #include <iomanip>
-#include <fstream>
-#include <cmath>
+#include <limits>
 
-#include <deal.II/base/aligned_vector.h>
+#include <deal.II/base/vectorization.h>
 
 
+template <typename Number>
 void test ()
 {
-  typedef AlignedVector<unsigned int> VEC;
-  VEC a(4);
-  deallog << "Constructor: ";
-  for (unsigned int i=0; i<a.size(); ++i)
-    deallog << a[i] << " ";
-  deallog << std::endl;
-
-  a[2] = 1;
-  a.push_back (5);
-  a.push_back (42);
-
-  VEC b (a);
-  b.push_back (27);
-  a.insert_back (b.begin(), b.end());
-
-  deallog << "Insertion: ";
-  for (unsigned int i=0; i<a.size(); ++i)
-    deallog << a[i] << " ";
-  deallog << std::endl;
-
-  a.resize(4);
-  deallog << "Shrinking: ";
-  for (unsigned int i=0; i<a.size(); ++i)
-    deallog << a[i] << " ";
-  deallog << std::endl;
-
-  a.reserve(100);
-  deallog << "Reserve: ";
-  for (unsigned int i=0; i<a.size(); ++i)
-    deallog << a[i] << " ";
-  deallog << std::endl;
-
-  a = b;
-  deallog << "Assignment: ";
-  for (unsigned int i=0; i<a.size(); ++i)
-    deallog << a[i] << " ";
-  deallog << std::endl;
-
-  // check setting elements for large vectors
-  a.resize (0);
-  a.resize (100000, 1);
-  deallog << "Check large initialization: ";
-  for (unsigned int i=0; i<100000; ++i)
-    AssertDimension (a[i], 1);
-  deallog << "OK" << std::endl;
-
-  // check resize for large vectors
-  deallog << "Check large resize: ";
-  a.resize (200000, 2);
-  a.resize (400000);
-  for (unsigned int i=0; i<100000; ++i)
-    AssertDimension (a[i], 1);
-  for (unsigned int i=100000; i<200000; ++i)
-    AssertDimension (a[i], 2);
-  for (unsigned int i=200000; i<400000; ++i)
-    AssertDimension (a[i], 0);
+  // since the number of array elements is system dependent, it is not a good
+  // idea to print them to an output file. Instead, check the values manually
+  VectorizedArray<Number> a, b, c;
+  const unsigned int n_vectors = VectorizedArray<Number>::n_array_elements;
+  a = Number(2.);
+  b = Number(-1.);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    c[i] = i;
+
+  deallog << "Addition: ";
+  VectorizedArray<Number> d = a + b;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == 1, ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Subtraction: ";
+  VectorizedArray<Number> e = d - b;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (e[i] == a[i], ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Multiplication: ";
+  d = a * c;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == a[i] * c[i], ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Division: ";
+  e = d / a;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (e[i] == c[i], ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Multiplication scalar: ";
+  a = 2. * a;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (a[i] == 4., ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Division scalar left: ";
+  d = 1. / a;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == 0.25, ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Division scalar right: ";
+  e = d / 0.25;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (e[i] == 1, ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Unary operator -: ";
+  d = -c;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == -(Number)i, ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Unary operator +: ";
+  d = c;
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == i, ExcInternalError());
+
+
+  deallog << "OK" << std::endl
+          << "Square root: ";
+  d = std::sqrt(c);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (std::fabs(d[i]-std::sqrt(Number(i)))<
+            std::numeric_limits<Number>::epsilon(),
+            ExcInternalError());
+
+  deallog << "OK" << std::endl
+          << "Absolute value: ";
+  d = -c;
+  d = std::abs(d);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == Number(i), ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Maximum value: ";
+  d = std::max(a, c);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == std::max(a[i], c[i]), ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Minimum value: ";
+  d = std::min(0.5 * a + b, c);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (d[i] == std::min(Number(0.5 * a[i] + b[i]), c[i]), ExcInternalError());
+
+  deallog << "OK" << std::endl
+          << "Sine: ";
+  e = std::sin(b);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (std::fabs(e[i]-std::sin(b[i])) <
+            10.*std::numeric_limits<Number>::epsilon(),
+            ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Cosine: ";
+  e = std::cos(c);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (std::fabs(e[i]-std::cos(c[i])) <
+            10.*std::numeric_limits<Number>::epsilon(),
+            ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Tangent: ";
+  d = std::tan(e);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (std::fabs(d[i]-std::tan(e[i])) <
+            10.*std::numeric_limits<Number>::epsilon(),
+            ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Exponential: ";
+  d = std::exp(c-a);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (std::fabs(d[i]-std::exp(c[i]-a[i])) <
+            10.*std::numeric_limits<Number>::epsilon(),
+            ExcInternalError());
+  deallog << "OK" << std::endl
+          << "Logarithm: ";
+  e = std::log(d);
+  for (unsigned int i=0; i<n_vectors; ++i)
+    Assert (std::fabs(e[i]-(c[i]-a[i])) <
+            10.*std::numeric_limits<Number>::epsilon(),
+            ExcInternalError());
   deallog << "OK" << std::endl;
 }
 
@@ -97,5 +155,17 @@ int main()
   deallog.depth_console(0);
   deallog.threshold_double(1.e-10);
 
-  test ();
+  deallog.push("double");
+  test<double> ();
+  deallog.pop();
+  deallog.push("float");
+  test<float> ();
+  deallog.pop();
+
+  // test long double: in that case, the default
+  // path of VectorizedArray is taken no matter
+  // what was done for double or float
+  deallog.push("long double");
+  test<float> ();
+  deallog.pop();
 }
index 1b934a82996c3f22536b42f0baca1020bb50822c..c11369e533ce76c249e86977f31561e612c8d011 100644 (file)
@@ -1,8 +1,55 @@
 
-DEAL::Constructor: 0 0 0 0 
-DEAL::Insertion: 0 0 1 0 5 42 0 0 1 0 5 42 27 
-DEAL::Shrinking: 0 0 1 0 
-DEAL::Reserve: 0 0 1 0 
-DEAL::Assignment: 0 0 1 0 5 42 27 
-DEAL::Check large initialization: OK
-DEAL::Check large resize: OK
+DEAL:double::Addition: OK
+DEAL:double::Subtraction: OK
+DEAL:double::Multiplication: OK
+DEAL:double::Division: OK
+DEAL:double::Multiplication scalar: OK
+DEAL:double::Division scalar left: OK
+DEAL:double::Division scalar right: OK
+DEAL:double::Unary operator -: OK
+DEAL:double::Unary operator +: OK
+DEAL:double::Square root: OK
+DEAL:double::Absolute value: OK
+DEAL:double::Maximum value: OK
+DEAL:double::Minimum value: OK
+DEAL:double::Sine: OK
+DEAL:double::Cosine: OK
+DEAL:double::Tangent: OK
+DEAL:double::Exponential: OK
+DEAL:double::Logarithm: OK
+DEAL:float::Addition: OK
+DEAL:float::Subtraction: OK
+DEAL:float::Multiplication: OK
+DEAL:float::Division: OK
+DEAL:float::Multiplication scalar: OK
+DEAL:float::Division scalar left: OK
+DEAL:float::Division scalar right: OK
+DEAL:float::Unary operator -: OK
+DEAL:float::Unary operator +: OK
+DEAL:float::Square root: OK
+DEAL:float::Absolute value: OK
+DEAL:float::Maximum value: OK
+DEAL:float::Minimum value: OK
+DEAL:float::Sine: OK
+DEAL:float::Cosine: OK
+DEAL:float::Tangent: OK
+DEAL:float::Exponential: OK
+DEAL:float::Logarithm: OK
+DEAL:long double::Addition: OK
+DEAL:long double::Subtraction: OK
+DEAL:long double::Multiplication: OK
+DEAL:long double::Division: OK
+DEAL:long double::Multiplication scalar: OK
+DEAL:long double::Division scalar left: OK
+DEAL:long double::Division scalar right: OK
+DEAL:long double::Unary operator -: OK
+DEAL:long double::Unary operator +: OK
+DEAL:long double::Square root: OK
+DEAL:long double::Absolute value: OK
+DEAL:long double::Maximum value: OK
+DEAL:long double::Minimum value: OK
+DEAL:long double::Sine: OK
+DEAL:long double::Cosine: OK
+DEAL:long double::Tangent: OK
+DEAL:long double::Exponential: OK
+DEAL:long double::Logarithm: OK
diff --git a/tests/base/vectorization_04.cc b/tests/base/vectorization_04.cc
deleted file mode 100644 (file)
index bb2e430..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-// ---------------------------------------------------------------------
-// $Id$
-//
-// Copyright (C) 2012 - 2013 by the deal.II authors
-//
-// This file is part of the deal.II library.
-//
-// The deal.II library is free software; you can use it, redistribute
-// it, and/or modify it under the terms of the GNU Lesser General
-// Public License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-// The full text of the license can be found in the file LICENSE at
-// the top level of the deal.II distribution.
-//
-// ---------------------------------------------------------------------
-
-
-// test for arithmetic operations on VectorizedArray
-
-#include "../tests.h"
-#include <iomanip>
-#include <limits>
-
-#include <deal.II/base/vectorization.h>
-
-
-template <typename Number>
-void test ()
-{
-  // since the number of array elements is system dependent, it is not a good
-  // idea to print them to an output file. Instead, check the values manually
-  VectorizedArray<Number> a, b, c;
-  const unsigned int n_vectors = VectorizedArray<Number>::n_array_elements;
-  a = Number(2.);
-  b = Number(-1.);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    c[i] = i;
-
-  deallog << "Addition: ";
-  VectorizedArray<Number> d = a + b;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == 1, ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Subtraction: ";
-  VectorizedArray<Number> e = d - b;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (e[i] == a[i], ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Multiplication: ";
-  d = a * c;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == a[i] * c[i], ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Division: ";
-  e = d / a;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (e[i] == c[i], ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Multiplication scalar: ";
-  a = 2. * a;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (a[i] == 4., ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Division scalar left: ";
-  d = 1. / a;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == 0.25, ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Division scalar right: ";
-  e = d / 0.25;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (e[i] == 1, ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Unary operator -: ";
-  d = -c;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == -(Number)i, ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Unary operator +: ";
-  d = c;
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == i, ExcInternalError());
-
-
-  deallog << "OK" << std::endl
-          << "Square root: ";
-  d = std::sqrt(c);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (std::fabs(d[i]-std::sqrt(Number(i)))<
-            std::numeric_limits<Number>::epsilon(),
-            ExcInternalError());
-
-  deallog << "OK" << std::endl
-          << "Absolute value: ";
-  d = -c;
-  d = std::abs(d);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == Number(i), ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Maximum value: ";
-  d = std::max(a, c);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == std::max(a[i], c[i]), ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Minimum value: ";
-  d = std::min(0.5 * a + b, c);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (d[i] == std::min(Number(0.5 * a[i] + b[i]), c[i]), ExcInternalError());
-
-  deallog << "OK" << std::endl
-          << "Sine: ";
-  e = std::sin(b);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (std::fabs(e[i]-std::sin(b[i])) <
-            10.*std::numeric_limits<Number>::epsilon(),
-            ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Cosine: ";
-  e = std::cos(c);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (std::fabs(e[i]-std::cos(c[i])) <
-            10.*std::numeric_limits<Number>::epsilon(),
-            ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Tangent: ";
-  d = std::tan(e);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (std::fabs(d[i]-std::tan(e[i])) <
-            10.*std::numeric_limits<Number>::epsilon(),
-            ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Exponential: ";
-  d = std::exp(c-a);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (std::fabs(d[i]-std::exp(c[i]-a[i])) <
-            10.*std::numeric_limits<Number>::epsilon(),
-            ExcInternalError());
-  deallog << "OK" << std::endl
-          << "Logarithm: ";
-  e = std::log(d);
-  for (unsigned int i=0; i<n_vectors; ++i)
-    Assert (std::fabs(e[i]-(c[i]-a[i])) <
-            10.*std::numeric_limits<Number>::epsilon(),
-            ExcInternalError());
-  deallog << "OK" << std::endl;
-}
-
-
-
-
-int main()
-{
-  std::ofstream logfile("output");
-  deallog.attach(logfile);
-  deallog.depth_console(0);
-  deallog.threshold_double(1.e-10);
-
-  deallog.push("double");
-  test<double> ();
-  deallog.pop();
-  deallog.push("float");
-  test<float> ();
-  deallog.pop();
-
-  // test long double: in that case, the default
-  // path of VectorizedArray is taken no matter
-  // what was done for double or float
-  deallog.push("long double");
-  test<float> ();
-  deallog.pop();
-}
diff --git a/tests/base/vectorization_04.output b/tests/base/vectorization_04.output
deleted file mode 100644 (file)
index c11369e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-
-DEAL:double::Addition: OK
-DEAL:double::Subtraction: OK
-DEAL:double::Multiplication: OK
-DEAL:double::Division: OK
-DEAL:double::Multiplication scalar: OK
-DEAL:double::Division scalar left: OK
-DEAL:double::Division scalar right: OK
-DEAL:double::Unary operator -: OK
-DEAL:double::Unary operator +: OK
-DEAL:double::Square root: OK
-DEAL:double::Absolute value: OK
-DEAL:double::Maximum value: OK
-DEAL:double::Minimum value: OK
-DEAL:double::Sine: OK
-DEAL:double::Cosine: OK
-DEAL:double::Tangent: OK
-DEAL:double::Exponential: OK
-DEAL:double::Logarithm: OK
-DEAL:float::Addition: OK
-DEAL:float::Subtraction: OK
-DEAL:float::Multiplication: OK
-DEAL:float::Division: OK
-DEAL:float::Multiplication scalar: OK
-DEAL:float::Division scalar left: OK
-DEAL:float::Division scalar right: OK
-DEAL:float::Unary operator -: OK
-DEAL:float::Unary operator +: OK
-DEAL:float::Square root: OK
-DEAL:float::Absolute value: OK
-DEAL:float::Maximum value: OK
-DEAL:float::Minimum value: OK
-DEAL:float::Sine: OK
-DEAL:float::Cosine: OK
-DEAL:float::Tangent: OK
-DEAL:float::Exponential: OK
-DEAL:float::Logarithm: OK
-DEAL:long double::Addition: OK
-DEAL:long double::Subtraction: OK
-DEAL:long double::Multiplication: OK
-DEAL:long double::Division: OK
-DEAL:long double::Multiplication scalar: OK
-DEAL:long double::Division scalar left: OK
-DEAL:long double::Division scalar right: OK
-DEAL:long double::Unary operator -: OK
-DEAL:long double::Unary operator +: OK
-DEAL:long double::Square root: OK
-DEAL:long double::Absolute value: OK
-DEAL:long double::Maximum value: OK
-DEAL:long double::Minimum value: OK
-DEAL:long double::Sine: OK
-DEAL:long double::Cosine: OK
-DEAL:long double::Tangent: OK
-DEAL:long double::Exponential: OK
-DEAL:long double::Logarithm: OK
diff --git a/tests/bits/find_cell_12.cc b/tests/bits/find_cell_12.cc
new file mode 100644 (file)
index 0000000..cc8ee77
--- /dev/null
@@ -0,0 +1,105 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// find_active_cell_around_point goes into an endless loop, reported
+// on the mailing list by Giorgos Kourakos (2014-04-10).
+
+#include "../tests.h"
+
+#include <stdio.h>
+#include <cstdlib>
+
+#include <base/quadrature_lib.h>
+#include <fe/mapping_q.h>
+#include <base/function.h>
+#include <base/logstream.h>
+#include <grid/tria.h>
+#include <grid/grid_generator.h>
+#include <grid/tria_accessor.h>
+#include <grid/tria_iterator.h>
+#include <grid/grid_tools.h>
+#include <dofs/dof_handler.h>
+#include <fe/fe_q.h>
+#include <fe/fe_values.h>
+#include <grid/grid_in.h>
+
+
+#include <iostream>
+#include <fstream>
+#include <list>
+#include <string>
+#include <sstream>
+#include <time.h>
+
+using namespace dealii;
+
+void test()
+{
+  Triangulation<2> triangulation;
+
+  Point<2> left_bottom(0,-270);
+  Point<2> right_top(5000,30);
+  std::vector<unsigned int> n_cells;
+  n_cells.push_back(10);
+  n_cells.push_back(2);
+
+
+  GridGenerator::subdivided_hyper_rectangle(triangulation,
+                                           n_cells,
+                                           left_bottom,
+                                           right_top,
+                                           true);
+
+  typename Triangulation<2>::active_cell_iterator
+    cell = triangulation.begin_active(),
+    endc = triangulation.end();
+  for (; cell!=endc; ++cell){
+    Point<2> cell_center = cell->center();
+    if (abs(cell_center(0) - 1500) < 550){
+      cell->set_refine_flag ();
+    }
+  }
+
+  triangulation.execute_coarsening_and_refinement ();
+
+  Point<2> test_point(250, 195);
+  std::cout << "Checking Point " << test_point << std::endl;
+  try
+    {
+      std::pair<typename Triangulation<2>::active_cell_iterator, Point<2> > current_cell =
+       GridTools::find_active_cell_around_point(MappingQ1<2>(), triangulation, test_point);
+
+      deallog << "cell: index = " << current_cell.first->index()
+             << " level = " << current_cell.first->level() << std::endl;
+      deallog << " pos: " << current_cell.second << std::endl;
+    }
+  catch (GridTools::ExcPointNotFound<2> &e)
+    {
+      deallog << "outside" << std::endl;
+    }
+  deallog << "done" << std::endl;
+}
+
+int main (int argc, char **argv)
+{
+  initlog();
+
+  test();
+
+  return 0;
+}
diff --git a/tests/bits/find_cell_12.output b/tests/bits/find_cell_12.output
new file mode 100644 (file)
index 0000000..9ae336e
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL::outside
+DEAL::done
index 2718b9df203ae09216bc95632316f1796a8597c4..78c98e4bc377643aa19e7f8931c38d0017dfaa31 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2010 - 2013 by the deal.II authors
+// Copyright (C) 2010 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -110,9 +110,11 @@ public:
     virtual void vector_value_list (const std::vector<Point<dim> > &points,
                                     std::vector<Vector<double> >   &values) const;
 private:
-    const double PI = dealii::numbers::PI;
-       const double bc_constant = 0.1;
+       static const double bc_constant;
 };
+template <int dim> const double ExactSolution<dim>::bc_constant = 0.1;
+
+
 // RIGHT HAND SIDE CLASS
 template <int dim>
 class RightHandSide :  public Function<dim>
@@ -124,9 +126,10 @@ public:
     virtual void vector_value_list (const std::vector<Point<dim> > &points,
                                     std::vector<Vector<double> >   &value_list) const;
 private:
-    const double PI = dealii::numbers::PI;
-       const double bc_constant = 0.1;
+       static const double bc_constant;
 };
+template <int dim> const double RightHandSide<dim>::bc_constant = 0.1;
+
 // DEFINE EXACT SOLUTION MEMBERS
 template<int dim>
 double ExactSolution<dim>::value(const Point<dim> &p,
@@ -137,8 +140,8 @@ double ExactSolution<dim>::value(const Point<dim> &p,
     
     double val = -1000;
     switch(component) {
-        case 0:        val = cos(PI*p(0))*sin(PI*p(1)) + bc_constant;
-        case 1:        val = -sin(PI*p(0))*cos(PI*p(1)) + bc_constant;
+        case 0:        val = cos(numbers::PI*p(0))*sin(numbers::PI*p(1)) + bc_constant;
+        case 1:        val = -sin(numbers::PI*p(0))*cos(numbers::PI*p(1)) + bc_constant;
     }
     return val;
     
@@ -148,8 +151,8 @@ void ExactSolution<dim>::vector_value(const Point<dim> &p,
                                       Vector<double> &result) const
 {
     Assert(dim >= 2, ExcNotImplemented());
-    result(0) = cos(PI*p(0))*sin(PI*p(1)) + bc_constant;
-    result(1) = -sin(PI*p(0))*cos(PI*p(1)) + bc_constant;
+    result(0) = cos(numbers::PI*p(0))*sin(numbers::PI*p(1)) + bc_constant;
+    result(1) = -sin(numbers::PI*p(0))*cos(numbers::PI*p(1)) + bc_constant;
     
 }
 template <int dim>
@@ -165,9 +168,9 @@ void ExactSolution<dim>::value_list (const std::vector<Point<dim> > &points,
         switch(component)
         {
             case 0:
-                values[i] = cos(PI*p(0))*sin(PI*p(1)) + bc_constant;
+                values[i] = cos(numbers::PI*p(0))*sin(numbers::PI*p(1)) + bc_constant;
             case 1:
-                values[i] = -sin(PI*p(0))*cos(PI*p(1)) + bc_constant;
+                values[i] = -sin(numbers::PI*p(0))*cos(numbers::PI*p(1)) + bc_constant;
         }
     }
 }
@@ -181,8 +184,8 @@ void ExactSolution<dim>::vector_value_list (const std::vector<Point<dim> > &poin
     for (unsigned int i=0; i<points.size(); ++i)
     {
         const Point<dim> &p = points[i];
-        values[i](0) = cos(PI*p(0))*sin(PI*p(1)) + bc_constant;
-        values[i](1) = -sin(PI*p(0))*cos(PI*p(1)) + bc_constant;
+        values[i](0) = cos(numbers::PI*p(0))*sin(numbers::PI*p(1)) + bc_constant;
+        values[i](1) = -sin(numbers::PI*p(0))*cos(numbers::PI*p(1)) + bc_constant;
     }
 }
 // END EXACT SOLUTION MEMBERS
@@ -201,8 +204,8 @@ void RightHandSide<dim>::vector_value (const Point<dim> &p,
     Assert (dim >= 2, ExcNotImplemented());
     
     //2D solution
-    values(0) = (2*PI*PI + 1)*cos(PI*p(0))*sin(PI*p(1)) + bc_constant;
-    values(1) = -(2*PI*PI + 1)*sin(PI*p(0))*cos(PI*p(1)) + bc_constant;
+    values(0) = (2*numbers::PI*numbers::PI + 1)*cos(numbers::PI*p(0))*sin(numbers::PI*p(1)) + bc_constant;
+    values(1) = -(2*numbers::PI*numbers::PI + 1)*sin(numbers::PI*p(0))*cos(numbers::PI*p(1)) + bc_constant;
 }
 template <int dim>
 void RightHandSide<dim>::vector_value_list (const std::vector<Point<dim> > &points,
index b417626514e733cd8d22e39095cce5f71b437cd8..3c6dcb2f0e088c11729a5268a5c047c4810ed39a 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1998 - 2013 by the deal.II authors
+// Copyright (C) 1998 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -15,6 +15,8 @@
 // ---------------------------------------------------------------------
 
 
+// test the deformation of a circular annulus to a domain where the central
+// circle is displaced
 
 
 #include "../tests.h"
diff --git a/tests/deal.II/grid_transform_02.cc b/tests/deal.II/grid_transform_02.cc
new file mode 100644 (file)
index 0000000..9ceb05b
--- /dev/null
@@ -0,0 +1,89 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 1998 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Verify that GridTools::laplace_transform can deal with interior
+// nodes being pinned to a new location as well. The test itself
+// doesn't make much sense since it leads to a few inverted cells, but
+// it allows for easy visual inspection that the desired result
+// happens.
+//
+// (Testcase adapted from one by Denis Davydov.)
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/mapping_q.h>
+
+#include <fstream>
+#include <iomanip>
+
+
+int main ()
+{
+  const int dim = 2;
+
+  Triangulation< dim > tria;
+  std::map< unsigned int, Point< dim > > new_points;
+  const unsigned int N = 16;
+  GridGenerator::subdivided_hyper_cube (tria, N, -5, 5);
+
+  // find the vertex at the origin
+  Triangulation<dim>::active_cell_iterator
+    cell = GridTools::find_active_cell_around_point    (tria,Point<dim>());
+
+  unsigned int best_vertex   = cell->vertex_index(0);//vertex number on local triangulation
+  Point<dim>   best_pos      = cell->vertex(0);
+  double       best_dist     = Point<dim>().distance(best_pos);
+
+  for (unsigned int vertex_no = 1; vertex_no < GeometryInfo<dim>::vertices_per_cell; vertex_no++) {
+    const double dist = Point<dim>().distance(cell->vertex(vertex_no));
+    if (dist < best_dist)
+      {
+       best_pos    = cell->vertex(vertex_no);
+       best_vertex = cell->vertex_index(vertex_no);
+       best_dist   = dist;
+      }
+  }
+  // move the point at the origin by 2 units to the right
+  new_points[best_vertex] = Point<dim>();
+  new_points[best_vertex][0] += 2;
+
+  // now pin all of the points on the boundary
+  cell = tria.begin_active();
+  Triangulation<dim>::active_cell_iterator endc = tria.end();
+
+  for ( ; cell != endc; ++cell)
+    if (cell->at_boundary() == true)
+      for (unsigned int face = 0; face < GeometryInfo<dim>::faces_per_cell;++face)
+       if (cell->face(face)->at_boundary() == true)
+         for (unsigned int v=0; v < GeometryInfo<dim>::vertices_per_face;++v) {
+           unsigned int vertex_number = cell->face(face)->vertex_index(v);
+           new_points[vertex_number] =  cell->face(face)->vertex(v);
+         }
+
+  // then compute new point locations and output the result
+  GridTools::laplace_transform (new_points,tria);
+  std::ofstream out ("output");
+  GridOut grid_out;
+  grid_out.write_eps (tria, out);
+}
diff --git a/tests/deal.II/grid_transform_02.output b/tests/deal.II/grid_transform_02.output
new file mode 100644 (file)
index 0000000..a792b88
--- /dev/null
@@ -0,0 +1,1037 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Title: deal.II Output
+%%Creator: the deal.II library
+
+%%BoundingBox: 0 0 301 301
+/m {moveto} bind def
+/x {lineto stroke} bind def
+/b {0 0 0 setrgbcolor} def
+/r {1 0 0 setrgbcolor} def
+%%EndProlog
+
+0.5 setlinewidth
+b 0 1.46283e-11 m 1.27098e-11 18.75 x
+b 18.75 5.32907e-14 m 19.1265 18.75 x
+b 0 1.46283e-11 m 18.75 5.32907e-14 x
+b 1.27098e-11 18.75 m 19.1265 18.75 x
+b 18.75 5.32907e-14 m 19.1265 18.75 x
+b 37.5 5.32907e-14 m 38.2524 18.75 x
+b 18.75 5.32907e-14 m 37.5 5.32907e-14 x
+b 19.1265 18.75 m 38.2524 18.75 x
+b 37.5 5.32907e-14 m 38.2524 18.75 x
+b 56.25 0 m 57.3735 18.75 x
+b 37.5 5.32907e-14 m 56.25 0 x
+b 38.2524 18.75 m 57.3735 18.75 x
+b 56.25 0 m 57.3735 18.75 x
+b 75 0 m 76.479 18.75 x
+b 56.25 0 m 75 0 x
+b 57.3735 18.75 m 76.479 18.75 x
+b 75 0 m 76.479 18.75 x
+b 93.75 5.32907e-14 m 95.5495 18.75 x
+b 75 0 m 93.75 5.32907e-14 x
+b 76.479 18.75 m 95.5495 18.75 x
+b 93.75 5.32907e-14 m 95.5495 18.75 x
+b 112.5 5.32907e-14 m 114.559 18.75 x
+b 93.75 5.32907e-14 m 112.5 5.32907e-14 x
+b 95.5495 18.75 m 114.559 18.75 x
+b 112.5 5.32907e-14 m 114.559 18.75 x
+b 131.25 5.32907e-14 m 133.479 18.75 x
+b 112.5 5.32907e-14 m 131.25 5.32907e-14 x
+b 114.559 18.75 m 133.479 18.75 x
+b 131.25 5.32907e-14 m 133.479 18.75 x
+b 150 5.32907e-14 m 152.289 18.75 x
+b 131.25 5.32907e-14 m 150 5.32907e-14 x
+b 133.479 18.75 m 152.289 18.75 x
+b 150 5.32907e-14 m 152.289 18.75 x
+b 168.75 5.32907e-14 m 170.979 18.75 x
+b 150 5.32907e-14 m 168.75 5.32907e-14 x
+b 152.289 18.75 m 170.979 18.75 x
+b 168.75 5.32907e-14 m 170.979 18.75 x
+b 187.5 5.32907e-14 m 189.559 18.75 x
+b 168.75 5.32907e-14 m 187.5 5.32907e-14 x
+b 170.979 18.75 m 189.559 18.75 x
+b 187.5 5.32907e-14 m 189.559 18.75 x
+b 206.25 5.32907e-14 m 208.049 18.75 x
+b 187.5 5.32907e-14 m 206.25 5.32907e-14 x
+b 189.559 18.75 m 208.049 18.75 x
+b 206.25 5.32907e-14 m 208.049 18.75 x
+b 225 5.32907e-14 m 226.479 18.75 x
+b 206.25 5.32907e-14 m 225 5.32907e-14 x
+b 208.049 18.75 m 226.479 18.75 x
+b 225 5.32907e-14 m 226.479 18.75 x
+b 243.75 5.32907e-14 m 244.874 18.75 x
+b 225 5.32907e-14 m 243.75 5.32907e-14 x
+b 226.479 18.75 m 244.874 18.75 x
+b 243.75 5.32907e-14 m 244.874 18.75 x
+b 262.5 5.32907e-14 m 263.252 18.75 x
+b 243.75 5.32907e-14 m 262.5 5.32907e-14 x
+b 244.874 18.75 m 263.252 18.75 x
+b 262.5 5.32907e-14 m 263.252 18.75 x
+b 281.25 5.32907e-14 m 281.627 18.75 x
+b 262.5 5.32907e-14 m 281.25 5.32907e-14 x
+b 263.252 18.75 m 281.627 18.75 x
+b 281.25 5.32907e-14 m 281.627 18.75 x
+b 300 1.46283e-11 m 300 18.75 x
+b 281.25 5.32907e-14 m 300 1.46283e-11 x
+b 281.627 18.75 m 300 18.75 x
+b 1.27098e-11 18.75 m 1.27098e-11 37.5 x
+b 19.1265 18.75 m 19.5024 37.5 x
+b 1.27098e-11 18.75 m 19.1265 18.75 x
+b 1.27098e-11 37.5 m 19.5024 37.5 x
+b 19.1265 18.75 m 19.5024 37.5 x
+b 38.2524 18.75 m 39.0073 37.5 x
+b 19.1265 18.75 m 38.2524 18.75 x
+b 19.5024 37.5 m 39.0073 37.5 x
+b 38.2524 18.75 m 39.0073 37.5 x
+b 57.3735 18.75 m 58.5096 37.5 x
+b 38.2524 18.75 m 57.3735 18.75 x
+b 39.0073 37.5 m 58.5096 37.5 x
+b 57.3735 18.75 m 58.5096 37.5 x
+b 76.479 18.75 m 77.99 37.5 x
+b 57.3735 18.75 m 76.479 18.75 x
+b 58.5096 37.5 m 77.99 37.5 x
+b 76.479 18.75 m 77.99 37.5 x
+b 95.5495 18.75 m 97.409 37.5 x
+b 76.479 18.75 m 95.5495 18.75 x
+b 77.99 37.5 m 97.409 37.5 x
+b 95.5495 18.75 m 97.409 37.5 x
+b 114.559 18.75 m 116.709 37.5 x
+b 95.5495 18.75 m 114.559 18.75 x
+b 97.409 37.5 m 116.709 37.5 x
+b 114.559 18.75 m 116.709 37.5 x
+b 133.479 18.75 m 135.824 37.5 x
+b 114.559 18.75 m 133.479 18.75 x
+b 116.709 37.5 m 135.824 37.5 x
+b 133.479 18.75 m 135.824 37.5 x
+b 152.289 18.75 m 154.703 37.5 x
+b 133.479 18.75 m 152.289 18.75 x
+b 135.824 37.5 m 154.703 37.5 x
+b 152.289 18.75 m 154.703 37.5 x
+b 170.979 18.75 m 173.324 37.5 x
+b 152.289 18.75 m 170.979 18.75 x
+b 154.703 37.5 m 173.324 37.5 x
+b 170.979 18.75 m 173.324 37.5 x
+b 189.559 18.75 m 191.709 37.5 x
+b 170.979 18.75 m 189.559 18.75 x
+b 173.324 37.5 m 191.709 37.5 x
+b 189.559 18.75 m 191.709 37.5 x
+b 208.049 18.75 m 209.909 37.5 x
+b 189.559 18.75 m 208.049 18.75 x
+b 191.709 37.5 m 209.909 37.5 x
+b 208.049 18.75 m 209.909 37.5 x
+b 226.479 18.75 m 227.99 37.5 x
+b 208.049 18.75 m 226.479 18.75 x
+b 209.909 37.5 m 227.99 37.5 x
+b 226.479 18.75 m 227.99 37.5 x
+b 244.874 18.75 m 246.01 37.5 x
+b 226.479 18.75 m 244.874 18.75 x
+b 227.99 37.5 m 246.01 37.5 x
+b 244.874 18.75 m 246.01 37.5 x
+b 263.252 18.75 m 264.007 37.5 x
+b 244.874 18.75 m 263.252 18.75 x
+b 246.01 37.5 m 264.007 37.5 x
+b 263.252 18.75 m 264.007 37.5 x
+b 281.627 18.75 m 282.002 37.5 x
+b 263.252 18.75 m 281.627 18.75 x
+b 264.007 37.5 m 282.002 37.5 x
+b 281.627 18.75 m 282.002 37.5 x
+b 300 18.75 m 300 37.5 x
+b 281.627 18.75 m 300 18.75 x
+b 282.002 37.5 m 300 37.5 x
+b 1.27098e-11 37.5 m 1.27365e-11 56.25 x
+b 19.5024 37.5 m 19.8735 56.25 x
+b 1.27098e-11 37.5 m 19.5024 37.5 x
+b 1.27365e-11 56.25 m 19.8735 56.25 x
+b 19.5024 37.5 m 19.8735 56.25 x
+b 39.0073 37.5 m 39.7596 56.25 x
+b 19.5024 37.5 m 39.0073 37.5 x
+b 19.8735 56.25 m 39.7596 56.25 x
+b 39.0073 37.5 m 39.7596 56.25 x
+b 58.5096 37.5 m 59.6605 56.25 x
+b 39.0073 37.5 m 58.5096 37.5 x
+b 39.7596 56.25 m 59.6605 56.25 x
+b 58.5096 37.5 m 59.6605 56.25 x
+b 77.99 37.5 m 79.5548 56.25 x
+b 58.5096 37.5 m 77.99 37.5 x
+b 59.6605 56.25 m 79.5548 56.25 x
+b 77.99 37.5 m 79.5548 56.25 x
+b 97.409 37.5 m 99.384 56.25 x
+b 77.99 37.5 m 97.409 37.5 x
+b 79.5548 56.25 m 99.384 56.25 x
+b 97.409 37.5 m 99.384 56.25 x
+b 116.709 37.5 m 119.047 56.25 x
+b 97.409 37.5 m 116.709 37.5 x
+b 99.384 56.25 m 119.047 56.25 x
+b 116.709 37.5 m 119.047 56.25 x
+b 135.824 37.5 m 138.419 56.25 x
+b 116.709 37.5 m 135.824 37.5 x
+b 119.047 56.25 m 138.419 56.25 x
+b 135.824 37.5 m 138.419 56.25 x
+b 154.703 37.5 m 157.39 56.25 x
+b 135.824 37.5 m 154.703 37.5 x
+b 138.419 56.25 m 157.39 56.25 x
+b 154.703 37.5 m 157.39 56.25 x
+b 173.324 37.5 m 175.919 56.25 x
+b 154.703 37.5 m 173.324 37.5 x
+b 157.39 56.25 m 175.919 56.25 x
+b 173.324 37.5 m 175.919 56.25 x
+b 191.709 37.5 m 194.047 56.25 x
+b 173.324 37.5 m 191.709 37.5 x
+b 175.919 56.25 m 194.047 56.25 x
+b 191.709 37.5 m 194.047 56.25 x
+b 209.909 37.5 m 211.884 56.25 x
+b 191.709 37.5 m 209.909 37.5 x
+b 194.047 56.25 m 211.884 56.25 x
+b 209.909 37.5 m 211.884 56.25 x
+b 227.99 37.5 m 229.555 56.25 x
+b 209.909 37.5 m 227.99 37.5 x
+b 211.884 56.25 m 229.555 56.25 x
+b 227.99 37.5 m 229.555 56.25 x
+b 246.01 37.5 m 247.161 56.25 x
+b 227.99 37.5 m 246.01 37.5 x
+b 229.555 56.25 m 247.161 56.25 x
+b 246.01 37.5 m 247.161 56.25 x
+b 264.007 37.5 m 264.76 56.25 x
+b 246.01 37.5 m 264.007 37.5 x
+b 247.161 56.25 m 264.76 56.25 x
+b 264.007 37.5 m 264.76 56.25 x
+b 282.002 37.5 m 282.374 56.25 x
+b 264.007 37.5 m 282.002 37.5 x
+b 264.76 56.25 m 282.374 56.25 x
+b 282.002 37.5 m 282.374 56.25 x
+b 300 37.5 m 300 56.25 x
+b 282.002 37.5 m 300 37.5 x
+b 282.374 56.25 m 300 56.25 x
+b 1.27365e-11 56.25 m 1.27098e-11 75 x
+b 19.8735 56.25 m 20.229 75 x
+b 1.27365e-11 56.25 m 19.8735 56.25 x
+b 1.27098e-11 75 m 20.229 75 x
+b 19.8735 56.25 m 20.229 75 x
+b 39.7596 56.25 m 40.49 75 x
+b 19.8735 56.25 m 39.7596 56.25 x
+b 20.229 75 m 40.49 75 x
+b 39.7596 56.25 m 40.49 75 x
+b 59.6605 56.25 m 60.8048 75 x
+b 39.7596 56.25 m 59.6605 56.25 x
+b 40.49 75 m 60.8048 75 x
+b 59.6605 56.25 m 60.8048 75 x
+b 79.5548 56.25 m 81.168 75 x
+b 59.6605 56.25 m 79.5548 56.25 x
+b 60.8048 75 m 81.168 75 x
+b 79.5548 56.25 m 81.168 75 x
+b 99.384 56.25 m 101.512 75 x
+b 79.5548 56.25 m 99.384 56.25 x
+b 81.168 75 m 101.512 75 x
+b 99.384 56.25 m 101.512 75 x
+b 119.047 56.25 m 121.682 75 x
+b 99.384 56.25 m 119.047 56.25 x
+b 101.512 75 m 121.682 75 x
+b 119.047 56.25 m 121.682 75 x
+b 138.419 56.25 m 141.438 75 x
+b 119.047 56.25 m 138.419 56.25 x
+b 121.682 75 m 141.438 75 x
+b 138.419 56.25 m 141.438 75 x
+b 157.39 56.25 m 160.556 75 x
+b 138.419 56.25 m 157.39 56.25 x
+b 141.438 75 m 160.556 75 x
+b 157.39 56.25 m 160.556 75 x
+b 175.919 56.25 m 178.938 75 x
+b 157.39 56.25 m 175.919 56.25 x
+b 160.556 75 m 178.938 75 x
+b 175.919 56.25 m 178.938 75 x
+b 194.047 56.25 m 196.682 75 x
+b 175.919 56.25 m 194.047 56.25 x
+b 178.938 75 m 196.682 75 x
+b 194.047 56.25 m 196.682 75 x
+b 211.884 56.25 m 214.012 75 x
+b 194.047 56.25 m 211.884 56.25 x
+b 196.682 75 m 214.012 75 x
+b 211.884 56.25 m 214.012 75 x
+b 229.555 56.25 m 231.168 75 x
+b 211.884 56.25 m 229.555 56.25 x
+b 214.012 75 m 231.168 75 x
+b 229.555 56.25 m 231.168 75 x
+b 247.161 56.25 m 248.305 75 x
+b 229.555 56.25 m 247.161 56.25 x
+b 231.168 75 m 248.305 75 x
+b 247.161 56.25 m 248.305 75 x
+b 264.76 56.25 m 265.49 75 x
+b 247.161 56.25 m 264.76 56.25 x
+b 248.305 75 m 265.49 75 x
+b 264.76 56.25 m 265.49 75 x
+b 282.374 56.25 m 282.729 75 x
+b 264.76 56.25 m 282.374 56.25 x
+b 265.49 75 m 282.729 75 x
+b 282.374 56.25 m 282.729 75 x
+b 300 56.25 m 300 75 x
+b 282.374 56.25 m 300 56.25 x
+b 282.729 75 m 300 75 x
+b 1.27098e-11 75 m 1.27098e-11 93.75 x
+b 20.229 75 m 20.5495 93.75 x
+b 1.27098e-11 75 m 20.229 75 x
+b 1.27098e-11 93.75 m 20.5495 93.75 x
+b 20.229 75 m 20.5495 93.75 x
+b 40.49 75 m 41.159 93.75 x
+b 20.229 75 m 40.49 75 x
+b 20.5495 93.75 m 41.159 93.75 x
+b 40.49 75 m 41.159 93.75 x
+b 60.8048 75 m 61.884 93.75 x
+b 40.49 75 m 60.8048 75 x
+b 41.159 93.75 m 61.884 93.75 x
+b 60.8048 75 m 61.884 93.75 x
+b 81.168 75 m 82.7625 93.75 x
+b 60.8048 75 m 81.168 75 x
+b 61.884 93.75 m 82.7625 93.75 x
+b 81.168 75 m 82.7625 93.75 x
+b 101.512 75 m 103.781 93.75 x
+b 81.168 75 m 101.512 75 x
+b 82.7625 93.75 m 103.781 93.75 x
+b 101.512 75 m 103.781 93.75 x
+b 121.682 75 m 124.72 93.75 x
+b 101.512 75 m 121.682 75 x
+b 103.781 93.75 m 124.72 93.75 x
+b 121.682 75 m 124.72 93.75 x
+b 141.438 75 m 145.155 93.75 x
+b 121.682 75 m 141.438 75 x
+b 124.72 93.75 m 145.155 93.75 x
+b 141.438 75 m 145.155 93.75 x
+b 160.556 75 m 164.534 93.75 x
+b 141.438 75 m 160.556 75 x
+b 145.155 93.75 m 164.534 93.75 x
+b 160.556 75 m 164.534 93.75 x
+b 178.938 75 m 182.655 93.75 x
+b 160.556 75 m 178.938 75 x
+b 164.534 93.75 m 182.655 93.75 x
+b 178.938 75 m 182.655 93.75 x
+b 196.682 75 m 199.72 93.75 x
+b 178.938 75 m 196.682 75 x
+b 182.655 93.75 m 199.72 93.75 x
+b 196.682 75 m 199.72 93.75 x
+b 214.012 75 m 216.281 93.75 x
+b 196.682 75 m 214.012 75 x
+b 199.72 93.75 m 216.281 93.75 x
+b 214.012 75 m 216.281 93.75 x
+b 231.168 75 m 232.762 93.75 x
+b 214.012 75 m 231.168 75 x
+b 216.281 93.75 m 232.762 93.75 x
+b 231.168 75 m 232.762 93.75 x
+b 248.305 75 m 249.384 93.75 x
+b 231.168 75 m 248.305 75 x
+b 232.762 93.75 m 249.384 93.75 x
+b 248.305 75 m 249.384 93.75 x
+b 265.49 75 m 266.159 93.75 x
+b 248.305 75 m 265.49 75 x
+b 249.384 93.75 m 266.159 93.75 x
+b 265.49 75 m 266.159 93.75 x
+b 282.729 75 m 283.049 93.75 x
+b 265.49 75 m 282.729 75 x
+b 266.159 93.75 m 283.049 93.75 x
+b 282.729 75 m 283.049 93.75 x
+b 300 75 m 300 93.75 x
+b 282.729 75 m 300 75 x
+b 283.049 93.75 m 300 93.75 x
+b 1.27098e-11 93.75 m 1.27098e-11 112.5 x
+b 20.5495 93.75 m 20.8088 112.5 x
+b 1.27098e-11 93.75 m 20.5495 93.75 x
+b 1.27098e-11 112.5 m 20.8088 112.5 x
+b 20.5495 93.75 m 20.8088 112.5 x
+b 41.159 93.75 m 41.7088 112.5 x
+b 20.5495 93.75 m 41.159 93.75 x
+b 20.8088 112.5 m 41.7088 112.5 x
+b 41.159 93.75 m 41.7088 112.5 x
+b 61.884 93.75 m 62.7971 112.5 x
+b 41.159 93.75 m 61.884 93.75 x
+b 41.7088 112.5 m 62.7971 112.5 x
+b 61.884 93.75 m 62.7971 112.5 x
+b 82.7625 93.75 m 84.182 112.5 x
+b 61.884 93.75 m 82.7625 93.75 x
+b 62.7971 112.5 m 84.182 112.5 x
+b 82.7625 93.75 m 84.182 112.5 x
+b 103.781 93.75 m 105.97 112.5 x
+b 82.7625 93.75 m 103.781 93.75 x
+b 84.182 112.5 m 105.97 112.5 x
+b 103.781 93.75 m 105.97 112.5 x
+b 124.72 93.75 m 128.249 112.5 x
+b 103.781 93.75 m 124.72 93.75 x
+b 105.97 112.5 m 128.249 112.5 x
+b 124.72 93.75 m 128.249 112.5 x
+b 145.155 93.75 m 149.977 112.5 x
+b 124.72 93.75 m 145.155 93.75 x
+b 128.249 112.5 m 149.977 112.5 x
+b 145.155 93.75 m 149.977 112.5 x
+b 164.534 93.75 m 170.081 112.5 x
+b 145.155 93.75 m 164.534 93.75 x
+b 149.977 112.5 m 170.081 112.5 x
+b 164.534 93.75 m 170.081 112.5 x
+b 182.655 93.75 m 187.477 112.5 x
+b 164.534 93.75 m 182.655 93.75 x
+b 170.081 112.5 m 187.477 112.5 x
+b 182.655 93.75 m 187.477 112.5 x
+b 199.72 93.75 m 203.249 112.5 x
+b 182.655 93.75 m 199.72 93.75 x
+b 187.477 112.5 m 203.249 112.5 x
+b 199.72 93.75 m 203.249 112.5 x
+b 216.281 93.75 m 218.47 112.5 x
+b 199.72 93.75 m 216.281 93.75 x
+b 203.249 112.5 m 218.47 112.5 x
+b 216.281 93.75 m 218.47 112.5 x
+b 232.762 93.75 m 234.182 112.5 x
+b 216.281 93.75 m 232.762 93.75 x
+b 218.47 112.5 m 234.182 112.5 x
+b 232.762 93.75 m 234.182 112.5 x
+b 249.384 93.75 m 250.297 112.5 x
+b 232.762 93.75 m 249.384 93.75 x
+b 234.182 112.5 m 250.297 112.5 x
+b 249.384 93.75 m 250.297 112.5 x
+b 266.159 93.75 m 266.709 112.5 x
+b 249.384 93.75 m 266.159 93.75 x
+b 250.297 112.5 m 266.709 112.5 x
+b 266.159 93.75 m 266.709 112.5 x
+b 283.049 93.75 m 283.309 112.5 x
+b 266.159 93.75 m 283.049 93.75 x
+b 266.709 112.5 m 283.309 112.5 x
+b 283.049 93.75 m 283.309 112.5 x
+b 300 93.75 m 300 112.5 x
+b 283.049 93.75 m 300 93.75 x
+b 283.309 112.5 m 300 112.5 x
+b 1.27098e-11 112.5 m 1.27098e-11 131.25 x
+b 20.8088 112.5 m 20.9792 131.25 x
+b 1.27098e-11 112.5 m 20.8088 112.5 x
+b 1.27098e-11 131.25 m 20.9792 131.25 x
+b 20.8088 112.5 m 20.9792 131.25 x
+b 41.7088 112.5 m 42.0743 131.25 x
+b 20.8088 112.5 m 41.7088 112.5 x
+b 20.9792 131.25 m 42.0743 131.25 x
+b 41.7088 112.5 m 42.0743 131.25 x
+b 62.7971 112.5 m 63.4186 131.25 x
+b 41.7088 112.5 m 62.7971 112.5 x
+b 42.0743 131.25 m 63.4186 131.25 x
+b 62.7971 112.5 m 63.4186 131.25 x
+b 84.182 112.5 m 85.1879 131.25 x
+b 62.7971 112.5 m 84.182 112.5 x
+b 63.4186 131.25 m 85.1879 131.25 x
+b 84.182 112.5 m 85.1879 131.25 x
+b 105.97 112.5 m 107.655 131.25 x
+b 84.182 112.5 m 105.97 112.5 x
+b 85.1879 131.25 m 107.655 131.25 x
+b 105.97 112.5 m 107.655 131.25 x
+b 128.249 112.5 m 131.227 131.25 x
+b 105.97 112.5 m 128.249 112.5 x
+b 107.655 131.25 m 131.227 131.25 x
+b 128.249 112.5 m 131.227 131.25 x
+b 149.977 112.5 m 157.506 131.25 x
+b 128.249 112.5 m 149.977 112.5 x
+b 131.227 131.25 m 157.506 131.25 x
+b 149.977 112.5 m 157.506 131.25 x
+b 170.081 112.5 m 178.341 131.25 x
+b 149.977 112.5 m 170.081 112.5 x
+b 157.506 131.25 m 178.341 131.25 x
+b 170.081 112.5 m 178.341 131.25 x
+b 187.477 112.5 m 195.006 131.25 x
+b 170.081 112.5 m 187.477 112.5 x
+b 178.341 131.25 m 195.006 131.25 x
+b 187.477 112.5 m 195.006 131.25 x
+b 203.249 112.5 m 206.227 131.25 x
+b 187.477 112.5 m 203.249 112.5 x
+b 195.006 131.25 m 206.227 131.25 x
+b 203.249 112.5 m 206.227 131.25 x
+b 218.47 112.5 m 220.155 131.25 x
+b 203.249 112.5 m 218.47 112.5 x
+b 206.227 131.25 m 220.155 131.25 x
+b 218.47 112.5 m 220.155 131.25 x
+b 234.182 112.5 m 235.188 131.25 x
+b 218.47 112.5 m 234.182 112.5 x
+b 220.155 131.25 m 235.188 131.25 x
+b 234.182 112.5 m 235.188 131.25 x
+b 250.297 112.5 m 250.919 131.25 x
+b 234.182 112.5 m 250.297 112.5 x
+b 235.188 131.25 m 250.919 131.25 x
+b 250.297 112.5 m 250.919 131.25 x
+b 266.709 112.5 m 267.074 131.25 x
+b 250.297 112.5 m 266.709 112.5 x
+b 250.919 131.25 m 267.074 131.25 x
+b 266.709 112.5 m 267.074 131.25 x
+b 283.309 112.5 m 283.479 131.25 x
+b 266.709 112.5 m 283.309 112.5 x
+b 267.074 131.25 m 283.479 131.25 x
+b 283.309 112.5 m 283.479 131.25 x
+b 300 112.5 m 300 131.25 x
+b 283.309 112.5 m 300 112.5 x
+b 283.479 131.25 m 300 131.25 x
+b 1.27098e-11 131.25 m 1.27098e-11 150 x
+b 20.9792 131.25 m 21.0387 150 x
+b 1.27098e-11 131.25 m 20.9792 131.25 x
+b 1.27098e-11 150 m 21.0387 150 x
+b 20.9792 131.25 m 21.0387 150 x
+b 42.0743 131.25 m 42.2029 150 x
+b 20.9792 131.25 m 42.0743 131.25 x
+b 21.0387 150 m 42.2029 150 x
+b 42.0743 131.25 m 42.2029 150 x
+b 63.4186 131.25 m 63.64 150 x
+b 42.0743 131.25 m 63.4186 131.25 x
+b 42.2029 150 m 63.64 150 x
+b 63.4186 131.25 m 63.64 150 x
+b 85.1879 131.25 m 85.5558 150 x
+b 63.4186 131.25 m 85.1879 131.25 x
+b 63.64 150 m 85.5558 150 x
+b 85.1879 131.25 m 85.5558 150 x
+b 107.655 131.25 m 108.284 150 x
+b 85.1879 131.25 m 107.655 131.25 x
+b 85.5558 150 m 108.284 150 x
+b 107.655 131.25 m 108.284 150 x
+b 131.227 131.25 m 132.581 150 x
+b 107.655 131.25 m 131.227 131.25 x
+b 108.284 150 m 132.581 150 x
+b 131.227 131.25 m 132.581 150 x
+b 157.506 131.25 m 159.591 150 x
+b 131.227 131.25 m 157.506 131.25 x
+b 132.581 150 m 159.591 150 x
+b 157.506 131.25 m 159.591 150 x
+b 178.341 131.25 m 210 150 x
+b 157.506 131.25 m 178.341 131.25 x
+b 159.591 150 m 210 150 x
+b 178.341 131.25 m 210 150 x
+b 195.006 131.25 m 197.091 150 x
+b 178.341 131.25 m 195.006 131.25 x
+b 210 150 m 197.091 150 x
+b 195.006 131.25 m 197.091 150 x
+b 206.227 131.25 m 207.581 150 x
+b 195.006 131.25 m 206.227 131.25 x
+b 197.091 150 m 207.581 150 x
+b 206.227 131.25 m 207.581 150 x
+b 220.155 131.25 m 220.784 150 x
+b 206.227 131.25 m 220.155 131.25 x
+b 207.581 150 m 220.784 150 x
+b 220.155 131.25 m 220.784 150 x
+b 235.188 131.25 m 235.556 150 x
+b 220.155 131.25 m 235.188 131.25 x
+b 220.784 150 m 235.556 150 x
+b 235.188 131.25 m 235.556 150 x
+b 250.919 131.25 m 251.14 150 x
+b 235.188 131.25 m 250.919 131.25 x
+b 235.556 150 m 251.14 150 x
+b 250.919 131.25 m 251.14 150 x
+b 267.074 131.25 m 267.203 150 x
+b 250.919 131.25 m 267.074 131.25 x
+b 251.14 150 m 267.203 150 x
+b 267.074 131.25 m 267.203 150 x
+b 283.479 131.25 m 283.539 150 x
+b 267.074 131.25 m 283.479 131.25 x
+b 267.203 150 m 283.539 150 x
+b 283.479 131.25 m 283.539 150 x
+b 300 131.25 m 300 150 x
+b 283.479 131.25 m 300 131.25 x
+b 283.539 150 m 300 150 x
+b 1.27098e-11 150 m 1.27098e-11 168.75 x
+b 21.0387 150 m 20.9792 168.75 x
+b 1.27098e-11 150 m 21.0387 150 x
+b 1.27098e-11 168.75 m 20.9792 168.75 x
+b 21.0387 150 m 20.9792 168.75 x
+b 42.2029 150 m 42.0743 168.75 x
+b 21.0387 150 m 42.2029 150 x
+b 20.9792 168.75 m 42.0743 168.75 x
+b 42.2029 150 m 42.0743 168.75 x
+b 63.64 150 m 63.4186 168.75 x
+b 42.2029 150 m 63.64 150 x
+b 42.0743 168.75 m 63.4186 168.75 x
+b 63.64 150 m 63.4186 168.75 x
+b 85.5558 150 m 85.1879 168.75 x
+b 63.64 150 m 85.5558 150 x
+b 63.4186 168.75 m 85.1879 168.75 x
+b 85.5558 150 m 85.1879 168.75 x
+b 108.284 150 m 107.655 168.75 x
+b 85.5558 150 m 108.284 150 x
+b 85.1879 168.75 m 107.655 168.75 x
+b 108.284 150 m 107.655 168.75 x
+b 132.581 150 m 131.227 168.75 x
+b 108.284 150 m 132.581 150 x
+b 107.655 168.75 m 131.227 168.75 x
+b 132.581 150 m 131.227 168.75 x
+b 159.591 150 m 157.506 168.75 x
+b 132.581 150 m 159.591 150 x
+b 131.227 168.75 m 157.506 168.75 x
+b 159.591 150 m 157.506 168.75 x
+b 210 150 m 178.341 168.75 x
+b 159.591 150 m 210 150 x
+b 157.506 168.75 m 178.341 168.75 x
+b 210 150 m 178.341 168.75 x
+b 197.091 150 m 195.006 168.75 x
+b 210 150 m 197.091 150 x
+b 178.341 168.75 m 195.006 168.75 x
+b 197.091 150 m 195.006 168.75 x
+b 207.581 150 m 206.227 168.75 x
+b 197.091 150 m 207.581 150 x
+b 195.006 168.75 m 206.227 168.75 x
+b 207.581 150 m 206.227 168.75 x
+b 220.784 150 m 220.155 168.75 x
+b 207.581 150 m 220.784 150 x
+b 206.227 168.75 m 220.155 168.75 x
+b 220.784 150 m 220.155 168.75 x
+b 235.556 150 m 235.188 168.75 x
+b 220.784 150 m 235.556 150 x
+b 220.155 168.75 m 235.188 168.75 x
+b 235.556 150 m 235.188 168.75 x
+b 251.14 150 m 250.919 168.75 x
+b 235.556 150 m 251.14 150 x
+b 235.188 168.75 m 250.919 168.75 x
+b 251.14 150 m 250.919 168.75 x
+b 267.203 150 m 267.074 168.75 x
+b 251.14 150 m 267.203 150 x
+b 250.919 168.75 m 267.074 168.75 x
+b 267.203 150 m 267.074 168.75 x
+b 283.539 150 m 283.479 168.75 x
+b 267.203 150 m 283.539 150 x
+b 267.074 168.75 m 283.479 168.75 x
+b 283.539 150 m 283.479 168.75 x
+b 300 150 m 300 168.75 x
+b 283.539 150 m 300 150 x
+b 283.479 168.75 m 300 168.75 x
+b 1.27098e-11 168.75 m 1.27365e-11 187.5 x
+b 20.9792 168.75 m 20.8088 187.5 x
+b 1.27098e-11 168.75 m 20.9792 168.75 x
+b 1.27365e-11 187.5 m 20.8088 187.5 x
+b 20.9792 168.75 m 20.8088 187.5 x
+b 42.0743 168.75 m 41.7088 187.5 x
+b 20.9792 168.75 m 42.0743 168.75 x
+b 20.8088 187.5 m 41.7088 187.5 x
+b 42.0743 168.75 m 41.7088 187.5 x
+b 63.4186 168.75 m 62.7971 187.5 x
+b 42.0743 168.75 m 63.4186 168.75 x
+b 41.7088 187.5 m 62.7971 187.5 x
+b 63.4186 168.75 m 62.7971 187.5 x
+b 85.1879 168.75 m 84.182 187.5 x
+b 63.4186 168.75 m 85.1879 168.75 x
+b 62.7971 187.5 m 84.182 187.5 x
+b 85.1879 168.75 m 84.182 187.5 x
+b 107.655 168.75 m 105.97 187.5 x
+b 85.1879 168.75 m 107.655 168.75 x
+b 84.182 187.5 m 105.97 187.5 x
+b 107.655 168.75 m 105.97 187.5 x
+b 131.227 168.75 m 128.249 187.5 x
+b 107.655 168.75 m 131.227 168.75 x
+b 105.97 187.5 m 128.249 187.5 x
+b 131.227 168.75 m 128.249 187.5 x
+b 157.506 168.75 m 149.977 187.5 x
+b 131.227 168.75 m 157.506 168.75 x
+b 128.249 187.5 m 149.977 187.5 x
+b 157.506 168.75 m 149.977 187.5 x
+b 178.341 168.75 m 170.081 187.5 x
+b 157.506 168.75 m 178.341 168.75 x
+b 149.977 187.5 m 170.081 187.5 x
+b 178.341 168.75 m 170.081 187.5 x
+b 195.006 168.75 m 187.477 187.5 x
+b 178.341 168.75 m 195.006 168.75 x
+b 170.081 187.5 m 187.477 187.5 x
+b 195.006 168.75 m 187.477 187.5 x
+b 206.227 168.75 m 203.249 187.5 x
+b 195.006 168.75 m 206.227 168.75 x
+b 187.477 187.5 m 203.249 187.5 x
+b 206.227 168.75 m 203.249 187.5 x
+b 220.155 168.75 m 218.47 187.5 x
+b 206.227 168.75 m 220.155 168.75 x
+b 203.249 187.5 m 218.47 187.5 x
+b 220.155 168.75 m 218.47 187.5 x
+b 235.188 168.75 m 234.182 187.5 x
+b 220.155 168.75 m 235.188 168.75 x
+b 218.47 187.5 m 234.182 187.5 x
+b 235.188 168.75 m 234.182 187.5 x
+b 250.919 168.75 m 250.297 187.5 x
+b 235.188 168.75 m 250.919 168.75 x
+b 234.182 187.5 m 250.297 187.5 x
+b 250.919 168.75 m 250.297 187.5 x
+b 267.074 168.75 m 266.709 187.5 x
+b 250.919 168.75 m 267.074 168.75 x
+b 250.297 187.5 m 266.709 187.5 x
+b 267.074 168.75 m 266.709 187.5 x
+b 283.479 168.75 m 283.309 187.5 x
+b 267.074 168.75 m 283.479 168.75 x
+b 266.709 187.5 m 283.309 187.5 x
+b 283.479 168.75 m 283.309 187.5 x
+b 300 168.75 m 300 187.5 x
+b 283.479 168.75 m 300 168.75 x
+b 283.309 187.5 m 300 187.5 x
+b 1.27365e-11 187.5 m 1.27098e-11 206.25 x
+b 20.8088 187.5 m 20.5495 206.25 x
+b 1.27365e-11 187.5 m 20.8088 187.5 x
+b 1.27098e-11 206.25 m 20.5495 206.25 x
+b 20.8088 187.5 m 20.5495 206.25 x
+b 41.7088 187.5 m 41.159 206.25 x
+b 20.8088 187.5 m 41.7088 187.5 x
+b 20.5495 206.25 m 41.159 206.25 x
+b 41.7088 187.5 m 41.159 206.25 x
+b 62.7971 187.5 m 61.884 206.25 x
+b 41.7088 187.5 m 62.7971 187.5 x
+b 41.159 206.25 m 61.884 206.25 x
+b 62.7971 187.5 m 61.884 206.25 x
+b 84.182 187.5 m 82.7625 206.25 x
+b 62.7971 187.5 m 84.182 187.5 x
+b 61.884 206.25 m 82.7625 206.25 x
+b 84.182 187.5 m 82.7625 206.25 x
+b 105.97 187.5 m 103.781 206.25 x
+b 84.182 187.5 m 105.97 187.5 x
+b 82.7625 206.25 m 103.781 206.25 x
+b 105.97 187.5 m 103.781 206.25 x
+b 128.249 187.5 m 124.72 206.25 x
+b 105.97 187.5 m 128.249 187.5 x
+b 103.781 206.25 m 124.72 206.25 x
+b 128.249 187.5 m 124.72 206.25 x
+b 149.977 187.5 m 145.155 206.25 x
+b 128.249 187.5 m 149.977 187.5 x
+b 124.72 206.25 m 145.155 206.25 x
+b 149.977 187.5 m 145.155 206.25 x
+b 170.081 187.5 m 164.534 206.25 x
+b 149.977 187.5 m 170.081 187.5 x
+b 145.155 206.25 m 164.534 206.25 x
+b 170.081 187.5 m 164.534 206.25 x
+b 187.477 187.5 m 182.655 206.25 x
+b 170.081 187.5 m 187.477 187.5 x
+b 164.534 206.25 m 182.655 206.25 x
+b 187.477 187.5 m 182.655 206.25 x
+b 203.249 187.5 m 199.72 206.25 x
+b 187.477 187.5 m 203.249 187.5 x
+b 182.655 206.25 m 199.72 206.25 x
+b 203.249 187.5 m 199.72 206.25 x
+b 218.47 187.5 m 216.281 206.25 x
+b 203.249 187.5 m 218.47 187.5 x
+b 199.72 206.25 m 216.281 206.25 x
+b 218.47 187.5 m 216.281 206.25 x
+b 234.182 187.5 m 232.762 206.25 x
+b 218.47 187.5 m 234.182 187.5 x
+b 216.281 206.25 m 232.762 206.25 x
+b 234.182 187.5 m 232.762 206.25 x
+b 250.297 187.5 m 249.384 206.25 x
+b 234.182 187.5 m 250.297 187.5 x
+b 232.762 206.25 m 249.384 206.25 x
+b 250.297 187.5 m 249.384 206.25 x
+b 266.709 187.5 m 266.159 206.25 x
+b 250.297 187.5 m 266.709 187.5 x
+b 249.384 206.25 m 266.159 206.25 x
+b 266.709 187.5 m 266.159 206.25 x
+b 283.309 187.5 m 283.049 206.25 x
+b 266.709 187.5 m 283.309 187.5 x
+b 266.159 206.25 m 283.049 206.25 x
+b 283.309 187.5 m 283.049 206.25 x
+b 300 187.5 m 300 206.25 x
+b 283.309 187.5 m 300 187.5 x
+b 283.049 206.25 m 300 206.25 x
+b 1.27098e-11 206.25 m 1.27365e-11 225 x
+b 20.5495 206.25 m 20.229 225 x
+b 1.27098e-11 206.25 m 20.5495 206.25 x
+b 1.27365e-11 225 m 20.229 225 x
+b 20.5495 206.25 m 20.229 225 x
+b 41.159 206.25 m 40.49 225 x
+b 20.5495 206.25 m 41.159 206.25 x
+b 20.229 225 m 40.49 225 x
+b 41.159 206.25 m 40.49 225 x
+b 61.884 206.25 m 60.8048 225 x
+b 41.159 206.25 m 61.884 206.25 x
+b 40.49 225 m 60.8048 225 x
+b 61.884 206.25 m 60.8048 225 x
+b 82.7625 206.25 m 81.168 225 x
+b 61.884 206.25 m 82.7625 206.25 x
+b 60.8048 225 m 81.168 225 x
+b 82.7625 206.25 m 81.168 225 x
+b 103.781 206.25 m 101.512 225 x
+b 82.7625 206.25 m 103.781 206.25 x
+b 81.168 225 m 101.512 225 x
+b 103.781 206.25 m 101.512 225 x
+b 124.72 206.25 m 121.682 225 x
+b 103.781 206.25 m 124.72 206.25 x
+b 101.512 225 m 121.682 225 x
+b 124.72 206.25 m 121.682 225 x
+b 145.155 206.25 m 141.438 225 x
+b 124.72 206.25 m 145.155 206.25 x
+b 121.682 225 m 141.438 225 x
+b 145.155 206.25 m 141.438 225 x
+b 164.534 206.25 m 160.556 225 x
+b 145.155 206.25 m 164.534 206.25 x
+b 141.438 225 m 160.556 225 x
+b 164.534 206.25 m 160.556 225 x
+b 182.655 206.25 m 178.938 225 x
+b 164.534 206.25 m 182.655 206.25 x
+b 160.556 225 m 178.938 225 x
+b 182.655 206.25 m 178.938 225 x
+b 199.72 206.25 m 196.682 225 x
+b 182.655 206.25 m 199.72 206.25 x
+b 178.938 225 m 196.682 225 x
+b 199.72 206.25 m 196.682 225 x
+b 216.281 206.25 m 214.012 225 x
+b 199.72 206.25 m 216.281 206.25 x
+b 196.682 225 m 214.012 225 x
+b 216.281 206.25 m 214.012 225 x
+b 232.762 206.25 m 231.168 225 x
+b 216.281 206.25 m 232.762 206.25 x
+b 214.012 225 m 231.168 225 x
+b 232.762 206.25 m 231.168 225 x
+b 249.384 206.25 m 248.305 225 x
+b 232.762 206.25 m 249.384 206.25 x
+b 231.168 225 m 248.305 225 x
+b 249.384 206.25 m 248.305 225 x
+b 266.159 206.25 m 265.49 225 x
+b 249.384 206.25 m 266.159 206.25 x
+b 248.305 225 m 265.49 225 x
+b 266.159 206.25 m 265.49 225 x
+b 283.049 206.25 m 282.729 225 x
+b 266.159 206.25 m 283.049 206.25 x
+b 265.49 225 m 282.729 225 x
+b 283.049 206.25 m 282.729 225 x
+b 300 206.25 m 300 225 x
+b 283.049 206.25 m 300 206.25 x
+b 282.729 225 m 300 225 x
+b 1.27365e-11 225 m 1.27098e-11 243.75 x
+b 20.229 225 m 19.8735 243.75 x
+b 1.27365e-11 225 m 20.229 225 x
+b 1.27098e-11 243.75 m 19.8735 243.75 x
+b 20.229 225 m 19.8735 243.75 x
+b 40.49 225 m 39.7596 243.75 x
+b 20.229 225 m 40.49 225 x
+b 19.8735 243.75 m 39.7596 243.75 x
+b 40.49 225 m 39.7596 243.75 x
+b 60.8048 225 m 59.6605 243.75 x
+b 40.49 225 m 60.8048 225 x
+b 39.7596 243.75 m 59.6605 243.75 x
+b 60.8048 225 m 59.6605 243.75 x
+b 81.168 225 m 79.5548 243.75 x
+b 60.8048 225 m 81.168 225 x
+b 59.6605 243.75 m 79.5548 243.75 x
+b 81.168 225 m 79.5548 243.75 x
+b 101.512 225 m 99.384 243.75 x
+b 81.168 225 m 101.512 225 x
+b 79.5548 243.75 m 99.384 243.75 x
+b 101.512 225 m 99.384 243.75 x
+b 121.682 225 m 119.047 243.75 x
+b 101.512 225 m 121.682 225 x
+b 99.384 243.75 m 119.047 243.75 x
+b 121.682 225 m 119.047 243.75 x
+b 141.438 225 m 138.419 243.75 x
+b 121.682 225 m 141.438 225 x
+b 119.047 243.75 m 138.419 243.75 x
+b 141.438 225 m 138.419 243.75 x
+b 160.556 225 m 157.39 243.75 x
+b 141.438 225 m 160.556 225 x
+b 138.419 243.75 m 157.39 243.75 x
+b 160.556 225 m 157.39 243.75 x
+b 178.938 225 m 175.919 243.75 x
+b 160.556 225 m 178.938 225 x
+b 157.39 243.75 m 175.919 243.75 x
+b 178.938 225 m 175.919 243.75 x
+b 196.682 225 m 194.047 243.75 x
+b 178.938 225 m 196.682 225 x
+b 175.919 243.75 m 194.047 243.75 x
+b 196.682 225 m 194.047 243.75 x
+b 214.012 225 m 211.884 243.75 x
+b 196.682 225 m 214.012 225 x
+b 194.047 243.75 m 211.884 243.75 x
+b 214.012 225 m 211.884 243.75 x
+b 231.168 225 m 229.555 243.75 x
+b 214.012 225 m 231.168 225 x
+b 211.884 243.75 m 229.555 243.75 x
+b 231.168 225 m 229.555 243.75 x
+b 248.305 225 m 247.161 243.75 x
+b 231.168 225 m 248.305 225 x
+b 229.555 243.75 m 247.161 243.75 x
+b 248.305 225 m 247.161 243.75 x
+b 265.49 225 m 264.76 243.75 x
+b 248.305 225 m 265.49 225 x
+b 247.161 243.75 m 264.76 243.75 x
+b 265.49 225 m 264.76 243.75 x
+b 282.729 225 m 282.374 243.75 x
+b 265.49 225 m 282.729 225 x
+b 264.76 243.75 m 282.374 243.75 x
+b 282.729 225 m 282.374 243.75 x
+b 300 225 m 300 243.75 x
+b 282.729 225 m 300 225 x
+b 282.374 243.75 m 300 243.75 x
+b 1.27098e-11 243.75 m 1.27098e-11 262.5 x
+b 19.8735 243.75 m 19.5024 262.5 x
+b 1.27098e-11 243.75 m 19.8735 243.75 x
+b 1.27098e-11 262.5 m 19.5024 262.5 x
+b 19.8735 243.75 m 19.5024 262.5 x
+b 39.7596 243.75 m 39.0073 262.5 x
+b 19.8735 243.75 m 39.7596 243.75 x
+b 19.5024 262.5 m 39.0073 262.5 x
+b 39.7596 243.75 m 39.0073 262.5 x
+b 59.6605 243.75 m 58.5096 262.5 x
+b 39.7596 243.75 m 59.6605 243.75 x
+b 39.0073 262.5 m 58.5096 262.5 x
+b 59.6605 243.75 m 58.5096 262.5 x
+b 79.5548 243.75 m 77.99 262.5 x
+b 59.6605 243.75 m 79.5548 243.75 x
+b 58.5096 262.5 m 77.99 262.5 x
+b 79.5548 243.75 m 77.99 262.5 x
+b 99.384 243.75 m 97.409 262.5 x
+b 79.5548 243.75 m 99.384 243.75 x
+b 77.99 262.5 m 97.409 262.5 x
+b 99.384 243.75 m 97.409 262.5 x
+b 119.047 243.75 m 116.709 262.5 x
+b 99.384 243.75 m 119.047 243.75 x
+b 97.409 262.5 m 116.709 262.5 x
+b 119.047 243.75 m 116.709 262.5 x
+b 138.419 243.75 m 135.824 262.5 x
+b 119.047 243.75 m 138.419 243.75 x
+b 116.709 262.5 m 135.824 262.5 x
+b 138.419 243.75 m 135.824 262.5 x
+b 157.39 243.75 m 154.703 262.5 x
+b 138.419 243.75 m 157.39 243.75 x
+b 135.824 262.5 m 154.703 262.5 x
+b 157.39 243.75 m 154.703 262.5 x
+b 175.919 243.75 m 173.324 262.5 x
+b 157.39 243.75 m 175.919 243.75 x
+b 154.703 262.5 m 173.324 262.5 x
+b 175.919 243.75 m 173.324 262.5 x
+b 194.047 243.75 m 191.709 262.5 x
+b 175.919 243.75 m 194.047 243.75 x
+b 173.324 262.5 m 191.709 262.5 x
+b 194.047 243.75 m 191.709 262.5 x
+b 211.884 243.75 m 209.909 262.5 x
+b 194.047 243.75 m 211.884 243.75 x
+b 191.709 262.5 m 209.909 262.5 x
+b 211.884 243.75 m 209.909 262.5 x
+b 229.555 243.75 m 227.99 262.5 x
+b 211.884 243.75 m 229.555 243.75 x
+b 209.909 262.5 m 227.99 262.5 x
+b 229.555 243.75 m 227.99 262.5 x
+b 247.161 243.75 m 246.01 262.5 x
+b 229.555 243.75 m 247.161 243.75 x
+b 227.99 262.5 m 246.01 262.5 x
+b 247.161 243.75 m 246.01 262.5 x
+b 264.76 243.75 m 264.007 262.5 x
+b 247.161 243.75 m 264.76 243.75 x
+b 246.01 262.5 m 264.007 262.5 x
+b 264.76 243.75 m 264.007 262.5 x
+b 282.374 243.75 m 282.002 262.5 x
+b 264.76 243.75 m 282.374 243.75 x
+b 264.007 262.5 m 282.002 262.5 x
+b 282.374 243.75 m 282.002 262.5 x
+b 300 243.75 m 300 262.5 x
+b 282.374 243.75 m 300 243.75 x
+b 282.002 262.5 m 300 262.5 x
+b 1.27098e-11 262.5 m 1.27631e-11 281.25 x
+b 19.5024 262.5 m 19.1265 281.25 x
+b 1.27098e-11 262.5 m 19.5024 262.5 x
+b 1.27631e-11 281.25 m 19.1265 281.25 x
+b 19.5024 262.5 m 19.1265 281.25 x
+b 39.0073 262.5 m 38.2524 281.25 x
+b 19.5024 262.5 m 39.0073 262.5 x
+b 19.1265 281.25 m 38.2524 281.25 x
+b 39.0073 262.5 m 38.2524 281.25 x
+b 58.5096 262.5 m 57.3735 281.25 x
+b 39.0073 262.5 m 58.5096 262.5 x
+b 38.2524 281.25 m 57.3735 281.25 x
+b 58.5096 262.5 m 57.3735 281.25 x
+b 77.99 262.5 m 76.479 281.25 x
+b 58.5096 262.5 m 77.99 262.5 x
+b 57.3735 281.25 m 76.479 281.25 x
+b 77.99 262.5 m 76.479 281.25 x
+b 97.409 262.5 m 95.5495 281.25 x
+b 77.99 262.5 m 97.409 262.5 x
+b 76.479 281.25 m 95.5495 281.25 x
+b 97.409 262.5 m 95.5495 281.25 x
+b 116.709 262.5 m 114.559 281.25 x
+b 97.409 262.5 m 116.709 262.5 x
+b 95.5495 281.25 m 114.559 281.25 x
+b 116.709 262.5 m 114.559 281.25 x
+b 135.824 262.5 m 133.479 281.25 x
+b 116.709 262.5 m 135.824 262.5 x
+b 114.559 281.25 m 133.479 281.25 x
+b 135.824 262.5 m 133.479 281.25 x
+b 154.703 262.5 m 152.289 281.25 x
+b 135.824 262.5 m 154.703 262.5 x
+b 133.479 281.25 m 152.289 281.25 x
+b 154.703 262.5 m 152.289 281.25 x
+b 173.324 262.5 m 170.979 281.25 x
+b 154.703 262.5 m 173.324 262.5 x
+b 152.289 281.25 m 170.979 281.25 x
+b 173.324 262.5 m 170.979 281.25 x
+b 191.709 262.5 m 189.559 281.25 x
+b 173.324 262.5 m 191.709 262.5 x
+b 170.979 281.25 m 189.559 281.25 x
+b 191.709 262.5 m 189.559 281.25 x
+b 209.909 262.5 m 208.049 281.25 x
+b 191.709 262.5 m 209.909 262.5 x
+b 189.559 281.25 m 208.049 281.25 x
+b 209.909 262.5 m 208.049 281.25 x
+b 227.99 262.5 m 226.479 281.25 x
+b 209.909 262.5 m 227.99 262.5 x
+b 208.049 281.25 m 226.479 281.25 x
+b 227.99 262.5 m 226.479 281.25 x
+b 246.01 262.5 m 244.874 281.25 x
+b 227.99 262.5 m 246.01 262.5 x
+b 226.479 281.25 m 244.874 281.25 x
+b 246.01 262.5 m 244.874 281.25 x
+b 264.007 262.5 m 263.252 281.25 x
+b 246.01 262.5 m 264.007 262.5 x
+b 244.874 281.25 m 263.252 281.25 x
+b 264.007 262.5 m 263.252 281.25 x
+b 282.002 262.5 m 281.627 281.25 x
+b 264.007 262.5 m 282.002 262.5 x
+b 263.252 281.25 m 281.627 281.25 x
+b 282.002 262.5 m 281.627 281.25 x
+b 300 262.5 m 300 281.25 x
+b 282.002 262.5 m 300 262.5 x
+b 281.627 281.25 m 300 281.25 x
+b 1.27631e-11 281.25 m 2.66454e-14 300 x
+b 19.1265 281.25 m 18.75 300 x
+b 1.27631e-11 281.25 m 19.1265 281.25 x
+b 2.66454e-14 300 m 18.75 300 x
+b 19.1265 281.25 m 18.75 300 x
+b 38.2524 281.25 m 37.5 300 x
+b 19.1265 281.25 m 38.2524 281.25 x
+b 18.75 300 m 37.5 300 x
+b 38.2524 281.25 m 37.5 300 x
+b 57.3735 281.25 m 56.25 300 x
+b 38.2524 281.25 m 57.3735 281.25 x
+b 37.5 300 m 56.25 300 x
+b 57.3735 281.25 m 56.25 300 x
+b 76.479 281.25 m 75 300 x
+b 57.3735 281.25 m 76.479 281.25 x
+b 56.25 300 m 75 300 x
+b 76.479 281.25 m 75 300 x
+b 95.5495 281.25 m 93.75 300 x
+b 76.479 281.25 m 95.5495 281.25 x
+b 75 300 m 93.75 300 x
+b 95.5495 281.25 m 93.75 300 x
+b 114.559 281.25 m 112.5 300 x
+b 95.5495 281.25 m 114.559 281.25 x
+b 93.75 300 m 112.5 300 x
+b 114.559 281.25 m 112.5 300 x
+b 133.479 281.25 m 131.25 300 x
+b 114.559 281.25 m 133.479 281.25 x
+b 112.5 300 m 131.25 300 x
+b 133.479 281.25 m 131.25 300 x
+b 152.289 281.25 m 150 300 x
+b 133.479 281.25 m 152.289 281.25 x
+b 131.25 300 m 150 300 x
+b 152.289 281.25 m 150 300 x
+b 170.979 281.25 m 168.75 300 x
+b 152.289 281.25 m 170.979 281.25 x
+b 150 300 m 168.75 300 x
+b 170.979 281.25 m 168.75 300 x
+b 189.559 281.25 m 187.5 300 x
+b 170.979 281.25 m 189.559 281.25 x
+b 168.75 300 m 187.5 300 x
+b 189.559 281.25 m 187.5 300 x
+b 208.049 281.25 m 206.25 300 x
+b 189.559 281.25 m 208.049 281.25 x
+b 187.5 300 m 206.25 300 x
+b 208.049 281.25 m 206.25 300 x
+b 226.479 281.25 m 225 300 x
+b 208.049 281.25 m 226.479 281.25 x
+b 206.25 300 m 225 300 x
+b 226.479 281.25 m 225 300 x
+b 244.874 281.25 m 243.75 300 x
+b 226.479 281.25 m 244.874 281.25 x
+b 225 300 m 243.75 300 x
+b 244.874 281.25 m 243.75 300 x
+b 263.252 281.25 m 262.5 300 x
+b 244.874 281.25 m 263.252 281.25 x
+b 243.75 300 m 262.5 300 x
+b 263.252 281.25 m 262.5 300 x
+b 281.627 281.25 m 281.25 300 x
+b 263.252 281.25 m 281.627 281.25 x
+b 262.5 300 m 281.25 300 x
+b 281.627 281.25 m 281.25 300 x
+b 300 281.25 m 300 300 x
+b 281.627 281.25 m 300 281.25 x
+b 281.25 300 m 300 300 x
+showpage
diff --git a/tests/deal.II/grid_transform_coefficient.cc b/tests/deal.II/grid_transform_coefficient.cc
new file mode 100644 (file)
index 0000000..beee2dd
--- /dev/null
@@ -0,0 +1,123 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 1998 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// like grid_transform, but use a spatially variable coefficient
+
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/fe/mapping_q.h>
+
+#include <fstream>
+#include <iomanip>
+
+
+template <int dim>
+class Coefficient : public Function<dim>
+{
+public:
+  virtual double value (const Point<dim> &p,
+                       const unsigned int) const
+    {
+      return (p[0]>0 ? 10 : 1);
+    }
+};
+
+
+int main ()
+{
+  const unsigned int dim=2;
+  Point<dim> origin;
+  HyperShellBoundary<dim> boundary(origin);
+  MappingQ<dim> mapping(2);
+  Triangulation<dim> tria;
+  tria.set_boundary(0, boundary);
+  const double inner_radius=1.;
+  const double outer_radius=5.;
+  GridGenerator::hyper_shell(tria, origin, inner_radius, outer_radius, 8);
+  tria.refine_global(2);
+
+  // build up a map of vertex indices
+  // of boundary vertices to the new
+  // boundary points
+  std::map<unsigned int,Point<dim> > new_points;
+
+  // new center and new radius
+  // of the inner circle.
+  const Point<dim> n_center(0,-1);
+  const double n_radius=0.5;
+
+  Triangulation<dim>::cell_iterator cell=tria.begin_active(),
+                                    endc=tria.end();
+  Triangulation<dim>::face_iterator face;
+  for (; cell!=endc; ++cell)
+    {
+      if (cell->at_boundary())
+        for (unsigned int face_no=0; face_no<GeometryInfo<dim>::faces_per_cell; ++face_no)
+          {
+            face=cell->face(face_no);
+            if (face->at_boundary())
+              for (unsigned int vertex_no=0;
+                   vertex_no<GeometryInfo<dim>::vertices_per_face; ++vertex_no)
+                {
+                  const Point<dim> &v=face->vertex(vertex_no);
+                  if (std::fabs(std::sqrt(v.square())-outer_radius)<1e-12)
+                    {
+                      // leave the
+                      // point, where
+                      // they are.
+                      new_points.insert(std::pair<types::global_dof_index, Point<dim> > (
+                                          face->vertex_index(vertex_no), v));
+                    }
+                  else if (std::fabs(std::sqrt(v.square())-inner_radius)<1e-12)
+                    {
+                      // move the
+                      // center of
+                      // the inner
+                      // circle to
+                      // (-1,0) and
+                      // take half
+                      // the radius
+                      // of the
+                      // circle.
+                      new_points.insert(std::pair<types::global_dof_index, Point<dim> > (
+                                          face->vertex_index(vertex_no), n_radius/inner_radius*v+n_center));
+                      face->set_boundary_indicator(1);
+                    }
+                  else
+                    Assert(false, ExcInternalError());
+                }
+          }
+    }
+
+  const Coefficient<dim> c;
+  GridGenerator::laplace_transformation (tria, new_points, &c);
+  HyperBallBoundary<dim> inner_ball(n_center, n_radius);
+  tria.set_boundary(1, inner_ball);
+
+  GridOut grid_out;
+  std::ofstream eps_stream2("output");
+  grid_out.write_eps(tria, eps_stream2, &mapping);
+
+  tria.clear();
+
+  return 0;
+}
diff --git a/tests/deal.II/grid_transform_coefficient.output b/tests/deal.II/grid_transform_coefficient.output
new file mode 100644 (file)
index 0000000..74f8f2d
--- /dev/null
@@ -0,0 +1,653 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Title: deal.II Output
+%%Creator: the deal.II library
+
+%%BoundingBox: 0 0 301 300
+/m {moveto} bind def
+/x {lineto stroke} bind def
+/b {0 0 0 setrgbcolor} def
+/r {1 0 0 setrgbcolor} def
+%%EndProlog
+
+0.5 setlinewidth
+b 300 150 m 269.727 145.754 x
+b 297.118 179.264 m 265.518 167.89 x
+b 269.727 145.754 m 265.518 167.89 x
+b 297.118 179.264 m 265.518 167.89 x
+b 288.582 207.403 m 258.81 189.709 x
+b 265.518 167.89 m 258.81 189.709 x
+b 269.727 145.754 m 238.9 140.339 x
+b 265.518 167.89 m 233.152 154.954 x
+b 269.727 145.754 m 265.518 167.89 x
+b 238.9 140.339 m 233.152 154.954 x
+b 265.518 167.89 m 233.152 154.954 x
+b 258.81 189.709 m 228.21 170.233 x
+b 265.518 167.89 m 258.81 189.709 x
+b 233.152 154.954 m 228.21 170.233 x
+b 288.582 207.403 m 258.81 189.709 x
+b 274.72 233.336 m 249.015 210.274 x
+b 258.81 189.709 m 249.015 210.274 x
+b 274.72 233.336 m 249.015 210.274 x
+b 256.066 256.066 m 237.148 229.58 x
+b 249.015 210.274 m 237.148 229.58 x
+b 258.81 189.709 m 228.21 170.233 x
+b 249.015 210.274 m 222.557 185.384 x
+b 258.81 189.709 m 249.015 210.274 x
+b 228.21 170.233 m 222.557 185.384 x
+b 249.015 210.274 m 222.557 185.384 x
+b 237.148 229.58 m 217.611 201.559 x
+b 249.015 210.274 m 237.148 229.58 x
+b 222.557 185.384 m 217.611 201.559 x
+b 238.9 140.339 m 206.034 132.808 x
+b 233.152 154.954 m 202.601 141.732 x
+b 238.9 140.339 m 233.152 154.954 x
+b 206.034 132.808 m 202.601 141.732 x
+b 233.152 154.954 m 202.601 141.732 x
+b 228.21 170.233 m 199.827 151.101 x
+b 233.152 154.954 m 228.21 170.233 x
+b 202.601 141.732 m 199.827 151.101 x
+b 206.034 132.808 m 165 120 x
+b 202.601 141.732 m 164.712 122.926 x
+b 206.034 132.808 m 202.601 141.732 x
+b 202.601 141.732 m 164.712 122.926 x
+b 199.827 151.101 m 163.858 125.74 x
+b 202.601 141.732 m 199.827 151.101 x
+b 228.21 170.233 m 199.827 151.101 x
+b 222.557 185.384 m 196.809 160.42 x
+b 228.21 170.233 m 222.557 185.384 x
+b 199.827 151.101 m 196.809 160.42 x
+b 222.557 185.384 m 196.809 160.42 x
+b 217.611 201.559 m 194.714 170.564 x
+b 222.557 185.384 m 217.611 201.559 x
+b 196.809 160.42 m 194.714 170.564 x
+b 199.827 151.101 m 163.858 125.74 x
+b 196.809 160.42 m 162.472 128.334 x
+b 199.827 151.101 m 196.809 160.42 x
+b 196.809 160.42 m 162.472 128.334 x
+b 194.714 170.564 m 160.607 130.607 x
+b 196.809 160.42 m 194.714 170.564 x
+b 256.066 256.066 m 237.148 229.58 x
+b 233.336 274.72 m 220.334 242.018 x
+b 237.148 229.58 m 220.334 242.018 x
+b 233.336 274.72 m 220.334 242.018 x
+b 207.403 288.582 m 203.351 252.407 x
+b 220.334 242.018 m 203.351 252.407 x
+b 237.148 229.58 m 217.611 201.559 x
+b 220.334 242.018 m 205.861 207.335 x
+b 237.148 229.58 m 220.334 242.018 x
+b 217.611 201.559 m 205.861 207.335 x
+b 220.334 242.018 m 205.861 207.335 x
+b 203.351 252.407 m 196.412 214.078 x
+b 220.334 242.018 m 203.351 252.407 x
+b 205.861 207.335 m 196.412 214.078 x
+b 207.403 288.582 m 203.351 252.407 x
+b 179.264 297.118 m 187.875 259.574 x
+b 203.351 252.407 m 187.875 259.574 x
+b 179.264 297.118 m 187.875 259.574 x
+b 150 300 m 179.383 264.302 x
+b 187.875 259.574 m 179.383 264.302 x
+b 203.351 252.407 m 196.412 214.078 x
+b 187.875 259.574 m 189.406 219.94 x
+b 203.351 252.407 m 187.875 259.574 x
+b 196.412 214.078 m 189.406 219.94 x
+b 187.875 259.574 m 189.406 219.94 x
+b 179.383 264.302 m 184.976 226.918 x
+b 187.875 259.574 m 179.383 264.302 x
+b 189.406 219.94 m 184.976 226.918 x
+b 217.611 201.559 m 194.714 170.564 x
+b 205.861 207.335 m 187.95 174.155 x
+b 217.611 201.559 m 205.861 207.335 x
+b 194.714 170.564 m 187.95 174.155 x
+b 205.861 207.335 m 187.95 174.155 x
+b 196.412 214.078 m 182.997 178.312 x
+b 205.861 207.335 m 196.412 214.078 x
+b 187.95 174.155 m 182.997 178.312 x
+b 194.714 170.564 m 160.607 130.607 x
+b 187.95 174.155 m 158.334 132.472 x
+b 194.714 170.564 m 187.95 174.155 x
+b 187.95 174.155 m 158.334 132.472 x
+b 182.997 178.312 m 155.74 133.858 x
+b 187.95 174.155 m 182.997 178.312 x
+b 196.412 214.078 m 182.997 178.312 x
+b 189.406 219.94 m 179.604 181.896 x
+b 196.412 214.078 m 189.406 219.94 x
+b 182.997 178.312 m 179.604 181.896 x
+b 189.406 219.94 m 179.604 181.896 x
+b 184.976 226.918 m 179.159 186.203 x
+b 189.406 219.94 m 184.976 226.918 x
+b 179.604 181.896 m 179.159 186.203 x
+b 182.997 178.312 m 155.74 133.858 x
+b 179.604 181.896 m 152.926 134.712 x
+b 182.997 178.312 m 179.604 181.896 x
+b 179.604 181.896 m 152.926 134.712 x
+b 179.159 186.203 m 150 135 x
+b 179.604 181.896 m 179.159 186.203 x
+b 150 300 m 179.383 264.302 x
+b 120.736 297.118 m 142.981 259.574 x
+b 179.383 264.302 m 142.981 259.574 x
+b 120.736 297.118 m 142.981 259.574 x
+b 92.5975 288.582 m 114.682 252.407 x
+b 142.981 259.574 m 114.682 252.407 x
+b 179.383 264.302 m 184.976 226.918 x
+b 142.981 259.574 m 158.361 219.94 x
+b 179.383 264.302 m 142.981 259.574 x
+b 184.976 226.918 m 158.361 219.94 x
+b 142.981 259.574 m 158.361 219.94 x
+b 114.682 252.407 m 134.405 214.078 x
+b 142.981 259.574 m 114.682 252.407 x
+b 158.361 219.94 m 134.405 214.078 x
+b 92.5975 288.582 m 114.682 252.407 x
+b 66.6645 274.72 m 90.6726 242.018 x
+b 114.682 252.407 m 90.6726 242.018 x
+b 66.6645 274.72 m 90.6726 242.018 x
+b 43.934 256.066 m 69.4963 229.58 x
+b 90.6726 242.018 m 69.4963 229.58 x
+b 114.682 252.407 m 134.405 214.078 x
+b 90.6726 242.018 m 113.957 207.335 x
+b 114.682 252.407 m 90.6726 242.018 x
+b 134.405 214.078 m 113.957 207.335 x
+b 90.6726 242.018 m 113.957 207.335 x
+b 69.4963 229.58 m 95.1697 201.559 x
+b 90.6726 242.018 m 69.4963 229.58 x
+b 113.957 207.335 m 95.1697 201.559 x
+b 184.976 226.918 m 179.159 186.203 x
+b 158.361 219.94 m 160.18 181.896 x
+b 184.976 226.918 m 158.361 219.94 x
+b 179.159 186.203 m 160.18 181.896 x
+b 158.361 219.94 m 160.18 181.896 x
+b 134.405 214.078 m 144.515 178.312 x
+b 158.361 219.94 m 134.405 214.078 x
+b 160.18 181.896 m 144.515 178.312 x
+b 179.159 186.203 m 150 135 x
+b 160.18 181.896 m 147.074 134.712 x
+b 179.159 186.203 m 160.18 181.896 x
+b 160.18 181.896 m 147.074 134.712 x
+b 144.515 178.312 m 144.26 133.858 x
+b 160.18 181.896 m 144.515 178.312 x
+b 134.405 214.078 m 144.515 178.312 x
+b 113.957 207.335 m 131.15 174.155 x
+b 134.405 214.078 m 113.957 207.335 x
+b 144.515 178.312 m 131.15 174.155 x
+b 113.957 207.335 m 131.15 174.155 x
+b 95.1697 201.559 m 119.202 170.564 x
+b 113.957 207.335 m 95.1697 201.559 x
+b 131.15 174.155 m 119.202 170.564 x
+b 144.515 178.312 m 144.26 133.858 x
+b 131.15 174.155 m 141.666 132.472 x
+b 144.515 178.312 m 131.15 174.155 x
+b 131.15 174.155 m 141.666 132.472 x
+b 119.202 170.564 m 139.393 130.607 x
+b 131.15 174.155 m 119.202 170.564 x
+b 43.934 256.066 m 69.4963 229.58 x
+b 25.2796 233.336 m 55.8639 210.274 x
+b 69.4963 229.58 m 55.8639 210.274 x
+b 25.2796 233.336 m 55.8639 210.274 x
+b 11.4181 207.403 m 44.7446 189.709 x
+b 55.8639 210.274 m 44.7446 189.709 x
+b 69.4963 229.58 m 95.1697 201.559 x
+b 55.8639 210.274 m 86.7509 185.384 x
+b 69.4963 229.58 m 55.8639 210.274 x
+b 95.1697 201.559 m 86.7509 185.384 x
+b 55.8639 210.274 m 86.7509 185.384 x
+b 44.7446 189.709 m 78.5133 170.233 x
+b 55.8639 210.274 m 44.7446 189.709 x
+b 86.7509 185.384 m 78.5133 170.233 x
+b 11.4181 207.403 m 44.7446 189.709 x
+b 2.88221 179.264 m 37.2546 167.89 x
+b 44.7446 189.709 m 37.2546 167.89 x
+b 2.88221 179.264 m 37.2546 167.89 x
+b 0 150 m 32.6325 145.754 x
+b 37.2546 167.89 m 32.6325 145.754 x
+b 44.7446 189.709 m 78.5133 170.233 x
+b 37.2546 167.89 m 72.1371 154.954 x
+b 44.7446 189.709 m 37.2546 167.89 x
+b 78.5133 170.233 m 72.1371 154.954 x
+b 37.2546 167.89 m 72.1371 154.954 x
+b 32.6325 145.754 m 65.7419 140.339 x
+b 37.2546 167.89 m 32.6325 145.754 x
+b 72.1371 154.954 m 65.7419 140.339 x
+b 95.1697 201.559 m 119.202 170.564 x
+b 86.7509 185.384 m 112.538 160.42 x
+b 95.1697 201.559 m 86.7509 185.384 x
+b 119.202 170.564 m 112.538 160.42 x
+b 86.7509 185.384 m 112.538 160.42 x
+b 78.5133 170.233 m 106.923 151.101 x
+b 86.7509 185.384 m 78.5133 170.233 x
+b 112.538 160.42 m 106.923 151.101 x
+b 119.202 170.564 m 139.393 130.607 x
+b 112.538 160.42 m 137.528 128.334 x
+b 119.202 170.564 m 112.538 160.42 x
+b 112.538 160.42 m 137.528 128.334 x
+b 106.923 151.101 m 136.142 125.74 x
+b 112.538 160.42 m 106.923 151.101 x
+b 78.5133 170.233 m 106.923 151.101 x
+b 72.1371 154.954 m 102.848 141.732 x
+b 78.5133 170.233 m 72.1371 154.954 x
+b 106.923 151.101 m 102.848 141.732 x
+b 72.1371 154.954 m 102.848 141.732 x
+b 65.7419 140.339 m 99.2433 132.808 x
+b 72.1371 154.954 m 65.7419 140.339 x
+b 102.848 141.732 m 99.2433 132.808 x
+b 106.923 151.101 m 136.142 125.74 x
+b 102.848 141.732 m 135.288 122.926 x
+b 106.923 151.101 m 102.848 141.732 x
+b 102.848 141.732 m 135.288 122.926 x
+b 99.2433 132.808 m 135 120 x
+b 102.848 141.732 m 99.2433 132.808 x
+b 0 150 m 32.6325 145.754 x
+b 2.88221 120.736 m 37.2546 122.996 x
+b 32.6325 145.754 m 37.2546 122.996 x
+b 2.88221 120.736 m 37.2546 122.996 x
+b 11.4181 92.5975 m 44.7446 101.04 x
+b 37.2546 122.996 m 44.7446 101.04 x
+b 32.6325 145.754 m 65.7419 140.339 x
+b 37.2546 122.996 m 72.1371 123.91 x
+b 32.6325 145.754 m 37.2546 122.996 x
+b 65.7419 140.339 m 72.1371 123.91 x
+b 37.2546 122.996 m 72.1371 123.91 x
+b 44.7446 101.04 m 78.5133 108.227 x
+b 37.2546 122.996 m 44.7446 101.04 x
+b 72.1371 123.91 m 78.5133 108.227 x
+b 11.4181 92.5975 m 44.7446 101.04 x
+b 25.2796 66.6645 m 55.8639 80.6122 x
+b 44.7446 101.04 m 55.8639 80.6122 x
+b 25.2796 66.6645 m 55.8639 80.6122 x
+b 43.934 43.934 m 69.4963 61.9287 x
+b 55.8639 80.6122 m 69.4963 61.9287 x
+b 44.7446 101.04 m 78.5133 108.227 x
+b 55.8639 80.6122 m 86.7509 93.4804 x
+b 44.7446 101.04 m 55.8639 80.6122 x
+b 78.5133 108.227 m 86.7509 93.4804 x
+b 55.8639 80.6122 m 86.7509 93.4804 x
+b 69.4963 61.9287 m 95.1697 79.1183 x
+b 55.8639 80.6122 m 69.4963 61.9287 x
+b 86.7509 93.4804 m 95.1697 79.1183 x
+b 65.7419 140.339 m 99.2433 132.808 x
+b 72.1371 123.91 m 102.848 122.308 x
+b 65.7419 140.339 m 72.1371 123.91 x
+b 99.2433 132.808 m 102.848 122.308 x
+b 72.1371 123.91 m 102.848 122.308 x
+b 78.5133 108.227 m 106.923 112.619 x
+b 72.1371 123.91 m 78.5133 108.227 x
+b 102.848 122.308 m 106.923 112.619 x
+b 99.2433 132.808 m 135 120 x
+b 102.848 122.308 m 135.288 117.074 x
+b 99.2433 132.808 m 102.848 122.308 x
+b 102.848 122.308 m 135.288 117.074 x
+b 106.923 112.619 m 136.142 114.26 x
+b 102.848 122.308 m 106.923 112.619 x
+b 78.5133 108.227 m 106.923 112.619 x
+b 86.7509 93.4804 m 112.538 103.619 x
+b 78.5133 108.227 m 86.7509 93.4804 x
+b 106.923 112.619 m 112.538 103.619 x
+b 86.7509 93.4804 m 112.538 103.619 x
+b 95.1697 79.1183 m 119.202 95.052 x
+b 86.7509 93.4804 m 95.1697 79.1183 x
+b 112.538 103.619 m 119.202 95.052 x
+b 106.923 112.619 m 136.142 114.26 x
+b 112.538 103.619 m 137.528 111.666 x
+b 106.923 112.619 m 112.538 103.619 x
+b 112.538 103.619 m 137.528 111.666 x
+b 119.202 95.052 m 139.393 109.393 x
+b 112.538 103.619 m 119.202 95.052 x
+b 43.934 43.934 m 69.4963 61.9287 x
+b 66.6645 25.2796 m 90.6726 48.8674 x
+b 69.4963 61.9287 m 90.6726 48.8674 x
+b 66.6645 25.2796 m 90.6726 48.8674 x
+b 92.5975 11.4181 m 114.682 38.3417 x
+b 90.6726 48.8674 m 114.682 38.3417 x
+b 69.4963 61.9287 m 95.1697 79.1183 x
+b 90.6726 48.8674 m 113.957 71.5288 x
+b 69.4963 61.9287 m 90.6726 48.8674 x
+b 95.1697 79.1183 m 113.957 71.5288 x
+b 90.6726 48.8674 m 113.957 71.5288 x
+b 114.682 38.3417 m 134.405 64.3816 x
+b 90.6726 48.8674 m 114.682 38.3417 x
+b 113.957 71.5288 m 134.405 64.3816 x
+b 92.5975 11.4181 m 114.682 38.3417 x
+b 120.736 2.88221 m 142.981 31.3115 x
+b 114.682 38.3417 m 142.981 31.3115 x
+b 120.736 2.88221 m 142.981 31.3115 x
+b 150 0 m 179.383 27.207 x
+b 142.981 31.3115 m 179.383 27.207 x
+b 114.682 38.3417 m 134.405 64.3816 x
+b 142.981 31.3115 m 158.361 58.9245 x
+b 114.682 38.3417 m 142.981 31.3115 x
+b 134.405 64.3816 m 158.361 58.9245 x
+b 142.981 31.3115 m 158.361 58.9245 x
+b 179.383 27.207 m 184.976 53.7599 x
+b 142.981 31.3115 m 179.383 27.207 x
+b 158.361 58.9245 m 184.976 53.7599 x
+b 95.1697 79.1183 m 119.202 95.052 x
+b 113.957 71.5288 m 131.15 89.8844 x
+b 95.1697 79.1183 m 113.957 71.5288 x
+b 119.202 95.052 m 131.15 89.8844 x
+b 113.957 71.5288 m 131.15 89.8844 x
+b 134.405 64.3816 m 144.515 85.4079 x
+b 113.957 71.5288 m 134.405 64.3816 x
+b 131.15 89.8844 m 144.515 85.4079 x
+b 119.202 95.052 m 139.393 109.393 x
+b 131.15 89.8844 m 141.666 107.528 x
+b 119.202 95.052 m 131.15 89.8844 x
+b 131.15 89.8844 m 141.666 107.528 x
+b 144.515 85.4079 m 144.26 106.142 x
+b 131.15 89.8844 m 144.515 85.4079 x
+b 134.405 64.3816 m 144.515 85.4079 x
+b 158.361 58.9245 m 160.18 82.1435 x
+b 134.405 64.3816 m 158.361 58.9245 x
+b 144.515 85.4079 m 160.18 82.1435 x
+b 158.361 58.9245 m 160.18 82.1435 x
+b 184.976 53.7599 m 179.159 79.4129 x
+b 158.361 58.9245 m 184.976 53.7599 x
+b 160.18 82.1435 m 179.159 79.4129 x
+b 144.515 85.4079 m 144.26 106.142 x
+b 160.18 82.1435 m 147.074 105.288 x
+b 144.515 85.4079 m 160.18 82.1435 x
+b 160.18 82.1435 m 147.074 105.288 x
+b 179.159 79.4129 m 150 105 x
+b 160.18 82.1435 m 179.159 79.4129 x
+b 150 0 m 179.383 27.207 x
+b 179.264 2.88221 m 187.875 31.3115 x
+b 179.383 27.207 m 187.875 31.3115 x
+b 179.264 2.88221 m 187.875 31.3115 x
+b 207.403 11.4181 m 203.351 38.3417 x
+b 187.875 31.3115 m 203.351 38.3417 x
+b 179.383 27.207 m 184.976 53.7599 x
+b 187.875 31.3115 m 189.406 58.9245 x
+b 179.383 27.207 m 187.875 31.3115 x
+b 184.976 53.7599 m 189.406 58.9245 x
+b 187.875 31.3115 m 189.406 58.9245 x
+b 203.351 38.3417 m 196.412 64.3816 x
+b 187.875 31.3115 m 203.351 38.3417 x
+b 189.406 58.9245 m 196.412 64.3816 x
+b 207.403 11.4181 m 203.351 38.3417 x
+b 233.336 25.2796 m 220.334 48.8674 x
+b 203.351 38.3417 m 220.334 48.8674 x
+b 233.336 25.2796 m 220.334 48.8674 x
+b 256.066 43.934 m 237.148 61.9287 x
+b 220.334 48.8674 m 237.148 61.9287 x
+b 203.351 38.3417 m 196.412 64.3816 x
+b 220.334 48.8674 m 205.861 71.5288 x
+b 203.351 38.3417 m 220.334 48.8674 x
+b 196.412 64.3816 m 205.861 71.5288 x
+b 220.334 48.8674 m 205.861 71.5288 x
+b 237.148 61.9287 m 217.611 79.1183 x
+b 220.334 48.8674 m 237.148 61.9287 x
+b 205.861 71.5288 m 217.611 79.1183 x
+b 184.976 53.7599 m 179.159 79.4129 x
+b 189.406 58.9245 m 179.604 82.1435 x
+b 184.976 53.7599 m 189.406 58.9245 x
+b 179.159 79.4129 m 179.604 82.1435 x
+b 189.406 58.9245 m 179.604 82.1435 x
+b 196.412 64.3816 m 182.997 85.4079 x
+b 189.406 58.9245 m 196.412 64.3816 x
+b 179.604 82.1435 m 182.997 85.4079 x
+b 179.159 79.4129 m 150 105 x
+b 179.604 82.1435 m 152.926 105.288 x
+b 179.159 79.4129 m 179.604 82.1435 x
+b 179.604 82.1435 m 152.926 105.288 x
+b 182.997 85.4079 m 155.74 106.142 x
+b 179.604 82.1435 m 182.997 85.4079 x
+b 196.412 64.3816 m 182.997 85.4079 x
+b 205.861 71.5288 m 187.95 89.8844 x
+b 196.412 64.3816 m 205.861 71.5288 x
+b 182.997 85.4079 m 187.95 89.8844 x
+b 205.861 71.5288 m 187.95 89.8844 x
+b 217.611 79.1183 m 194.714 95.052 x
+b 205.861 71.5288 m 217.611 79.1183 x
+b 187.95 89.8844 m 194.714 95.052 x
+b 182.997 85.4079 m 155.74 106.142 x
+b 187.95 89.8844 m 158.334 107.528 x
+b 182.997 85.4079 m 187.95 89.8844 x
+b 187.95 89.8844 m 158.334 107.528 x
+b 194.714 95.052 m 160.607 109.393 x
+b 187.95 89.8844 m 194.714 95.052 x
+b 256.066 43.934 m 237.148 61.9287 x
+b 274.72 66.6645 m 249.015 80.6122 x
+b 237.148 61.9287 m 249.015 80.6122 x
+b 274.72 66.6645 m 249.015 80.6122 x
+b 288.582 92.5975 m 258.81 101.04 x
+b 249.015 80.6122 m 258.81 101.04 x
+b 237.148 61.9287 m 217.611 79.1183 x
+b 249.015 80.6122 m 222.557 93.4804 x
+b 237.148 61.9287 m 249.015 80.6122 x
+b 217.611 79.1183 m 222.557 93.4804 x
+b 249.015 80.6122 m 222.557 93.4804 x
+b 258.81 101.04 m 228.21 108.227 x
+b 249.015 80.6122 m 258.81 101.04 x
+b 222.557 93.4804 m 228.21 108.227 x
+b 288.582 92.5975 m 258.81 101.04 x
+b 297.118 120.736 m 265.518 122.996 x
+b 258.81 101.04 m 265.518 122.996 x
+b 297.118 120.736 m 265.518 122.996 x
+b 300 150 m 269.727 145.754 x
+b 265.518 122.996 m 269.727 145.754 x
+b 258.81 101.04 m 228.21 108.227 x
+b 265.518 122.996 m 233.152 123.91 x
+b 258.81 101.04 m 265.518 122.996 x
+b 228.21 108.227 m 233.152 123.91 x
+b 265.518 122.996 m 233.152 123.91 x
+b 269.727 145.754 m 238.9 140.339 x
+b 265.518 122.996 m 269.727 145.754 x
+b 233.152 123.91 m 238.9 140.339 x
+b 217.611 79.1183 m 194.714 95.052 x
+b 222.557 93.4804 m 196.809 103.619 x
+b 217.611 79.1183 m 222.557 93.4804 x
+b 194.714 95.052 m 196.809 103.619 x
+b 222.557 93.4804 m 196.809 103.619 x
+b 228.21 108.227 m 199.827 112.619 x
+b 222.557 93.4804 m 228.21 108.227 x
+b 196.809 103.619 m 199.827 112.619 x
+b 194.714 95.052 m 160.607 109.393 x
+b 196.809 103.619 m 162.472 111.666 x
+b 194.714 95.052 m 196.809 103.619 x
+b 196.809 103.619 m 162.472 111.666 x
+b 199.827 112.619 m 163.858 114.26 x
+b 196.809 103.619 m 199.827 112.619 x
+b 228.21 108.227 m 199.827 112.619 x
+b 233.152 123.91 m 202.601 122.308 x
+b 228.21 108.227 m 233.152 123.91 x
+b 199.827 112.619 m 202.601 122.308 x
+b 233.152 123.91 m 202.601 122.308 x
+b 238.9 140.339 m 206.034 132.808 x
+b 233.152 123.91 m 238.9 140.339 x
+b 202.601 122.308 m 206.034 132.808 x
+b 199.827 112.619 m 163.858 114.26 x
+b 202.601 122.308 m 164.712 117.074 x
+b 199.827 112.619 m 202.601 122.308 x
+b 202.601 122.308 m 164.712 117.074 x
+b 206.034 132.808 m 165 120 x
+b 202.601 122.308 m 206.034 132.808 x
+b 300 150 m 299.678 159.817 x
+b 299.678 159.817 m 298.717 169.572 x
+b 298.717 169.572 m 297.118 179.264 x
+b 297.118 179.264 m 294.887 188.83 x
+b 294.887 188.83 m 292.042 198.209 x
+b 292.042 198.209 m 288.582 207.403 x
+b 288.582 207.403 m 284.528 216.35 x
+b 284.528 216.35 m 279.907 224.994 x
+b 279.907 224.994 m 274.72 233.336 x
+b 274.72 233.336 m 268.999 241.32 x
+b 268.999 241.32 m 262.78 248.896 x
+b 262.78 248.896 m 256.066 256.066 x
+b 165 120 m 164.968 120.982 x
+b 164.968 120.982 m 164.872 121.957 x
+b 164.872 121.957 m 164.712 122.926 x
+b 164.712 122.926 m 164.489 123.883 x
+b 164.489 123.883 m 164.204 124.821 x
+b 164.204 124.821 m 163.858 125.74 x
+b 163.858 125.74 m 163.453 126.635 x
+b 163.453 126.635 m 162.991 127.499 x
+b 162.991 127.499 m 162.472 128.334 x
+b 162.472 128.334 m 161.9 129.132 x
+b 161.9 129.132 m 161.278 129.89 x
+b 161.278 129.89 m 160.607 130.607 x
+b 256.066 256.066 m 248.896 262.78 x
+b 248.896 262.78 m 241.32 268.999 x
+b 241.32 268.999 m 233.336 274.72 x
+b 233.336 274.72 m 224.994 279.907 x
+b 224.994 279.907 m 216.35 284.528 x
+b 216.35 284.528 m 207.403 288.582 x
+b 207.403 288.582 m 198.209 292.042 x
+b 198.209 292.042 m 188.83 294.887 x
+b 188.83 294.887 m 179.264 297.118 x
+b 179.264 297.118 m 169.572 298.717 x
+b 169.572 298.717 m 159.817 299.678 x
+b 159.817 299.678 m 150 300 x
+b 160.607 130.607 m 159.89 131.278 x
+b 159.89 131.278 m 159.132 131.9 x
+b 159.132 131.9 m 158.334 132.472 x
+b 158.334 132.472 m 157.499 132.991 x
+b 157.499 132.991 m 156.635 133.453 x
+b 156.635 133.453 m 155.74 133.858 x
+b 155.74 133.858 m 154.821 134.204 x
+b 154.821 134.204 m 153.883 134.489 x
+b 153.883 134.489 m 152.926 134.712 x
+b 152.926 134.712 m 151.957 134.872 x
+b 151.957 134.872 m 150.982 134.968 x
+b 150.982 134.968 m 150 135 x
+b 150 300 m 140.183 299.678 x
+b 140.183 299.678 m 130.428 298.717 x
+b 130.428 298.717 m 120.736 297.118 x
+b 120.736 297.118 m 111.17 294.887 x
+b 111.17 294.887 m 101.791 292.042 x
+b 101.791 292.042 m 92.5975 288.582 x
+b 92.5975 288.582 m 83.6505 284.528 x
+b 83.6505 284.528 m 75.0062 279.907 x
+b 75.0062 279.907 m 66.6645 274.72 x
+b 66.6645 274.72 m 58.6803 268.999 x
+b 58.6803 268.999 m 51.1035 262.78 x
+b 51.1035 262.78 m 43.934 256.066 x
+b 150 135 m 149.018 134.968 x
+b 149.018 134.968 m 148.043 134.872 x
+b 148.043 134.872 m 147.074 134.712 x
+b 147.074 134.712 m 146.117 134.489 x
+b 146.117 134.489 m 145.179 134.204 x
+b 145.179 134.204 m 144.26 133.858 x
+b 144.26 133.858 m 143.365 133.453 x
+b 143.365 133.453 m 142.501 132.991 x
+b 142.501 132.991 m 141.666 132.472 x
+b 141.666 132.472 m 140.868 131.9 x
+b 140.868 131.9 m 140.11 131.278 x
+b 140.11 131.278 m 139.393 130.607 x
+b 43.934 256.066 m 37.2195 248.896 x
+b 37.2195 248.896 m 31.0014 241.32 x
+b 31.0014 241.32 m 25.2796 233.336 x
+b 25.2796 233.336 m 20.0928 224.994 x
+b 20.0928 224.994 m 15.4723 216.35 x
+b 15.4723 216.35 m 11.4181 207.403 x
+b 11.4181 207.403 m 7.95839 198.209 x
+b 7.95839 198.209 m 5.1131 188.83 x
+b 5.1131 188.83 m 2.88221 179.264 x
+b 2.88221 179.264 m 1.28253 169.572 x
+b 1.28253 169.572 m 0.321791 159.817 x
+b 0.321791 159.817 m 0 150 x
+b 139.393 130.607 m 138.722 129.89 x
+b 138.722 129.89 m 138.1 129.132 x
+b 138.1 129.132 m 137.528 128.334 x
+b 137.528 128.334 m 137.009 127.499 x
+b 137.009 127.499 m 136.547 126.635 x
+b 136.547 126.635 m 136.142 125.74 x
+b 136.142 125.74 m 135.796 124.821 x
+b 135.796 124.821 m 135.511 123.883 x
+b 135.511 123.883 m 135.288 122.926 x
+b 135.288 122.926 m 135.128 121.957 x
+b 135.128 121.957 m 135.032 120.982 x
+b 135.032 120.982 m 135 120 x
+b 0 150 m 0.321791 140.183 x
+b 0.321791 140.183 m 1.28253 130.428 x
+b 1.28253 130.428 m 2.88221 120.736 x
+b 2.88221 120.736 m 5.1131 111.17 x
+b 5.1131 111.17 m 7.95839 101.791 x
+b 7.95839 101.791 m 11.4181 92.5975 x
+b 11.4181 92.5975 m 15.4723 83.6505 x
+b 15.4723 83.6505 m 20.0928 75.0062 x
+b 20.0928 75.0062 m 25.2796 66.6645 x
+b 25.2796 66.6645 m 31.0014 58.6803 x
+b 31.0014 58.6803 m 37.2195 51.1035 x
+b 37.2195 51.1035 m 43.934 43.934 x
+b 135 120 m 135.032 119.018 x
+b 135.032 119.018 m 135.128 118.043 x
+b 135.128 118.043 m 135.288 117.074 x
+b 135.288 117.074 m 135.511 116.117 x
+b 135.511 116.117 m 135.796 115.179 x
+b 135.796 115.179 m 136.142 114.26 x
+b 136.142 114.26 m 136.547 113.365 x
+b 136.547 113.365 m 137.009 112.501 x
+b 137.009 112.501 m 137.528 111.666 x
+b 137.528 111.666 m 138.1 110.868 x
+b 138.1 110.868 m 138.722 110.11 x
+b 138.722 110.11 m 139.393 109.393 x
+b 43.934 43.934 m 51.1035 37.2195 x
+b 51.1035 37.2195 m 58.6803 31.0014 x
+b 58.6803 31.0014 m 66.6645 25.2796 x
+b 66.6645 25.2796 m 75.0062 20.0928 x
+b 75.0062 20.0928 m 83.6505 15.4723 x
+b 83.6505 15.4723 m 92.5975 11.4181 x
+b 92.5975 11.4181 m 101.791 7.95839 x
+b 101.791 7.95839 m 111.17 5.1131 x
+b 111.17 5.1131 m 120.736 2.88221 x
+b 120.736 2.88221 m 130.428 1.28253 x
+b 130.428 1.28253 m 140.183 0.321791 x
+b 140.183 0.321791 m 150 0 x
+b 139.393 109.393 m 140.11 108.722 x
+b 140.11 108.722 m 140.868 108.1 x
+b 140.868 108.1 m 141.666 107.528 x
+b 141.666 107.528 m 142.501 107.009 x
+b 142.501 107.009 m 143.365 106.547 x
+b 143.365 106.547 m 144.26 106.142 x
+b 144.26 106.142 m 145.179 105.796 x
+b 145.179 105.796 m 146.117 105.511 x
+b 146.117 105.511 m 147.074 105.288 x
+b 147.074 105.288 m 148.043 105.128 x
+b 148.043 105.128 m 149.018 105.032 x
+b 149.018 105.032 m 150 105 x
+b 150 0 m 159.817 0.321791 x
+b 159.817 0.321791 m 169.572 1.28253 x
+b 169.572 1.28253 m 179.264 2.88221 x
+b 179.264 2.88221 m 188.83 5.1131 x
+b 188.83 5.1131 m 198.209 7.95839 x
+b 198.209 7.95839 m 207.403 11.4181 x
+b 207.403 11.4181 m 216.35 15.4723 x
+b 216.35 15.4723 m 224.994 20.0928 x
+b 224.994 20.0928 m 233.336 25.2796 x
+b 233.336 25.2796 m 241.32 31.0014 x
+b 241.32 31.0014 m 248.896 37.2195 x
+b 248.896 37.2195 m 256.066 43.934 x
+b 150 105 m 150.982 105.032 x
+b 150.982 105.032 m 151.957 105.128 x
+b 151.957 105.128 m 152.926 105.288 x
+b 152.926 105.288 m 153.883 105.511 x
+b 153.883 105.511 m 154.821 105.796 x
+b 154.821 105.796 m 155.74 106.142 x
+b 155.74 106.142 m 156.635 106.547 x
+b 156.635 106.547 m 157.499 107.009 x
+b 157.499 107.009 m 158.334 107.528 x
+b 158.334 107.528 m 159.132 108.1 x
+b 159.132 108.1 m 159.89 108.722 x
+b 159.89 108.722 m 160.607 109.393 x
+b 256.066 43.934 m 262.78 51.1035 x
+b 262.78 51.1035 m 268.999 58.6803 x
+b 268.999 58.6803 m 274.72 66.6645 x
+b 274.72 66.6645 m 279.907 75.0062 x
+b 279.907 75.0062 m 284.528 83.6505 x
+b 284.528 83.6505 m 288.582 92.5975 x
+b 288.582 92.5975 m 292.042 101.791 x
+b 292.042 101.791 m 294.887 111.17 x
+b 294.887 111.17 m 297.118 120.736 x
+b 297.118 120.736 m 298.717 130.428 x
+b 298.717 130.428 m 299.678 140.183 x
+b 299.678 140.183 m 300 150 x
+b 160.607 109.393 m 161.278 110.11 x
+b 161.278 110.11 m 161.9 110.868 x
+b 161.9 110.868 m 162.472 111.666 x
+b 162.472 111.666 m 162.991 112.501 x
+b 162.991 112.501 m 163.453 113.365 x
+b 163.453 113.365 m 163.858 114.26 x
+b 163.858 114.26 m 164.204 115.179 x
+b 164.204 115.179 m 164.489 116.117 x
+b 164.489 116.117 m 164.712 117.074 x
+b 164.712 117.074 m 164.872 118.043 x
+b 164.872 118.043 m 164.968 119.018 x
+b 164.968 119.018 m 165 120 x
+showpage
diff --git a/tests/deal.II/normal_flux_inhom_01.cc b/tests/deal.II/normal_flux_inhom_01.cc
new file mode 100644 (file)
index 0000000..5d72528
--- /dev/null
@@ -0,0 +1,130 @@
+// ---------------------------------------------------------------------
+// $Id: no_flux_inhom_01.cc 31349 2013-10-20 19:07:06Z maier $
+//
+// Copyright (C) 2007 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// check the creation of inhomogeneous normal-flux boundary conditions 
+// for a finite element that consists of only a single set of vector 
+// components (i.e. it has dim components)
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/mapping_q1.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/numerics/vector_tools.h>
+
+#include <fstream>
+
+
+template<int dim>
+void test (const Triangulation<dim> &tr,
+           const FiniteElement<dim> &fe)
+{
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+  ConstantFunction<dim> constant_function(1.,dim);
+  typename FunctionMap<dim>::type function_map;
+  for (unsigned int j=0; j<GeometryInfo<dim>::faces_per_cell; ++j)
+    function_map[j] = &constant_function;
+  
+  for (unsigned int i=0; i<GeometryInfo<dim>::faces_per_cell; ++i)
+    {
+      deallog << "FE=" << fe.get_name()
+              << ", case=" << i
+              << std::endl;
+
+      std::set<types::boundary_id> boundary_ids;
+      for (unsigned int j=0; j<=i; ++j)
+        boundary_ids.insert (j);
+
+      ConstraintMatrix cm;
+      VectorTools::compute_nonzero_normal_flux_constraints
+        (dof, 0, boundary_ids, function_map,  cm);
+
+      cm.print (deallog.get_file_stream ());
+    }
+  //Get the location of all boundary dofs
+  std::vector<types::global_dof_index> face_dofs;
+  const std::vector<Point<dim-1> > &
+    unit_support_points = fe.get_unit_face_support_points();
+  Quadrature<dim-1> quadrature(unit_support_points);
+  FEFaceValues<dim, dim> fe_face_values(fe, quadrature, update_q_points);
+  typename DoFHandler<dim>::active_cell_iterator
+  cell = dof.begin_active(),
+  endc = dof.end();
+  for (; cell!=endc; ++cell)
+    for (unsigned int face_no=0; face_no < GeometryInfo<dim>::faces_per_cell;
+         ++face_no)
+      if (cell->face(face_no)->at_boundary())
+      {
+        typename DoFHandler<dim>::face_iterator face = cell->face(face_no);
+        face_dofs.resize (fe.dofs_per_face);
+        face->get_dof_indices (face_dofs);
+        
+        fe_face_values.reinit(cell, face_no);
+        for (unsigned int i=0; i<face_dofs.size(); ++i)
+        {
+          std::cout << face_dofs[i] << "\t"
+                    << fe_face_values.quadrature_point(i) << "\t"
+                    << fe.face_system_to_component_index(i).first
+                    << std::endl;
+        }
+      }
+
+    
+}
+
+
+template<int dim>
+void test_hyper_cube()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr);
+
+  for (unsigned int i=0; i<GeometryInfo<dim>::faces_per_cell; ++i)
+    tr.begin_active()->face(i)->set_boundary_indicator (i);
+
+  tr.refine_global(2);
+
+  for (unsigned int degree=1; degree<4; ++degree)
+    {
+      FESystem<dim> fe (FE_Q<dim>(degree), dim);
+      test(tr, fe);
+    }
+}
+
+
+int main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-12);
+
+  test_hyper_cube<2>();
+  test_hyper_cube<3>();
+}
diff --git a/tests/deal.II/normal_flux_inhom_01.output b/tests/deal.II/normal_flux_inhom_01.output
new file mode 100644 (file)
index 0000000..02a4242
--- /dev/null
@@ -0,0 +1,6076 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=0
+    0 = 1.00000
+    4 = 1.00000
+    12 = 1.00000
+    30 = 1.00000
+    36 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=1
+    0 = 1.00000
+    4 = 1.00000
+    12 = 1.00000
+    22 = 1.00000
+    24 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    36 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=2
+    0 = 1.00000
+    1 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    9 = 1.00000
+    12 = 1.00000
+    19 = 1.00000
+    22 = 1.00000
+    23 = 1.00000
+    24 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    36 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=3
+    0 = 1.00000
+    1 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    9 = 1.00000
+    12 = 1.00000
+    19 = 1.00000
+    22 = 1.00000
+    23 = 1.00000
+    24 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    36 = 1.00000
+    37 = 1.00000
+    39 = 1.00000
+    41 = 1.00000
+    44 = 1.00000
+    47 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=0
+    0 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    30 = 1.00000
+    34 = 1.00000
+    90 = 1.00000
+    94 = 1.00000
+    110 = 1.00000
+    114 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=1
+    0 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    30 = 1.00000
+    34 = 1.00000
+    62 = 1.00000
+    64 = 1.00000
+    66 = 1.00000
+    82 = 1.00000
+    84 = 1.00000
+    90 = 1.00000
+    94 = 1.00000
+    110 = 1.00000
+    114 = 1.00000
+    138 = 1.00000
+    140 = 1.00000
+    154 = 1.00000
+    156 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=2
+    0 = 1.00000
+    1 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    19 = 1.00000
+    25 = 1.00000
+    30 = 1.00000
+    34 = 1.00000
+    51 = 1.00000
+    57 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    64 = 1.00000
+    66 = 1.00000
+    69 = 1.00000
+    82 = 1.00000
+    84 = 1.00000
+    90 = 1.00000
+    94 = 1.00000
+    110 = 1.00000
+    114 = 1.00000
+    138 = 1.00000
+    140 = 1.00000
+    154 = 1.00000
+    156 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=3
+    0 = 1.00000
+    1 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    19 = 1.00000
+    25 = 1.00000
+    30 = 1.00000
+    34 = 1.00000
+    51 = 1.00000
+    57 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    64 = 1.00000
+    66 = 1.00000
+    69 = 1.00000
+    82 = 1.00000
+    84 = 1.00000
+    90 = 1.00000
+    94 = 1.00000
+    110 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    114 = 1.00000
+    119 = 1.00000
+    123 = 1.00000
+    127 = 1.00000
+    138 = 1.00000
+    140 = 1.00000
+    147 = 1.00000
+    151 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    156 = 1.00000
+    159 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=0
+    0 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    56 = 1.00000
+    60 = 1.00000
+    61 = 1.00000
+    182 = 1.00000
+    186 = 1.00000
+    187 = 1.00000
+    224 = 1.00000
+    228 = 1.00000
+    229 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=1
+    0 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    56 = 1.00000
+    60 = 1.00000
+    61 = 1.00000
+    122 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    164 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    182 = 1.00000
+    186 = 1.00000
+    187 = 1.00000
+    224 = 1.00000
+    228 = 1.00000
+    229 = 1.00000
+    284 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    320 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=2
+    0 = 1.00000
+    1 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    18 = 1.00000
+    19 = 1.00000
+    33 = 1.00000
+    42 = 1.00000
+    43 = 1.00000
+    56 = 1.00000
+    60 = 1.00000
+    61 = 1.00000
+    99 = 1.00000
+    108 = 1.00000
+    109 = 1.00000
+    122 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    132 = 1.00000
+    133 = 1.00000
+    164 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    182 = 1.00000
+    186 = 1.00000
+    187 = 1.00000
+    224 = 1.00000
+    228 = 1.00000
+    229 = 1.00000
+    284 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    320 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=3
+    0 = 1.00000
+    1 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    18 = 1.00000
+    19 = 1.00000
+    33 = 1.00000
+    42 = 1.00000
+    43 = 1.00000
+    56 = 1.00000
+    60 = 1.00000
+    61 = 1.00000
+    99 = 1.00000
+    108 = 1.00000
+    109 = 1.00000
+    122 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    132 = 1.00000
+    133 = 1.00000
+    164 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    182 = 1.00000
+    186 = 1.00000
+    187 = 1.00000
+    224 = 1.00000
+    225 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    229 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    249 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    284 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    303 = 1.00000
+    310 = 1.00000
+    311 = 1.00000
+    320 = 1.00000
+    321 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    328 = 1.00000
+    329 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=0
+    0 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    36 = 1.00000
+    42 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    72 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    153 = 1.00000
+    159 = 1.00000
+    171 = 1.00000
+    180 = 1.00000
+    225 = 1.00000
+    231 = 1.00000
+    243 = 1.00000
+    252 = 1.00000
+    258 = 1.00000
+    270 = 1.00000
+    315 = 1.00000
+    324 = 1.00000
+    333 = 1.00000
+    342 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=1
+    0 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    36 = 1.00000
+    42 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    72 = 1.00000
+    93 = 1.00000
+    96 = 1.00000
+    99 = 1.00000
+    102 = 1.00000
+    111 = 1.00000
+    114 = 1.00000
+    123 = 1.00000
+    126 = 1.00000
+    132 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    153 = 1.00000
+    159 = 1.00000
+    171 = 1.00000
+    180 = 1.00000
+    195 = 1.00000
+    198 = 1.00000
+    207 = 1.00000
+    210 = 1.00000
+    216 = 1.00000
+    222 = 1.00000
+    225 = 1.00000
+    231 = 1.00000
+    243 = 1.00000
+    252 = 1.00000
+    258 = 1.00000
+    270 = 1.00000
+    285 = 1.00000
+    288 = 1.00000
+    294 = 1.00000
+    303 = 1.00000
+    306 = 1.00000
+    312 = 1.00000
+    315 = 1.00000
+    324 = 1.00000
+    333 = 1.00000
+    342 = 1.00000
+    354 = 1.00000
+    360 = 1.00000
+    366 = 1.00000
+    372 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=2
+    0 = 1.00000
+    1 = 1.00000
+    4 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    25 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    42 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    58 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    72 = 1.00000
+    82 = 1.00000
+    88 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    96 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    102 = 1.00000
+    111 = 1.00000
+    114 = 1.00000
+    118 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    132 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    153 = 1.00000
+    159 = 1.00000
+    171 = 1.00000
+    180 = 1.00000
+    195 = 1.00000
+    198 = 1.00000
+    207 = 1.00000
+    210 = 1.00000
+    216 = 1.00000
+    222 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    238 = 1.00000
+    243 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    256 = 1.00000
+    258 = 1.00000
+    265 = 1.00000
+    270 = 1.00000
+    280 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    288 = 1.00000
+    294 = 1.00000
+    298 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    306 = 1.00000
+    312 = 1.00000
+    315 = 1.00000
+    324 = 1.00000
+    333 = 1.00000
+    342 = 1.00000
+    354 = 1.00000
+    360 = 1.00000
+    366 = 1.00000
+    372 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=3
+    0 = 1.00000
+    1 = 1.00000
+    4 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    25 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    42 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    58 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    72 = 1.00000
+    82 = 1.00000
+    88 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    96 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    102 = 1.00000
+    111 = 1.00000
+    114 = 1.00000
+    118 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    132 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    157 = 1.00000
+    159 = 1.00000
+    160 = 1.00000
+    163 = 1.00000
+    166 = 1.00000
+    169 = 1.00000
+    171 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    184 = 1.00000
+    187 = 1.00000
+    195 = 1.00000
+    198 = 1.00000
+    202 = 1.00000
+    205 = 1.00000
+    207 = 1.00000
+    208 = 1.00000
+    210 = 1.00000
+    211 = 1.00000
+    216 = 1.00000
+    220 = 1.00000
+    222 = 1.00000
+    223 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    238 = 1.00000
+    243 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    256 = 1.00000
+    258 = 1.00000
+    265 = 1.00000
+    270 = 1.00000
+    280 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    288 = 1.00000
+    294 = 1.00000
+    298 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    306 = 1.00000
+    312 = 1.00000
+    315 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    328 = 1.00000
+    331 = 1.00000
+    333 = 1.00000
+    342 = 1.00000
+    343 = 1.00000
+    346 = 1.00000
+    349 = 1.00000
+    354 = 1.00000
+    358 = 1.00000
+    360 = 1.00000
+    361 = 1.00000
+    366 = 1.00000
+    370 = 1.00000
+    372 = 1.00000
+    373 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=4
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    8 = 1.00000
+    11 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    38 = 1.00000
+    41 = 1.00000
+    42 = 1.00000
+    50 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    58 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    72 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    96 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    102 = 1.00000
+    107 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    114 = 1.00000
+    118 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    132 = 1.00000
+    135 = 1.00000
+    137 = 1.00000
+    140 = 1.00000
+    141 = 1.00000
+    149 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    159 = 1.00000
+    160 = 1.00000
+    163 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    169 = 1.00000
+    171 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    184 = 1.00000
+    187 = 1.00000
+    191 = 1.00000
+    195 = 1.00000
+    197 = 1.00000
+    198 = 1.00000
+    202 = 1.00000
+    203 = 1.00000
+    205 = 1.00000
+    207 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    210 = 1.00000
+    211 = 1.00000
+    216 = 1.00000
+    220 = 1.00000
+    222 = 1.00000
+    223 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    238 = 1.00000
+    243 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    256 = 1.00000
+    258 = 1.00000
+    265 = 1.00000
+    270 = 1.00000
+    280 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    288 = 1.00000
+    294 = 1.00000
+    298 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    306 = 1.00000
+    312 = 1.00000
+    315 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    328 = 1.00000
+    331 = 1.00000
+    333 = 1.00000
+    342 = 1.00000
+    343 = 1.00000
+    346 = 1.00000
+    349 = 1.00000
+    354 = 1.00000
+    358 = 1.00000
+    360 = 1.00000
+    361 = 1.00000
+    366 = 1.00000
+    370 = 1.00000
+    372 = 1.00000
+    373 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=5
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    8 = 1.00000
+    11 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    38 = 1.00000
+    41 = 1.00000
+    42 = 1.00000
+    50 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    58 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    72 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    96 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    102 = 1.00000
+    107 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    114 = 1.00000
+    118 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    126 = 1.00000
+    132 = 1.00000
+    135 = 1.00000
+    137 = 1.00000
+    140 = 1.00000
+    141 = 1.00000
+    149 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    159 = 1.00000
+    160 = 1.00000
+    163 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    169 = 1.00000
+    171 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    184 = 1.00000
+    187 = 1.00000
+    191 = 1.00000
+    195 = 1.00000
+    197 = 1.00000
+    198 = 1.00000
+    202 = 1.00000
+    203 = 1.00000
+    205 = 1.00000
+    207 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    210 = 1.00000
+    211 = 1.00000
+    216 = 1.00000
+    220 = 1.00000
+    222 = 1.00000
+    223 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    238 = 1.00000
+    243 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    258 = 1.00000
+    260 = 1.00000
+    263 = 1.00000
+    265 = 1.00000
+    266 = 1.00000
+    269 = 1.00000
+    270 = 1.00000
+    272 = 1.00000
+    275 = 1.00000
+    278 = 1.00000
+    280 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    288 = 1.00000
+    294 = 1.00000
+    298 = 1.00000
+    299 = 1.00000
+    302 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    305 = 1.00000
+    306 = 1.00000
+    308 = 1.00000
+    311 = 1.00000
+    312 = 1.00000
+    314 = 1.00000
+    315 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    328 = 1.00000
+    331 = 1.00000
+    333 = 1.00000
+    335 = 1.00000
+    338 = 1.00000
+    341 = 1.00000
+    342 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    346 = 1.00000
+    347 = 1.00000
+    349 = 1.00000
+    350 = 1.00000
+    354 = 1.00000
+    358 = 1.00000
+    360 = 1.00000
+    361 = 1.00000
+    365 = 1.00000
+    366 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    371 = 1.00000
+    372 = 1.00000
+    373 = 1.00000
+    374 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=0
+    0 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    36 = 1.00000
+    48 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    147 = 1.00000
+    156 = 1.00000
+    165 = 1.00000
+    171 = 1.00000
+    225 = 1.00000
+    231 = 1.00000
+    237 = 1.00000
+    249 = 1.00000
+    255 = 1.00000
+    261 = 1.00000
+    315 = 1.00000
+    321 = 1.00000
+    330 = 1.00000
+    336 = 1.00000
+    675 = 1.00000
+    681 = 1.00000
+    687 = 1.00000
+    696 = 1.00000
+    705 = 1.00000
+    711 = 1.00000
+    765 = 1.00000
+    771 = 1.00000
+    777 = 1.00000
+    786 = 1.00000
+    795 = 1.00000
+    801 = 1.00000
+    855 = 1.00000
+    861 = 1.00000
+    870 = 1.00000
+    876 = 1.00000
+    915 = 1.00000
+    921 = 1.00000
+    930 = 1.00000
+    936 = 1.00000
+    1215 = 1.00000
+    1221 = 1.00000
+    1227 = 1.00000
+    1239 = 1.00000
+    1245 = 1.00000
+    1251 = 1.00000
+    1305 = 1.00000
+    1311 = 1.00000
+    1320 = 1.00000
+    1326 = 1.00000
+    1365 = 1.00000
+    1371 = 1.00000
+    1377 = 1.00000
+    1389 = 1.00000
+    1395 = 1.00000
+    1401 = 1.00000
+    1455 = 1.00000
+    1461 = 1.00000
+    1470 = 1.00000
+    1476 = 1.00000
+    1755 = 1.00000
+    1761 = 1.00000
+    1770 = 1.00000
+    1776 = 1.00000
+    1815 = 1.00000
+    1821 = 1.00000
+    1830 = 1.00000
+    1836 = 1.00000
+    1875 = 1.00000
+    1881 = 1.00000
+    1890 = 1.00000
+    1896 = 1.00000
+    1935 = 1.00000
+    1941 = 1.00000
+    1950 = 1.00000
+    1956 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=1
+    0 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    36 = 1.00000
+    48 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    147 = 1.00000
+    156 = 1.00000
+    165 = 1.00000
+    171 = 1.00000
+    225 = 1.00000
+    231 = 1.00000
+    237 = 1.00000
+    249 = 1.00000
+    255 = 1.00000
+    261 = 1.00000
+    315 = 1.00000
+    321 = 1.00000
+    330 = 1.00000
+    336 = 1.00000
+    429 = 1.00000
+    432 = 1.00000
+    435 = 1.00000
+    438 = 1.00000
+    441 = 1.00000
+    450 = 1.00000
+    459 = 1.00000
+    462 = 1.00000
+    465 = 1.00000
+    519 = 1.00000
+    522 = 1.00000
+    525 = 1.00000
+    531 = 1.00000
+    537 = 1.00000
+    540 = 1.00000
+    591 = 1.00000
+    594 = 1.00000
+    597 = 1.00000
+    606 = 1.00000
+    609 = 1.00000
+    612 = 1.00000
+    651 = 1.00000
+    654 = 1.00000
+    660 = 1.00000
+    663 = 1.00000
+    675 = 1.00000
+    681 = 1.00000
+    687 = 1.00000
+    696 = 1.00000
+    705 = 1.00000
+    711 = 1.00000
+    765 = 1.00000
+    771 = 1.00000
+    777 = 1.00000
+    786 = 1.00000
+    795 = 1.00000
+    801 = 1.00000
+    855 = 1.00000
+    861 = 1.00000
+    870 = 1.00000
+    876 = 1.00000
+    915 = 1.00000
+    921 = 1.00000
+    930 = 1.00000
+    936 = 1.00000
+    1011 = 1.00000
+    1014 = 1.00000
+    1017 = 1.00000
+    1023 = 1.00000
+    1029 = 1.00000
+    1032 = 1.00000
+    1083 = 1.00000
+    1086 = 1.00000
+    1089 = 1.00000
+    1095 = 1.00000
+    1101 = 1.00000
+    1104 = 1.00000
+    1143 = 1.00000
+    1146 = 1.00000
+    1152 = 1.00000
+    1155 = 1.00000
+    1191 = 1.00000
+    1194 = 1.00000
+    1200 = 1.00000
+    1203 = 1.00000
+    1215 = 1.00000
+    1221 = 1.00000
+    1227 = 1.00000
+    1239 = 1.00000
+    1245 = 1.00000
+    1251 = 1.00000
+    1305 = 1.00000
+    1311 = 1.00000
+    1320 = 1.00000
+    1326 = 1.00000
+    1365 = 1.00000
+    1371 = 1.00000
+    1377 = 1.00000
+    1389 = 1.00000
+    1395 = 1.00000
+    1401 = 1.00000
+    1455 = 1.00000
+    1461 = 1.00000
+    1470 = 1.00000
+    1476 = 1.00000
+    1551 = 1.00000
+    1554 = 1.00000
+    1557 = 1.00000
+    1566 = 1.00000
+    1569 = 1.00000
+    1572 = 1.00000
+    1611 = 1.00000
+    1614 = 1.00000
+    1620 = 1.00000
+    1623 = 1.00000
+    1671 = 1.00000
+    1674 = 1.00000
+    1677 = 1.00000
+    1686 = 1.00000
+    1689 = 1.00000
+    1692 = 1.00000
+    1731 = 1.00000
+    1734 = 1.00000
+    1740 = 1.00000
+    1743 = 1.00000
+    1755 = 1.00000
+    1761 = 1.00000
+    1770 = 1.00000
+    1776 = 1.00000
+    1815 = 1.00000
+    1821 = 1.00000
+    1830 = 1.00000
+    1836 = 1.00000
+    1875 = 1.00000
+    1881 = 1.00000
+    1890 = 1.00000
+    1896 = 1.00000
+    1935 = 1.00000
+    1941 = 1.00000
+    1950 = 1.00000
+    1956 = 1.00000
+    2019 = 1.00000
+    2022 = 1.00000
+    2028 = 1.00000
+    2031 = 1.00000
+    2067 = 1.00000
+    2070 = 1.00000
+    2076 = 1.00000
+    2079 = 1.00000
+    2115 = 1.00000
+    2118 = 1.00000
+    2124 = 1.00000
+    2127 = 1.00000
+    2163 = 1.00000
+    2166 = 1.00000
+    2172 = 1.00000
+    2175 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=2
+    0 = 1.00000
+    1 = 1.00000
+    4 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    43 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    52 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    82 = 1.00000
+    88 = 1.00000
+    97 = 1.00000
+    106 = 1.00000
+    112 = 1.00000
+    121 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    147 = 1.00000
+    156 = 1.00000
+    165 = 1.00000
+    171 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    237 = 1.00000
+    244 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    253 = 1.00000
+    255 = 1.00000
+    261 = 1.00000
+    268 = 1.00000
+    280 = 1.00000
+    289 = 1.00000
+    295 = 1.00000
+    304 = 1.00000
+    315 = 1.00000
+    321 = 1.00000
+    330 = 1.00000
+    336 = 1.00000
+    376 = 1.00000
+    382 = 1.00000
+    391 = 1.00000
+    400 = 1.00000
+    406 = 1.00000
+    415 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    432 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    438 = 1.00000
+    441 = 1.00000
+    445 = 1.00000
+    450 = 1.00000
+    454 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    462 = 1.00000
+    465 = 1.00000
+    469 = 1.00000
+    519 = 1.00000
+    522 = 1.00000
+    525 = 1.00000
+    531 = 1.00000
+    537 = 1.00000
+    540 = 1.00000
+    556 = 1.00000
+    565 = 1.00000
+    571 = 1.00000
+    580 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    597 = 1.00000
+    601 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    609 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    651 = 1.00000
+    654 = 1.00000
+    660 = 1.00000
+    663 = 1.00000
+    675 = 1.00000
+    681 = 1.00000
+    687 = 1.00000
+    696 = 1.00000
+    705 = 1.00000
+    711 = 1.00000
+    765 = 1.00000
+    771 = 1.00000
+    777 = 1.00000
+    786 = 1.00000
+    795 = 1.00000
+    801 = 1.00000
+    855 = 1.00000
+    861 = 1.00000
+    870 = 1.00000
+    876 = 1.00000
+    915 = 1.00000
+    921 = 1.00000
+    930 = 1.00000
+    936 = 1.00000
+    1011 = 1.00000
+    1014 = 1.00000
+    1017 = 1.00000
+    1023 = 1.00000
+    1029 = 1.00000
+    1032 = 1.00000
+    1083 = 1.00000
+    1086 = 1.00000
+    1089 = 1.00000
+    1095 = 1.00000
+    1101 = 1.00000
+    1104 = 1.00000
+    1143 = 1.00000
+    1146 = 1.00000
+    1152 = 1.00000
+    1155 = 1.00000
+    1191 = 1.00000
+    1194 = 1.00000
+    1200 = 1.00000
+    1203 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1219 = 1.00000
+    1221 = 1.00000
+    1227 = 1.00000
+    1234 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1243 = 1.00000
+    1245 = 1.00000
+    1251 = 1.00000
+    1258 = 1.00000
+    1270 = 1.00000
+    1279 = 1.00000
+    1285 = 1.00000
+    1294 = 1.00000
+    1305 = 1.00000
+    1311 = 1.00000
+    1320 = 1.00000
+    1326 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1369 = 1.00000
+    1371 = 1.00000
+    1377 = 1.00000
+    1384 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1393 = 1.00000
+    1395 = 1.00000
+    1401 = 1.00000
+    1408 = 1.00000
+    1420 = 1.00000
+    1429 = 1.00000
+    1435 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1461 = 1.00000
+    1470 = 1.00000
+    1476 = 1.00000
+    1516 = 1.00000
+    1525 = 1.00000
+    1531 = 1.00000
+    1540 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1554 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1569 = 1.00000
+    1572 = 1.00000
+    1576 = 1.00000
+    1611 = 1.00000
+    1614 = 1.00000
+    1620 = 1.00000
+    1623 = 1.00000
+    1636 = 1.00000
+    1645 = 1.00000
+    1651 = 1.00000
+    1660 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1674 = 1.00000
+    1677 = 1.00000
+    1681 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1689 = 1.00000
+    1692 = 1.00000
+    1696 = 1.00000
+    1731 = 1.00000
+    1734 = 1.00000
+    1740 = 1.00000
+    1743 = 1.00000
+    1755 = 1.00000
+    1761 = 1.00000
+    1770 = 1.00000
+    1776 = 1.00000
+    1815 = 1.00000
+    1821 = 1.00000
+    1830 = 1.00000
+    1836 = 1.00000
+    1875 = 1.00000
+    1881 = 1.00000
+    1890 = 1.00000
+    1896 = 1.00000
+    1935 = 1.00000
+    1941 = 1.00000
+    1950 = 1.00000
+    1956 = 1.00000
+    2019 = 1.00000
+    2022 = 1.00000
+    2028 = 1.00000
+    2031 = 1.00000
+    2067 = 1.00000
+    2070 = 1.00000
+    2076 = 1.00000
+    2079 = 1.00000
+    2115 = 1.00000
+    2118 = 1.00000
+    2124 = 1.00000
+    2127 = 1.00000
+    2163 = 1.00000
+    2166 = 1.00000
+    2172 = 1.00000
+    2175 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=3
+    0 = 1.00000
+    1 = 1.00000
+    4 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    43 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    52 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    82 = 1.00000
+    88 = 1.00000
+    97 = 1.00000
+    106 = 1.00000
+    112 = 1.00000
+    121 = 1.00000
+    135 = 1.00000
+    141 = 1.00000
+    147 = 1.00000
+    156 = 1.00000
+    165 = 1.00000
+    171 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    237 = 1.00000
+    244 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    253 = 1.00000
+    255 = 1.00000
+    261 = 1.00000
+    268 = 1.00000
+    280 = 1.00000
+    289 = 1.00000
+    295 = 1.00000
+    304 = 1.00000
+    315 = 1.00000
+    321 = 1.00000
+    330 = 1.00000
+    336 = 1.00000
+    376 = 1.00000
+    382 = 1.00000
+    391 = 1.00000
+    400 = 1.00000
+    406 = 1.00000
+    415 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    432 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    438 = 1.00000
+    441 = 1.00000
+    445 = 1.00000
+    450 = 1.00000
+    454 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    462 = 1.00000
+    465 = 1.00000
+    469 = 1.00000
+    519 = 1.00000
+    522 = 1.00000
+    525 = 1.00000
+    531 = 1.00000
+    537 = 1.00000
+    540 = 1.00000
+    556 = 1.00000
+    565 = 1.00000
+    571 = 1.00000
+    580 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    597 = 1.00000
+    601 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    609 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    651 = 1.00000
+    654 = 1.00000
+    660 = 1.00000
+    663 = 1.00000
+    675 = 1.00000
+    681 = 1.00000
+    687 = 1.00000
+    696 = 1.00000
+    705 = 1.00000
+    711 = 1.00000
+    765 = 1.00000
+    766 = 1.00000
+    769 = 1.00000
+    771 = 1.00000
+    772 = 1.00000
+    775 = 1.00000
+    777 = 1.00000
+    784 = 1.00000
+    786 = 1.00000
+    793 = 1.00000
+    795 = 1.00000
+    796 = 1.00000
+    799 = 1.00000
+    801 = 1.00000
+    808 = 1.00000
+    820 = 1.00000
+    823 = 1.00000
+    829 = 1.00000
+    835 = 1.00000
+    838 = 1.00000
+    844 = 1.00000
+    855 = 1.00000
+    861 = 1.00000
+    870 = 1.00000
+    876 = 1.00000
+    915 = 1.00000
+    916 = 1.00000
+    919 = 1.00000
+    921 = 1.00000
+    928 = 1.00000
+    930 = 1.00000
+    931 = 1.00000
+    934 = 1.00000
+    936 = 1.00000
+    943 = 1.00000
+    952 = 1.00000
+    958 = 1.00000
+    961 = 1.00000
+    967 = 1.00000
+    1011 = 1.00000
+    1014 = 1.00000
+    1017 = 1.00000
+    1023 = 1.00000
+    1029 = 1.00000
+    1032 = 1.00000
+    1048 = 1.00000
+    1051 = 1.00000
+    1057 = 1.00000
+    1063 = 1.00000
+    1066 = 1.00000
+    1072 = 1.00000
+    1083 = 1.00000
+    1084 = 1.00000
+    1086 = 1.00000
+    1087 = 1.00000
+    1089 = 1.00000
+    1093 = 1.00000
+    1095 = 1.00000
+    1099 = 1.00000
+    1101 = 1.00000
+    1102 = 1.00000
+    1104 = 1.00000
+    1108 = 1.00000
+    1143 = 1.00000
+    1146 = 1.00000
+    1152 = 1.00000
+    1155 = 1.00000
+    1168 = 1.00000
+    1174 = 1.00000
+    1177 = 1.00000
+    1183 = 1.00000
+    1191 = 1.00000
+    1192 = 1.00000
+    1194 = 1.00000
+    1198 = 1.00000
+    1200 = 1.00000
+    1201 = 1.00000
+    1203 = 1.00000
+    1207 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1219 = 1.00000
+    1221 = 1.00000
+    1227 = 1.00000
+    1234 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1243 = 1.00000
+    1245 = 1.00000
+    1251 = 1.00000
+    1258 = 1.00000
+    1270 = 1.00000
+    1279 = 1.00000
+    1285 = 1.00000
+    1294 = 1.00000
+    1305 = 1.00000
+    1311 = 1.00000
+    1320 = 1.00000
+    1326 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1369 = 1.00000
+    1371 = 1.00000
+    1377 = 1.00000
+    1384 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1393 = 1.00000
+    1395 = 1.00000
+    1401 = 1.00000
+    1408 = 1.00000
+    1420 = 1.00000
+    1429 = 1.00000
+    1435 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1461 = 1.00000
+    1470 = 1.00000
+    1476 = 1.00000
+    1516 = 1.00000
+    1525 = 1.00000
+    1531 = 1.00000
+    1540 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1554 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1569 = 1.00000
+    1572 = 1.00000
+    1576 = 1.00000
+    1611 = 1.00000
+    1614 = 1.00000
+    1620 = 1.00000
+    1623 = 1.00000
+    1636 = 1.00000
+    1645 = 1.00000
+    1651 = 1.00000
+    1660 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1674 = 1.00000
+    1677 = 1.00000
+    1681 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1689 = 1.00000
+    1692 = 1.00000
+    1696 = 1.00000
+    1731 = 1.00000
+    1734 = 1.00000
+    1740 = 1.00000
+    1743 = 1.00000
+    1755 = 1.00000
+    1761 = 1.00000
+    1770 = 1.00000
+    1776 = 1.00000
+    1815 = 1.00000
+    1816 = 1.00000
+    1819 = 1.00000
+    1821 = 1.00000
+    1828 = 1.00000
+    1830 = 1.00000
+    1831 = 1.00000
+    1834 = 1.00000
+    1836 = 1.00000
+    1843 = 1.00000
+    1852 = 1.00000
+    1858 = 1.00000
+    1861 = 1.00000
+    1867 = 1.00000
+    1875 = 1.00000
+    1881 = 1.00000
+    1890 = 1.00000
+    1896 = 1.00000
+    1935 = 1.00000
+    1936 = 1.00000
+    1939 = 1.00000
+    1941 = 1.00000
+    1948 = 1.00000
+    1950 = 1.00000
+    1951 = 1.00000
+    1954 = 1.00000
+    1956 = 1.00000
+    1963 = 1.00000
+    1972 = 1.00000
+    1978 = 1.00000
+    1981 = 1.00000
+    1987 = 1.00000
+    2019 = 1.00000
+    2022 = 1.00000
+    2028 = 1.00000
+    2031 = 1.00000
+    2044 = 1.00000
+    2050 = 1.00000
+    2053 = 1.00000
+    2059 = 1.00000
+    2067 = 1.00000
+    2068 = 1.00000
+    2070 = 1.00000
+    2074 = 1.00000
+    2076 = 1.00000
+    2077 = 1.00000
+    2079 = 1.00000
+    2083 = 1.00000
+    2115 = 1.00000
+    2118 = 1.00000
+    2124 = 1.00000
+    2127 = 1.00000
+    2140 = 1.00000
+    2146 = 1.00000
+    2149 = 1.00000
+    2155 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2166 = 1.00000
+    2170 = 1.00000
+    2172 = 1.00000
+    2173 = 1.00000
+    2175 = 1.00000
+    2179 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=4
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    8 = 1.00000
+    11 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    26 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    32 = 1.00000
+    35 = 1.00000
+    36 = 1.00000
+    43 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    52 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    74 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    95 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    101 = 1.00000
+    106 = 1.00000
+    112 = 1.00000
+    121 = 1.00000
+    128 = 1.00000
+    135 = 1.00000
+    137 = 1.00000
+    140 = 1.00000
+    141 = 1.00000
+    147 = 1.00000
+    149 = 1.00000
+    152 = 1.00000
+    155 = 1.00000
+    156 = 1.00000
+    165 = 1.00000
+    171 = 1.00000
+    182 = 1.00000
+    191 = 1.00000
+    197 = 1.00000
+    200 = 1.00000
+    218 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    237 = 1.00000
+    244 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    253 = 1.00000
+    255 = 1.00000
+    261 = 1.00000
+    268 = 1.00000
+    280 = 1.00000
+    289 = 1.00000
+    295 = 1.00000
+    304 = 1.00000
+    315 = 1.00000
+    321 = 1.00000
+    330 = 1.00000
+    336 = 1.00000
+    376 = 1.00000
+    377 = 1.00000
+    380 = 1.00000
+    382 = 1.00000
+    389 = 1.00000
+    391 = 1.00000
+    392 = 1.00000
+    395 = 1.00000
+    400 = 1.00000
+    406 = 1.00000
+    415 = 1.00000
+    422 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    432 = 1.00000
+    434 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    438 = 1.00000
+    441 = 1.00000
+    443 = 1.00000
+    445 = 1.00000
+    446 = 1.00000
+    449 = 1.00000
+    450 = 1.00000
+    454 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    462 = 1.00000
+    465 = 1.00000
+    469 = 1.00000
+    476 = 1.00000
+    485 = 1.00000
+    491 = 1.00000
+    494 = 1.00000
+    512 = 1.00000
+    519 = 1.00000
+    521 = 1.00000
+    522 = 1.00000
+    525 = 1.00000
+    527 = 1.00000
+    530 = 1.00000
+    531 = 1.00000
+    537 = 1.00000
+    540 = 1.00000
+    548 = 1.00000
+    556 = 1.00000
+    565 = 1.00000
+    571 = 1.00000
+    580 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    597 = 1.00000
+    601 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    609 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    651 = 1.00000
+    654 = 1.00000
+    660 = 1.00000
+    663 = 1.00000
+    675 = 1.00000
+    677 = 1.00000
+    680 = 1.00000
+    681 = 1.00000
+    687 = 1.00000
+    689 = 1.00000
+    692 = 1.00000
+    695 = 1.00000
+    696 = 1.00000
+    705 = 1.00000
+    711 = 1.00000
+    722 = 1.00000
+    731 = 1.00000
+    737 = 1.00000
+    740 = 1.00000
+    758 = 1.00000
+    765 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    769 = 1.00000
+    770 = 1.00000
+    771 = 1.00000
+    772 = 1.00000
+    775 = 1.00000
+    777 = 1.00000
+    779 = 1.00000
+    782 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    786 = 1.00000
+    793 = 1.00000
+    795 = 1.00000
+    796 = 1.00000
+    799 = 1.00000
+    801 = 1.00000
+    808 = 1.00000
+    812 = 1.00000
+    820 = 1.00000
+    821 = 1.00000
+    823 = 1.00000
+    827 = 1.00000
+    829 = 1.00000
+    830 = 1.00000
+    835 = 1.00000
+    838 = 1.00000
+    844 = 1.00000
+    848 = 1.00000
+    855 = 1.00000
+    861 = 1.00000
+    870 = 1.00000
+    876 = 1.00000
+    915 = 1.00000
+    916 = 1.00000
+    919 = 1.00000
+    921 = 1.00000
+    928 = 1.00000
+    930 = 1.00000
+    931 = 1.00000
+    934 = 1.00000
+    936 = 1.00000
+    943 = 1.00000
+    952 = 1.00000
+    958 = 1.00000
+    961 = 1.00000
+    967 = 1.00000
+    977 = 1.00000
+    983 = 1.00000
+    986 = 1.00000
+    1004 = 1.00000
+    1011 = 1.00000
+    1013 = 1.00000
+    1014 = 1.00000
+    1017 = 1.00000
+    1019 = 1.00000
+    1022 = 1.00000
+    1023 = 1.00000
+    1029 = 1.00000
+    1032 = 1.00000
+    1040 = 1.00000
+    1048 = 1.00000
+    1049 = 1.00000
+    1051 = 1.00000
+    1055 = 1.00000
+    1057 = 1.00000
+    1058 = 1.00000
+    1063 = 1.00000
+    1066 = 1.00000
+    1072 = 1.00000
+    1076 = 1.00000
+    1083 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1086 = 1.00000
+    1087 = 1.00000
+    1089 = 1.00000
+    1091 = 1.00000
+    1093 = 1.00000
+    1094 = 1.00000
+    1095 = 1.00000
+    1099 = 1.00000
+    1101 = 1.00000
+    1102 = 1.00000
+    1104 = 1.00000
+    1108 = 1.00000
+    1112 = 1.00000
+    1143 = 1.00000
+    1146 = 1.00000
+    1152 = 1.00000
+    1155 = 1.00000
+    1168 = 1.00000
+    1174 = 1.00000
+    1177 = 1.00000
+    1183 = 1.00000
+    1191 = 1.00000
+    1192 = 1.00000
+    1194 = 1.00000
+    1198 = 1.00000
+    1200 = 1.00000
+    1201 = 1.00000
+    1203 = 1.00000
+    1207 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1219 = 1.00000
+    1221 = 1.00000
+    1227 = 1.00000
+    1234 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1243 = 1.00000
+    1245 = 1.00000
+    1251 = 1.00000
+    1258 = 1.00000
+    1270 = 1.00000
+    1279 = 1.00000
+    1285 = 1.00000
+    1294 = 1.00000
+    1305 = 1.00000
+    1311 = 1.00000
+    1320 = 1.00000
+    1326 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1369 = 1.00000
+    1371 = 1.00000
+    1377 = 1.00000
+    1384 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1393 = 1.00000
+    1395 = 1.00000
+    1401 = 1.00000
+    1408 = 1.00000
+    1420 = 1.00000
+    1429 = 1.00000
+    1435 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1461 = 1.00000
+    1470 = 1.00000
+    1476 = 1.00000
+    1516 = 1.00000
+    1525 = 1.00000
+    1531 = 1.00000
+    1540 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1554 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1569 = 1.00000
+    1572 = 1.00000
+    1576 = 1.00000
+    1611 = 1.00000
+    1614 = 1.00000
+    1620 = 1.00000
+    1623 = 1.00000
+    1636 = 1.00000
+    1645 = 1.00000
+    1651 = 1.00000
+    1660 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1674 = 1.00000
+    1677 = 1.00000
+    1681 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1689 = 1.00000
+    1692 = 1.00000
+    1696 = 1.00000
+    1731 = 1.00000
+    1734 = 1.00000
+    1740 = 1.00000
+    1743 = 1.00000
+    1755 = 1.00000
+    1761 = 1.00000
+    1770 = 1.00000
+    1776 = 1.00000
+    1815 = 1.00000
+    1816 = 1.00000
+    1819 = 1.00000
+    1821 = 1.00000
+    1828 = 1.00000
+    1830 = 1.00000
+    1831 = 1.00000
+    1834 = 1.00000
+    1836 = 1.00000
+    1843 = 1.00000
+    1852 = 1.00000
+    1858 = 1.00000
+    1861 = 1.00000
+    1867 = 1.00000
+    1875 = 1.00000
+    1881 = 1.00000
+    1890 = 1.00000
+    1896 = 1.00000
+    1935 = 1.00000
+    1936 = 1.00000
+    1939 = 1.00000
+    1941 = 1.00000
+    1948 = 1.00000
+    1950 = 1.00000
+    1951 = 1.00000
+    1954 = 1.00000
+    1956 = 1.00000
+    1963 = 1.00000
+    1972 = 1.00000
+    1978 = 1.00000
+    1981 = 1.00000
+    1987 = 1.00000
+    2019 = 1.00000
+    2022 = 1.00000
+    2028 = 1.00000
+    2031 = 1.00000
+    2044 = 1.00000
+    2050 = 1.00000
+    2053 = 1.00000
+    2059 = 1.00000
+    2067 = 1.00000
+    2068 = 1.00000
+    2070 = 1.00000
+    2074 = 1.00000
+    2076 = 1.00000
+    2077 = 1.00000
+    2079 = 1.00000
+    2083 = 1.00000
+    2115 = 1.00000
+    2118 = 1.00000
+    2124 = 1.00000
+    2127 = 1.00000
+    2140 = 1.00000
+    2146 = 1.00000
+    2149 = 1.00000
+    2155 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2166 = 1.00000
+    2170 = 1.00000
+    2172 = 1.00000
+    2173 = 1.00000
+    2175 = 1.00000
+    2179 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=5
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    8 = 1.00000
+    11 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    26 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    32 = 1.00000
+    35 = 1.00000
+    36 = 1.00000
+    43 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    52 = 1.00000
+    54 = 1.00000
+    60 = 1.00000
+    67 = 1.00000
+    74 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    95 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    101 = 1.00000
+    106 = 1.00000
+    112 = 1.00000
+    121 = 1.00000
+    128 = 1.00000
+    135 = 1.00000
+    137 = 1.00000
+    140 = 1.00000
+    141 = 1.00000
+    147 = 1.00000
+    149 = 1.00000
+    152 = 1.00000
+    155 = 1.00000
+    156 = 1.00000
+    165 = 1.00000
+    171 = 1.00000
+    182 = 1.00000
+    191 = 1.00000
+    197 = 1.00000
+    200 = 1.00000
+    218 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    229 = 1.00000
+    231 = 1.00000
+    237 = 1.00000
+    244 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    253 = 1.00000
+    255 = 1.00000
+    261 = 1.00000
+    268 = 1.00000
+    280 = 1.00000
+    289 = 1.00000
+    295 = 1.00000
+    304 = 1.00000
+    315 = 1.00000
+    321 = 1.00000
+    330 = 1.00000
+    336 = 1.00000
+    376 = 1.00000
+    377 = 1.00000
+    380 = 1.00000
+    382 = 1.00000
+    389 = 1.00000
+    391 = 1.00000
+    392 = 1.00000
+    395 = 1.00000
+    400 = 1.00000
+    406 = 1.00000
+    415 = 1.00000
+    422 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    432 = 1.00000
+    434 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    438 = 1.00000
+    441 = 1.00000
+    443 = 1.00000
+    445 = 1.00000
+    446 = 1.00000
+    449 = 1.00000
+    450 = 1.00000
+    454 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    462 = 1.00000
+    465 = 1.00000
+    469 = 1.00000
+    476 = 1.00000
+    485 = 1.00000
+    491 = 1.00000
+    494 = 1.00000
+    512 = 1.00000
+    519 = 1.00000
+    521 = 1.00000
+    522 = 1.00000
+    525 = 1.00000
+    527 = 1.00000
+    530 = 1.00000
+    531 = 1.00000
+    537 = 1.00000
+    540 = 1.00000
+    548 = 1.00000
+    556 = 1.00000
+    565 = 1.00000
+    571 = 1.00000
+    580 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    597 = 1.00000
+    601 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    609 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    651 = 1.00000
+    654 = 1.00000
+    660 = 1.00000
+    663 = 1.00000
+    675 = 1.00000
+    677 = 1.00000
+    680 = 1.00000
+    681 = 1.00000
+    687 = 1.00000
+    689 = 1.00000
+    692 = 1.00000
+    695 = 1.00000
+    696 = 1.00000
+    705 = 1.00000
+    711 = 1.00000
+    722 = 1.00000
+    731 = 1.00000
+    737 = 1.00000
+    740 = 1.00000
+    758 = 1.00000
+    765 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    769 = 1.00000
+    770 = 1.00000
+    771 = 1.00000
+    772 = 1.00000
+    775 = 1.00000
+    777 = 1.00000
+    779 = 1.00000
+    782 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    786 = 1.00000
+    793 = 1.00000
+    795 = 1.00000
+    796 = 1.00000
+    799 = 1.00000
+    801 = 1.00000
+    808 = 1.00000
+    812 = 1.00000
+    820 = 1.00000
+    821 = 1.00000
+    823 = 1.00000
+    827 = 1.00000
+    829 = 1.00000
+    830 = 1.00000
+    835 = 1.00000
+    838 = 1.00000
+    844 = 1.00000
+    848 = 1.00000
+    855 = 1.00000
+    861 = 1.00000
+    870 = 1.00000
+    876 = 1.00000
+    915 = 1.00000
+    916 = 1.00000
+    919 = 1.00000
+    921 = 1.00000
+    928 = 1.00000
+    930 = 1.00000
+    931 = 1.00000
+    934 = 1.00000
+    936 = 1.00000
+    943 = 1.00000
+    952 = 1.00000
+    958 = 1.00000
+    961 = 1.00000
+    967 = 1.00000
+    977 = 1.00000
+    983 = 1.00000
+    986 = 1.00000
+    1004 = 1.00000
+    1011 = 1.00000
+    1013 = 1.00000
+    1014 = 1.00000
+    1017 = 1.00000
+    1019 = 1.00000
+    1022 = 1.00000
+    1023 = 1.00000
+    1029 = 1.00000
+    1032 = 1.00000
+    1040 = 1.00000
+    1048 = 1.00000
+    1049 = 1.00000
+    1051 = 1.00000
+    1055 = 1.00000
+    1057 = 1.00000
+    1058 = 1.00000
+    1063 = 1.00000
+    1066 = 1.00000
+    1072 = 1.00000
+    1076 = 1.00000
+    1083 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1086 = 1.00000
+    1087 = 1.00000
+    1089 = 1.00000
+    1091 = 1.00000
+    1093 = 1.00000
+    1094 = 1.00000
+    1095 = 1.00000
+    1099 = 1.00000
+    1101 = 1.00000
+    1102 = 1.00000
+    1104 = 1.00000
+    1108 = 1.00000
+    1112 = 1.00000
+    1143 = 1.00000
+    1146 = 1.00000
+    1152 = 1.00000
+    1155 = 1.00000
+    1168 = 1.00000
+    1174 = 1.00000
+    1177 = 1.00000
+    1183 = 1.00000
+    1191 = 1.00000
+    1192 = 1.00000
+    1194 = 1.00000
+    1198 = 1.00000
+    1200 = 1.00000
+    1201 = 1.00000
+    1203 = 1.00000
+    1207 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1219 = 1.00000
+    1221 = 1.00000
+    1227 = 1.00000
+    1234 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1243 = 1.00000
+    1245 = 1.00000
+    1251 = 1.00000
+    1258 = 1.00000
+    1270 = 1.00000
+    1279 = 1.00000
+    1285 = 1.00000
+    1294 = 1.00000
+    1305 = 1.00000
+    1311 = 1.00000
+    1320 = 1.00000
+    1326 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1369 = 1.00000
+    1370 = 1.00000
+    1371 = 1.00000
+    1373 = 1.00000
+    1376 = 1.00000
+    1377 = 1.00000
+    1379 = 1.00000
+    1382 = 1.00000
+    1384 = 1.00000
+    1385 = 1.00000
+    1388 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1393 = 1.00000
+    1395 = 1.00000
+    1401 = 1.00000
+    1408 = 1.00000
+    1415 = 1.00000
+    1420 = 1.00000
+    1421 = 1.00000
+    1424 = 1.00000
+    1427 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1433 = 1.00000
+    1435 = 1.00000
+    1444 = 1.00000
+    1451 = 1.00000
+    1455 = 1.00000
+    1457 = 1.00000
+    1460 = 1.00000
+    1461 = 1.00000
+    1463 = 1.00000
+    1466 = 1.00000
+    1469 = 1.00000
+    1470 = 1.00000
+    1476 = 1.00000
+    1487 = 1.00000
+    1493 = 1.00000
+    1496 = 1.00000
+    1499 = 1.00000
+    1511 = 1.00000
+    1516 = 1.00000
+    1525 = 1.00000
+    1531 = 1.00000
+    1540 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1554 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1569 = 1.00000
+    1572 = 1.00000
+    1576 = 1.00000
+    1611 = 1.00000
+    1614 = 1.00000
+    1620 = 1.00000
+    1623 = 1.00000
+    1636 = 1.00000
+    1637 = 1.00000
+    1640 = 1.00000
+    1643 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1649 = 1.00000
+    1651 = 1.00000
+    1660 = 1.00000
+    1667 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1673 = 1.00000
+    1674 = 1.00000
+    1676 = 1.00000
+    1677 = 1.00000
+    1679 = 1.00000
+    1681 = 1.00000
+    1682 = 1.00000
+    1685 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1689 = 1.00000
+    1692 = 1.00000
+    1696 = 1.00000
+    1703 = 1.00000
+    1709 = 1.00000
+    1712 = 1.00000
+    1715 = 1.00000
+    1727 = 1.00000
+    1731 = 1.00000
+    1733 = 1.00000
+    1734 = 1.00000
+    1736 = 1.00000
+    1739 = 1.00000
+    1740 = 1.00000
+    1743 = 1.00000
+    1751 = 1.00000
+    1755 = 1.00000
+    1761 = 1.00000
+    1770 = 1.00000
+    1776 = 1.00000
+    1815 = 1.00000
+    1816 = 1.00000
+    1819 = 1.00000
+    1821 = 1.00000
+    1828 = 1.00000
+    1830 = 1.00000
+    1831 = 1.00000
+    1834 = 1.00000
+    1836 = 1.00000
+    1843 = 1.00000
+    1852 = 1.00000
+    1858 = 1.00000
+    1861 = 1.00000
+    1867 = 1.00000
+    1875 = 1.00000
+    1877 = 1.00000
+    1880 = 1.00000
+    1881 = 1.00000
+    1883 = 1.00000
+    1886 = 1.00000
+    1889 = 1.00000
+    1890 = 1.00000
+    1896 = 1.00000
+    1907 = 1.00000
+    1913 = 1.00000
+    1916 = 1.00000
+    1919 = 1.00000
+    1931 = 1.00000
+    1935 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1939 = 1.00000
+    1940 = 1.00000
+    1941 = 1.00000
+    1943 = 1.00000
+    1946 = 1.00000
+    1948 = 1.00000
+    1949 = 1.00000
+    1950 = 1.00000
+    1951 = 1.00000
+    1954 = 1.00000
+    1956 = 1.00000
+    1963 = 1.00000
+    1967 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1976 = 1.00000
+    1978 = 1.00000
+    1979 = 1.00000
+    1981 = 1.00000
+    1987 = 1.00000
+    1991 = 1.00000
+    2019 = 1.00000
+    2022 = 1.00000
+    2028 = 1.00000
+    2031 = 1.00000
+    2044 = 1.00000
+    2050 = 1.00000
+    2053 = 1.00000
+    2059 = 1.00000
+    2067 = 1.00000
+    2068 = 1.00000
+    2070 = 1.00000
+    2074 = 1.00000
+    2076 = 1.00000
+    2077 = 1.00000
+    2079 = 1.00000
+    2083 = 1.00000
+    2093 = 1.00000
+    2096 = 1.00000
+    2099 = 1.00000
+    2111 = 1.00000
+    2115 = 1.00000
+    2117 = 1.00000
+    2118 = 1.00000
+    2120 = 1.00000
+    2123 = 1.00000
+    2124 = 1.00000
+    2127 = 1.00000
+    2135 = 1.00000
+    2140 = 1.00000
+    2141 = 1.00000
+    2144 = 1.00000
+    2146 = 1.00000
+    2147 = 1.00000
+    2149 = 1.00000
+    2155 = 1.00000
+    2159 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2166 = 1.00000
+    2168 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2173 = 1.00000
+    2175 = 1.00000
+    2179 = 1.00000
+    2183 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=0
+    0 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    72 = 1.00000
+    73 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    336 = 1.00000
+    342 = 1.00000
+    348 = 1.00000
+    349 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    384 = 1.00000
+    385 = 1.00000
+    396 = 1.00000
+    397 = 1.00000
+    398 = 1.00000
+    399 = 1.00000
+    588 = 1.00000
+    594 = 1.00000
+    600 = 1.00000
+    601 = 1.00000
+    624 = 1.00000
+    625 = 1.00000
+    636 = 1.00000
+    637 = 1.00000
+    648 = 1.00000
+    649 = 1.00000
+    650 = 1.00000
+    651 = 1.00000
+    840 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    864 = 1.00000
+    865 = 1.00000
+    876 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    879 = 1.00000
+    1911 = 1.00000
+    1917 = 1.00000
+    1923 = 1.00000
+    1924 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1959 = 1.00000
+    1960 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    2163 = 1.00000
+    2169 = 1.00000
+    2175 = 1.00000
+    2176 = 1.00000
+    2193 = 1.00000
+    2194 = 1.00000
+    2211 = 1.00000
+    2212 = 1.00000
+    2223 = 1.00000
+    2224 = 1.00000
+    2225 = 1.00000
+    2226 = 1.00000
+    2415 = 1.00000
+    2421 = 1.00000
+    2422 = 1.00000
+    2439 = 1.00000
+    2440 = 1.00000
+    2451 = 1.00000
+    2452 = 1.00000
+    2453 = 1.00000
+    2454 = 1.00000
+    2604 = 1.00000
+    2610 = 1.00000
+    2611 = 1.00000
+    2628 = 1.00000
+    2629 = 1.00000
+    2640 = 1.00000
+    2641 = 1.00000
+    2642 = 1.00000
+    2643 = 1.00000
+    3549 = 1.00000
+    3555 = 1.00000
+    3561 = 1.00000
+    3562 = 1.00000
+    3585 = 1.00000
+    3586 = 1.00000
+    3597 = 1.00000
+    3598 = 1.00000
+    3609 = 1.00000
+    3610 = 1.00000
+    3611 = 1.00000
+    3612 = 1.00000
+    3801 = 1.00000
+    3807 = 1.00000
+    3808 = 1.00000
+    3825 = 1.00000
+    3826 = 1.00000
+    3837 = 1.00000
+    3838 = 1.00000
+    3839 = 1.00000
+    3840 = 1.00000
+    3990 = 1.00000
+    3996 = 1.00000
+    4002 = 1.00000
+    4003 = 1.00000
+    4026 = 1.00000
+    4027 = 1.00000
+    4038 = 1.00000
+    4039 = 1.00000
+    4050 = 1.00000
+    4051 = 1.00000
+    4052 = 1.00000
+    4053 = 1.00000
+    4242 = 1.00000
+    4248 = 1.00000
+    4249 = 1.00000
+    4266 = 1.00000
+    4267 = 1.00000
+    4278 = 1.00000
+    4279 = 1.00000
+    4280 = 1.00000
+    4281 = 1.00000
+    5187 = 1.00000
+    5193 = 1.00000
+    5194 = 1.00000
+    5211 = 1.00000
+    5212 = 1.00000
+    5223 = 1.00000
+    5224 = 1.00000
+    5225 = 1.00000
+    5226 = 1.00000
+    5376 = 1.00000
+    5382 = 1.00000
+    5383 = 1.00000
+    5400 = 1.00000
+    5401 = 1.00000
+    5412 = 1.00000
+    5413 = 1.00000
+    5414 = 1.00000
+    5415 = 1.00000
+    5565 = 1.00000
+    5571 = 1.00000
+    5572 = 1.00000
+    5589 = 1.00000
+    5590 = 1.00000
+    5601 = 1.00000
+    5602 = 1.00000
+    5603 = 1.00000
+    5604 = 1.00000
+    5754 = 1.00000
+    5760 = 1.00000
+    5761 = 1.00000
+    5778 = 1.00000
+    5779 = 1.00000
+    5790 = 1.00000
+    5791 = 1.00000
+    5792 = 1.00000
+    5793 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=1
+    0 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    72 = 1.00000
+    73 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    336 = 1.00000
+    342 = 1.00000
+    348 = 1.00000
+    349 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    384 = 1.00000
+    385 = 1.00000
+    396 = 1.00000
+    397 = 1.00000
+    398 = 1.00000
+    399 = 1.00000
+    588 = 1.00000
+    594 = 1.00000
+    600 = 1.00000
+    601 = 1.00000
+    624 = 1.00000
+    625 = 1.00000
+    636 = 1.00000
+    637 = 1.00000
+    648 = 1.00000
+    649 = 1.00000
+    650 = 1.00000
+    651 = 1.00000
+    840 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    864 = 1.00000
+    865 = 1.00000
+    876 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    879 = 1.00000
+    1173 = 1.00000
+    1176 = 1.00000
+    1179 = 1.00000
+    1182 = 1.00000
+    1185 = 1.00000
+    1186 = 1.00000
+    1203 = 1.00000
+    1204 = 1.00000
+    1221 = 1.00000
+    1222 = 1.00000
+    1227 = 1.00000
+    1228 = 1.00000
+    1233 = 1.00000
+    1234 = 1.00000
+    1235 = 1.00000
+    1236 = 1.00000
+    1425 = 1.00000
+    1428 = 1.00000
+    1431 = 1.00000
+    1432 = 1.00000
+    1443 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1456 = 1.00000
+    1461 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1464 = 1.00000
+    1641 = 1.00000
+    1644 = 1.00000
+    1647 = 1.00000
+    1648 = 1.00000
+    1665 = 1.00000
+    1666 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1677 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1830 = 1.00000
+    1833 = 1.00000
+    1834 = 1.00000
+    1845 = 1.00000
+    1846 = 1.00000
+    1851 = 1.00000
+    1852 = 1.00000
+    1853 = 1.00000
+    1854 = 1.00000
+    1911 = 1.00000
+    1917 = 1.00000
+    1923 = 1.00000
+    1924 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1959 = 1.00000
+    1960 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    2163 = 1.00000
+    2169 = 1.00000
+    2175 = 1.00000
+    2176 = 1.00000
+    2193 = 1.00000
+    2194 = 1.00000
+    2211 = 1.00000
+    2212 = 1.00000
+    2223 = 1.00000
+    2224 = 1.00000
+    2225 = 1.00000
+    2226 = 1.00000
+    2415 = 1.00000
+    2421 = 1.00000
+    2422 = 1.00000
+    2439 = 1.00000
+    2440 = 1.00000
+    2451 = 1.00000
+    2452 = 1.00000
+    2453 = 1.00000
+    2454 = 1.00000
+    2604 = 1.00000
+    2610 = 1.00000
+    2611 = 1.00000
+    2628 = 1.00000
+    2629 = 1.00000
+    2640 = 1.00000
+    2641 = 1.00000
+    2642 = 1.00000
+    2643 = 1.00000
+    2901 = 1.00000
+    2904 = 1.00000
+    2907 = 1.00000
+    2908 = 1.00000
+    2919 = 1.00000
+    2920 = 1.00000
+    2931 = 1.00000
+    2932 = 1.00000
+    2937 = 1.00000
+    2938 = 1.00000
+    2939 = 1.00000
+    2940 = 1.00000
+    3117 = 1.00000
+    3120 = 1.00000
+    3123 = 1.00000
+    3124 = 1.00000
+    3135 = 1.00000
+    3136 = 1.00000
+    3147 = 1.00000
+    3148 = 1.00000
+    3153 = 1.00000
+    3154 = 1.00000
+    3155 = 1.00000
+    3156 = 1.00000
+    3306 = 1.00000
+    3309 = 1.00000
+    3310 = 1.00000
+    3321 = 1.00000
+    3322 = 1.00000
+    3327 = 1.00000
+    3328 = 1.00000
+    3329 = 1.00000
+    3330 = 1.00000
+    3468 = 1.00000
+    3471 = 1.00000
+    3472 = 1.00000
+    3483 = 1.00000
+    3484 = 1.00000
+    3489 = 1.00000
+    3490 = 1.00000
+    3491 = 1.00000
+    3492 = 1.00000
+    3549 = 1.00000
+    3555 = 1.00000
+    3561 = 1.00000
+    3562 = 1.00000
+    3585 = 1.00000
+    3586 = 1.00000
+    3597 = 1.00000
+    3598 = 1.00000
+    3609 = 1.00000
+    3610 = 1.00000
+    3611 = 1.00000
+    3612 = 1.00000
+    3801 = 1.00000
+    3807 = 1.00000
+    3808 = 1.00000
+    3825 = 1.00000
+    3826 = 1.00000
+    3837 = 1.00000
+    3838 = 1.00000
+    3839 = 1.00000
+    3840 = 1.00000
+    3990 = 1.00000
+    3996 = 1.00000
+    4002 = 1.00000
+    4003 = 1.00000
+    4026 = 1.00000
+    4027 = 1.00000
+    4038 = 1.00000
+    4039 = 1.00000
+    4050 = 1.00000
+    4051 = 1.00000
+    4052 = 1.00000
+    4053 = 1.00000
+    4242 = 1.00000
+    4248 = 1.00000
+    4249 = 1.00000
+    4266 = 1.00000
+    4267 = 1.00000
+    4278 = 1.00000
+    4279 = 1.00000
+    4280 = 1.00000
+    4281 = 1.00000
+    4539 = 1.00000
+    4542 = 1.00000
+    4545 = 1.00000
+    4546 = 1.00000
+    4563 = 1.00000
+    4564 = 1.00000
+    4569 = 1.00000
+    4570 = 1.00000
+    4575 = 1.00000
+    4576 = 1.00000
+    4577 = 1.00000
+    4578 = 1.00000
+    4728 = 1.00000
+    4731 = 1.00000
+    4732 = 1.00000
+    4743 = 1.00000
+    4744 = 1.00000
+    4749 = 1.00000
+    4750 = 1.00000
+    4751 = 1.00000
+    4752 = 1.00000
+    4917 = 1.00000
+    4920 = 1.00000
+    4923 = 1.00000
+    4924 = 1.00000
+    4941 = 1.00000
+    4942 = 1.00000
+    4947 = 1.00000
+    4948 = 1.00000
+    4953 = 1.00000
+    4954 = 1.00000
+    4955 = 1.00000
+    4956 = 1.00000
+    5106 = 1.00000
+    5109 = 1.00000
+    5110 = 1.00000
+    5121 = 1.00000
+    5122 = 1.00000
+    5127 = 1.00000
+    5128 = 1.00000
+    5129 = 1.00000
+    5130 = 1.00000
+    5187 = 1.00000
+    5193 = 1.00000
+    5194 = 1.00000
+    5211 = 1.00000
+    5212 = 1.00000
+    5223 = 1.00000
+    5224 = 1.00000
+    5225 = 1.00000
+    5226 = 1.00000
+    5376 = 1.00000
+    5382 = 1.00000
+    5383 = 1.00000
+    5400 = 1.00000
+    5401 = 1.00000
+    5412 = 1.00000
+    5413 = 1.00000
+    5414 = 1.00000
+    5415 = 1.00000
+    5565 = 1.00000
+    5571 = 1.00000
+    5572 = 1.00000
+    5589 = 1.00000
+    5590 = 1.00000
+    5601 = 1.00000
+    5602 = 1.00000
+    5603 = 1.00000
+    5604 = 1.00000
+    5754 = 1.00000
+    5760 = 1.00000
+    5761 = 1.00000
+    5778 = 1.00000
+    5779 = 1.00000
+    5790 = 1.00000
+    5791 = 1.00000
+    5792 = 1.00000
+    5793 = 1.00000
+    6024 = 1.00000
+    6027 = 1.00000
+    6028 = 1.00000
+    6039 = 1.00000
+    6040 = 1.00000
+    6045 = 1.00000
+    6046 = 1.00000
+    6047 = 1.00000
+    6048 = 1.00000
+    6186 = 1.00000
+    6189 = 1.00000
+    6190 = 1.00000
+    6201 = 1.00000
+    6202 = 1.00000
+    6207 = 1.00000
+    6208 = 1.00000
+    6209 = 1.00000
+    6210 = 1.00000
+    6348 = 1.00000
+    6351 = 1.00000
+    6352 = 1.00000
+    6363 = 1.00000
+    6364 = 1.00000
+    6369 = 1.00000
+    6370 = 1.00000
+    6371 = 1.00000
+    6372 = 1.00000
+    6510 = 1.00000
+    6513 = 1.00000
+    6514 = 1.00000
+    6525 = 1.00000
+    6526 = 1.00000
+    6531 = 1.00000
+    6532 = 1.00000
+    6533 = 1.00000
+    6534 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=2
+    0 = 1.00000
+    1 = 1.00000
+    4 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    38 = 1.00000
+    39 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    80 = 1.00000
+    81 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    193 = 1.00000
+    199 = 1.00000
+    212 = 1.00000
+    213 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    242 = 1.00000
+    243 = 1.00000
+    268 = 1.00000
+    269 = 1.00000
+    270 = 1.00000
+    271 = 1.00000
+    336 = 1.00000
+    342 = 1.00000
+    348 = 1.00000
+    349 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    384 = 1.00000
+    385 = 1.00000
+    396 = 1.00000
+    397 = 1.00000
+    398 = 1.00000
+    399 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    600 = 1.00000
+    601 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    632 = 1.00000
+    633 = 1.00000
+    636 = 1.00000
+    637 = 1.00000
+    648 = 1.00000
+    649 = 1.00000
+    650 = 1.00000
+    651 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    678 = 1.00000
+    679 = 1.00000
+    733 = 1.00000
+    746 = 1.00000
+    747 = 1.00000
+    758 = 1.00000
+    759 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    786 = 1.00000
+    787 = 1.00000
+    840 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    864 = 1.00000
+    865 = 1.00000
+    876 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    879 = 1.00000
+    1030 = 1.00000
+    1036 = 1.00000
+    1049 = 1.00000
+    1050 = 1.00000
+    1067 = 1.00000
+    1068 = 1.00000
+    1079 = 1.00000
+    1080 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1108 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1176 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1182 = 1.00000
+    1185 = 1.00000
+    1186 = 1.00000
+    1193 = 1.00000
+    1194 = 1.00000
+    1203 = 1.00000
+    1204 = 1.00000
+    1211 = 1.00000
+    1212 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1227 = 1.00000
+    1228 = 1.00000
+    1233 = 1.00000
+    1234 = 1.00000
+    1235 = 1.00000
+    1236 = 1.00000
+    1249 = 1.00000
+    1250 = 1.00000
+    1251 = 1.00000
+    1252 = 1.00000
+    1425 = 1.00000
+    1428 = 1.00000
+    1431 = 1.00000
+    1432 = 1.00000
+    1443 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1456 = 1.00000
+    1461 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1464 = 1.00000
+    1534 = 1.00000
+    1547 = 1.00000
+    1548 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1585 = 1.00000
+    1586 = 1.00000
+    1587 = 1.00000
+    1588 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1644 = 1.00000
+    1647 = 1.00000
+    1648 = 1.00000
+    1655 = 1.00000
+    1656 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1677 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1696 = 1.00000
+    1830 = 1.00000
+    1833 = 1.00000
+    1834 = 1.00000
+    1845 = 1.00000
+    1846 = 1.00000
+    1851 = 1.00000
+    1852 = 1.00000
+    1853 = 1.00000
+    1854 = 1.00000
+    1911 = 1.00000
+    1917 = 1.00000
+    1923 = 1.00000
+    1924 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1959 = 1.00000
+    1960 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    2163 = 1.00000
+    2169 = 1.00000
+    2175 = 1.00000
+    2176 = 1.00000
+    2193 = 1.00000
+    2194 = 1.00000
+    2211 = 1.00000
+    2212 = 1.00000
+    2223 = 1.00000
+    2224 = 1.00000
+    2225 = 1.00000
+    2226 = 1.00000
+    2415 = 1.00000
+    2421 = 1.00000
+    2422 = 1.00000
+    2439 = 1.00000
+    2440 = 1.00000
+    2451 = 1.00000
+    2452 = 1.00000
+    2453 = 1.00000
+    2454 = 1.00000
+    2604 = 1.00000
+    2610 = 1.00000
+    2611 = 1.00000
+    2628 = 1.00000
+    2629 = 1.00000
+    2640 = 1.00000
+    2641 = 1.00000
+    2642 = 1.00000
+    2643 = 1.00000
+    2901 = 1.00000
+    2904 = 1.00000
+    2907 = 1.00000
+    2908 = 1.00000
+    2919 = 1.00000
+    2920 = 1.00000
+    2931 = 1.00000
+    2932 = 1.00000
+    2937 = 1.00000
+    2938 = 1.00000
+    2939 = 1.00000
+    2940 = 1.00000
+    3117 = 1.00000
+    3120 = 1.00000
+    3123 = 1.00000
+    3124 = 1.00000
+    3135 = 1.00000
+    3136 = 1.00000
+    3147 = 1.00000
+    3148 = 1.00000
+    3153 = 1.00000
+    3154 = 1.00000
+    3155 = 1.00000
+    3156 = 1.00000
+    3306 = 1.00000
+    3309 = 1.00000
+    3310 = 1.00000
+    3321 = 1.00000
+    3322 = 1.00000
+    3327 = 1.00000
+    3328 = 1.00000
+    3329 = 1.00000
+    3330 = 1.00000
+    3468 = 1.00000
+    3471 = 1.00000
+    3472 = 1.00000
+    3483 = 1.00000
+    3484 = 1.00000
+    3489 = 1.00000
+    3490 = 1.00000
+    3491 = 1.00000
+    3492 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3553 = 1.00000
+    3555 = 1.00000
+    3561 = 1.00000
+    3562 = 1.00000
+    3575 = 1.00000
+    3576 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3593 = 1.00000
+    3594 = 1.00000
+    3597 = 1.00000
+    3598 = 1.00000
+    3609 = 1.00000
+    3610 = 1.00000
+    3611 = 1.00000
+    3612 = 1.00000
+    3637 = 1.00000
+    3638 = 1.00000
+    3639 = 1.00000
+    3640 = 1.00000
+    3694 = 1.00000
+    3707 = 1.00000
+    3708 = 1.00000
+    3719 = 1.00000
+    3720 = 1.00000
+    3745 = 1.00000
+    3746 = 1.00000
+    3747 = 1.00000
+    3748 = 1.00000
+    3801 = 1.00000
+    3807 = 1.00000
+    3808 = 1.00000
+    3825 = 1.00000
+    3826 = 1.00000
+    3837 = 1.00000
+    3838 = 1.00000
+    3839 = 1.00000
+    3840 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3994 = 1.00000
+    3996 = 1.00000
+    4002 = 1.00000
+    4003 = 1.00000
+    4016 = 1.00000
+    4017 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4034 = 1.00000
+    4035 = 1.00000
+    4038 = 1.00000
+    4039 = 1.00000
+    4050 = 1.00000
+    4051 = 1.00000
+    4052 = 1.00000
+    4053 = 1.00000
+    4078 = 1.00000
+    4079 = 1.00000
+    4080 = 1.00000
+    4081 = 1.00000
+    4135 = 1.00000
+    4148 = 1.00000
+    4149 = 1.00000
+    4160 = 1.00000
+    4161 = 1.00000
+    4186 = 1.00000
+    4187 = 1.00000
+    4188 = 1.00000
+    4189 = 1.00000
+    4242 = 1.00000
+    4248 = 1.00000
+    4249 = 1.00000
+    4266 = 1.00000
+    4267 = 1.00000
+    4278 = 1.00000
+    4279 = 1.00000
+    4280 = 1.00000
+    4281 = 1.00000
+    4432 = 1.00000
+    4445 = 1.00000
+    4446 = 1.00000
+    4457 = 1.00000
+    4458 = 1.00000
+    4483 = 1.00000
+    4484 = 1.00000
+    4485 = 1.00000
+    4486 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4542 = 1.00000
+    4545 = 1.00000
+    4546 = 1.00000
+    4553 = 1.00000
+    4554 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4569 = 1.00000
+    4570 = 1.00000
+    4575 = 1.00000
+    4576 = 1.00000
+    4577 = 1.00000
+    4578 = 1.00000
+    4591 = 1.00000
+    4592 = 1.00000
+    4593 = 1.00000
+    4594 = 1.00000
+    4728 = 1.00000
+    4731 = 1.00000
+    4732 = 1.00000
+    4743 = 1.00000
+    4744 = 1.00000
+    4749 = 1.00000
+    4750 = 1.00000
+    4751 = 1.00000
+    4752 = 1.00000
+    4810 = 1.00000
+    4823 = 1.00000
+    4824 = 1.00000
+    4835 = 1.00000
+    4836 = 1.00000
+    4861 = 1.00000
+    4862 = 1.00000
+    4863 = 1.00000
+    4864 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4920 = 1.00000
+    4923 = 1.00000
+    4924 = 1.00000
+    4931 = 1.00000
+    4932 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4947 = 1.00000
+    4948 = 1.00000
+    4953 = 1.00000
+    4954 = 1.00000
+    4955 = 1.00000
+    4956 = 1.00000
+    4969 = 1.00000
+    4970 = 1.00000
+    4971 = 1.00000
+    4972 = 1.00000
+    5106 = 1.00000
+    5109 = 1.00000
+    5110 = 1.00000
+    5121 = 1.00000
+    5122 = 1.00000
+    5127 = 1.00000
+    5128 = 1.00000
+    5129 = 1.00000
+    5130 = 1.00000
+    5187 = 1.00000
+    5193 = 1.00000
+    5194 = 1.00000
+    5211 = 1.00000
+    5212 = 1.00000
+    5223 = 1.00000
+    5224 = 1.00000
+    5225 = 1.00000
+    5226 = 1.00000
+    5376 = 1.00000
+    5382 = 1.00000
+    5383 = 1.00000
+    5400 = 1.00000
+    5401 = 1.00000
+    5412 = 1.00000
+    5413 = 1.00000
+    5414 = 1.00000
+    5415 = 1.00000
+    5565 = 1.00000
+    5571 = 1.00000
+    5572 = 1.00000
+    5589 = 1.00000
+    5590 = 1.00000
+    5601 = 1.00000
+    5602 = 1.00000
+    5603 = 1.00000
+    5604 = 1.00000
+    5754 = 1.00000
+    5760 = 1.00000
+    5761 = 1.00000
+    5778 = 1.00000
+    5779 = 1.00000
+    5790 = 1.00000
+    5791 = 1.00000
+    5792 = 1.00000
+    5793 = 1.00000
+    6024 = 1.00000
+    6027 = 1.00000
+    6028 = 1.00000
+    6039 = 1.00000
+    6040 = 1.00000
+    6045 = 1.00000
+    6046 = 1.00000
+    6047 = 1.00000
+    6048 = 1.00000
+    6186 = 1.00000
+    6189 = 1.00000
+    6190 = 1.00000
+    6201 = 1.00000
+    6202 = 1.00000
+    6207 = 1.00000
+    6208 = 1.00000
+    6209 = 1.00000
+    6210 = 1.00000
+    6348 = 1.00000
+    6351 = 1.00000
+    6352 = 1.00000
+    6363 = 1.00000
+    6364 = 1.00000
+    6369 = 1.00000
+    6370 = 1.00000
+    6371 = 1.00000
+    6372 = 1.00000
+    6510 = 1.00000
+    6513 = 1.00000
+    6514 = 1.00000
+    6525 = 1.00000
+    6526 = 1.00000
+    6531 = 1.00000
+    6532 = 1.00000
+    6533 = 1.00000
+    6534 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=3
+    0 = 1.00000
+    1 = 1.00000
+    4 = 1.00000
+    6 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    38 = 1.00000
+    39 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    80 = 1.00000
+    81 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    193 = 1.00000
+    199 = 1.00000
+    212 = 1.00000
+    213 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    242 = 1.00000
+    243 = 1.00000
+    268 = 1.00000
+    269 = 1.00000
+    270 = 1.00000
+    271 = 1.00000
+    336 = 1.00000
+    342 = 1.00000
+    348 = 1.00000
+    349 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    384 = 1.00000
+    385 = 1.00000
+    396 = 1.00000
+    397 = 1.00000
+    398 = 1.00000
+    399 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    600 = 1.00000
+    601 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    632 = 1.00000
+    633 = 1.00000
+    636 = 1.00000
+    637 = 1.00000
+    648 = 1.00000
+    649 = 1.00000
+    650 = 1.00000
+    651 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    678 = 1.00000
+    679 = 1.00000
+    733 = 1.00000
+    746 = 1.00000
+    747 = 1.00000
+    758 = 1.00000
+    759 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    786 = 1.00000
+    787 = 1.00000
+    840 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    864 = 1.00000
+    865 = 1.00000
+    876 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    879 = 1.00000
+    1030 = 1.00000
+    1036 = 1.00000
+    1049 = 1.00000
+    1050 = 1.00000
+    1067 = 1.00000
+    1068 = 1.00000
+    1079 = 1.00000
+    1080 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1108 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1176 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1182 = 1.00000
+    1185 = 1.00000
+    1186 = 1.00000
+    1193 = 1.00000
+    1194 = 1.00000
+    1203 = 1.00000
+    1204 = 1.00000
+    1211 = 1.00000
+    1212 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1227 = 1.00000
+    1228 = 1.00000
+    1233 = 1.00000
+    1234 = 1.00000
+    1235 = 1.00000
+    1236 = 1.00000
+    1249 = 1.00000
+    1250 = 1.00000
+    1251 = 1.00000
+    1252 = 1.00000
+    1425 = 1.00000
+    1428 = 1.00000
+    1431 = 1.00000
+    1432 = 1.00000
+    1443 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1456 = 1.00000
+    1461 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1464 = 1.00000
+    1534 = 1.00000
+    1547 = 1.00000
+    1548 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1585 = 1.00000
+    1586 = 1.00000
+    1587 = 1.00000
+    1588 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1644 = 1.00000
+    1647 = 1.00000
+    1648 = 1.00000
+    1655 = 1.00000
+    1656 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1677 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1696 = 1.00000
+    1830 = 1.00000
+    1833 = 1.00000
+    1834 = 1.00000
+    1845 = 1.00000
+    1846 = 1.00000
+    1851 = 1.00000
+    1852 = 1.00000
+    1853 = 1.00000
+    1854 = 1.00000
+    1911 = 1.00000
+    1917 = 1.00000
+    1923 = 1.00000
+    1924 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1959 = 1.00000
+    1960 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2167 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2173 = 1.00000
+    2175 = 1.00000
+    2176 = 1.00000
+    2189 = 1.00000
+    2190 = 1.00000
+    2193 = 1.00000
+    2194 = 1.00000
+    2207 = 1.00000
+    2208 = 1.00000
+    2211 = 1.00000
+    2213 = 1.00000
+    2212 = 1.00000
+    2214 = 1.00000
+    2219 = 1.00000
+    2220 = 1.00000
+    2223 = 1.00000
+    2224 = 1.00000
+    2225 = 1.00000
+    2226 = 1.00000
+    2251 = 1.00000
+    2252 = 1.00000
+    2253 = 1.00000
+    2254 = 1.00000
+    2308 = 1.00000
+    2311 = 1.00000
+    2321 = 1.00000
+    2322 = 1.00000
+    2333 = 1.00000
+    2334 = 1.00000
+    2339 = 1.00000
+    2340 = 1.00000
+    2359 = 1.00000
+    2360 = 1.00000
+    2361 = 1.00000
+    2362 = 1.00000
+    2415 = 1.00000
+    2421 = 1.00000
+    2422 = 1.00000
+    2439 = 1.00000
+    2440 = 1.00000
+    2451 = 1.00000
+    2452 = 1.00000
+    2453 = 1.00000
+    2454 = 1.00000
+    2604 = 1.00000
+    2605 = 1.00000
+    2608 = 1.00000
+    2610 = 1.00000
+    2611 = 1.00000
+    2624 = 1.00000
+    2625 = 1.00000
+    2628 = 1.00000
+    2630 = 1.00000
+    2629 = 1.00000
+    2631 = 1.00000
+    2636 = 1.00000
+    2637 = 1.00000
+    2640 = 1.00000
+    2641 = 1.00000
+    2642 = 1.00000
+    2643 = 1.00000
+    2668 = 1.00000
+    2669 = 1.00000
+    2670 = 1.00000
+    2671 = 1.00000
+    2713 = 1.00000
+    2723 = 1.00000
+    2724 = 1.00000
+    2729 = 1.00000
+    2730 = 1.00000
+    2749 = 1.00000
+    2750 = 1.00000
+    2751 = 1.00000
+    2752 = 1.00000
+    2901 = 1.00000
+    2904 = 1.00000
+    2907 = 1.00000
+    2908 = 1.00000
+    2919 = 1.00000
+    2920 = 1.00000
+    2931 = 1.00000
+    2932 = 1.00000
+    2937 = 1.00000
+    2938 = 1.00000
+    2939 = 1.00000
+    2940 = 1.00000
+    3010 = 1.00000
+    3013 = 1.00000
+    3023 = 1.00000
+    3024 = 1.00000
+    3035 = 1.00000
+    3036 = 1.00000
+    3041 = 1.00000
+    3042 = 1.00000
+    3061 = 1.00000
+    3062 = 1.00000
+    3063 = 1.00000
+    3064 = 1.00000
+    3117 = 1.00000
+    3118 = 1.00000
+    3120 = 1.00000
+    3121 = 1.00000
+    3123 = 1.00000
+    3124 = 1.00000
+    3131 = 1.00000
+    3132 = 1.00000
+    3135 = 1.00000
+    3136 = 1.00000
+    3143 = 1.00000
+    3144 = 1.00000
+    3147 = 1.00000
+    3149 = 1.00000
+    3148 = 1.00000
+    3150 = 1.00000
+    3153 = 1.00000
+    3154 = 1.00000
+    3155 = 1.00000
+    3156 = 1.00000
+    3169 = 1.00000
+    3170 = 1.00000
+    3171 = 1.00000
+    3172 = 1.00000
+    3306 = 1.00000
+    3309 = 1.00000
+    3310 = 1.00000
+    3321 = 1.00000
+    3322 = 1.00000
+    3327 = 1.00000
+    3328 = 1.00000
+    3329 = 1.00000
+    3330 = 1.00000
+    3388 = 1.00000
+    3398 = 1.00000
+    3399 = 1.00000
+    3404 = 1.00000
+    3405 = 1.00000
+    3424 = 1.00000
+    3425 = 1.00000
+    3426 = 1.00000
+    3427 = 1.00000
+    3468 = 1.00000
+    3469 = 1.00000
+    3471 = 1.00000
+    3472 = 1.00000
+    3479 = 1.00000
+    3480 = 1.00000
+    3483 = 1.00000
+    3485 = 1.00000
+    3484 = 1.00000
+    3486 = 1.00000
+    3489 = 1.00000
+    3490 = 1.00000
+    3491 = 1.00000
+    3492 = 1.00000
+    3505 = 1.00000
+    3506 = 1.00000
+    3507 = 1.00000
+    3508 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3553 = 1.00000
+    3555 = 1.00000
+    3561 = 1.00000
+    3562 = 1.00000
+    3575 = 1.00000
+    3576 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3593 = 1.00000
+    3594 = 1.00000
+    3597 = 1.00000
+    3598 = 1.00000
+    3609 = 1.00000
+    3610 = 1.00000
+    3611 = 1.00000
+    3612 = 1.00000
+    3637 = 1.00000
+    3638 = 1.00000
+    3639 = 1.00000
+    3640 = 1.00000
+    3694 = 1.00000
+    3707 = 1.00000
+    3708 = 1.00000
+    3719 = 1.00000
+    3720 = 1.00000
+    3745 = 1.00000
+    3746 = 1.00000
+    3747 = 1.00000
+    3748 = 1.00000
+    3801 = 1.00000
+    3807 = 1.00000
+    3808 = 1.00000
+    3825 = 1.00000
+    3826 = 1.00000
+    3837 = 1.00000
+    3838 = 1.00000
+    3839 = 1.00000
+    3840 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3994 = 1.00000
+    3996 = 1.00000
+    4002 = 1.00000
+    4003 = 1.00000
+    4016 = 1.00000
+    4017 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4034 = 1.00000
+    4035 = 1.00000
+    4038 = 1.00000
+    4039 = 1.00000
+    4050 = 1.00000
+    4051 = 1.00000
+    4052 = 1.00000
+    4053 = 1.00000
+    4078 = 1.00000
+    4079 = 1.00000
+    4080 = 1.00000
+    4081 = 1.00000
+    4135 = 1.00000
+    4148 = 1.00000
+    4149 = 1.00000
+    4160 = 1.00000
+    4161 = 1.00000
+    4186 = 1.00000
+    4187 = 1.00000
+    4188 = 1.00000
+    4189 = 1.00000
+    4242 = 1.00000
+    4248 = 1.00000
+    4249 = 1.00000
+    4266 = 1.00000
+    4267 = 1.00000
+    4278 = 1.00000
+    4279 = 1.00000
+    4280 = 1.00000
+    4281 = 1.00000
+    4432 = 1.00000
+    4445 = 1.00000
+    4446 = 1.00000
+    4457 = 1.00000
+    4458 = 1.00000
+    4483 = 1.00000
+    4484 = 1.00000
+    4485 = 1.00000
+    4486 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4542 = 1.00000
+    4545 = 1.00000
+    4546 = 1.00000
+    4553 = 1.00000
+    4554 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4569 = 1.00000
+    4570 = 1.00000
+    4575 = 1.00000
+    4576 = 1.00000
+    4577 = 1.00000
+    4578 = 1.00000
+    4591 = 1.00000
+    4592 = 1.00000
+    4593 = 1.00000
+    4594 = 1.00000
+    4728 = 1.00000
+    4731 = 1.00000
+    4732 = 1.00000
+    4743 = 1.00000
+    4744 = 1.00000
+    4749 = 1.00000
+    4750 = 1.00000
+    4751 = 1.00000
+    4752 = 1.00000
+    4810 = 1.00000
+    4823 = 1.00000
+    4824 = 1.00000
+    4835 = 1.00000
+    4836 = 1.00000
+    4861 = 1.00000
+    4862 = 1.00000
+    4863 = 1.00000
+    4864 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4920 = 1.00000
+    4923 = 1.00000
+    4924 = 1.00000
+    4931 = 1.00000
+    4932 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4947 = 1.00000
+    4948 = 1.00000
+    4953 = 1.00000
+    4954 = 1.00000
+    4955 = 1.00000
+    4956 = 1.00000
+    4969 = 1.00000
+    4970 = 1.00000
+    4971 = 1.00000
+    4972 = 1.00000
+    5106 = 1.00000
+    5109 = 1.00000
+    5110 = 1.00000
+    5121 = 1.00000
+    5122 = 1.00000
+    5127 = 1.00000
+    5128 = 1.00000
+    5129 = 1.00000
+    5130 = 1.00000
+    5187 = 1.00000
+    5193 = 1.00000
+    5194 = 1.00000
+    5211 = 1.00000
+    5212 = 1.00000
+    5223 = 1.00000
+    5224 = 1.00000
+    5225 = 1.00000
+    5226 = 1.00000
+    5376 = 1.00000
+    5377 = 1.00000
+    5380 = 1.00000
+    5382 = 1.00000
+    5383 = 1.00000
+    5396 = 1.00000
+    5397 = 1.00000
+    5400 = 1.00000
+    5402 = 1.00000
+    5401 = 1.00000
+    5403 = 1.00000
+    5408 = 1.00000
+    5409 = 1.00000
+    5412 = 1.00000
+    5413 = 1.00000
+    5414 = 1.00000
+    5415 = 1.00000
+    5440 = 1.00000
+    5441 = 1.00000
+    5442 = 1.00000
+    5443 = 1.00000
+    5485 = 1.00000
+    5495 = 1.00000
+    5496 = 1.00000
+    5501 = 1.00000
+    5502 = 1.00000
+    5521 = 1.00000
+    5522 = 1.00000
+    5523 = 1.00000
+    5524 = 1.00000
+    5565 = 1.00000
+    5571 = 1.00000
+    5572 = 1.00000
+    5589 = 1.00000
+    5590 = 1.00000
+    5601 = 1.00000
+    5602 = 1.00000
+    5603 = 1.00000
+    5604 = 1.00000
+    5754 = 1.00000
+    5755 = 1.00000
+    5758 = 1.00000
+    5760 = 1.00000
+    5761 = 1.00000
+    5774 = 1.00000
+    5775 = 1.00000
+    5778 = 1.00000
+    5780 = 1.00000
+    5779 = 1.00000
+    5781 = 1.00000
+    5786 = 1.00000
+    5787 = 1.00000
+    5790 = 1.00000
+    5791 = 1.00000
+    5792 = 1.00000
+    5793 = 1.00000
+    5818 = 1.00000
+    5819 = 1.00000
+    5820 = 1.00000
+    5821 = 1.00000
+    5863 = 1.00000
+    5873 = 1.00000
+    5874 = 1.00000
+    5879 = 1.00000
+    5880 = 1.00000
+    5899 = 1.00000
+    5900 = 1.00000
+    5901 = 1.00000
+    5902 = 1.00000
+    6024 = 1.00000
+    6027 = 1.00000
+    6028 = 1.00000
+    6039 = 1.00000
+    6040 = 1.00000
+    6045 = 1.00000
+    6046 = 1.00000
+    6047 = 1.00000
+    6048 = 1.00000
+    6106 = 1.00000
+    6116 = 1.00000
+    6117 = 1.00000
+    6122 = 1.00000
+    6123 = 1.00000
+    6142 = 1.00000
+    6143 = 1.00000
+    6144 = 1.00000
+    6145 = 1.00000
+    6186 = 1.00000
+    6187 = 1.00000
+    6189 = 1.00000
+    6190 = 1.00000
+    6197 = 1.00000
+    6198 = 1.00000
+    6201 = 1.00000
+    6203 = 1.00000
+    6202 = 1.00000
+    6204 = 1.00000
+    6207 = 1.00000
+    6208 = 1.00000
+    6209 = 1.00000
+    6210 = 1.00000
+    6223 = 1.00000
+    6224 = 1.00000
+    6225 = 1.00000
+    6226 = 1.00000
+    6348 = 1.00000
+    6351 = 1.00000
+    6352 = 1.00000
+    6363 = 1.00000
+    6364 = 1.00000
+    6369 = 1.00000
+    6370 = 1.00000
+    6371 = 1.00000
+    6372 = 1.00000
+    6430 = 1.00000
+    6440 = 1.00000
+    6441 = 1.00000
+    6446 = 1.00000
+    6447 = 1.00000
+    6466 = 1.00000
+    6467 = 1.00000
+    6468 = 1.00000
+    6469 = 1.00000
+    6510 = 1.00000
+    6511 = 1.00000
+    6513 = 1.00000
+    6514 = 1.00000
+    6521 = 1.00000
+    6522 = 1.00000
+    6525 = 1.00000
+    6527 = 1.00000
+    6526 = 1.00000
+    6528 = 1.00000
+    6531 = 1.00000
+    6532 = 1.00000
+    6533 = 1.00000
+    6534 = 1.00000
+    6547 = 1.00000
+    6548 = 1.00000
+    6549 = 1.00000
+    6550 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=4
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    8 = 1.00000
+    11 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    28 = 1.00000
+    25 = 1.00000
+    29 = 1.00000
+    34 = 1.00000
+    35 = 1.00000
+    38 = 1.00000
+    40 = 1.00000
+    39 = 1.00000
+    41 = 1.00000
+    46 = 1.00000
+    47 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    80 = 1.00000
+    81 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    152 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    193 = 1.00000
+    194 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    212 = 1.00000
+    214 = 1.00000
+    213 = 1.00000
+    215 = 1.00000
+    220 = 1.00000
+    221 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    242 = 1.00000
+    243 = 1.00000
+    268 = 1.00000
+    269 = 1.00000
+    270 = 1.00000
+    271 = 1.00000
+    296 = 1.00000
+    297 = 1.00000
+    298 = 1.00000
+    299 = 1.00000
+    336 = 1.00000
+    338 = 1.00000
+    341 = 1.00000
+    342 = 1.00000
+    348 = 1.00000
+    352 = 1.00000
+    349 = 1.00000
+    353 = 1.00000
+    358 = 1.00000
+    359 = 1.00000
+    364 = 1.00000
+    365 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    384 = 1.00000
+    385 = 1.00000
+    396 = 1.00000
+    397 = 1.00000
+    398 = 1.00000
+    399 = 1.00000
+    440 = 1.00000
+    441 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    482 = 1.00000
+    490 = 1.00000
+    491 = 1.00000
+    496 = 1.00000
+    497 = 1.00000
+    548 = 1.00000
+    549 = 1.00000
+    550 = 1.00000
+    551 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    600 = 1.00000
+    601 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    632 = 1.00000
+    633 = 1.00000
+    636 = 1.00000
+    637 = 1.00000
+    648 = 1.00000
+    649 = 1.00000
+    650 = 1.00000
+    651 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    678 = 1.00000
+    679 = 1.00000
+    733 = 1.00000
+    746 = 1.00000
+    747 = 1.00000
+    758 = 1.00000
+    759 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    786 = 1.00000
+    787 = 1.00000
+    840 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    864 = 1.00000
+    865 = 1.00000
+    876 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    879 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1034 = 1.00000
+    1036 = 1.00000
+    1045 = 1.00000
+    1046 = 1.00000
+    1049 = 1.00000
+    1051 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1057 = 1.00000
+    1058 = 1.00000
+    1067 = 1.00000
+    1068 = 1.00000
+    1079 = 1.00000
+    1080 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1108 = 1.00000
+    1133 = 1.00000
+    1134 = 1.00000
+    1135 = 1.00000
+    1136 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1178 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1182 = 1.00000
+    1185 = 1.00000
+    1189 = 1.00000
+    1186 = 1.00000
+    1190 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1194 = 1.00000
+    1196 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1203 = 1.00000
+    1204 = 1.00000
+    1211 = 1.00000
+    1212 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1227 = 1.00000
+    1228 = 1.00000
+    1233 = 1.00000
+    1234 = 1.00000
+    1235 = 1.00000
+    1236 = 1.00000
+    1249 = 1.00000
+    1250 = 1.00000
+    1251 = 1.00000
+    1252 = 1.00000
+    1277 = 1.00000
+    1278 = 1.00000
+    1279 = 1.00000
+    1280 = 1.00000
+    1319 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1333 = 1.00000
+    1334 = 1.00000
+    1385 = 1.00000
+    1386 = 1.00000
+    1387 = 1.00000
+    1388 = 1.00000
+    1425 = 1.00000
+    1427 = 1.00000
+    1428 = 1.00000
+    1431 = 1.00000
+    1435 = 1.00000
+    1432 = 1.00000
+    1436 = 1.00000
+    1441 = 1.00000
+    1442 = 1.00000
+    1443 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1456 = 1.00000
+    1461 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1464 = 1.00000
+    1493 = 1.00000
+    1494 = 1.00000
+    1495 = 1.00000
+    1496 = 1.00000
+    1534 = 1.00000
+    1547 = 1.00000
+    1548 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1585 = 1.00000
+    1586 = 1.00000
+    1587 = 1.00000
+    1588 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1644 = 1.00000
+    1647 = 1.00000
+    1648 = 1.00000
+    1655 = 1.00000
+    1656 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1677 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1696 = 1.00000
+    1830 = 1.00000
+    1833 = 1.00000
+    1834 = 1.00000
+    1845 = 1.00000
+    1846 = 1.00000
+    1851 = 1.00000
+    1852 = 1.00000
+    1853 = 1.00000
+    1854 = 1.00000
+    1911 = 1.00000
+    1913 = 1.00000
+    1916 = 1.00000
+    1917 = 1.00000
+    1923 = 1.00000
+    1927 = 1.00000
+    1924 = 1.00000
+    1928 = 1.00000
+    1933 = 1.00000
+    1934 = 1.00000
+    1939 = 1.00000
+    1940 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1959 = 1.00000
+    1960 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    2015 = 1.00000
+    2016 = 1.00000
+    2017 = 1.00000
+    2018 = 1.00000
+    2057 = 1.00000
+    2065 = 1.00000
+    2066 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2123 = 1.00000
+    2124 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2173 = 1.00000
+    2175 = 1.00000
+    2179 = 1.00000
+    2176 = 1.00000
+    2180 = 1.00000
+    2185 = 1.00000
+    2186 = 1.00000
+    2189 = 1.00000
+    2191 = 1.00000
+    2190 = 1.00000
+    2192 = 1.00000
+    2193 = 1.00000
+    2194 = 1.00000
+    2207 = 1.00000
+    2208 = 1.00000
+    2211 = 1.00000
+    2213 = 1.00000
+    2212 = 1.00000
+    2214 = 1.00000
+    2219 = 1.00000
+    2220 = 1.00000
+    2223 = 1.00000
+    2224 = 1.00000
+    2225 = 1.00000
+    2226 = 1.00000
+    2251 = 1.00000
+    2252 = 1.00000
+    2253 = 1.00000
+    2254 = 1.00000
+    2267 = 1.00000
+    2268 = 1.00000
+    2269 = 1.00000
+    2270 = 1.00000
+    2308 = 1.00000
+    2309 = 1.00000
+    2311 = 1.00000
+    2317 = 1.00000
+    2318 = 1.00000
+    2321 = 1.00000
+    2323 = 1.00000
+    2322 = 1.00000
+    2324 = 1.00000
+    2333 = 1.00000
+    2334 = 1.00000
+    2339 = 1.00000
+    2340 = 1.00000
+    2359 = 1.00000
+    2360 = 1.00000
+    2361 = 1.00000
+    2362 = 1.00000
+    2375 = 1.00000
+    2376 = 1.00000
+    2377 = 1.00000
+    2378 = 1.00000
+    2415 = 1.00000
+    2421 = 1.00000
+    2422 = 1.00000
+    2439 = 1.00000
+    2440 = 1.00000
+    2451 = 1.00000
+    2452 = 1.00000
+    2453 = 1.00000
+    2454 = 1.00000
+    2604 = 1.00000
+    2605 = 1.00000
+    2608 = 1.00000
+    2610 = 1.00000
+    2611 = 1.00000
+    2624 = 1.00000
+    2625 = 1.00000
+    2628 = 1.00000
+    2630 = 1.00000
+    2629 = 1.00000
+    2631 = 1.00000
+    2636 = 1.00000
+    2637 = 1.00000
+    2640 = 1.00000
+    2641 = 1.00000
+    2642 = 1.00000
+    2643 = 1.00000
+    2668 = 1.00000
+    2669 = 1.00000
+    2670 = 1.00000
+    2671 = 1.00000
+    2713 = 1.00000
+    2723 = 1.00000
+    2724 = 1.00000
+    2729 = 1.00000
+    2730 = 1.00000
+    2749 = 1.00000
+    2750 = 1.00000
+    2751 = 1.00000
+    2752 = 1.00000
+    2795 = 1.00000
+    2803 = 1.00000
+    2804 = 1.00000
+    2809 = 1.00000
+    2810 = 1.00000
+    2861 = 1.00000
+    2862 = 1.00000
+    2863 = 1.00000
+    2864 = 1.00000
+    2901 = 1.00000
+    2903 = 1.00000
+    2904 = 1.00000
+    2907 = 1.00000
+    2911 = 1.00000
+    2908 = 1.00000
+    2912 = 1.00000
+    2917 = 1.00000
+    2918 = 1.00000
+    2919 = 1.00000
+    2920 = 1.00000
+    2931 = 1.00000
+    2932 = 1.00000
+    2937 = 1.00000
+    2938 = 1.00000
+    2939 = 1.00000
+    2940 = 1.00000
+    2969 = 1.00000
+    2970 = 1.00000
+    2971 = 1.00000
+    2972 = 1.00000
+    3010 = 1.00000
+    3011 = 1.00000
+    3013 = 1.00000
+    3019 = 1.00000
+    3020 = 1.00000
+    3023 = 1.00000
+    3025 = 1.00000
+    3024 = 1.00000
+    3026 = 1.00000
+    3035 = 1.00000
+    3036 = 1.00000
+    3041 = 1.00000
+    3042 = 1.00000
+    3061 = 1.00000
+    3062 = 1.00000
+    3063 = 1.00000
+    3064 = 1.00000
+    3077 = 1.00000
+    3078 = 1.00000
+    3079 = 1.00000
+    3080 = 1.00000
+    3117 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3120 = 1.00000
+    3121 = 1.00000
+    3123 = 1.00000
+    3127 = 1.00000
+    3124 = 1.00000
+    3128 = 1.00000
+    3131 = 1.00000
+    3133 = 1.00000
+    3132 = 1.00000
+    3134 = 1.00000
+    3135 = 1.00000
+    3136 = 1.00000
+    3143 = 1.00000
+    3144 = 1.00000
+    3147 = 1.00000
+    3149 = 1.00000
+    3148 = 1.00000
+    3150 = 1.00000
+    3153 = 1.00000
+    3154 = 1.00000
+    3155 = 1.00000
+    3156 = 1.00000
+    3169 = 1.00000
+    3170 = 1.00000
+    3171 = 1.00000
+    3172 = 1.00000
+    3185 = 1.00000
+    3186 = 1.00000
+    3187 = 1.00000
+    3188 = 1.00000
+    3306 = 1.00000
+    3309 = 1.00000
+    3310 = 1.00000
+    3321 = 1.00000
+    3322 = 1.00000
+    3327 = 1.00000
+    3328 = 1.00000
+    3329 = 1.00000
+    3330 = 1.00000
+    3388 = 1.00000
+    3398 = 1.00000
+    3399 = 1.00000
+    3404 = 1.00000
+    3405 = 1.00000
+    3424 = 1.00000
+    3425 = 1.00000
+    3426 = 1.00000
+    3427 = 1.00000
+    3468 = 1.00000
+    3469 = 1.00000
+    3471 = 1.00000
+    3472 = 1.00000
+    3479 = 1.00000
+    3480 = 1.00000
+    3483 = 1.00000
+    3485 = 1.00000
+    3484 = 1.00000
+    3486 = 1.00000
+    3489 = 1.00000
+    3490 = 1.00000
+    3491 = 1.00000
+    3492 = 1.00000
+    3505 = 1.00000
+    3506 = 1.00000
+    3507 = 1.00000
+    3508 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3553 = 1.00000
+    3555 = 1.00000
+    3561 = 1.00000
+    3562 = 1.00000
+    3575 = 1.00000
+    3576 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3593 = 1.00000
+    3594 = 1.00000
+    3597 = 1.00000
+    3598 = 1.00000
+    3609 = 1.00000
+    3610 = 1.00000
+    3611 = 1.00000
+    3612 = 1.00000
+    3637 = 1.00000
+    3638 = 1.00000
+    3639 = 1.00000
+    3640 = 1.00000
+    3694 = 1.00000
+    3707 = 1.00000
+    3708 = 1.00000
+    3719 = 1.00000
+    3720 = 1.00000
+    3745 = 1.00000
+    3746 = 1.00000
+    3747 = 1.00000
+    3748 = 1.00000
+    3801 = 1.00000
+    3807 = 1.00000
+    3808 = 1.00000
+    3825 = 1.00000
+    3826 = 1.00000
+    3837 = 1.00000
+    3838 = 1.00000
+    3839 = 1.00000
+    3840 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3994 = 1.00000
+    3996 = 1.00000
+    4002 = 1.00000
+    4003 = 1.00000
+    4016 = 1.00000
+    4017 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4034 = 1.00000
+    4035 = 1.00000
+    4038 = 1.00000
+    4039 = 1.00000
+    4050 = 1.00000
+    4051 = 1.00000
+    4052 = 1.00000
+    4053 = 1.00000
+    4078 = 1.00000
+    4079 = 1.00000
+    4080 = 1.00000
+    4081 = 1.00000
+    4135 = 1.00000
+    4148 = 1.00000
+    4149 = 1.00000
+    4160 = 1.00000
+    4161 = 1.00000
+    4186 = 1.00000
+    4187 = 1.00000
+    4188 = 1.00000
+    4189 = 1.00000
+    4242 = 1.00000
+    4248 = 1.00000
+    4249 = 1.00000
+    4266 = 1.00000
+    4267 = 1.00000
+    4278 = 1.00000
+    4279 = 1.00000
+    4280 = 1.00000
+    4281 = 1.00000
+    4432 = 1.00000
+    4445 = 1.00000
+    4446 = 1.00000
+    4457 = 1.00000
+    4458 = 1.00000
+    4483 = 1.00000
+    4484 = 1.00000
+    4485 = 1.00000
+    4486 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4542 = 1.00000
+    4545 = 1.00000
+    4546 = 1.00000
+    4553 = 1.00000
+    4554 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4569 = 1.00000
+    4570 = 1.00000
+    4575 = 1.00000
+    4576 = 1.00000
+    4577 = 1.00000
+    4578 = 1.00000
+    4591 = 1.00000
+    4592 = 1.00000
+    4593 = 1.00000
+    4594 = 1.00000
+    4728 = 1.00000
+    4731 = 1.00000
+    4732 = 1.00000
+    4743 = 1.00000
+    4744 = 1.00000
+    4749 = 1.00000
+    4750 = 1.00000
+    4751 = 1.00000
+    4752 = 1.00000
+    4810 = 1.00000
+    4823 = 1.00000
+    4824 = 1.00000
+    4835 = 1.00000
+    4836 = 1.00000
+    4861 = 1.00000
+    4862 = 1.00000
+    4863 = 1.00000
+    4864 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4920 = 1.00000
+    4923 = 1.00000
+    4924 = 1.00000
+    4931 = 1.00000
+    4932 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4947 = 1.00000
+    4948 = 1.00000
+    4953 = 1.00000
+    4954 = 1.00000
+    4955 = 1.00000
+    4956 = 1.00000
+    4969 = 1.00000
+    4970 = 1.00000
+    4971 = 1.00000
+    4972 = 1.00000
+    5106 = 1.00000
+    5109 = 1.00000
+    5110 = 1.00000
+    5121 = 1.00000
+    5122 = 1.00000
+    5127 = 1.00000
+    5128 = 1.00000
+    5129 = 1.00000
+    5130 = 1.00000
+    5187 = 1.00000
+    5193 = 1.00000
+    5194 = 1.00000
+    5211 = 1.00000
+    5212 = 1.00000
+    5223 = 1.00000
+    5224 = 1.00000
+    5225 = 1.00000
+    5226 = 1.00000
+    5376 = 1.00000
+    5377 = 1.00000
+    5380 = 1.00000
+    5382 = 1.00000
+    5383 = 1.00000
+    5396 = 1.00000
+    5397 = 1.00000
+    5400 = 1.00000
+    5402 = 1.00000
+    5401 = 1.00000
+    5403 = 1.00000
+    5408 = 1.00000
+    5409 = 1.00000
+    5412 = 1.00000
+    5413 = 1.00000
+    5414 = 1.00000
+    5415 = 1.00000
+    5440 = 1.00000
+    5441 = 1.00000
+    5442 = 1.00000
+    5443 = 1.00000
+    5485 = 1.00000
+    5495 = 1.00000
+    5496 = 1.00000
+    5501 = 1.00000
+    5502 = 1.00000
+    5521 = 1.00000
+    5522 = 1.00000
+    5523 = 1.00000
+    5524 = 1.00000
+    5565 = 1.00000
+    5571 = 1.00000
+    5572 = 1.00000
+    5589 = 1.00000
+    5590 = 1.00000
+    5601 = 1.00000
+    5602 = 1.00000
+    5603 = 1.00000
+    5604 = 1.00000
+    5754 = 1.00000
+    5755 = 1.00000
+    5758 = 1.00000
+    5760 = 1.00000
+    5761 = 1.00000
+    5774 = 1.00000
+    5775 = 1.00000
+    5778 = 1.00000
+    5780 = 1.00000
+    5779 = 1.00000
+    5781 = 1.00000
+    5786 = 1.00000
+    5787 = 1.00000
+    5790 = 1.00000
+    5791 = 1.00000
+    5792 = 1.00000
+    5793 = 1.00000
+    5818 = 1.00000
+    5819 = 1.00000
+    5820 = 1.00000
+    5821 = 1.00000
+    5863 = 1.00000
+    5873 = 1.00000
+    5874 = 1.00000
+    5879 = 1.00000
+    5880 = 1.00000
+    5899 = 1.00000
+    5900 = 1.00000
+    5901 = 1.00000
+    5902 = 1.00000
+    6024 = 1.00000
+    6027 = 1.00000
+    6028 = 1.00000
+    6039 = 1.00000
+    6040 = 1.00000
+    6045 = 1.00000
+    6046 = 1.00000
+    6047 = 1.00000
+    6048 = 1.00000
+    6106 = 1.00000
+    6116 = 1.00000
+    6117 = 1.00000
+    6122 = 1.00000
+    6123 = 1.00000
+    6142 = 1.00000
+    6143 = 1.00000
+    6144 = 1.00000
+    6145 = 1.00000
+    6186 = 1.00000
+    6187 = 1.00000
+    6189 = 1.00000
+    6190 = 1.00000
+    6197 = 1.00000
+    6198 = 1.00000
+    6201 = 1.00000
+    6203 = 1.00000
+    6202 = 1.00000
+    6204 = 1.00000
+    6207 = 1.00000
+    6208 = 1.00000
+    6209 = 1.00000
+    6210 = 1.00000
+    6223 = 1.00000
+    6224 = 1.00000
+    6225 = 1.00000
+    6226 = 1.00000
+    6348 = 1.00000
+    6351 = 1.00000
+    6352 = 1.00000
+    6363 = 1.00000
+    6364 = 1.00000
+    6369 = 1.00000
+    6370 = 1.00000
+    6371 = 1.00000
+    6372 = 1.00000
+    6430 = 1.00000
+    6440 = 1.00000
+    6441 = 1.00000
+    6446 = 1.00000
+    6447 = 1.00000
+    6466 = 1.00000
+    6467 = 1.00000
+    6468 = 1.00000
+    6469 = 1.00000
+    6510 = 1.00000
+    6511 = 1.00000
+    6513 = 1.00000
+    6514 = 1.00000
+    6521 = 1.00000
+    6522 = 1.00000
+    6525 = 1.00000
+    6527 = 1.00000
+    6526 = 1.00000
+    6528 = 1.00000
+    6531 = 1.00000
+    6532 = 1.00000
+    6533 = 1.00000
+    6534 = 1.00000
+    6547 = 1.00000
+    6548 = 1.00000
+    6549 = 1.00000
+    6550 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=5
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    8 = 1.00000
+    11 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    16 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    28 = 1.00000
+    25 = 1.00000
+    29 = 1.00000
+    34 = 1.00000
+    35 = 1.00000
+    38 = 1.00000
+    40 = 1.00000
+    39 = 1.00000
+    41 = 1.00000
+    46 = 1.00000
+    47 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    80 = 1.00000
+    81 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    152 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    193 = 1.00000
+    194 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    212 = 1.00000
+    214 = 1.00000
+    213 = 1.00000
+    215 = 1.00000
+    220 = 1.00000
+    221 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    242 = 1.00000
+    243 = 1.00000
+    268 = 1.00000
+    269 = 1.00000
+    270 = 1.00000
+    271 = 1.00000
+    296 = 1.00000
+    297 = 1.00000
+    298 = 1.00000
+    299 = 1.00000
+    336 = 1.00000
+    338 = 1.00000
+    341 = 1.00000
+    342 = 1.00000
+    348 = 1.00000
+    352 = 1.00000
+    349 = 1.00000
+    353 = 1.00000
+    358 = 1.00000
+    359 = 1.00000
+    364 = 1.00000
+    365 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    384 = 1.00000
+    385 = 1.00000
+    396 = 1.00000
+    397 = 1.00000
+    398 = 1.00000
+    399 = 1.00000
+    440 = 1.00000
+    441 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    482 = 1.00000
+    490 = 1.00000
+    491 = 1.00000
+    496 = 1.00000
+    497 = 1.00000
+    548 = 1.00000
+    549 = 1.00000
+    550 = 1.00000
+    551 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    592 = 1.00000
+    594 = 1.00000
+    600 = 1.00000
+    601 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    632 = 1.00000
+    633 = 1.00000
+    636 = 1.00000
+    637 = 1.00000
+    648 = 1.00000
+    649 = 1.00000
+    650 = 1.00000
+    651 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    678 = 1.00000
+    679 = 1.00000
+    733 = 1.00000
+    746 = 1.00000
+    747 = 1.00000
+    758 = 1.00000
+    759 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    786 = 1.00000
+    787 = 1.00000
+    840 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    864 = 1.00000
+    865 = 1.00000
+    876 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    879 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1034 = 1.00000
+    1036 = 1.00000
+    1045 = 1.00000
+    1046 = 1.00000
+    1049 = 1.00000
+    1051 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1057 = 1.00000
+    1058 = 1.00000
+    1067 = 1.00000
+    1068 = 1.00000
+    1079 = 1.00000
+    1080 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1108 = 1.00000
+    1133 = 1.00000
+    1134 = 1.00000
+    1135 = 1.00000
+    1136 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1178 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1182 = 1.00000
+    1185 = 1.00000
+    1189 = 1.00000
+    1186 = 1.00000
+    1190 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1194 = 1.00000
+    1196 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1203 = 1.00000
+    1204 = 1.00000
+    1211 = 1.00000
+    1212 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1227 = 1.00000
+    1228 = 1.00000
+    1233 = 1.00000
+    1234 = 1.00000
+    1235 = 1.00000
+    1236 = 1.00000
+    1249 = 1.00000
+    1250 = 1.00000
+    1251 = 1.00000
+    1252 = 1.00000
+    1277 = 1.00000
+    1278 = 1.00000
+    1279 = 1.00000
+    1280 = 1.00000
+    1319 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1333 = 1.00000
+    1334 = 1.00000
+    1385 = 1.00000
+    1386 = 1.00000
+    1387 = 1.00000
+    1388 = 1.00000
+    1425 = 1.00000
+    1427 = 1.00000
+    1428 = 1.00000
+    1431 = 1.00000
+    1435 = 1.00000
+    1432 = 1.00000
+    1436 = 1.00000
+    1441 = 1.00000
+    1442 = 1.00000
+    1443 = 1.00000
+    1444 = 1.00000
+    1455 = 1.00000
+    1456 = 1.00000
+    1461 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1464 = 1.00000
+    1493 = 1.00000
+    1494 = 1.00000
+    1495 = 1.00000
+    1496 = 1.00000
+    1534 = 1.00000
+    1547 = 1.00000
+    1548 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1585 = 1.00000
+    1586 = 1.00000
+    1587 = 1.00000
+    1588 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1644 = 1.00000
+    1647 = 1.00000
+    1648 = 1.00000
+    1655 = 1.00000
+    1656 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1677 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1696 = 1.00000
+    1830 = 1.00000
+    1833 = 1.00000
+    1834 = 1.00000
+    1845 = 1.00000
+    1846 = 1.00000
+    1851 = 1.00000
+    1852 = 1.00000
+    1853 = 1.00000
+    1854 = 1.00000
+    1911 = 1.00000
+    1913 = 1.00000
+    1916 = 1.00000
+    1917 = 1.00000
+    1923 = 1.00000
+    1927 = 1.00000
+    1924 = 1.00000
+    1928 = 1.00000
+    1933 = 1.00000
+    1934 = 1.00000
+    1939 = 1.00000
+    1940 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1959 = 1.00000
+    1960 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    2015 = 1.00000
+    2016 = 1.00000
+    2017 = 1.00000
+    2018 = 1.00000
+    2057 = 1.00000
+    2065 = 1.00000
+    2066 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2123 = 1.00000
+    2124 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2173 = 1.00000
+    2175 = 1.00000
+    2179 = 1.00000
+    2176 = 1.00000
+    2180 = 1.00000
+    2185 = 1.00000
+    2186 = 1.00000
+    2189 = 1.00000
+    2191 = 1.00000
+    2190 = 1.00000
+    2192 = 1.00000
+    2193 = 1.00000
+    2194 = 1.00000
+    2207 = 1.00000
+    2208 = 1.00000
+    2211 = 1.00000
+    2213 = 1.00000
+    2212 = 1.00000
+    2214 = 1.00000
+    2219 = 1.00000
+    2220 = 1.00000
+    2223 = 1.00000
+    2224 = 1.00000
+    2225 = 1.00000
+    2226 = 1.00000
+    2251 = 1.00000
+    2252 = 1.00000
+    2253 = 1.00000
+    2254 = 1.00000
+    2267 = 1.00000
+    2268 = 1.00000
+    2269 = 1.00000
+    2270 = 1.00000
+    2308 = 1.00000
+    2309 = 1.00000
+    2311 = 1.00000
+    2317 = 1.00000
+    2318 = 1.00000
+    2321 = 1.00000
+    2323 = 1.00000
+    2322 = 1.00000
+    2324 = 1.00000
+    2333 = 1.00000
+    2334 = 1.00000
+    2339 = 1.00000
+    2340 = 1.00000
+    2359 = 1.00000
+    2360 = 1.00000
+    2361 = 1.00000
+    2362 = 1.00000
+    2375 = 1.00000
+    2376 = 1.00000
+    2377 = 1.00000
+    2378 = 1.00000
+    2415 = 1.00000
+    2421 = 1.00000
+    2422 = 1.00000
+    2439 = 1.00000
+    2440 = 1.00000
+    2451 = 1.00000
+    2452 = 1.00000
+    2453 = 1.00000
+    2454 = 1.00000
+    2604 = 1.00000
+    2605 = 1.00000
+    2608 = 1.00000
+    2610 = 1.00000
+    2611 = 1.00000
+    2624 = 1.00000
+    2625 = 1.00000
+    2628 = 1.00000
+    2630 = 1.00000
+    2629 = 1.00000
+    2631 = 1.00000
+    2636 = 1.00000
+    2637 = 1.00000
+    2640 = 1.00000
+    2641 = 1.00000
+    2642 = 1.00000
+    2643 = 1.00000
+    2668 = 1.00000
+    2669 = 1.00000
+    2670 = 1.00000
+    2671 = 1.00000
+    2713 = 1.00000
+    2723 = 1.00000
+    2724 = 1.00000
+    2729 = 1.00000
+    2730 = 1.00000
+    2749 = 1.00000
+    2750 = 1.00000
+    2751 = 1.00000
+    2752 = 1.00000
+    2795 = 1.00000
+    2803 = 1.00000
+    2804 = 1.00000
+    2809 = 1.00000
+    2810 = 1.00000
+    2861 = 1.00000
+    2862 = 1.00000
+    2863 = 1.00000
+    2864 = 1.00000
+    2901 = 1.00000
+    2903 = 1.00000
+    2904 = 1.00000
+    2907 = 1.00000
+    2911 = 1.00000
+    2908 = 1.00000
+    2912 = 1.00000
+    2917 = 1.00000
+    2918 = 1.00000
+    2919 = 1.00000
+    2920 = 1.00000
+    2931 = 1.00000
+    2932 = 1.00000
+    2937 = 1.00000
+    2938 = 1.00000
+    2939 = 1.00000
+    2940 = 1.00000
+    2969 = 1.00000
+    2970 = 1.00000
+    2971 = 1.00000
+    2972 = 1.00000
+    3010 = 1.00000
+    3011 = 1.00000
+    3013 = 1.00000
+    3019 = 1.00000
+    3020 = 1.00000
+    3023 = 1.00000
+    3025 = 1.00000
+    3024 = 1.00000
+    3026 = 1.00000
+    3035 = 1.00000
+    3036 = 1.00000
+    3041 = 1.00000
+    3042 = 1.00000
+    3061 = 1.00000
+    3062 = 1.00000
+    3063 = 1.00000
+    3064 = 1.00000
+    3077 = 1.00000
+    3078 = 1.00000
+    3079 = 1.00000
+    3080 = 1.00000
+    3117 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3120 = 1.00000
+    3121 = 1.00000
+    3123 = 1.00000
+    3127 = 1.00000
+    3124 = 1.00000
+    3128 = 1.00000
+    3131 = 1.00000
+    3133 = 1.00000
+    3132 = 1.00000
+    3134 = 1.00000
+    3135 = 1.00000
+    3136 = 1.00000
+    3143 = 1.00000
+    3144 = 1.00000
+    3147 = 1.00000
+    3149 = 1.00000
+    3148 = 1.00000
+    3150 = 1.00000
+    3153 = 1.00000
+    3154 = 1.00000
+    3155 = 1.00000
+    3156 = 1.00000
+    3169 = 1.00000
+    3170 = 1.00000
+    3171 = 1.00000
+    3172 = 1.00000
+    3185 = 1.00000
+    3186 = 1.00000
+    3187 = 1.00000
+    3188 = 1.00000
+    3306 = 1.00000
+    3309 = 1.00000
+    3310 = 1.00000
+    3321 = 1.00000
+    3322 = 1.00000
+    3327 = 1.00000
+    3328 = 1.00000
+    3329 = 1.00000
+    3330 = 1.00000
+    3388 = 1.00000
+    3398 = 1.00000
+    3399 = 1.00000
+    3404 = 1.00000
+    3405 = 1.00000
+    3424 = 1.00000
+    3425 = 1.00000
+    3426 = 1.00000
+    3427 = 1.00000
+    3468 = 1.00000
+    3469 = 1.00000
+    3471 = 1.00000
+    3472 = 1.00000
+    3479 = 1.00000
+    3480 = 1.00000
+    3483 = 1.00000
+    3485 = 1.00000
+    3484 = 1.00000
+    3486 = 1.00000
+    3489 = 1.00000
+    3490 = 1.00000
+    3491 = 1.00000
+    3492 = 1.00000
+    3505 = 1.00000
+    3506 = 1.00000
+    3507 = 1.00000
+    3508 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3553 = 1.00000
+    3555 = 1.00000
+    3561 = 1.00000
+    3562 = 1.00000
+    3575 = 1.00000
+    3576 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3593 = 1.00000
+    3594 = 1.00000
+    3597 = 1.00000
+    3598 = 1.00000
+    3609 = 1.00000
+    3610 = 1.00000
+    3611 = 1.00000
+    3612 = 1.00000
+    3637 = 1.00000
+    3638 = 1.00000
+    3639 = 1.00000
+    3640 = 1.00000
+    3694 = 1.00000
+    3707 = 1.00000
+    3708 = 1.00000
+    3719 = 1.00000
+    3720 = 1.00000
+    3745 = 1.00000
+    3746 = 1.00000
+    3747 = 1.00000
+    3748 = 1.00000
+    3801 = 1.00000
+    3807 = 1.00000
+    3808 = 1.00000
+    3825 = 1.00000
+    3826 = 1.00000
+    3837 = 1.00000
+    3838 = 1.00000
+    3839 = 1.00000
+    3840 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3994 = 1.00000
+    3995 = 1.00000
+    3996 = 1.00000
+    3998 = 1.00000
+    4001 = 1.00000
+    4002 = 1.00000
+    4006 = 1.00000
+    4003 = 1.00000
+    4007 = 1.00000
+    4012 = 1.00000
+    4013 = 1.00000
+    4016 = 1.00000
+    4018 = 1.00000
+    4017 = 1.00000
+    4019 = 1.00000
+    4024 = 1.00000
+    4025 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4034 = 1.00000
+    4035 = 1.00000
+    4038 = 1.00000
+    4039 = 1.00000
+    4050 = 1.00000
+    4051 = 1.00000
+    4052 = 1.00000
+    4053 = 1.00000
+    4078 = 1.00000
+    4079 = 1.00000
+    4080 = 1.00000
+    4081 = 1.00000
+    4106 = 1.00000
+    4107 = 1.00000
+    4108 = 1.00000
+    4109 = 1.00000
+    4135 = 1.00000
+    4136 = 1.00000
+    4139 = 1.00000
+    4144 = 1.00000
+    4145 = 1.00000
+    4148 = 1.00000
+    4150 = 1.00000
+    4149 = 1.00000
+    4151 = 1.00000
+    4156 = 1.00000
+    4157 = 1.00000
+    4160 = 1.00000
+    4161 = 1.00000
+    4186 = 1.00000
+    4187 = 1.00000
+    4188 = 1.00000
+    4189 = 1.00000
+    4214 = 1.00000
+    4215 = 1.00000
+    4216 = 1.00000
+    4217 = 1.00000
+    4242 = 1.00000
+    4244 = 1.00000
+    4247 = 1.00000
+    4248 = 1.00000
+    4252 = 1.00000
+    4249 = 1.00000
+    4253 = 1.00000
+    4258 = 1.00000
+    4259 = 1.00000
+    4264 = 1.00000
+    4265 = 1.00000
+    4266 = 1.00000
+    4267 = 1.00000
+    4278 = 1.00000
+    4279 = 1.00000
+    4280 = 1.00000
+    4281 = 1.00000
+    4322 = 1.00000
+    4323 = 1.00000
+    4324 = 1.00000
+    4325 = 1.00000
+    4352 = 1.00000
+    4357 = 1.00000
+    4358 = 1.00000
+    4363 = 1.00000
+    4364 = 1.00000
+    4403 = 1.00000
+    4404 = 1.00000
+    4405 = 1.00000
+    4406 = 1.00000
+    4432 = 1.00000
+    4445 = 1.00000
+    4446 = 1.00000
+    4457 = 1.00000
+    4458 = 1.00000
+    4483 = 1.00000
+    4484 = 1.00000
+    4485 = 1.00000
+    4486 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4542 = 1.00000
+    4545 = 1.00000
+    4546 = 1.00000
+    4553 = 1.00000
+    4554 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4569 = 1.00000
+    4570 = 1.00000
+    4575 = 1.00000
+    4576 = 1.00000
+    4577 = 1.00000
+    4578 = 1.00000
+    4591 = 1.00000
+    4592 = 1.00000
+    4593 = 1.00000
+    4594 = 1.00000
+    4728 = 1.00000
+    4731 = 1.00000
+    4732 = 1.00000
+    4743 = 1.00000
+    4744 = 1.00000
+    4749 = 1.00000
+    4750 = 1.00000
+    4751 = 1.00000
+    4752 = 1.00000
+    4810 = 1.00000
+    4811 = 1.00000
+    4814 = 1.00000
+    4819 = 1.00000
+    4820 = 1.00000
+    4823 = 1.00000
+    4825 = 1.00000
+    4824 = 1.00000
+    4826 = 1.00000
+    4831 = 1.00000
+    4832 = 1.00000
+    4835 = 1.00000
+    4836 = 1.00000
+    4861 = 1.00000
+    4862 = 1.00000
+    4863 = 1.00000
+    4864 = 1.00000
+    4889 = 1.00000
+    4890 = 1.00000
+    4891 = 1.00000
+    4892 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4919 = 1.00000
+    4920 = 1.00000
+    4922 = 1.00000
+    4923 = 1.00000
+    4927 = 1.00000
+    4924 = 1.00000
+    4928 = 1.00000
+    4931 = 1.00000
+    4933 = 1.00000
+    4932 = 1.00000
+    4934 = 1.00000
+    4939 = 1.00000
+    4940 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4947 = 1.00000
+    4948 = 1.00000
+    4953 = 1.00000
+    4954 = 1.00000
+    4955 = 1.00000
+    4956 = 1.00000
+    4969 = 1.00000
+    4970 = 1.00000
+    4971 = 1.00000
+    4972 = 1.00000
+    4997 = 1.00000
+    4998 = 1.00000
+    4999 = 1.00000
+    5000 = 1.00000
+    5027 = 1.00000
+    5032 = 1.00000
+    5033 = 1.00000
+    5038 = 1.00000
+    5039 = 1.00000
+    5078 = 1.00000
+    5079 = 1.00000
+    5080 = 1.00000
+    5081 = 1.00000
+    5106 = 1.00000
+    5108 = 1.00000
+    5109 = 1.00000
+    5113 = 1.00000
+    5110 = 1.00000
+    5114 = 1.00000
+    5119 = 1.00000
+    5120 = 1.00000
+    5121 = 1.00000
+    5122 = 1.00000
+    5127 = 1.00000
+    5128 = 1.00000
+    5129 = 1.00000
+    5130 = 1.00000
+    5159 = 1.00000
+    5160 = 1.00000
+    5161 = 1.00000
+    5162 = 1.00000
+    5187 = 1.00000
+    5193 = 1.00000
+    5194 = 1.00000
+    5211 = 1.00000
+    5212 = 1.00000
+    5223 = 1.00000
+    5224 = 1.00000
+    5225 = 1.00000
+    5226 = 1.00000
+    5376 = 1.00000
+    5377 = 1.00000
+    5380 = 1.00000
+    5382 = 1.00000
+    5383 = 1.00000
+    5396 = 1.00000
+    5397 = 1.00000
+    5400 = 1.00000
+    5402 = 1.00000
+    5401 = 1.00000
+    5403 = 1.00000
+    5408 = 1.00000
+    5409 = 1.00000
+    5412 = 1.00000
+    5413 = 1.00000
+    5414 = 1.00000
+    5415 = 1.00000
+    5440 = 1.00000
+    5441 = 1.00000
+    5442 = 1.00000
+    5443 = 1.00000
+    5485 = 1.00000
+    5495 = 1.00000
+    5496 = 1.00000
+    5501 = 1.00000
+    5502 = 1.00000
+    5521 = 1.00000
+    5522 = 1.00000
+    5523 = 1.00000
+    5524 = 1.00000
+    5565 = 1.00000
+    5567 = 1.00000
+    5570 = 1.00000
+    5571 = 1.00000
+    5575 = 1.00000
+    5572 = 1.00000
+    5576 = 1.00000
+    5581 = 1.00000
+    5582 = 1.00000
+    5587 = 1.00000
+    5588 = 1.00000
+    5589 = 1.00000
+    5590 = 1.00000
+    5601 = 1.00000
+    5602 = 1.00000
+    5603 = 1.00000
+    5604 = 1.00000
+    5645 = 1.00000
+    5646 = 1.00000
+    5647 = 1.00000
+    5648 = 1.00000
+    5675 = 1.00000
+    5680 = 1.00000
+    5681 = 1.00000
+    5686 = 1.00000
+    5687 = 1.00000
+    5726 = 1.00000
+    5727 = 1.00000
+    5728 = 1.00000
+    5729 = 1.00000
+    5754 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5758 = 1.00000
+    5759 = 1.00000
+    5760 = 1.00000
+    5764 = 1.00000
+    5761 = 1.00000
+    5765 = 1.00000
+    5770 = 1.00000
+    5771 = 1.00000
+    5774 = 1.00000
+    5776 = 1.00000
+    5775 = 1.00000
+    5777 = 1.00000
+    5778 = 1.00000
+    5780 = 1.00000
+    5779 = 1.00000
+    5781 = 1.00000
+    5786 = 1.00000
+    5787 = 1.00000
+    5790 = 1.00000
+    5791 = 1.00000
+    5792 = 1.00000
+    5793 = 1.00000
+    5818 = 1.00000
+    5819 = 1.00000
+    5820 = 1.00000
+    5821 = 1.00000
+    5834 = 1.00000
+    5835 = 1.00000
+    5836 = 1.00000
+    5837 = 1.00000
+    5863 = 1.00000
+    5864 = 1.00000
+    5869 = 1.00000
+    5870 = 1.00000
+    5873 = 1.00000
+    5875 = 1.00000
+    5874 = 1.00000
+    5876 = 1.00000
+    5879 = 1.00000
+    5880 = 1.00000
+    5899 = 1.00000
+    5900 = 1.00000
+    5901 = 1.00000
+    5902 = 1.00000
+    5915 = 1.00000
+    5916 = 1.00000
+    5917 = 1.00000
+    5918 = 1.00000
+    6024 = 1.00000
+    6027 = 1.00000
+    6028 = 1.00000
+    6039 = 1.00000
+    6040 = 1.00000
+    6045 = 1.00000
+    6046 = 1.00000
+    6047 = 1.00000
+    6048 = 1.00000
+    6106 = 1.00000
+    6116 = 1.00000
+    6117 = 1.00000
+    6122 = 1.00000
+    6123 = 1.00000
+    6142 = 1.00000
+    6143 = 1.00000
+    6144 = 1.00000
+    6145 = 1.00000
+    6186 = 1.00000
+    6187 = 1.00000
+    6189 = 1.00000
+    6190 = 1.00000
+    6197 = 1.00000
+    6198 = 1.00000
+    6201 = 1.00000
+    6203 = 1.00000
+    6202 = 1.00000
+    6204 = 1.00000
+    6207 = 1.00000
+    6208 = 1.00000
+    6209 = 1.00000
+    6210 = 1.00000
+    6223 = 1.00000
+    6224 = 1.00000
+    6225 = 1.00000
+    6226 = 1.00000
+    6269 = 1.00000
+    6274 = 1.00000
+    6275 = 1.00000
+    6280 = 1.00000
+    6281 = 1.00000
+    6320 = 1.00000
+    6321 = 1.00000
+    6322 = 1.00000
+    6323 = 1.00000
+    6348 = 1.00000
+    6350 = 1.00000
+    6351 = 1.00000
+    6355 = 1.00000
+    6352 = 1.00000
+    6356 = 1.00000
+    6361 = 1.00000
+    6362 = 1.00000
+    6363 = 1.00000
+    6364 = 1.00000
+    6369 = 1.00000
+    6370 = 1.00000
+    6371 = 1.00000
+    6372 = 1.00000
+    6401 = 1.00000
+    6402 = 1.00000
+    6403 = 1.00000
+    6404 = 1.00000
+    6430 = 1.00000
+    6431 = 1.00000
+    6436 = 1.00000
+    6437 = 1.00000
+    6440 = 1.00000
+    6442 = 1.00000
+    6441 = 1.00000
+    6443 = 1.00000
+    6446 = 1.00000
+    6447 = 1.00000
+    6466 = 1.00000
+    6467 = 1.00000
+    6468 = 1.00000
+    6469 = 1.00000
+    6482 = 1.00000
+    6483 = 1.00000
+    6484 = 1.00000
+    6485 = 1.00000
+    6510 = 1.00000
+    6511 = 1.00000
+    6512 = 1.00000
+    6513 = 1.00000
+    6517 = 1.00000
+    6514 = 1.00000
+    6518 = 1.00000
+    6521 = 1.00000
+    6523 = 1.00000
+    6522 = 1.00000
+    6524 = 1.00000
+    6525 = 1.00000
+    6527 = 1.00000
+    6526 = 1.00000
+    6528 = 1.00000
+    6531 = 1.00000
+    6532 = 1.00000
+    6533 = 1.00000
+    6534 = 1.00000
+    6547 = 1.00000
+    6548 = 1.00000
+    6549 = 1.00000
+    6550 = 1.00000
+    6563 = 1.00000
+    6564 = 1.00000
+    6565 = 1.00000
+    6566 = 1.00000
diff --git a/tests/deal.II/tangential_flux_inhom_01.cc b/tests/deal.II/tangential_flux_inhom_01.cc
new file mode 100644 (file)
index 0000000..808cd5d
--- /dev/null
@@ -0,0 +1,129 @@
+// ---------------------------------------------------------------------
+// $Id: normal_flux_01.cc 31349 2013-10-20 19:07:06Z maier $
+//
+// Copyright (C) 2007 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// check the creation of tangential flux boundary conditions for a finite
+// element that consists of only a single set of vector components
+// (i.e. it has dim components). Similar as the normal-flux test in 
+// normal_flux_inhom_01.cc
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/mapping_q1.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/numerics/vector_tools.h>
+
+#include <fstream>
+
+
+template<int dim>
+void test (const Triangulation<dim> &tr,
+           const FiniteElement<dim> &fe)
+{
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  ConstantFunction<dim> constant_function(1.,dim);
+  typename FunctionMap<dim>::type function_map;
+  for (unsigned int j=0; j<GeometryInfo<dim>::faces_per_cell; ++j)
+    function_map[j] = &constant_function;
+
+  for (unsigned int i=0; i<GeometryInfo<dim>::faces_per_cell; ++i)
+    {
+      deallog << "FE=" << fe.get_name()
+              << ", case=" << i
+              << std::endl;
+
+      std::set<types::boundary_id> boundary_ids;
+      for (unsigned int j=0; j<=i; ++j)
+        boundary_ids.insert (j);
+
+      ConstraintMatrix cm;
+      VectorTools::compute_nonzero_tangential_flux_constraints
+        (dof, 0, boundary_ids, function_map, cm);
+
+      cm.print (deallog.get_file_stream ());
+    }
+    //Get the location of all boundary dofs
+    std::vector<types::global_dof_index> face_dofs;
+    const std::vector<Point<dim-1> > &
+      unit_support_points = fe.get_unit_face_support_points();
+    Quadrature<dim-1> quadrature(unit_support_points);
+    FEFaceValues<dim, dim> fe_face_values(fe, quadrature, update_q_points);
+    typename DoFHandler<dim>::active_cell_iterator
+    cell = dof.begin_active(),
+    endc = dof.end();
+    for (; cell!=endc; ++cell)
+      for (unsigned int face_no=0; face_no < GeometryInfo<dim>::faces_per_cell;
+           ++face_no)
+        if (cell->face(face_no)->at_boundary())
+        {
+          typename DoFHandler<dim>::face_iterator face = cell->face(face_no);
+          face_dofs.resize (fe.dofs_per_face);
+          face->get_dof_indices (face_dofs);
+         
+          fe_face_values.reinit(cell, face_no);
+          for (unsigned int i=0; i<face_dofs.size(); ++i)
+          {
+            std::cout << face_dofs[i] << "\t"
+                      << fe_face_values.quadrature_point(i) << "\t"
+                      << fe.face_system_to_component_index(i).first
+                      << std::endl;
+          }
+        }
+}
+
+
+template<int dim>
+void test_hyper_cube()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr);
+
+  for (unsigned int i=0; i<GeometryInfo<dim>::faces_per_cell; ++i)
+    tr.begin_active()->face(i)->set_boundary_indicator (i);
+
+  tr.refine_global(2);
+
+  for (unsigned int degree=1; degree<4; ++degree)
+    {
+      FESystem<dim> fe (FE_Q<dim>(degree), dim);
+      test(tr, fe);
+    }
+}
+
+
+int main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision (2);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console (0);
+  deallog.threshold_double(1.e-12);
+
+  test_hyper_cube<2>();
+  test_hyper_cube<3>();
+}
diff --git a/tests/deal.II/tangential_flux_inhom_01.output b/tests/deal.II/tangential_flux_inhom_01.output
new file mode 100644 (file)
index 0000000..368ee28
--- /dev/null
@@ -0,0 +1,11149 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=0
+    1 = 1.00000
+    5 = 1.00000
+    13 = 1.00000
+    31 = 1.00000
+    37 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=1
+    1 = 1.00000
+    5 = 1.00000
+    13 = 1.00000
+    23 = 1.00000
+    25 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    37 = 1.00000
+    45 = 1.00000
+    49 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=2
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    5 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    18 = 1.00000
+    22 = 1.00000
+    23 = 1.00000
+    25 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    37 = 1.00000
+    45 = 1.00000
+    49 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(1)^2], case=3
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    5 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    18 = 1.00000
+    22 = 1.00000
+    23 = 1.00000
+    25 = 1.00000
+    29 = 1.00000
+    31 = 1.00000
+    36 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    40 = 1.00000
+    45 = 1.00000
+    46 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=0
+    1 = 1.00000
+    5 = 1.00000
+    9 = 1.00000
+    31 = 1.00000
+    35 = 1.00000
+    91 = 1.00000
+    95 = 1.00000
+    111 = 1.00000
+    115 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=1
+    1 = 1.00000
+    5 = 1.00000
+    9 = 1.00000
+    31 = 1.00000
+    35 = 1.00000
+    63 = 1.00000
+    65 = 1.00000
+    67 = 1.00000
+    83 = 1.00000
+    85 = 1.00000
+    91 = 1.00000
+    95 = 1.00000
+    111 = 1.00000
+    115 = 1.00000
+    139 = 1.00000
+    141 = 1.00000
+    155 = 1.00000
+    157 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=2
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    5 = 1.00000
+    9 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    31 = 1.00000
+    35 = 1.00000
+    50 = 1.00000
+    56 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    65 = 1.00000
+    67 = 1.00000
+    68 = 1.00000
+    83 = 1.00000
+    85 = 1.00000
+    91 = 1.00000
+    95 = 1.00000
+    111 = 1.00000
+    115 = 1.00000
+    139 = 1.00000
+    141 = 1.00000
+    155 = 1.00000
+    157 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(2)^2], case=3
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    5 = 1.00000
+    9 = 1.00000
+    12 = 1.00000
+    18 = 1.00000
+    24 = 1.00000
+    31 = 1.00000
+    35 = 1.00000
+    50 = 1.00000
+    56 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    65 = 1.00000
+    67 = 1.00000
+    68 = 1.00000
+    83 = 1.00000
+    85 = 1.00000
+    91 = 1.00000
+    95 = 1.00000
+    110 = 1.00000
+    111 = 1.00000
+    112 = 1.00000
+    115 = 1.00000
+    118 = 1.00000
+    122 = 1.00000
+    126 = 1.00000
+    139 = 1.00000
+    141 = 1.00000
+    146 = 1.00000
+    150 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=0
+    1 = 1.00000
+    5 = 1.00000
+    10 = 1.00000
+    11 = 1.00000
+    57 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    183 = 1.00000
+    188 = 1.00000
+    189 = 1.00000
+    225 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=1
+    1 = 1.00000
+    5 = 1.00000
+    10 = 1.00000
+    11 = 1.00000
+    57 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    123 = 1.00000
+    125 = 1.00000
+    128 = 1.00000
+    129 = 1.00000
+    165 = 1.00000
+    168 = 1.00000
+    169 = 1.00000
+    183 = 1.00000
+    188 = 1.00000
+    189 = 1.00000
+    225 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    285 = 1.00000
+    288 = 1.00000
+    289 = 1.00000
+    321 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=2
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    5 = 1.00000
+    10 = 1.00000
+    11 = 1.00000
+    16 = 1.00000
+    17 = 1.00000
+    32 = 1.00000
+    40 = 1.00000
+    41 = 1.00000
+    57 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    98 = 1.00000
+    106 = 1.00000
+    107 = 1.00000
+    122 = 1.00000
+    123 = 1.00000
+    125 = 1.00000
+    128 = 1.00000
+    129 = 1.00000
+    130 = 1.00000
+    131 = 1.00000
+    165 = 1.00000
+    168 = 1.00000
+    169 = 1.00000
+    183 = 1.00000
+    188 = 1.00000
+    189 = 1.00000
+    225 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    285 = 1.00000
+    288 = 1.00000
+    289 = 1.00000
+    321 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+DEAL::FE=FESystem<2>[FE_Q<2>(3)^2], case=3
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    5 = 1.00000
+    10 = 1.00000
+    11 = 1.00000
+    16 = 1.00000
+    17 = 1.00000
+    32 = 1.00000
+    40 = 1.00000
+    41 = 1.00000
+    57 = 1.00000
+    62 = 1.00000
+    63 = 1.00000
+    98 = 1.00000
+    106 = 1.00000
+    107 = 1.00000
+    122 = 1.00000
+    123 = 1.00000
+    125 = 1.00000
+    128 = 1.00000
+    129 = 1.00000
+    130 = 1.00000
+    131 = 1.00000
+    165 = 1.00000
+    168 = 1.00000
+    169 = 1.00000
+    183 = 1.00000
+    188 = 1.00000
+    189 = 1.00000
+    224 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    230 = 1.00000
+    231 = 1.00000
+    236 = 1.00000
+    237 = 1.00000
+    248 = 1.00000
+    254 = 1.00000
+    255 = 1.00000
+    285 = 1.00000
+    288 = 1.00000
+    289 = 1.00000
+    302 = 1.00000
+    308 = 1.00000
+    309 = 1.00000
+    320 = 1.00000
+    321 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    327 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=0
+    1 = 1.00000
+    2 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    43 = 1.00000
+    44 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    73 = 1.00000
+    74 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    160 = 1.00000
+    161 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    181 = 1.00000
+    182 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    244 = 1.00000
+    245 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    259 = 1.00000
+    260 = 1.00000
+    271 = 1.00000
+    272 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    334 = 1.00000
+    335 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=1
+    1 = 1.00000
+    2 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    43 = 1.00000
+    44 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    73 = 1.00000
+    74 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    100 = 1.00000
+    101 = 1.00000
+    103 = 1.00000
+    104 = 1.00000
+    112 = 1.00000
+    113 = 1.00000
+    115 = 1.00000
+    116 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    127 = 1.00000
+    128 = 1.00000
+    133 = 1.00000
+    134 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    160 = 1.00000
+    161 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    181 = 1.00000
+    182 = 1.00000
+    196 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    200 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    211 = 1.00000
+    212 = 1.00000
+    217 = 1.00000
+    218 = 1.00000
+    223 = 1.00000
+    224 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    244 = 1.00000
+    245 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    259 = 1.00000
+    260 = 1.00000
+    271 = 1.00000
+    272 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    289 = 1.00000
+    290 = 1.00000
+    295 = 1.00000
+    296 = 1.00000
+    304 = 1.00000
+    305 = 1.00000
+    307 = 1.00000
+    308 = 1.00000
+    313 = 1.00000
+    314 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    334 = 1.00000
+    335 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    355 = 1.00000
+    356 = 1.00000
+    361 = 1.00000
+    362 = 1.00000
+    367 = 1.00000
+    368 = 1.00000
+    373 = 1.00000
+    374 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=2
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    5 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    26 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    43 = 1.00000
+    44 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    57 = 1.00000
+    59 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    73 = 1.00000
+    74 = 1.00000
+    81 = 1.00000
+    83 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    101 = 1.00000
+    103 = 1.00000
+    104 = 1.00000
+    112 = 1.00000
+    113 = 1.00000
+    115 = 1.00000
+    116 = 1.00000
+    117 = 1.00000
+    119 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    127 = 1.00000
+    128 = 1.00000
+    133 = 1.00000
+    134 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    160 = 1.00000
+    161 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    181 = 1.00000
+    182 = 1.00000
+    196 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    200 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    211 = 1.00000
+    212 = 1.00000
+    217 = 1.00000
+    218 = 1.00000
+    223 = 1.00000
+    224 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    237 = 1.00000
+    239 = 1.00000
+    244 = 1.00000
+    245 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    255 = 1.00000
+    257 = 1.00000
+    259 = 1.00000
+    260 = 1.00000
+    264 = 1.00000
+    266 = 1.00000
+    271 = 1.00000
+    272 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    289 = 1.00000
+    290 = 1.00000
+    295 = 1.00000
+    296 = 1.00000
+    297 = 1.00000
+    299 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    305 = 1.00000
+    307 = 1.00000
+    308 = 1.00000
+    313 = 1.00000
+    314 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    334 = 1.00000
+    335 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    355 = 1.00000
+    356 = 1.00000
+    361 = 1.00000
+    362 = 1.00000
+    367 = 1.00000
+    368 = 1.00000
+    373 = 1.00000
+    374 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=3
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    5 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    26 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    43 = 1.00000
+    44 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    57 = 1.00000
+    59 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    73 = 1.00000
+    74 = 1.00000
+    81 = 1.00000
+    83 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    101 = 1.00000
+    103 = 1.00000
+    104 = 1.00000
+    112 = 1.00000
+    113 = 1.00000
+    115 = 1.00000
+    116 = 1.00000
+    117 = 1.00000
+    119 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    127 = 1.00000
+    128 = 1.00000
+    133 = 1.00000
+    134 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    156 = 1.00000
+    158 = 1.00000
+    159 = 1.00000
+    160 = 1.00000
+    161 = 1.00000
+    162 = 1.00000
+    164 = 1.00000
+    165 = 1.00000
+    167 = 1.00000
+    168 = 1.00000
+    170 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    182 = 1.00000
+    183 = 1.00000
+    185 = 1.00000
+    186 = 1.00000
+    188 = 1.00000
+    196 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    200 = 1.00000
+    201 = 1.00000
+    203 = 1.00000
+    204 = 1.00000
+    206 = 1.00000
+    207 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    210 = 1.00000
+    211 = 1.00000
+    212 = 1.00000
+    217 = 1.00000
+    218 = 1.00000
+    219 = 1.00000
+    221 = 1.00000
+    222 = 1.00000
+    223 = 1.00000
+    224 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    237 = 1.00000
+    239 = 1.00000
+    244 = 1.00000
+    245 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    255 = 1.00000
+    257 = 1.00000
+    259 = 1.00000
+    260 = 1.00000
+    264 = 1.00000
+    266 = 1.00000
+    271 = 1.00000
+    272 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    289 = 1.00000
+    290 = 1.00000
+    295 = 1.00000
+    296 = 1.00000
+    297 = 1.00000
+    299 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    305 = 1.00000
+    307 = 1.00000
+    308 = 1.00000
+    313 = 1.00000
+    314 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    327 = 1.00000
+    329 = 1.00000
+    330 = 1.00000
+    332 = 1.00000
+    334 = 1.00000
+    335 = 1.00000
+    342 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    345 = 1.00000
+    347 = 1.00000
+    348 = 1.00000
+    350 = 1.00000
+    355 = 1.00000
+    356 = 1.00000
+    357 = 1.00000
+    359 = 1.00000
+    360 = 1.00000
+    361 = 1.00000
+    362 = 1.00000
+    367 = 1.00000
+    368 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    372 = 1.00000
+    373 = 1.00000
+    374 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=4
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    10 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    27 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    36 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    39 = 1.00000
+    40 = 1.00000
+    43 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    57 = 1.00000
+    59 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    73 = 1.00000
+    74 = 1.00000
+    81 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    101 = 1.00000
+    103 = 1.00000
+    104 = 1.00000
+    105 = 1.00000
+    106 = 1.00000
+    111 = 1.00000
+    112 = 1.00000
+    113 = 1.00000
+    115 = 1.00000
+    116 = 1.00000
+    117 = 1.00000
+    119 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    127 = 1.00000
+    128 = 1.00000
+    133 = 1.00000
+    134 = 1.00000
+    135 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    138 = 1.00000
+    139 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    147 = 1.00000
+    148 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    156 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    159 = 1.00000
+    160 = 1.00000
+    161 = 1.00000
+    162 = 1.00000
+    164 = 1.00000
+    165 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    168 = 1.00000
+    170 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    182 = 1.00000
+    183 = 1.00000
+    185 = 1.00000
+    186 = 1.00000
+    188 = 1.00000
+    189 = 1.00000
+    190 = 1.00000
+    195 = 1.00000
+    196 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    200 = 1.00000
+    201 = 1.00000
+    202 = 1.00000
+    203 = 1.00000
+    204 = 1.00000
+    206 = 1.00000
+    207 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    210 = 1.00000
+    211 = 1.00000
+    212 = 1.00000
+    217 = 1.00000
+    218 = 1.00000
+    219 = 1.00000
+    221 = 1.00000
+    222 = 1.00000
+    223 = 1.00000
+    224 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    237 = 1.00000
+    239 = 1.00000
+    244 = 1.00000
+    245 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    255 = 1.00000
+    257 = 1.00000
+    259 = 1.00000
+    260 = 1.00000
+    264 = 1.00000
+    266 = 1.00000
+    271 = 1.00000
+    272 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    289 = 1.00000
+    290 = 1.00000
+    295 = 1.00000
+    296 = 1.00000
+    297 = 1.00000
+    299 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    305 = 1.00000
+    307 = 1.00000
+    308 = 1.00000
+    313 = 1.00000
+    314 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    327 = 1.00000
+    329 = 1.00000
+    330 = 1.00000
+    332 = 1.00000
+    334 = 1.00000
+    335 = 1.00000
+    342 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    345 = 1.00000
+    347 = 1.00000
+    348 = 1.00000
+    350 = 1.00000
+    355 = 1.00000
+    356 = 1.00000
+    357 = 1.00000
+    359 = 1.00000
+    360 = 1.00000
+    361 = 1.00000
+    362 = 1.00000
+    367 = 1.00000
+    368 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    372 = 1.00000
+    373 = 1.00000
+    374 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(1)^3], case=5
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    10 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    27 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    36 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    39 = 1.00000
+    40 = 1.00000
+    43 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    54 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    57 = 1.00000
+    59 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    73 = 1.00000
+    74 = 1.00000
+    81 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    95 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    101 = 1.00000
+    103 = 1.00000
+    104 = 1.00000
+    105 = 1.00000
+    106 = 1.00000
+    111 = 1.00000
+    112 = 1.00000
+    113 = 1.00000
+    115 = 1.00000
+    116 = 1.00000
+    117 = 1.00000
+    119 = 1.00000
+    123 = 1.00000
+    124 = 1.00000
+    125 = 1.00000
+    127 = 1.00000
+    128 = 1.00000
+    133 = 1.00000
+    134 = 1.00000
+    135 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    138 = 1.00000
+    139 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    147 = 1.00000
+    148 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    155 = 1.00000
+    156 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    159 = 1.00000
+    160 = 1.00000
+    161 = 1.00000
+    162 = 1.00000
+    164 = 1.00000
+    165 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    168 = 1.00000
+    170 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    182 = 1.00000
+    183 = 1.00000
+    185 = 1.00000
+    186 = 1.00000
+    188 = 1.00000
+    189 = 1.00000
+    190 = 1.00000
+    195 = 1.00000
+    196 = 1.00000
+    197 = 1.00000
+    199 = 1.00000
+    200 = 1.00000
+    201 = 1.00000
+    202 = 1.00000
+    203 = 1.00000
+    204 = 1.00000
+    206 = 1.00000
+    207 = 1.00000
+    208 = 1.00000
+    209 = 1.00000
+    210 = 1.00000
+    211 = 1.00000
+    212 = 1.00000
+    217 = 1.00000
+    218 = 1.00000
+    219 = 1.00000
+    221 = 1.00000
+    222 = 1.00000
+    223 = 1.00000
+    224 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    237 = 1.00000
+    239 = 1.00000
+    244 = 1.00000
+    245 = 1.00000
+    252 = 1.00000
+    253 = 1.00000
+    254 = 1.00000
+    255 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    258 = 1.00000
+    259 = 1.00000
+    260 = 1.00000
+    261 = 1.00000
+    262 = 1.00000
+    264 = 1.00000
+    265 = 1.00000
+    266 = 1.00000
+    267 = 1.00000
+    268 = 1.00000
+    270 = 1.00000
+    271 = 1.00000
+    272 = 1.00000
+    273 = 1.00000
+    274 = 1.00000
+    276 = 1.00000
+    277 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    285 = 1.00000
+    286 = 1.00000
+    287 = 1.00000
+    289 = 1.00000
+    290 = 1.00000
+    295 = 1.00000
+    296 = 1.00000
+    297 = 1.00000
+    298 = 1.00000
+    299 = 1.00000
+    300 = 1.00000
+    301 = 1.00000
+    303 = 1.00000
+    304 = 1.00000
+    305 = 1.00000
+    306 = 1.00000
+    307 = 1.00000
+    308 = 1.00000
+    309 = 1.00000
+    310 = 1.00000
+    312 = 1.00000
+    313 = 1.00000
+    314 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    324 = 1.00000
+    325 = 1.00000
+    326 = 1.00000
+    327 = 1.00000
+    329 = 1.00000
+    330 = 1.00000
+    332 = 1.00000
+    333 = 1.00000
+    334 = 1.00000
+    335 = 1.00000
+    336 = 1.00000
+    337 = 1.00000
+    339 = 1.00000
+    340 = 1.00000
+    342 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    345 = 1.00000
+    346 = 1.00000
+    347 = 1.00000
+    348 = 1.00000
+    349 = 1.00000
+    350 = 1.00000
+    355 = 1.00000
+    356 = 1.00000
+    357 = 1.00000
+    359 = 1.00000
+    360 = 1.00000
+    361 = 1.00000
+    362 = 1.00000
+    363 = 1.00000
+    364 = 1.00000
+    366 = 1.00000
+    367 = 1.00000
+    368 = 1.00000
+    369 = 1.00000
+    370 = 1.00000
+    371 = 1.00000
+    372 = 1.00000
+    373 = 1.00000
+    374 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=0
+    1 = 1.00000
+    2 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    49 = 1.00000
+    50 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    148 = 1.00000
+    149 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    250 = 1.00000
+    251 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    262 = 1.00000
+    263 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    331 = 1.00000
+    332 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    682 = 1.00000
+    683 = 1.00000
+    688 = 1.00000
+    689 = 1.00000
+    697 = 1.00000
+    698 = 1.00000
+    706 = 1.00000
+    707 = 1.00000
+    712 = 1.00000
+    713 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    772 = 1.00000
+    773 = 1.00000
+    778 = 1.00000
+    779 = 1.00000
+    787 = 1.00000
+    788 = 1.00000
+    796 = 1.00000
+    797 = 1.00000
+    802 = 1.00000
+    803 = 1.00000
+    856 = 1.00000
+    857 = 1.00000
+    862 = 1.00000
+    863 = 1.00000
+    871 = 1.00000
+    872 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    916 = 1.00000
+    917 = 1.00000
+    922 = 1.00000
+    923 = 1.00000
+    931 = 1.00000
+    932 = 1.00000
+    937 = 1.00000
+    938 = 1.00000
+    1216 = 1.00000
+    1217 = 1.00000
+    1222 = 1.00000
+    1223 = 1.00000
+    1228 = 1.00000
+    1229 = 1.00000
+    1240 = 1.00000
+    1241 = 1.00000
+    1246 = 1.00000
+    1247 = 1.00000
+    1252 = 1.00000
+    1253 = 1.00000
+    1306 = 1.00000
+    1307 = 1.00000
+    1312 = 1.00000
+    1313 = 1.00000
+    1321 = 1.00000
+    1322 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1372 = 1.00000
+    1373 = 1.00000
+    1378 = 1.00000
+    1379 = 1.00000
+    1390 = 1.00000
+    1391 = 1.00000
+    1396 = 1.00000
+    1397 = 1.00000
+    1402 = 1.00000
+    1403 = 1.00000
+    1456 = 1.00000
+    1457 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1471 = 1.00000
+    1472 = 1.00000
+    1477 = 1.00000
+    1478 = 1.00000
+    1756 = 1.00000
+    1757 = 1.00000
+    1762 = 1.00000
+    1763 = 1.00000
+    1771 = 1.00000
+    1772 = 1.00000
+    1777 = 1.00000
+    1778 = 1.00000
+    1816 = 1.00000
+    1817 = 1.00000
+    1822 = 1.00000
+    1823 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1837 = 1.00000
+    1838 = 1.00000
+    1876 = 1.00000
+    1877 = 1.00000
+    1882 = 1.00000
+    1883 = 1.00000
+    1891 = 1.00000
+    1892 = 1.00000
+    1897 = 1.00000
+    1898 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1942 = 1.00000
+    1943 = 1.00000
+    1951 = 1.00000
+    1952 = 1.00000
+    1957 = 1.00000
+    1958 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=1
+    1 = 1.00000
+    2 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    49 = 1.00000
+    50 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    148 = 1.00000
+    149 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    250 = 1.00000
+    251 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    262 = 1.00000
+    263 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    331 = 1.00000
+    332 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    433 = 1.00000
+    434 = 1.00000
+    436 = 1.00000
+    437 = 1.00000
+    439 = 1.00000
+    440 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    451 = 1.00000
+    452 = 1.00000
+    460 = 1.00000
+    461 = 1.00000
+    463 = 1.00000
+    464 = 1.00000
+    466 = 1.00000
+    467 = 1.00000
+    520 = 1.00000
+    521 = 1.00000
+    523 = 1.00000
+    524 = 1.00000
+    526 = 1.00000
+    527 = 1.00000
+    532 = 1.00000
+    533 = 1.00000
+    538 = 1.00000
+    539 = 1.00000
+    541 = 1.00000
+    542 = 1.00000
+    592 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    598 = 1.00000
+    599 = 1.00000
+    607 = 1.00000
+    608 = 1.00000
+    610 = 1.00000
+    611 = 1.00000
+    613 = 1.00000
+    614 = 1.00000
+    652 = 1.00000
+    653 = 1.00000
+    655 = 1.00000
+    656 = 1.00000
+    661 = 1.00000
+    662 = 1.00000
+    664 = 1.00000
+    665 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    682 = 1.00000
+    683 = 1.00000
+    688 = 1.00000
+    689 = 1.00000
+    697 = 1.00000
+    698 = 1.00000
+    706 = 1.00000
+    707 = 1.00000
+    712 = 1.00000
+    713 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    772 = 1.00000
+    773 = 1.00000
+    778 = 1.00000
+    779 = 1.00000
+    787 = 1.00000
+    788 = 1.00000
+    796 = 1.00000
+    797 = 1.00000
+    802 = 1.00000
+    803 = 1.00000
+    856 = 1.00000
+    857 = 1.00000
+    862 = 1.00000
+    863 = 1.00000
+    871 = 1.00000
+    872 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    916 = 1.00000
+    917 = 1.00000
+    922 = 1.00000
+    923 = 1.00000
+    931 = 1.00000
+    932 = 1.00000
+    937 = 1.00000
+    938 = 1.00000
+    1012 = 1.00000
+    1013 = 1.00000
+    1015 = 1.00000
+    1016 = 1.00000
+    1018 = 1.00000
+    1019 = 1.00000
+    1024 = 1.00000
+    1025 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1033 = 1.00000
+    1034 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1087 = 1.00000
+    1088 = 1.00000
+    1090 = 1.00000
+    1091 = 1.00000
+    1096 = 1.00000
+    1097 = 1.00000
+    1102 = 1.00000
+    1103 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1144 = 1.00000
+    1145 = 1.00000
+    1147 = 1.00000
+    1148 = 1.00000
+    1153 = 1.00000
+    1154 = 1.00000
+    1156 = 1.00000
+    1157 = 1.00000
+    1192 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1196 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1204 = 1.00000
+    1205 = 1.00000
+    1216 = 1.00000
+    1217 = 1.00000
+    1222 = 1.00000
+    1223 = 1.00000
+    1228 = 1.00000
+    1229 = 1.00000
+    1240 = 1.00000
+    1241 = 1.00000
+    1246 = 1.00000
+    1247 = 1.00000
+    1252 = 1.00000
+    1253 = 1.00000
+    1306 = 1.00000
+    1307 = 1.00000
+    1312 = 1.00000
+    1313 = 1.00000
+    1321 = 1.00000
+    1322 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1372 = 1.00000
+    1373 = 1.00000
+    1378 = 1.00000
+    1379 = 1.00000
+    1390 = 1.00000
+    1391 = 1.00000
+    1396 = 1.00000
+    1397 = 1.00000
+    1402 = 1.00000
+    1403 = 1.00000
+    1456 = 1.00000
+    1457 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1471 = 1.00000
+    1472 = 1.00000
+    1477 = 1.00000
+    1478 = 1.00000
+    1552 = 1.00000
+    1553 = 1.00000
+    1555 = 1.00000
+    1556 = 1.00000
+    1558 = 1.00000
+    1559 = 1.00000
+    1567 = 1.00000
+    1568 = 1.00000
+    1570 = 1.00000
+    1571 = 1.00000
+    1573 = 1.00000
+    1574 = 1.00000
+    1612 = 1.00000
+    1613 = 1.00000
+    1615 = 1.00000
+    1616 = 1.00000
+    1621 = 1.00000
+    1622 = 1.00000
+    1624 = 1.00000
+    1625 = 1.00000
+    1672 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1676 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1687 = 1.00000
+    1688 = 1.00000
+    1690 = 1.00000
+    1691 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1732 = 1.00000
+    1733 = 1.00000
+    1735 = 1.00000
+    1736 = 1.00000
+    1741 = 1.00000
+    1742 = 1.00000
+    1744 = 1.00000
+    1745 = 1.00000
+    1756 = 1.00000
+    1757 = 1.00000
+    1762 = 1.00000
+    1763 = 1.00000
+    1771 = 1.00000
+    1772 = 1.00000
+    1777 = 1.00000
+    1778 = 1.00000
+    1816 = 1.00000
+    1817 = 1.00000
+    1822 = 1.00000
+    1823 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1837 = 1.00000
+    1838 = 1.00000
+    1876 = 1.00000
+    1877 = 1.00000
+    1882 = 1.00000
+    1883 = 1.00000
+    1891 = 1.00000
+    1892 = 1.00000
+    1897 = 1.00000
+    1898 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1942 = 1.00000
+    1943 = 1.00000
+    1951 = 1.00000
+    1952 = 1.00000
+    1957 = 1.00000
+    1958 = 1.00000
+    2020 = 1.00000
+    2021 = 1.00000
+    2023 = 1.00000
+    2024 = 1.00000
+    2029 = 1.00000
+    2030 = 1.00000
+    2032 = 1.00000
+    2033 = 1.00000
+    2068 = 1.00000
+    2069 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2077 = 1.00000
+    2078 = 1.00000
+    2080 = 1.00000
+    2081 = 1.00000
+    2116 = 1.00000
+    2117 = 1.00000
+    2119 = 1.00000
+    2120 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2128 = 1.00000
+    2129 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2173 = 1.00000
+    2174 = 1.00000
+    2176 = 1.00000
+    2177 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=2
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    5 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    42 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    50 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    81 = 1.00000
+    83 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    96 = 1.00000
+    98 = 1.00000
+    105 = 1.00000
+    107 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    120 = 1.00000
+    122 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    148 = 1.00000
+    149 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    243 = 1.00000
+    245 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    251 = 1.00000
+    252 = 1.00000
+    254 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    262 = 1.00000
+    263 = 1.00000
+    267 = 1.00000
+    269 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    288 = 1.00000
+    290 = 1.00000
+    294 = 1.00000
+    296 = 1.00000
+    303 = 1.00000
+    305 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    331 = 1.00000
+    332 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    375 = 1.00000
+    377 = 1.00000
+    381 = 1.00000
+    383 = 1.00000
+    390 = 1.00000
+    392 = 1.00000
+    399 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    407 = 1.00000
+    414 = 1.00000
+    416 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    433 = 1.00000
+    434 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    437 = 1.00000
+    439 = 1.00000
+    440 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    444 = 1.00000
+    446 = 1.00000
+    451 = 1.00000
+    452 = 1.00000
+    453 = 1.00000
+    455 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    461 = 1.00000
+    463 = 1.00000
+    464 = 1.00000
+    466 = 1.00000
+    467 = 1.00000
+    468 = 1.00000
+    470 = 1.00000
+    520 = 1.00000
+    521 = 1.00000
+    523 = 1.00000
+    524 = 1.00000
+    526 = 1.00000
+    527 = 1.00000
+    532 = 1.00000
+    533 = 1.00000
+    538 = 1.00000
+    539 = 1.00000
+    541 = 1.00000
+    542 = 1.00000
+    555 = 1.00000
+    557 = 1.00000
+    564 = 1.00000
+    566 = 1.00000
+    570 = 1.00000
+    572 = 1.00000
+    579 = 1.00000
+    581 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    598 = 1.00000
+    599 = 1.00000
+    600 = 1.00000
+    602 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    608 = 1.00000
+    610 = 1.00000
+    611 = 1.00000
+    613 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    617 = 1.00000
+    652 = 1.00000
+    653 = 1.00000
+    655 = 1.00000
+    656 = 1.00000
+    661 = 1.00000
+    662 = 1.00000
+    664 = 1.00000
+    665 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    682 = 1.00000
+    683 = 1.00000
+    688 = 1.00000
+    689 = 1.00000
+    697 = 1.00000
+    698 = 1.00000
+    706 = 1.00000
+    707 = 1.00000
+    712 = 1.00000
+    713 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    772 = 1.00000
+    773 = 1.00000
+    778 = 1.00000
+    779 = 1.00000
+    787 = 1.00000
+    788 = 1.00000
+    796 = 1.00000
+    797 = 1.00000
+    802 = 1.00000
+    803 = 1.00000
+    856 = 1.00000
+    857 = 1.00000
+    862 = 1.00000
+    863 = 1.00000
+    871 = 1.00000
+    872 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    916 = 1.00000
+    917 = 1.00000
+    922 = 1.00000
+    923 = 1.00000
+    931 = 1.00000
+    932 = 1.00000
+    937 = 1.00000
+    938 = 1.00000
+    1012 = 1.00000
+    1013 = 1.00000
+    1015 = 1.00000
+    1016 = 1.00000
+    1018 = 1.00000
+    1019 = 1.00000
+    1024 = 1.00000
+    1025 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1033 = 1.00000
+    1034 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1087 = 1.00000
+    1088 = 1.00000
+    1090 = 1.00000
+    1091 = 1.00000
+    1096 = 1.00000
+    1097 = 1.00000
+    1102 = 1.00000
+    1103 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1144 = 1.00000
+    1145 = 1.00000
+    1147 = 1.00000
+    1148 = 1.00000
+    1153 = 1.00000
+    1154 = 1.00000
+    1156 = 1.00000
+    1157 = 1.00000
+    1192 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1196 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1204 = 1.00000
+    1205 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1217 = 1.00000
+    1218 = 1.00000
+    1220 = 1.00000
+    1222 = 1.00000
+    1223 = 1.00000
+    1228 = 1.00000
+    1229 = 1.00000
+    1233 = 1.00000
+    1235 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1241 = 1.00000
+    1242 = 1.00000
+    1244 = 1.00000
+    1246 = 1.00000
+    1247 = 1.00000
+    1252 = 1.00000
+    1253 = 1.00000
+    1257 = 1.00000
+    1259 = 1.00000
+    1269 = 1.00000
+    1271 = 1.00000
+    1278 = 1.00000
+    1280 = 1.00000
+    1284 = 1.00000
+    1286 = 1.00000
+    1293 = 1.00000
+    1295 = 1.00000
+    1306 = 1.00000
+    1307 = 1.00000
+    1312 = 1.00000
+    1313 = 1.00000
+    1321 = 1.00000
+    1322 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1368 = 1.00000
+    1370 = 1.00000
+    1372 = 1.00000
+    1373 = 1.00000
+    1378 = 1.00000
+    1379 = 1.00000
+    1383 = 1.00000
+    1385 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1391 = 1.00000
+    1392 = 1.00000
+    1394 = 1.00000
+    1396 = 1.00000
+    1397 = 1.00000
+    1402 = 1.00000
+    1403 = 1.00000
+    1407 = 1.00000
+    1409 = 1.00000
+    1419 = 1.00000
+    1421 = 1.00000
+    1428 = 1.00000
+    1430 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1443 = 1.00000
+    1445 = 1.00000
+    1456 = 1.00000
+    1457 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1471 = 1.00000
+    1472 = 1.00000
+    1477 = 1.00000
+    1478 = 1.00000
+    1515 = 1.00000
+    1517 = 1.00000
+    1524 = 1.00000
+    1526 = 1.00000
+    1530 = 1.00000
+    1532 = 1.00000
+    1539 = 1.00000
+    1541 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1553 = 1.00000
+    1555 = 1.00000
+    1556 = 1.00000
+    1558 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1562 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1568 = 1.00000
+    1570 = 1.00000
+    1571 = 1.00000
+    1573 = 1.00000
+    1574 = 1.00000
+    1575 = 1.00000
+    1577 = 1.00000
+    1612 = 1.00000
+    1613 = 1.00000
+    1615 = 1.00000
+    1616 = 1.00000
+    1621 = 1.00000
+    1622 = 1.00000
+    1624 = 1.00000
+    1625 = 1.00000
+    1635 = 1.00000
+    1637 = 1.00000
+    1644 = 1.00000
+    1646 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1659 = 1.00000
+    1661 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1676 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1688 = 1.00000
+    1690 = 1.00000
+    1691 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1697 = 1.00000
+    1732 = 1.00000
+    1733 = 1.00000
+    1735 = 1.00000
+    1736 = 1.00000
+    1741 = 1.00000
+    1742 = 1.00000
+    1744 = 1.00000
+    1745 = 1.00000
+    1756 = 1.00000
+    1757 = 1.00000
+    1762 = 1.00000
+    1763 = 1.00000
+    1771 = 1.00000
+    1772 = 1.00000
+    1777 = 1.00000
+    1778 = 1.00000
+    1816 = 1.00000
+    1817 = 1.00000
+    1822 = 1.00000
+    1823 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1837 = 1.00000
+    1838 = 1.00000
+    1876 = 1.00000
+    1877 = 1.00000
+    1882 = 1.00000
+    1883 = 1.00000
+    1891 = 1.00000
+    1892 = 1.00000
+    1897 = 1.00000
+    1898 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1942 = 1.00000
+    1943 = 1.00000
+    1951 = 1.00000
+    1952 = 1.00000
+    1957 = 1.00000
+    1958 = 1.00000
+    2020 = 1.00000
+    2021 = 1.00000
+    2023 = 1.00000
+    2024 = 1.00000
+    2029 = 1.00000
+    2030 = 1.00000
+    2032 = 1.00000
+    2033 = 1.00000
+    2068 = 1.00000
+    2069 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2077 = 1.00000
+    2078 = 1.00000
+    2080 = 1.00000
+    2081 = 1.00000
+    2116 = 1.00000
+    2117 = 1.00000
+    2119 = 1.00000
+    2120 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2128 = 1.00000
+    2129 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2173 = 1.00000
+    2174 = 1.00000
+    2176 = 1.00000
+    2177 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=3
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    5 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    42 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    50 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    81 = 1.00000
+    83 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    96 = 1.00000
+    98 = 1.00000
+    105 = 1.00000
+    107 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    120 = 1.00000
+    122 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    148 = 1.00000
+    149 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    243 = 1.00000
+    245 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    251 = 1.00000
+    252 = 1.00000
+    254 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    262 = 1.00000
+    263 = 1.00000
+    267 = 1.00000
+    269 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    288 = 1.00000
+    290 = 1.00000
+    294 = 1.00000
+    296 = 1.00000
+    303 = 1.00000
+    305 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    331 = 1.00000
+    332 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    375 = 1.00000
+    377 = 1.00000
+    381 = 1.00000
+    383 = 1.00000
+    390 = 1.00000
+    392 = 1.00000
+    399 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    407 = 1.00000
+    414 = 1.00000
+    416 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    433 = 1.00000
+    434 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    437 = 1.00000
+    439 = 1.00000
+    440 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    444 = 1.00000
+    446 = 1.00000
+    451 = 1.00000
+    452 = 1.00000
+    453 = 1.00000
+    455 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    461 = 1.00000
+    463 = 1.00000
+    464 = 1.00000
+    466 = 1.00000
+    467 = 1.00000
+    468 = 1.00000
+    470 = 1.00000
+    520 = 1.00000
+    521 = 1.00000
+    523 = 1.00000
+    524 = 1.00000
+    526 = 1.00000
+    527 = 1.00000
+    532 = 1.00000
+    533 = 1.00000
+    538 = 1.00000
+    539 = 1.00000
+    541 = 1.00000
+    542 = 1.00000
+    555 = 1.00000
+    557 = 1.00000
+    564 = 1.00000
+    566 = 1.00000
+    570 = 1.00000
+    572 = 1.00000
+    579 = 1.00000
+    581 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    598 = 1.00000
+    599 = 1.00000
+    600 = 1.00000
+    602 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    608 = 1.00000
+    610 = 1.00000
+    611 = 1.00000
+    613 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    617 = 1.00000
+    652 = 1.00000
+    653 = 1.00000
+    655 = 1.00000
+    656 = 1.00000
+    661 = 1.00000
+    662 = 1.00000
+    664 = 1.00000
+    665 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    682 = 1.00000
+    683 = 1.00000
+    688 = 1.00000
+    689 = 1.00000
+    697 = 1.00000
+    698 = 1.00000
+    706 = 1.00000
+    707 = 1.00000
+    712 = 1.00000
+    713 = 1.00000
+    765 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    768 = 1.00000
+    770 = 1.00000
+    771 = 1.00000
+    772 = 1.00000
+    773 = 1.00000
+    774 = 1.00000
+    776 = 1.00000
+    778 = 1.00000
+    779 = 1.00000
+    783 = 1.00000
+    785 = 1.00000
+    787 = 1.00000
+    788 = 1.00000
+    792 = 1.00000
+    794 = 1.00000
+    795 = 1.00000
+    796 = 1.00000
+    797 = 1.00000
+    798 = 1.00000
+    800 = 1.00000
+    802 = 1.00000
+    803 = 1.00000
+    807 = 1.00000
+    809 = 1.00000
+    819 = 1.00000
+    821 = 1.00000
+    822 = 1.00000
+    824 = 1.00000
+    828 = 1.00000
+    830 = 1.00000
+    834 = 1.00000
+    836 = 1.00000
+    837 = 1.00000
+    839 = 1.00000
+    843 = 1.00000
+    845 = 1.00000
+    856 = 1.00000
+    857 = 1.00000
+    862 = 1.00000
+    863 = 1.00000
+    871 = 1.00000
+    872 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    915 = 1.00000
+    916 = 1.00000
+    917 = 1.00000
+    918 = 1.00000
+    920 = 1.00000
+    922 = 1.00000
+    923 = 1.00000
+    927 = 1.00000
+    929 = 1.00000
+    930 = 1.00000
+    931 = 1.00000
+    932 = 1.00000
+    933 = 1.00000
+    935 = 1.00000
+    937 = 1.00000
+    938 = 1.00000
+    942 = 1.00000
+    944 = 1.00000
+    951 = 1.00000
+    953 = 1.00000
+    957 = 1.00000
+    959 = 1.00000
+    960 = 1.00000
+    962 = 1.00000
+    966 = 1.00000
+    968 = 1.00000
+    1012 = 1.00000
+    1013 = 1.00000
+    1015 = 1.00000
+    1016 = 1.00000
+    1018 = 1.00000
+    1019 = 1.00000
+    1024 = 1.00000
+    1025 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1033 = 1.00000
+    1034 = 1.00000
+    1047 = 1.00000
+    1049 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1056 = 1.00000
+    1058 = 1.00000
+    1062 = 1.00000
+    1064 = 1.00000
+    1065 = 1.00000
+    1067 = 1.00000
+    1071 = 1.00000
+    1073 = 1.00000
+    1083 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1086 = 1.00000
+    1087 = 1.00000
+    1088 = 1.00000
+    1090 = 1.00000
+    1091 = 1.00000
+    1092 = 1.00000
+    1094 = 1.00000
+    1096 = 1.00000
+    1097 = 1.00000
+    1098 = 1.00000
+    1100 = 1.00000
+    1101 = 1.00000
+    1102 = 1.00000
+    1103 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1109 = 1.00000
+    1144 = 1.00000
+    1145 = 1.00000
+    1147 = 1.00000
+    1148 = 1.00000
+    1153 = 1.00000
+    1154 = 1.00000
+    1156 = 1.00000
+    1157 = 1.00000
+    1167 = 1.00000
+    1169 = 1.00000
+    1173 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1178 = 1.00000
+    1182 = 1.00000
+    1184 = 1.00000
+    1191 = 1.00000
+    1192 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1196 = 1.00000
+    1197 = 1.00000
+    1199 = 1.00000
+    1200 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1204 = 1.00000
+    1205 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1217 = 1.00000
+    1218 = 1.00000
+    1220 = 1.00000
+    1222 = 1.00000
+    1223 = 1.00000
+    1228 = 1.00000
+    1229 = 1.00000
+    1233 = 1.00000
+    1235 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1241 = 1.00000
+    1242 = 1.00000
+    1244 = 1.00000
+    1246 = 1.00000
+    1247 = 1.00000
+    1252 = 1.00000
+    1253 = 1.00000
+    1257 = 1.00000
+    1259 = 1.00000
+    1269 = 1.00000
+    1271 = 1.00000
+    1278 = 1.00000
+    1280 = 1.00000
+    1284 = 1.00000
+    1286 = 1.00000
+    1293 = 1.00000
+    1295 = 1.00000
+    1306 = 1.00000
+    1307 = 1.00000
+    1312 = 1.00000
+    1313 = 1.00000
+    1321 = 1.00000
+    1322 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1368 = 1.00000
+    1370 = 1.00000
+    1372 = 1.00000
+    1373 = 1.00000
+    1378 = 1.00000
+    1379 = 1.00000
+    1383 = 1.00000
+    1385 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1391 = 1.00000
+    1392 = 1.00000
+    1394 = 1.00000
+    1396 = 1.00000
+    1397 = 1.00000
+    1402 = 1.00000
+    1403 = 1.00000
+    1407 = 1.00000
+    1409 = 1.00000
+    1419 = 1.00000
+    1421 = 1.00000
+    1428 = 1.00000
+    1430 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1443 = 1.00000
+    1445 = 1.00000
+    1456 = 1.00000
+    1457 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1471 = 1.00000
+    1472 = 1.00000
+    1477 = 1.00000
+    1478 = 1.00000
+    1515 = 1.00000
+    1517 = 1.00000
+    1524 = 1.00000
+    1526 = 1.00000
+    1530 = 1.00000
+    1532 = 1.00000
+    1539 = 1.00000
+    1541 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1553 = 1.00000
+    1555 = 1.00000
+    1556 = 1.00000
+    1558 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1562 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1568 = 1.00000
+    1570 = 1.00000
+    1571 = 1.00000
+    1573 = 1.00000
+    1574 = 1.00000
+    1575 = 1.00000
+    1577 = 1.00000
+    1612 = 1.00000
+    1613 = 1.00000
+    1615 = 1.00000
+    1616 = 1.00000
+    1621 = 1.00000
+    1622 = 1.00000
+    1624 = 1.00000
+    1625 = 1.00000
+    1635 = 1.00000
+    1637 = 1.00000
+    1644 = 1.00000
+    1646 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1659 = 1.00000
+    1661 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1676 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1688 = 1.00000
+    1690 = 1.00000
+    1691 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1697 = 1.00000
+    1732 = 1.00000
+    1733 = 1.00000
+    1735 = 1.00000
+    1736 = 1.00000
+    1741 = 1.00000
+    1742 = 1.00000
+    1744 = 1.00000
+    1745 = 1.00000
+    1756 = 1.00000
+    1757 = 1.00000
+    1762 = 1.00000
+    1763 = 1.00000
+    1771 = 1.00000
+    1772 = 1.00000
+    1777 = 1.00000
+    1778 = 1.00000
+    1815 = 1.00000
+    1816 = 1.00000
+    1817 = 1.00000
+    1818 = 1.00000
+    1820 = 1.00000
+    1822 = 1.00000
+    1823 = 1.00000
+    1827 = 1.00000
+    1829 = 1.00000
+    1830 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1833 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1838 = 1.00000
+    1842 = 1.00000
+    1844 = 1.00000
+    1851 = 1.00000
+    1853 = 1.00000
+    1857 = 1.00000
+    1859 = 1.00000
+    1860 = 1.00000
+    1862 = 1.00000
+    1866 = 1.00000
+    1868 = 1.00000
+    1876 = 1.00000
+    1877 = 1.00000
+    1882 = 1.00000
+    1883 = 1.00000
+    1891 = 1.00000
+    1892 = 1.00000
+    1897 = 1.00000
+    1898 = 1.00000
+    1935 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1938 = 1.00000
+    1940 = 1.00000
+    1942 = 1.00000
+    1943 = 1.00000
+    1947 = 1.00000
+    1949 = 1.00000
+    1950 = 1.00000
+    1951 = 1.00000
+    1952 = 1.00000
+    1953 = 1.00000
+    1955 = 1.00000
+    1957 = 1.00000
+    1958 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1971 = 1.00000
+    1973 = 1.00000
+    1977 = 1.00000
+    1979 = 1.00000
+    1980 = 1.00000
+    1982 = 1.00000
+    1986 = 1.00000
+    1988 = 1.00000
+    2020 = 1.00000
+    2021 = 1.00000
+    2023 = 1.00000
+    2024 = 1.00000
+    2029 = 1.00000
+    2030 = 1.00000
+    2032 = 1.00000
+    2033 = 1.00000
+    2043 = 1.00000
+    2045 = 1.00000
+    2049 = 1.00000
+    2051 = 1.00000
+    2052 = 1.00000
+    2054 = 1.00000
+    2058 = 1.00000
+    2060 = 1.00000
+    2067 = 1.00000
+    2068 = 1.00000
+    2069 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2073 = 1.00000
+    2075 = 1.00000
+    2076 = 1.00000
+    2077 = 1.00000
+    2078 = 1.00000
+    2080 = 1.00000
+    2081 = 1.00000
+    2082 = 1.00000
+    2084 = 1.00000
+    2116 = 1.00000
+    2117 = 1.00000
+    2119 = 1.00000
+    2120 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2128 = 1.00000
+    2129 = 1.00000
+    2139 = 1.00000
+    2141 = 1.00000
+    2145 = 1.00000
+    2147 = 1.00000
+    2148 = 1.00000
+    2150 = 1.00000
+    2154 = 1.00000
+    2156 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2173 = 1.00000
+    2174 = 1.00000
+    2176 = 1.00000
+    2177 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=4
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    10 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    27 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    31 = 1.00000
+    32 = 1.00000
+    33 = 1.00000
+    34 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    42 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    50 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    72 = 1.00000
+    73 = 1.00000
+    81 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    105 = 1.00000
+    107 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    120 = 1.00000
+    122 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    135 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    138 = 1.00000
+    139 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    147 = 1.00000
+    148 = 1.00000
+    149 = 1.00000
+    150 = 1.00000
+    151 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    189 = 1.00000
+    190 = 1.00000
+    195 = 1.00000
+    196 = 1.00000
+    198 = 1.00000
+    199 = 1.00000
+    216 = 1.00000
+    217 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    243 = 1.00000
+    245 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    251 = 1.00000
+    252 = 1.00000
+    254 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    262 = 1.00000
+    263 = 1.00000
+    267 = 1.00000
+    269 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    288 = 1.00000
+    290 = 1.00000
+    294 = 1.00000
+    296 = 1.00000
+    303 = 1.00000
+    305 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    331 = 1.00000
+    332 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    375 = 1.00000
+    376 = 1.00000
+    377 = 1.00000
+    378 = 1.00000
+    379 = 1.00000
+    381 = 1.00000
+    383 = 1.00000
+    387 = 1.00000
+    388 = 1.00000
+    390 = 1.00000
+    391 = 1.00000
+    392 = 1.00000
+    393 = 1.00000
+    394 = 1.00000
+    399 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    407 = 1.00000
+    414 = 1.00000
+    416 = 1.00000
+    420 = 1.00000
+    421 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    432 = 1.00000
+    433 = 1.00000
+    434 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    437 = 1.00000
+    439 = 1.00000
+    440 = 1.00000
+    441 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    444 = 1.00000
+    445 = 1.00000
+    446 = 1.00000
+    447 = 1.00000
+    448 = 1.00000
+    451 = 1.00000
+    452 = 1.00000
+    453 = 1.00000
+    455 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    461 = 1.00000
+    463 = 1.00000
+    464 = 1.00000
+    466 = 1.00000
+    467 = 1.00000
+    468 = 1.00000
+    470 = 1.00000
+    474 = 1.00000
+    475 = 1.00000
+    483 = 1.00000
+    484 = 1.00000
+    489 = 1.00000
+    490 = 1.00000
+    492 = 1.00000
+    493 = 1.00000
+    510 = 1.00000
+    511 = 1.00000
+    519 = 1.00000
+    520 = 1.00000
+    521 = 1.00000
+    523 = 1.00000
+    524 = 1.00000
+    525 = 1.00000
+    526 = 1.00000
+    527 = 1.00000
+    528 = 1.00000
+    529 = 1.00000
+    532 = 1.00000
+    533 = 1.00000
+    538 = 1.00000
+    539 = 1.00000
+    541 = 1.00000
+    542 = 1.00000
+    546 = 1.00000
+    547 = 1.00000
+    555 = 1.00000
+    557 = 1.00000
+    564 = 1.00000
+    566 = 1.00000
+    570 = 1.00000
+    572 = 1.00000
+    579 = 1.00000
+    581 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    598 = 1.00000
+    599 = 1.00000
+    600 = 1.00000
+    602 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    608 = 1.00000
+    610 = 1.00000
+    611 = 1.00000
+    613 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    617 = 1.00000
+    652 = 1.00000
+    653 = 1.00000
+    655 = 1.00000
+    656 = 1.00000
+    661 = 1.00000
+    662 = 1.00000
+    664 = 1.00000
+    665 = 1.00000
+    675 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    678 = 1.00000
+    679 = 1.00000
+    682 = 1.00000
+    683 = 1.00000
+    687 = 1.00000
+    688 = 1.00000
+    689 = 1.00000
+    690 = 1.00000
+    691 = 1.00000
+    693 = 1.00000
+    694 = 1.00000
+    697 = 1.00000
+    698 = 1.00000
+    706 = 1.00000
+    707 = 1.00000
+    712 = 1.00000
+    713 = 1.00000
+    720 = 1.00000
+    721 = 1.00000
+    729 = 1.00000
+    730 = 1.00000
+    735 = 1.00000
+    736 = 1.00000
+    738 = 1.00000
+    739 = 1.00000
+    756 = 1.00000
+    757 = 1.00000
+    765 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    768 = 1.00000
+    769 = 1.00000
+    770 = 1.00000
+    771 = 1.00000
+    772 = 1.00000
+    773 = 1.00000
+    774 = 1.00000
+    776 = 1.00000
+    777 = 1.00000
+    778 = 1.00000
+    779 = 1.00000
+    780 = 1.00000
+    781 = 1.00000
+    783 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    787 = 1.00000
+    788 = 1.00000
+    792 = 1.00000
+    794 = 1.00000
+    795 = 1.00000
+    796 = 1.00000
+    797 = 1.00000
+    798 = 1.00000
+    800 = 1.00000
+    802 = 1.00000
+    803 = 1.00000
+    807 = 1.00000
+    809 = 1.00000
+    810 = 1.00000
+    811 = 1.00000
+    819 = 1.00000
+    820 = 1.00000
+    821 = 1.00000
+    822 = 1.00000
+    824 = 1.00000
+    825 = 1.00000
+    826 = 1.00000
+    828 = 1.00000
+    829 = 1.00000
+    830 = 1.00000
+    834 = 1.00000
+    836 = 1.00000
+    837 = 1.00000
+    839 = 1.00000
+    843 = 1.00000
+    845 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    856 = 1.00000
+    857 = 1.00000
+    862 = 1.00000
+    863 = 1.00000
+    871 = 1.00000
+    872 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    915 = 1.00000
+    916 = 1.00000
+    917 = 1.00000
+    918 = 1.00000
+    920 = 1.00000
+    922 = 1.00000
+    923 = 1.00000
+    927 = 1.00000
+    929 = 1.00000
+    930 = 1.00000
+    931 = 1.00000
+    932 = 1.00000
+    933 = 1.00000
+    935 = 1.00000
+    937 = 1.00000
+    938 = 1.00000
+    942 = 1.00000
+    944 = 1.00000
+    951 = 1.00000
+    953 = 1.00000
+    957 = 1.00000
+    959 = 1.00000
+    960 = 1.00000
+    962 = 1.00000
+    966 = 1.00000
+    968 = 1.00000
+    975 = 1.00000
+    976 = 1.00000
+    981 = 1.00000
+    982 = 1.00000
+    984 = 1.00000
+    985 = 1.00000
+    1002 = 1.00000
+    1003 = 1.00000
+    1011 = 1.00000
+    1012 = 1.00000
+    1013 = 1.00000
+    1015 = 1.00000
+    1016 = 1.00000
+    1017 = 1.00000
+    1018 = 1.00000
+    1019 = 1.00000
+    1020 = 1.00000
+    1021 = 1.00000
+    1024 = 1.00000
+    1025 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1033 = 1.00000
+    1034 = 1.00000
+    1038 = 1.00000
+    1039 = 1.00000
+    1047 = 1.00000
+    1048 = 1.00000
+    1049 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1053 = 1.00000
+    1054 = 1.00000
+    1056 = 1.00000
+    1057 = 1.00000
+    1058 = 1.00000
+    1062 = 1.00000
+    1064 = 1.00000
+    1065 = 1.00000
+    1067 = 1.00000
+    1071 = 1.00000
+    1073 = 1.00000
+    1074 = 1.00000
+    1075 = 1.00000
+    1083 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1086 = 1.00000
+    1087 = 1.00000
+    1088 = 1.00000
+    1089 = 1.00000
+    1090 = 1.00000
+    1091 = 1.00000
+    1092 = 1.00000
+    1093 = 1.00000
+    1094 = 1.00000
+    1096 = 1.00000
+    1097 = 1.00000
+    1098 = 1.00000
+    1100 = 1.00000
+    1101 = 1.00000
+    1102 = 1.00000
+    1103 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1109 = 1.00000
+    1110 = 1.00000
+    1111 = 1.00000
+    1144 = 1.00000
+    1145 = 1.00000
+    1147 = 1.00000
+    1148 = 1.00000
+    1153 = 1.00000
+    1154 = 1.00000
+    1156 = 1.00000
+    1157 = 1.00000
+    1167 = 1.00000
+    1169 = 1.00000
+    1173 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1178 = 1.00000
+    1182 = 1.00000
+    1184 = 1.00000
+    1191 = 1.00000
+    1192 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1196 = 1.00000
+    1197 = 1.00000
+    1199 = 1.00000
+    1200 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1204 = 1.00000
+    1205 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1217 = 1.00000
+    1218 = 1.00000
+    1220 = 1.00000
+    1222 = 1.00000
+    1223 = 1.00000
+    1228 = 1.00000
+    1229 = 1.00000
+    1233 = 1.00000
+    1235 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1241 = 1.00000
+    1242 = 1.00000
+    1244 = 1.00000
+    1246 = 1.00000
+    1247 = 1.00000
+    1252 = 1.00000
+    1253 = 1.00000
+    1257 = 1.00000
+    1259 = 1.00000
+    1269 = 1.00000
+    1271 = 1.00000
+    1278 = 1.00000
+    1280 = 1.00000
+    1284 = 1.00000
+    1286 = 1.00000
+    1293 = 1.00000
+    1295 = 1.00000
+    1306 = 1.00000
+    1307 = 1.00000
+    1312 = 1.00000
+    1313 = 1.00000
+    1321 = 1.00000
+    1322 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1368 = 1.00000
+    1370 = 1.00000
+    1372 = 1.00000
+    1373 = 1.00000
+    1378 = 1.00000
+    1379 = 1.00000
+    1383 = 1.00000
+    1385 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1391 = 1.00000
+    1392 = 1.00000
+    1394 = 1.00000
+    1396 = 1.00000
+    1397 = 1.00000
+    1402 = 1.00000
+    1403 = 1.00000
+    1407 = 1.00000
+    1409 = 1.00000
+    1419 = 1.00000
+    1421 = 1.00000
+    1428 = 1.00000
+    1430 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1443 = 1.00000
+    1445 = 1.00000
+    1456 = 1.00000
+    1457 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1471 = 1.00000
+    1472 = 1.00000
+    1477 = 1.00000
+    1478 = 1.00000
+    1515 = 1.00000
+    1517 = 1.00000
+    1524 = 1.00000
+    1526 = 1.00000
+    1530 = 1.00000
+    1532 = 1.00000
+    1539 = 1.00000
+    1541 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1553 = 1.00000
+    1555 = 1.00000
+    1556 = 1.00000
+    1558 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1562 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1568 = 1.00000
+    1570 = 1.00000
+    1571 = 1.00000
+    1573 = 1.00000
+    1574 = 1.00000
+    1575 = 1.00000
+    1577 = 1.00000
+    1612 = 1.00000
+    1613 = 1.00000
+    1615 = 1.00000
+    1616 = 1.00000
+    1621 = 1.00000
+    1622 = 1.00000
+    1624 = 1.00000
+    1625 = 1.00000
+    1635 = 1.00000
+    1637 = 1.00000
+    1644 = 1.00000
+    1646 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1659 = 1.00000
+    1661 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1676 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1688 = 1.00000
+    1690 = 1.00000
+    1691 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1697 = 1.00000
+    1732 = 1.00000
+    1733 = 1.00000
+    1735 = 1.00000
+    1736 = 1.00000
+    1741 = 1.00000
+    1742 = 1.00000
+    1744 = 1.00000
+    1745 = 1.00000
+    1756 = 1.00000
+    1757 = 1.00000
+    1762 = 1.00000
+    1763 = 1.00000
+    1771 = 1.00000
+    1772 = 1.00000
+    1777 = 1.00000
+    1778 = 1.00000
+    1815 = 1.00000
+    1816 = 1.00000
+    1817 = 1.00000
+    1818 = 1.00000
+    1820 = 1.00000
+    1822 = 1.00000
+    1823 = 1.00000
+    1827 = 1.00000
+    1829 = 1.00000
+    1830 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1833 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1838 = 1.00000
+    1842 = 1.00000
+    1844 = 1.00000
+    1851 = 1.00000
+    1853 = 1.00000
+    1857 = 1.00000
+    1859 = 1.00000
+    1860 = 1.00000
+    1862 = 1.00000
+    1866 = 1.00000
+    1868 = 1.00000
+    1876 = 1.00000
+    1877 = 1.00000
+    1882 = 1.00000
+    1883 = 1.00000
+    1891 = 1.00000
+    1892 = 1.00000
+    1897 = 1.00000
+    1898 = 1.00000
+    1935 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1938 = 1.00000
+    1940 = 1.00000
+    1942 = 1.00000
+    1943 = 1.00000
+    1947 = 1.00000
+    1949 = 1.00000
+    1950 = 1.00000
+    1951 = 1.00000
+    1952 = 1.00000
+    1953 = 1.00000
+    1955 = 1.00000
+    1957 = 1.00000
+    1958 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1971 = 1.00000
+    1973 = 1.00000
+    1977 = 1.00000
+    1979 = 1.00000
+    1980 = 1.00000
+    1982 = 1.00000
+    1986 = 1.00000
+    1988 = 1.00000
+    2020 = 1.00000
+    2021 = 1.00000
+    2023 = 1.00000
+    2024 = 1.00000
+    2029 = 1.00000
+    2030 = 1.00000
+    2032 = 1.00000
+    2033 = 1.00000
+    2043 = 1.00000
+    2045 = 1.00000
+    2049 = 1.00000
+    2051 = 1.00000
+    2052 = 1.00000
+    2054 = 1.00000
+    2058 = 1.00000
+    2060 = 1.00000
+    2067 = 1.00000
+    2068 = 1.00000
+    2069 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2073 = 1.00000
+    2075 = 1.00000
+    2076 = 1.00000
+    2077 = 1.00000
+    2078 = 1.00000
+    2080 = 1.00000
+    2081 = 1.00000
+    2082 = 1.00000
+    2084 = 1.00000
+    2116 = 1.00000
+    2117 = 1.00000
+    2119 = 1.00000
+    2120 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2128 = 1.00000
+    2129 = 1.00000
+    2139 = 1.00000
+    2141 = 1.00000
+    2145 = 1.00000
+    2147 = 1.00000
+    2148 = 1.00000
+    2150 = 1.00000
+    2154 = 1.00000
+    2156 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2173 = 1.00000
+    2174 = 1.00000
+    2176 = 1.00000
+    2177 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(2)^3], case=5
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    10 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    25 = 1.00000
+    26 = 1.00000
+    27 = 1.00000
+    28 = 1.00000
+    30 = 1.00000
+    31 = 1.00000
+    32 = 1.00000
+    33 = 1.00000
+    34 = 1.00000
+    37 = 1.00000
+    38 = 1.00000
+    42 = 1.00000
+    44 = 1.00000
+    48 = 1.00000
+    49 = 1.00000
+    50 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    55 = 1.00000
+    56 = 1.00000
+    61 = 1.00000
+    62 = 1.00000
+    66 = 1.00000
+    68 = 1.00000
+    72 = 1.00000
+    73 = 1.00000
+    81 = 1.00000
+    82 = 1.00000
+    83 = 1.00000
+    84 = 1.00000
+    85 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    93 = 1.00000
+    94 = 1.00000
+    96 = 1.00000
+    97 = 1.00000
+    98 = 1.00000
+    99 = 1.00000
+    100 = 1.00000
+    105 = 1.00000
+    107 = 1.00000
+    111 = 1.00000
+    113 = 1.00000
+    120 = 1.00000
+    122 = 1.00000
+    126 = 1.00000
+    127 = 1.00000
+    135 = 1.00000
+    136 = 1.00000
+    137 = 1.00000
+    138 = 1.00000
+    139 = 1.00000
+    142 = 1.00000
+    143 = 1.00000
+    147 = 1.00000
+    148 = 1.00000
+    149 = 1.00000
+    150 = 1.00000
+    151 = 1.00000
+    153 = 1.00000
+    154 = 1.00000
+    157 = 1.00000
+    158 = 1.00000
+    166 = 1.00000
+    167 = 1.00000
+    172 = 1.00000
+    173 = 1.00000
+    180 = 1.00000
+    181 = 1.00000
+    189 = 1.00000
+    190 = 1.00000
+    195 = 1.00000
+    196 = 1.00000
+    198 = 1.00000
+    199 = 1.00000
+    216 = 1.00000
+    217 = 1.00000
+    225 = 1.00000
+    226 = 1.00000
+    227 = 1.00000
+    228 = 1.00000
+    230 = 1.00000
+    232 = 1.00000
+    233 = 1.00000
+    238 = 1.00000
+    239 = 1.00000
+    243 = 1.00000
+    245 = 1.00000
+    249 = 1.00000
+    250 = 1.00000
+    251 = 1.00000
+    252 = 1.00000
+    254 = 1.00000
+    256 = 1.00000
+    257 = 1.00000
+    262 = 1.00000
+    263 = 1.00000
+    267 = 1.00000
+    269 = 1.00000
+    279 = 1.00000
+    281 = 1.00000
+    288 = 1.00000
+    290 = 1.00000
+    294 = 1.00000
+    296 = 1.00000
+    303 = 1.00000
+    305 = 1.00000
+    316 = 1.00000
+    317 = 1.00000
+    322 = 1.00000
+    323 = 1.00000
+    331 = 1.00000
+    332 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    375 = 1.00000
+    376 = 1.00000
+    377 = 1.00000
+    378 = 1.00000
+    379 = 1.00000
+    381 = 1.00000
+    383 = 1.00000
+    387 = 1.00000
+    388 = 1.00000
+    390 = 1.00000
+    391 = 1.00000
+    392 = 1.00000
+    393 = 1.00000
+    394 = 1.00000
+    399 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    407 = 1.00000
+    414 = 1.00000
+    416 = 1.00000
+    420 = 1.00000
+    421 = 1.00000
+    429 = 1.00000
+    430 = 1.00000
+    431 = 1.00000
+    432 = 1.00000
+    433 = 1.00000
+    434 = 1.00000
+    435 = 1.00000
+    436 = 1.00000
+    437 = 1.00000
+    439 = 1.00000
+    440 = 1.00000
+    441 = 1.00000
+    442 = 1.00000
+    443 = 1.00000
+    444 = 1.00000
+    445 = 1.00000
+    446 = 1.00000
+    447 = 1.00000
+    448 = 1.00000
+    451 = 1.00000
+    452 = 1.00000
+    453 = 1.00000
+    455 = 1.00000
+    459 = 1.00000
+    460 = 1.00000
+    461 = 1.00000
+    463 = 1.00000
+    464 = 1.00000
+    466 = 1.00000
+    467 = 1.00000
+    468 = 1.00000
+    470 = 1.00000
+    474 = 1.00000
+    475 = 1.00000
+    483 = 1.00000
+    484 = 1.00000
+    489 = 1.00000
+    490 = 1.00000
+    492 = 1.00000
+    493 = 1.00000
+    510 = 1.00000
+    511 = 1.00000
+    519 = 1.00000
+    520 = 1.00000
+    521 = 1.00000
+    523 = 1.00000
+    524 = 1.00000
+    525 = 1.00000
+    526 = 1.00000
+    527 = 1.00000
+    528 = 1.00000
+    529 = 1.00000
+    532 = 1.00000
+    533 = 1.00000
+    538 = 1.00000
+    539 = 1.00000
+    541 = 1.00000
+    542 = 1.00000
+    546 = 1.00000
+    547 = 1.00000
+    555 = 1.00000
+    557 = 1.00000
+    564 = 1.00000
+    566 = 1.00000
+    570 = 1.00000
+    572 = 1.00000
+    579 = 1.00000
+    581 = 1.00000
+    591 = 1.00000
+    592 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    598 = 1.00000
+    599 = 1.00000
+    600 = 1.00000
+    602 = 1.00000
+    606 = 1.00000
+    607 = 1.00000
+    608 = 1.00000
+    610 = 1.00000
+    611 = 1.00000
+    613 = 1.00000
+    614 = 1.00000
+    615 = 1.00000
+    617 = 1.00000
+    652 = 1.00000
+    653 = 1.00000
+    655 = 1.00000
+    656 = 1.00000
+    661 = 1.00000
+    662 = 1.00000
+    664 = 1.00000
+    665 = 1.00000
+    675 = 1.00000
+    676 = 1.00000
+    677 = 1.00000
+    678 = 1.00000
+    679 = 1.00000
+    682 = 1.00000
+    683 = 1.00000
+    687 = 1.00000
+    688 = 1.00000
+    689 = 1.00000
+    690 = 1.00000
+    691 = 1.00000
+    693 = 1.00000
+    694 = 1.00000
+    697 = 1.00000
+    698 = 1.00000
+    706 = 1.00000
+    707 = 1.00000
+    712 = 1.00000
+    713 = 1.00000
+    720 = 1.00000
+    721 = 1.00000
+    729 = 1.00000
+    730 = 1.00000
+    735 = 1.00000
+    736 = 1.00000
+    738 = 1.00000
+    739 = 1.00000
+    756 = 1.00000
+    757 = 1.00000
+    765 = 1.00000
+    766 = 1.00000
+    767 = 1.00000
+    768 = 1.00000
+    769 = 1.00000
+    770 = 1.00000
+    771 = 1.00000
+    772 = 1.00000
+    773 = 1.00000
+    774 = 1.00000
+    776 = 1.00000
+    777 = 1.00000
+    778 = 1.00000
+    779 = 1.00000
+    780 = 1.00000
+    781 = 1.00000
+    783 = 1.00000
+    784 = 1.00000
+    785 = 1.00000
+    787 = 1.00000
+    788 = 1.00000
+    792 = 1.00000
+    794 = 1.00000
+    795 = 1.00000
+    796 = 1.00000
+    797 = 1.00000
+    798 = 1.00000
+    800 = 1.00000
+    802 = 1.00000
+    803 = 1.00000
+    807 = 1.00000
+    809 = 1.00000
+    810 = 1.00000
+    811 = 1.00000
+    819 = 1.00000
+    820 = 1.00000
+    821 = 1.00000
+    822 = 1.00000
+    824 = 1.00000
+    825 = 1.00000
+    826 = 1.00000
+    828 = 1.00000
+    829 = 1.00000
+    830 = 1.00000
+    834 = 1.00000
+    836 = 1.00000
+    837 = 1.00000
+    839 = 1.00000
+    843 = 1.00000
+    845 = 1.00000
+    846 = 1.00000
+    847 = 1.00000
+    856 = 1.00000
+    857 = 1.00000
+    862 = 1.00000
+    863 = 1.00000
+    871 = 1.00000
+    872 = 1.00000
+    877 = 1.00000
+    878 = 1.00000
+    915 = 1.00000
+    916 = 1.00000
+    917 = 1.00000
+    918 = 1.00000
+    920 = 1.00000
+    922 = 1.00000
+    923 = 1.00000
+    927 = 1.00000
+    929 = 1.00000
+    930 = 1.00000
+    931 = 1.00000
+    932 = 1.00000
+    933 = 1.00000
+    935 = 1.00000
+    937 = 1.00000
+    938 = 1.00000
+    942 = 1.00000
+    944 = 1.00000
+    951 = 1.00000
+    953 = 1.00000
+    957 = 1.00000
+    959 = 1.00000
+    960 = 1.00000
+    962 = 1.00000
+    966 = 1.00000
+    968 = 1.00000
+    975 = 1.00000
+    976 = 1.00000
+    981 = 1.00000
+    982 = 1.00000
+    984 = 1.00000
+    985 = 1.00000
+    1002 = 1.00000
+    1003 = 1.00000
+    1011 = 1.00000
+    1012 = 1.00000
+    1013 = 1.00000
+    1015 = 1.00000
+    1016 = 1.00000
+    1017 = 1.00000
+    1018 = 1.00000
+    1019 = 1.00000
+    1020 = 1.00000
+    1021 = 1.00000
+    1024 = 1.00000
+    1025 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1033 = 1.00000
+    1034 = 1.00000
+    1038 = 1.00000
+    1039 = 1.00000
+    1047 = 1.00000
+    1048 = 1.00000
+    1049 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1053 = 1.00000
+    1054 = 1.00000
+    1056 = 1.00000
+    1057 = 1.00000
+    1058 = 1.00000
+    1062 = 1.00000
+    1064 = 1.00000
+    1065 = 1.00000
+    1067 = 1.00000
+    1071 = 1.00000
+    1073 = 1.00000
+    1074 = 1.00000
+    1075 = 1.00000
+    1083 = 1.00000
+    1084 = 1.00000
+    1085 = 1.00000
+    1086 = 1.00000
+    1087 = 1.00000
+    1088 = 1.00000
+    1089 = 1.00000
+    1090 = 1.00000
+    1091 = 1.00000
+    1092 = 1.00000
+    1093 = 1.00000
+    1094 = 1.00000
+    1096 = 1.00000
+    1097 = 1.00000
+    1098 = 1.00000
+    1100 = 1.00000
+    1101 = 1.00000
+    1102 = 1.00000
+    1103 = 1.00000
+    1105 = 1.00000
+    1106 = 1.00000
+    1107 = 1.00000
+    1109 = 1.00000
+    1110 = 1.00000
+    1111 = 1.00000
+    1144 = 1.00000
+    1145 = 1.00000
+    1147 = 1.00000
+    1148 = 1.00000
+    1153 = 1.00000
+    1154 = 1.00000
+    1156 = 1.00000
+    1157 = 1.00000
+    1167 = 1.00000
+    1169 = 1.00000
+    1173 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1178 = 1.00000
+    1182 = 1.00000
+    1184 = 1.00000
+    1191 = 1.00000
+    1192 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1196 = 1.00000
+    1197 = 1.00000
+    1199 = 1.00000
+    1200 = 1.00000
+    1201 = 1.00000
+    1202 = 1.00000
+    1204 = 1.00000
+    1205 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1215 = 1.00000
+    1216 = 1.00000
+    1217 = 1.00000
+    1218 = 1.00000
+    1220 = 1.00000
+    1222 = 1.00000
+    1223 = 1.00000
+    1228 = 1.00000
+    1229 = 1.00000
+    1233 = 1.00000
+    1235 = 1.00000
+    1239 = 1.00000
+    1240 = 1.00000
+    1241 = 1.00000
+    1242 = 1.00000
+    1244 = 1.00000
+    1246 = 1.00000
+    1247 = 1.00000
+    1252 = 1.00000
+    1253 = 1.00000
+    1257 = 1.00000
+    1259 = 1.00000
+    1269 = 1.00000
+    1271 = 1.00000
+    1278 = 1.00000
+    1280 = 1.00000
+    1284 = 1.00000
+    1286 = 1.00000
+    1293 = 1.00000
+    1295 = 1.00000
+    1306 = 1.00000
+    1307 = 1.00000
+    1312 = 1.00000
+    1313 = 1.00000
+    1321 = 1.00000
+    1322 = 1.00000
+    1327 = 1.00000
+    1328 = 1.00000
+    1365 = 1.00000
+    1366 = 1.00000
+    1367 = 1.00000
+    1368 = 1.00000
+    1369 = 1.00000
+    1370 = 1.00000
+    1371 = 1.00000
+    1372 = 1.00000
+    1373 = 1.00000
+    1374 = 1.00000
+    1375 = 1.00000
+    1377 = 1.00000
+    1378 = 1.00000
+    1379 = 1.00000
+    1380 = 1.00000
+    1381 = 1.00000
+    1383 = 1.00000
+    1384 = 1.00000
+    1385 = 1.00000
+    1386 = 1.00000
+    1387 = 1.00000
+    1389 = 1.00000
+    1390 = 1.00000
+    1391 = 1.00000
+    1392 = 1.00000
+    1394 = 1.00000
+    1396 = 1.00000
+    1397 = 1.00000
+    1402 = 1.00000
+    1403 = 1.00000
+    1407 = 1.00000
+    1409 = 1.00000
+    1413 = 1.00000
+    1414 = 1.00000
+    1419 = 1.00000
+    1420 = 1.00000
+    1421 = 1.00000
+    1422 = 1.00000
+    1423 = 1.00000
+    1425 = 1.00000
+    1426 = 1.00000
+    1428 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1431 = 1.00000
+    1432 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1443 = 1.00000
+    1445 = 1.00000
+    1449 = 1.00000
+    1450 = 1.00000
+    1455 = 1.00000
+    1456 = 1.00000
+    1457 = 1.00000
+    1458 = 1.00000
+    1459 = 1.00000
+    1461 = 1.00000
+    1462 = 1.00000
+    1463 = 1.00000
+    1464 = 1.00000
+    1465 = 1.00000
+    1467 = 1.00000
+    1468 = 1.00000
+    1471 = 1.00000
+    1472 = 1.00000
+    1477 = 1.00000
+    1478 = 1.00000
+    1485 = 1.00000
+    1486 = 1.00000
+    1491 = 1.00000
+    1492 = 1.00000
+    1494 = 1.00000
+    1495 = 1.00000
+    1497 = 1.00000
+    1498 = 1.00000
+    1509 = 1.00000
+    1510 = 1.00000
+    1515 = 1.00000
+    1517 = 1.00000
+    1524 = 1.00000
+    1526 = 1.00000
+    1530 = 1.00000
+    1532 = 1.00000
+    1539 = 1.00000
+    1541 = 1.00000
+    1551 = 1.00000
+    1552 = 1.00000
+    1553 = 1.00000
+    1555 = 1.00000
+    1556 = 1.00000
+    1558 = 1.00000
+    1559 = 1.00000
+    1560 = 1.00000
+    1562 = 1.00000
+    1566 = 1.00000
+    1567 = 1.00000
+    1568 = 1.00000
+    1570 = 1.00000
+    1571 = 1.00000
+    1573 = 1.00000
+    1574 = 1.00000
+    1575 = 1.00000
+    1577 = 1.00000
+    1612 = 1.00000
+    1613 = 1.00000
+    1615 = 1.00000
+    1616 = 1.00000
+    1621 = 1.00000
+    1622 = 1.00000
+    1624 = 1.00000
+    1625 = 1.00000
+    1635 = 1.00000
+    1636 = 1.00000
+    1637 = 1.00000
+    1638 = 1.00000
+    1639 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1644 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1647 = 1.00000
+    1648 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1659 = 1.00000
+    1661 = 1.00000
+    1665 = 1.00000
+    1666 = 1.00000
+    1671 = 1.00000
+    1672 = 1.00000
+    1673 = 1.00000
+    1674 = 1.00000
+    1675 = 1.00000
+    1676 = 1.00000
+    1677 = 1.00000
+    1678 = 1.00000
+    1679 = 1.00000
+    1680 = 1.00000
+    1681 = 1.00000
+    1682 = 1.00000
+    1683 = 1.00000
+    1684 = 1.00000
+    1686 = 1.00000
+    1687 = 1.00000
+    1688 = 1.00000
+    1690 = 1.00000
+    1691 = 1.00000
+    1693 = 1.00000
+    1694 = 1.00000
+    1695 = 1.00000
+    1697 = 1.00000
+    1701 = 1.00000
+    1702 = 1.00000
+    1707 = 1.00000
+    1708 = 1.00000
+    1710 = 1.00000
+    1711 = 1.00000
+    1713 = 1.00000
+    1714 = 1.00000
+    1725 = 1.00000
+    1726 = 1.00000
+    1731 = 1.00000
+    1732 = 1.00000
+    1733 = 1.00000
+    1734 = 1.00000
+    1735 = 1.00000
+    1736 = 1.00000
+    1737 = 1.00000
+    1738 = 1.00000
+    1741 = 1.00000
+    1742 = 1.00000
+    1744 = 1.00000
+    1745 = 1.00000
+    1749 = 1.00000
+    1750 = 1.00000
+    1756 = 1.00000
+    1757 = 1.00000
+    1762 = 1.00000
+    1763 = 1.00000
+    1771 = 1.00000
+    1772 = 1.00000
+    1777 = 1.00000
+    1778 = 1.00000
+    1815 = 1.00000
+    1816 = 1.00000
+    1817 = 1.00000
+    1818 = 1.00000
+    1820 = 1.00000
+    1822 = 1.00000
+    1823 = 1.00000
+    1827 = 1.00000
+    1829 = 1.00000
+    1830 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1833 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1838 = 1.00000
+    1842 = 1.00000
+    1844 = 1.00000
+    1851 = 1.00000
+    1853 = 1.00000
+    1857 = 1.00000
+    1859 = 1.00000
+    1860 = 1.00000
+    1862 = 1.00000
+    1866 = 1.00000
+    1868 = 1.00000
+    1875 = 1.00000
+    1876 = 1.00000
+    1877 = 1.00000
+    1878 = 1.00000
+    1879 = 1.00000
+    1881 = 1.00000
+    1882 = 1.00000
+    1883 = 1.00000
+    1884 = 1.00000
+    1885 = 1.00000
+    1887 = 1.00000
+    1888 = 1.00000
+    1891 = 1.00000
+    1892 = 1.00000
+    1897 = 1.00000
+    1898 = 1.00000
+    1905 = 1.00000
+    1906 = 1.00000
+    1911 = 1.00000
+    1912 = 1.00000
+    1914 = 1.00000
+    1915 = 1.00000
+    1917 = 1.00000
+    1918 = 1.00000
+    1929 = 1.00000
+    1930 = 1.00000
+    1935 = 1.00000
+    1936 = 1.00000
+    1937 = 1.00000
+    1938 = 1.00000
+    1939 = 1.00000
+    1940 = 1.00000
+    1941 = 1.00000
+    1942 = 1.00000
+    1943 = 1.00000
+    1944 = 1.00000
+    1945 = 1.00000
+    1947 = 1.00000
+    1948 = 1.00000
+    1949 = 1.00000
+    1950 = 1.00000
+    1951 = 1.00000
+    1952 = 1.00000
+    1953 = 1.00000
+    1955 = 1.00000
+    1957 = 1.00000
+    1958 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1965 = 1.00000
+    1966 = 1.00000
+    1971 = 1.00000
+    1972 = 1.00000
+    1973 = 1.00000
+    1974 = 1.00000
+    1975 = 1.00000
+    1977 = 1.00000
+    1978 = 1.00000
+    1979 = 1.00000
+    1980 = 1.00000
+    1982 = 1.00000
+    1986 = 1.00000
+    1988 = 1.00000
+    1989 = 1.00000
+    1990 = 1.00000
+    2020 = 1.00000
+    2021 = 1.00000
+    2023 = 1.00000
+    2024 = 1.00000
+    2029 = 1.00000
+    2030 = 1.00000
+    2032 = 1.00000
+    2033 = 1.00000
+    2043 = 1.00000
+    2045 = 1.00000
+    2049 = 1.00000
+    2051 = 1.00000
+    2052 = 1.00000
+    2054 = 1.00000
+    2058 = 1.00000
+    2060 = 1.00000
+    2067 = 1.00000
+    2068 = 1.00000
+    2069 = 1.00000
+    2071 = 1.00000
+    2072 = 1.00000
+    2073 = 1.00000
+    2075 = 1.00000
+    2076 = 1.00000
+    2077 = 1.00000
+    2078 = 1.00000
+    2080 = 1.00000
+    2081 = 1.00000
+    2082 = 1.00000
+    2084 = 1.00000
+    2091 = 1.00000
+    2092 = 1.00000
+    2094 = 1.00000
+    2095 = 1.00000
+    2097 = 1.00000
+    2098 = 1.00000
+    2109 = 1.00000
+    2110 = 1.00000
+    2115 = 1.00000
+    2116 = 1.00000
+    2117 = 1.00000
+    2118 = 1.00000
+    2119 = 1.00000
+    2120 = 1.00000
+    2121 = 1.00000
+    2122 = 1.00000
+    2125 = 1.00000
+    2126 = 1.00000
+    2128 = 1.00000
+    2129 = 1.00000
+    2133 = 1.00000
+    2134 = 1.00000
+    2139 = 1.00000
+    2140 = 1.00000
+    2141 = 1.00000
+    2142 = 1.00000
+    2143 = 1.00000
+    2145 = 1.00000
+    2146 = 1.00000
+    2147 = 1.00000
+    2148 = 1.00000
+    2150 = 1.00000
+    2154 = 1.00000
+    2156 = 1.00000
+    2157 = 1.00000
+    2158 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2166 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2173 = 1.00000
+    2174 = 1.00000
+    2176 = 1.00000
+    2177 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2181 = 1.00000
+    2182 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=0
+    1 = 1.00000
+    2 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    26 = 1.00000
+    28 = 1.00000
+    27 = 1.00000
+    29 = 1.00000
+    50 = 1.00000
+    52 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    74 = 1.00000
+    76 = 1.00000
+    75 = 1.00000
+    77 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    100 = 1.00000
+    104 = 1.00000
+    101 = 1.00000
+    105 = 1.00000
+    102 = 1.00000
+    106 = 1.00000
+    103 = 1.00000
+    107 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    350 = 1.00000
+    352 = 1.00000
+    351 = 1.00000
+    353 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    386 = 1.00000
+    388 = 1.00000
+    387 = 1.00000
+    389 = 1.00000
+    400 = 1.00000
+    404 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    402 = 1.00000
+    406 = 1.00000
+    403 = 1.00000
+    407 = 1.00000
+    589 = 1.00000
+    590 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    602 = 1.00000
+    604 = 1.00000
+    603 = 1.00000
+    605 = 1.00000
+    626 = 1.00000
+    628 = 1.00000
+    627 = 1.00000
+    629 = 1.00000
+    638 = 1.00000
+    640 = 1.00000
+    639 = 1.00000
+    641 = 1.00000
+    652 = 1.00000
+    656 = 1.00000
+    653 = 1.00000
+    657 = 1.00000
+    654 = 1.00000
+    658 = 1.00000
+    655 = 1.00000
+    659 = 1.00000
+    841 = 1.00000
+    842 = 1.00000
+    848 = 1.00000
+    850 = 1.00000
+    849 = 1.00000
+    851 = 1.00000
+    866 = 1.00000
+    868 = 1.00000
+    867 = 1.00000
+    869 = 1.00000
+    880 = 1.00000
+    884 = 1.00000
+    881 = 1.00000
+    885 = 1.00000
+    882 = 1.00000
+    886 = 1.00000
+    883 = 1.00000
+    887 = 1.00000
+    1912 = 1.00000
+    1913 = 1.00000
+    1918 = 1.00000
+    1919 = 1.00000
+    1925 = 1.00000
+    1927 = 1.00000
+    1926 = 1.00000
+    1928 = 1.00000
+    1943 = 1.00000
+    1945 = 1.00000
+    1944 = 1.00000
+    1946 = 1.00000
+    1961 = 1.00000
+    1963 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1975 = 1.00000
+    1979 = 1.00000
+    1976 = 1.00000
+    1980 = 1.00000
+    1977 = 1.00000
+    1981 = 1.00000
+    1978 = 1.00000
+    1982 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2177 = 1.00000
+    2179 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2195 = 1.00000
+    2197 = 1.00000
+    2196 = 1.00000
+    2198 = 1.00000
+    2213 = 1.00000
+    2215 = 1.00000
+    2214 = 1.00000
+    2216 = 1.00000
+    2227 = 1.00000
+    2231 = 1.00000
+    2228 = 1.00000
+    2232 = 1.00000
+    2229 = 1.00000
+    2233 = 1.00000
+    2230 = 1.00000
+    2234 = 1.00000
+    2416 = 1.00000
+    2417 = 1.00000
+    2423 = 1.00000
+    2425 = 1.00000
+    2424 = 1.00000
+    2426 = 1.00000
+    2441 = 1.00000
+    2443 = 1.00000
+    2442 = 1.00000
+    2444 = 1.00000
+    2455 = 1.00000
+    2459 = 1.00000
+    2456 = 1.00000
+    2460 = 1.00000
+    2457 = 1.00000
+    2461 = 1.00000
+    2458 = 1.00000
+    2462 = 1.00000
+    2605 = 1.00000
+    2606 = 1.00000
+    2612 = 1.00000
+    2614 = 1.00000
+    2613 = 1.00000
+    2615 = 1.00000
+    2630 = 1.00000
+    2632 = 1.00000
+    2631 = 1.00000
+    2633 = 1.00000
+    2644 = 1.00000
+    2648 = 1.00000
+    2645 = 1.00000
+    2649 = 1.00000
+    2646 = 1.00000
+    2650 = 1.00000
+    2647 = 1.00000
+    2651 = 1.00000
+    3550 = 1.00000
+    3551 = 1.00000
+    3556 = 1.00000
+    3557 = 1.00000
+    3563 = 1.00000
+    3565 = 1.00000
+    3564 = 1.00000
+    3566 = 1.00000
+    3587 = 1.00000
+    3589 = 1.00000
+    3588 = 1.00000
+    3590 = 1.00000
+    3599 = 1.00000
+    3601 = 1.00000
+    3600 = 1.00000
+    3602 = 1.00000
+    3613 = 1.00000
+    3617 = 1.00000
+    3614 = 1.00000
+    3618 = 1.00000
+    3615 = 1.00000
+    3619 = 1.00000
+    3616 = 1.00000
+    3620 = 1.00000
+    3802 = 1.00000
+    3803 = 1.00000
+    3809 = 1.00000
+    3811 = 1.00000
+    3810 = 1.00000
+    3812 = 1.00000
+    3827 = 1.00000
+    3829 = 1.00000
+    3828 = 1.00000
+    3830 = 1.00000
+    3841 = 1.00000
+    3845 = 1.00000
+    3842 = 1.00000
+    3846 = 1.00000
+    3843 = 1.00000
+    3847 = 1.00000
+    3844 = 1.00000
+    3848 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3997 = 1.00000
+    3998 = 1.00000
+    4004 = 1.00000
+    4006 = 1.00000
+    4005 = 1.00000
+    4007 = 1.00000
+    4028 = 1.00000
+    4030 = 1.00000
+    4029 = 1.00000
+    4031 = 1.00000
+    4040 = 1.00000
+    4042 = 1.00000
+    4041 = 1.00000
+    4043 = 1.00000
+    4054 = 1.00000
+    4058 = 1.00000
+    4055 = 1.00000
+    4059 = 1.00000
+    4056 = 1.00000
+    4060 = 1.00000
+    4057 = 1.00000
+    4061 = 1.00000
+    4243 = 1.00000
+    4244 = 1.00000
+    4250 = 1.00000
+    4252 = 1.00000
+    4251 = 1.00000
+    4253 = 1.00000
+    4268 = 1.00000
+    4270 = 1.00000
+    4269 = 1.00000
+    4271 = 1.00000
+    4282 = 1.00000
+    4286 = 1.00000
+    4283 = 1.00000
+    4287 = 1.00000
+    4284 = 1.00000
+    4288 = 1.00000
+    4285 = 1.00000
+    4289 = 1.00000
+    5188 = 1.00000
+    5189 = 1.00000
+    5195 = 1.00000
+    5197 = 1.00000
+    5196 = 1.00000
+    5198 = 1.00000
+    5213 = 1.00000
+    5215 = 1.00000
+    5214 = 1.00000
+    5216 = 1.00000
+    5227 = 1.00000
+    5231 = 1.00000
+    5228 = 1.00000
+    5232 = 1.00000
+    5229 = 1.00000
+    5233 = 1.00000
+    5230 = 1.00000
+    5234 = 1.00000
+    5377 = 1.00000
+    5378 = 1.00000
+    5384 = 1.00000
+    5386 = 1.00000
+    5385 = 1.00000
+    5387 = 1.00000
+    5402 = 1.00000
+    5404 = 1.00000
+    5403 = 1.00000
+    5405 = 1.00000
+    5416 = 1.00000
+    5420 = 1.00000
+    5417 = 1.00000
+    5421 = 1.00000
+    5418 = 1.00000
+    5422 = 1.00000
+    5419 = 1.00000
+    5423 = 1.00000
+    5566 = 1.00000
+    5567 = 1.00000
+    5573 = 1.00000
+    5575 = 1.00000
+    5574 = 1.00000
+    5576 = 1.00000
+    5591 = 1.00000
+    5593 = 1.00000
+    5592 = 1.00000
+    5594 = 1.00000
+    5605 = 1.00000
+    5609 = 1.00000
+    5606 = 1.00000
+    5610 = 1.00000
+    5607 = 1.00000
+    5611 = 1.00000
+    5608 = 1.00000
+    5612 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5762 = 1.00000
+    5764 = 1.00000
+    5763 = 1.00000
+    5765 = 1.00000
+    5780 = 1.00000
+    5782 = 1.00000
+    5781 = 1.00000
+    5783 = 1.00000
+    5794 = 1.00000
+    5798 = 1.00000
+    5795 = 1.00000
+    5799 = 1.00000
+    5796 = 1.00000
+    5800 = 1.00000
+    5797 = 1.00000
+    5801 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=1
+    1 = 1.00000
+    2 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    26 = 1.00000
+    28 = 1.00000
+    27 = 1.00000
+    29 = 1.00000
+    50 = 1.00000
+    52 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    74 = 1.00000
+    76 = 1.00000
+    75 = 1.00000
+    77 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    100 = 1.00000
+    104 = 1.00000
+    101 = 1.00000
+    105 = 1.00000
+    102 = 1.00000
+    106 = 1.00000
+    103 = 1.00000
+    107 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    350 = 1.00000
+    352 = 1.00000
+    351 = 1.00000
+    353 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    386 = 1.00000
+    388 = 1.00000
+    387 = 1.00000
+    389 = 1.00000
+    400 = 1.00000
+    404 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    402 = 1.00000
+    406 = 1.00000
+    403 = 1.00000
+    407 = 1.00000
+    589 = 1.00000
+    590 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    602 = 1.00000
+    604 = 1.00000
+    603 = 1.00000
+    605 = 1.00000
+    626 = 1.00000
+    628 = 1.00000
+    627 = 1.00000
+    629 = 1.00000
+    638 = 1.00000
+    640 = 1.00000
+    639 = 1.00000
+    641 = 1.00000
+    652 = 1.00000
+    656 = 1.00000
+    653 = 1.00000
+    657 = 1.00000
+    654 = 1.00000
+    658 = 1.00000
+    655 = 1.00000
+    659 = 1.00000
+    841 = 1.00000
+    842 = 1.00000
+    848 = 1.00000
+    850 = 1.00000
+    849 = 1.00000
+    851 = 1.00000
+    866 = 1.00000
+    868 = 1.00000
+    867 = 1.00000
+    869 = 1.00000
+    880 = 1.00000
+    884 = 1.00000
+    881 = 1.00000
+    885 = 1.00000
+    882 = 1.00000
+    886 = 1.00000
+    883 = 1.00000
+    887 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1177 = 1.00000
+    1178 = 1.00000
+    1180 = 1.00000
+    1181 = 1.00000
+    1183 = 1.00000
+    1184 = 1.00000
+    1187 = 1.00000
+    1189 = 1.00000
+    1188 = 1.00000
+    1190 = 1.00000
+    1205 = 1.00000
+    1207 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1223 = 1.00000
+    1225 = 1.00000
+    1224 = 1.00000
+    1226 = 1.00000
+    1229 = 1.00000
+    1231 = 1.00000
+    1230 = 1.00000
+    1232 = 1.00000
+    1237 = 1.00000
+    1241 = 1.00000
+    1238 = 1.00000
+    1242 = 1.00000
+    1239 = 1.00000
+    1243 = 1.00000
+    1240 = 1.00000
+    1244 = 1.00000
+    1426 = 1.00000
+    1427 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1433 = 1.00000
+    1435 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1445 = 1.00000
+    1447 = 1.00000
+    1446 = 1.00000
+    1448 = 1.00000
+    1457 = 1.00000
+    1459 = 1.00000
+    1458 = 1.00000
+    1460 = 1.00000
+    1465 = 1.00000
+    1469 = 1.00000
+    1466 = 1.00000
+    1470 = 1.00000
+    1467 = 1.00000
+    1471 = 1.00000
+    1468 = 1.00000
+    1472 = 1.00000
+    1642 = 1.00000
+    1643 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1649 = 1.00000
+    1651 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1667 = 1.00000
+    1669 = 1.00000
+    1668 = 1.00000
+    1670 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1674 = 1.00000
+    1676 = 1.00000
+    1681 = 1.00000
+    1685 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1683 = 1.00000
+    1687 = 1.00000
+    1684 = 1.00000
+    1688 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1836 = 1.00000
+    1838 = 1.00000
+    1847 = 1.00000
+    1849 = 1.00000
+    1848 = 1.00000
+    1850 = 1.00000
+    1855 = 1.00000
+    1859 = 1.00000
+    1856 = 1.00000
+    1860 = 1.00000
+    1857 = 1.00000
+    1861 = 1.00000
+    1858 = 1.00000
+    1862 = 1.00000
+    1912 = 1.00000
+    1913 = 1.00000
+    1918 = 1.00000
+    1919 = 1.00000
+    1925 = 1.00000
+    1927 = 1.00000
+    1926 = 1.00000
+    1928 = 1.00000
+    1943 = 1.00000
+    1945 = 1.00000
+    1944 = 1.00000
+    1946 = 1.00000
+    1961 = 1.00000
+    1963 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1975 = 1.00000
+    1979 = 1.00000
+    1976 = 1.00000
+    1980 = 1.00000
+    1977 = 1.00000
+    1981 = 1.00000
+    1978 = 1.00000
+    1982 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2177 = 1.00000
+    2179 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2195 = 1.00000
+    2197 = 1.00000
+    2196 = 1.00000
+    2198 = 1.00000
+    2213 = 1.00000
+    2215 = 1.00000
+    2214 = 1.00000
+    2216 = 1.00000
+    2227 = 1.00000
+    2231 = 1.00000
+    2228 = 1.00000
+    2232 = 1.00000
+    2229 = 1.00000
+    2233 = 1.00000
+    2230 = 1.00000
+    2234 = 1.00000
+    2416 = 1.00000
+    2417 = 1.00000
+    2423 = 1.00000
+    2425 = 1.00000
+    2424 = 1.00000
+    2426 = 1.00000
+    2441 = 1.00000
+    2443 = 1.00000
+    2442 = 1.00000
+    2444 = 1.00000
+    2455 = 1.00000
+    2459 = 1.00000
+    2456 = 1.00000
+    2460 = 1.00000
+    2457 = 1.00000
+    2461 = 1.00000
+    2458 = 1.00000
+    2462 = 1.00000
+    2605 = 1.00000
+    2606 = 1.00000
+    2612 = 1.00000
+    2614 = 1.00000
+    2613 = 1.00000
+    2615 = 1.00000
+    2630 = 1.00000
+    2632 = 1.00000
+    2631 = 1.00000
+    2633 = 1.00000
+    2644 = 1.00000
+    2648 = 1.00000
+    2645 = 1.00000
+    2649 = 1.00000
+    2646 = 1.00000
+    2650 = 1.00000
+    2647 = 1.00000
+    2651 = 1.00000
+    2902 = 1.00000
+    2903 = 1.00000
+    2905 = 1.00000
+    2906 = 1.00000
+    2909 = 1.00000
+    2911 = 1.00000
+    2910 = 1.00000
+    2912 = 1.00000
+    2921 = 1.00000
+    2923 = 1.00000
+    2922 = 1.00000
+    2924 = 1.00000
+    2933 = 1.00000
+    2935 = 1.00000
+    2934 = 1.00000
+    2936 = 1.00000
+    2941 = 1.00000
+    2945 = 1.00000
+    2942 = 1.00000
+    2946 = 1.00000
+    2943 = 1.00000
+    2947 = 1.00000
+    2944 = 1.00000
+    2948 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3121 = 1.00000
+    3122 = 1.00000
+    3125 = 1.00000
+    3127 = 1.00000
+    3126 = 1.00000
+    3128 = 1.00000
+    3137 = 1.00000
+    3139 = 1.00000
+    3138 = 1.00000
+    3140 = 1.00000
+    3149 = 1.00000
+    3151 = 1.00000
+    3150 = 1.00000
+    3152 = 1.00000
+    3157 = 1.00000
+    3161 = 1.00000
+    3158 = 1.00000
+    3162 = 1.00000
+    3159 = 1.00000
+    3163 = 1.00000
+    3160 = 1.00000
+    3164 = 1.00000
+    3307 = 1.00000
+    3308 = 1.00000
+    3311 = 1.00000
+    3313 = 1.00000
+    3312 = 1.00000
+    3314 = 1.00000
+    3323 = 1.00000
+    3325 = 1.00000
+    3324 = 1.00000
+    3326 = 1.00000
+    3331 = 1.00000
+    3335 = 1.00000
+    3332 = 1.00000
+    3336 = 1.00000
+    3333 = 1.00000
+    3337 = 1.00000
+    3334 = 1.00000
+    3338 = 1.00000
+    3469 = 1.00000
+    3470 = 1.00000
+    3473 = 1.00000
+    3475 = 1.00000
+    3474 = 1.00000
+    3476 = 1.00000
+    3485 = 1.00000
+    3487 = 1.00000
+    3486 = 1.00000
+    3488 = 1.00000
+    3493 = 1.00000
+    3497 = 1.00000
+    3494 = 1.00000
+    3498 = 1.00000
+    3495 = 1.00000
+    3499 = 1.00000
+    3496 = 1.00000
+    3500 = 1.00000
+    3550 = 1.00000
+    3551 = 1.00000
+    3556 = 1.00000
+    3557 = 1.00000
+    3563 = 1.00000
+    3565 = 1.00000
+    3564 = 1.00000
+    3566 = 1.00000
+    3587 = 1.00000
+    3589 = 1.00000
+    3588 = 1.00000
+    3590 = 1.00000
+    3599 = 1.00000
+    3601 = 1.00000
+    3600 = 1.00000
+    3602 = 1.00000
+    3613 = 1.00000
+    3617 = 1.00000
+    3614 = 1.00000
+    3618 = 1.00000
+    3615 = 1.00000
+    3619 = 1.00000
+    3616 = 1.00000
+    3620 = 1.00000
+    3802 = 1.00000
+    3803 = 1.00000
+    3809 = 1.00000
+    3811 = 1.00000
+    3810 = 1.00000
+    3812 = 1.00000
+    3827 = 1.00000
+    3829 = 1.00000
+    3828 = 1.00000
+    3830 = 1.00000
+    3841 = 1.00000
+    3845 = 1.00000
+    3842 = 1.00000
+    3846 = 1.00000
+    3843 = 1.00000
+    3847 = 1.00000
+    3844 = 1.00000
+    3848 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3997 = 1.00000
+    3998 = 1.00000
+    4004 = 1.00000
+    4006 = 1.00000
+    4005 = 1.00000
+    4007 = 1.00000
+    4028 = 1.00000
+    4030 = 1.00000
+    4029 = 1.00000
+    4031 = 1.00000
+    4040 = 1.00000
+    4042 = 1.00000
+    4041 = 1.00000
+    4043 = 1.00000
+    4054 = 1.00000
+    4058 = 1.00000
+    4055 = 1.00000
+    4059 = 1.00000
+    4056 = 1.00000
+    4060 = 1.00000
+    4057 = 1.00000
+    4061 = 1.00000
+    4243 = 1.00000
+    4244 = 1.00000
+    4250 = 1.00000
+    4252 = 1.00000
+    4251 = 1.00000
+    4253 = 1.00000
+    4268 = 1.00000
+    4270 = 1.00000
+    4269 = 1.00000
+    4271 = 1.00000
+    4282 = 1.00000
+    4286 = 1.00000
+    4283 = 1.00000
+    4287 = 1.00000
+    4284 = 1.00000
+    4288 = 1.00000
+    4285 = 1.00000
+    4289 = 1.00000
+    4540 = 1.00000
+    4541 = 1.00000
+    4543 = 1.00000
+    4544 = 1.00000
+    4547 = 1.00000
+    4549 = 1.00000
+    4548 = 1.00000
+    4550 = 1.00000
+    4565 = 1.00000
+    4567 = 1.00000
+    4566 = 1.00000
+    4568 = 1.00000
+    4571 = 1.00000
+    4573 = 1.00000
+    4572 = 1.00000
+    4574 = 1.00000
+    4579 = 1.00000
+    4583 = 1.00000
+    4580 = 1.00000
+    4584 = 1.00000
+    4581 = 1.00000
+    4585 = 1.00000
+    4582 = 1.00000
+    4586 = 1.00000
+    4729 = 1.00000
+    4730 = 1.00000
+    4733 = 1.00000
+    4735 = 1.00000
+    4734 = 1.00000
+    4736 = 1.00000
+    4745 = 1.00000
+    4747 = 1.00000
+    4746 = 1.00000
+    4748 = 1.00000
+    4753 = 1.00000
+    4757 = 1.00000
+    4754 = 1.00000
+    4758 = 1.00000
+    4755 = 1.00000
+    4759 = 1.00000
+    4756 = 1.00000
+    4760 = 1.00000
+    4918 = 1.00000
+    4919 = 1.00000
+    4921 = 1.00000
+    4922 = 1.00000
+    4925 = 1.00000
+    4927 = 1.00000
+    4926 = 1.00000
+    4928 = 1.00000
+    4943 = 1.00000
+    4945 = 1.00000
+    4944 = 1.00000
+    4946 = 1.00000
+    4949 = 1.00000
+    4951 = 1.00000
+    4950 = 1.00000
+    4952 = 1.00000
+    4957 = 1.00000
+    4961 = 1.00000
+    4958 = 1.00000
+    4962 = 1.00000
+    4959 = 1.00000
+    4963 = 1.00000
+    4960 = 1.00000
+    4964 = 1.00000
+    5107 = 1.00000
+    5108 = 1.00000
+    5111 = 1.00000
+    5113 = 1.00000
+    5112 = 1.00000
+    5114 = 1.00000
+    5123 = 1.00000
+    5125 = 1.00000
+    5124 = 1.00000
+    5126 = 1.00000
+    5131 = 1.00000
+    5135 = 1.00000
+    5132 = 1.00000
+    5136 = 1.00000
+    5133 = 1.00000
+    5137 = 1.00000
+    5134 = 1.00000
+    5138 = 1.00000
+    5188 = 1.00000
+    5189 = 1.00000
+    5195 = 1.00000
+    5197 = 1.00000
+    5196 = 1.00000
+    5198 = 1.00000
+    5213 = 1.00000
+    5215 = 1.00000
+    5214 = 1.00000
+    5216 = 1.00000
+    5227 = 1.00000
+    5231 = 1.00000
+    5228 = 1.00000
+    5232 = 1.00000
+    5229 = 1.00000
+    5233 = 1.00000
+    5230 = 1.00000
+    5234 = 1.00000
+    5377 = 1.00000
+    5378 = 1.00000
+    5384 = 1.00000
+    5386 = 1.00000
+    5385 = 1.00000
+    5387 = 1.00000
+    5402 = 1.00000
+    5404 = 1.00000
+    5403 = 1.00000
+    5405 = 1.00000
+    5416 = 1.00000
+    5420 = 1.00000
+    5417 = 1.00000
+    5421 = 1.00000
+    5418 = 1.00000
+    5422 = 1.00000
+    5419 = 1.00000
+    5423 = 1.00000
+    5566 = 1.00000
+    5567 = 1.00000
+    5573 = 1.00000
+    5575 = 1.00000
+    5574 = 1.00000
+    5576 = 1.00000
+    5591 = 1.00000
+    5593 = 1.00000
+    5592 = 1.00000
+    5594 = 1.00000
+    5605 = 1.00000
+    5609 = 1.00000
+    5606 = 1.00000
+    5610 = 1.00000
+    5607 = 1.00000
+    5611 = 1.00000
+    5608 = 1.00000
+    5612 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5762 = 1.00000
+    5764 = 1.00000
+    5763 = 1.00000
+    5765 = 1.00000
+    5780 = 1.00000
+    5782 = 1.00000
+    5781 = 1.00000
+    5783 = 1.00000
+    5794 = 1.00000
+    5798 = 1.00000
+    5795 = 1.00000
+    5799 = 1.00000
+    5796 = 1.00000
+    5800 = 1.00000
+    5797 = 1.00000
+    5801 = 1.00000
+    6025 = 1.00000
+    6026 = 1.00000
+    6029 = 1.00000
+    6031 = 1.00000
+    6030 = 1.00000
+    6032 = 1.00000
+    6041 = 1.00000
+    6043 = 1.00000
+    6042 = 1.00000
+    6044 = 1.00000
+    6049 = 1.00000
+    6053 = 1.00000
+    6050 = 1.00000
+    6054 = 1.00000
+    6051 = 1.00000
+    6055 = 1.00000
+    6052 = 1.00000
+    6056 = 1.00000
+    6187 = 1.00000
+    6188 = 1.00000
+    6191 = 1.00000
+    6193 = 1.00000
+    6192 = 1.00000
+    6194 = 1.00000
+    6203 = 1.00000
+    6205 = 1.00000
+    6204 = 1.00000
+    6206 = 1.00000
+    6211 = 1.00000
+    6215 = 1.00000
+    6212 = 1.00000
+    6216 = 1.00000
+    6213 = 1.00000
+    6217 = 1.00000
+    6214 = 1.00000
+    6218 = 1.00000
+    6349 = 1.00000
+    6350 = 1.00000
+    6353 = 1.00000
+    6355 = 1.00000
+    6354 = 1.00000
+    6356 = 1.00000
+    6365 = 1.00000
+    6367 = 1.00000
+    6366 = 1.00000
+    6368 = 1.00000
+    6373 = 1.00000
+    6377 = 1.00000
+    6374 = 1.00000
+    6378 = 1.00000
+    6375 = 1.00000
+    6379 = 1.00000
+    6376 = 1.00000
+    6380 = 1.00000
+    6511 = 1.00000
+    6512 = 1.00000
+    6515 = 1.00000
+    6517 = 1.00000
+    6516 = 1.00000
+    6518 = 1.00000
+    6527 = 1.00000
+    6529 = 1.00000
+    6528 = 1.00000
+    6530 = 1.00000
+    6535 = 1.00000
+    6539 = 1.00000
+    6536 = 1.00000
+    6540 = 1.00000
+    6537 = 1.00000
+    6541 = 1.00000
+    6538 = 1.00000
+    6542 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=2
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    5 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    26 = 1.00000
+    28 = 1.00000
+    27 = 1.00000
+    29 = 1.00000
+    36 = 1.00000
+    40 = 1.00000
+    37 = 1.00000
+    41 = 1.00000
+    50 = 1.00000
+    52 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    60 = 1.00000
+    64 = 1.00000
+    61 = 1.00000
+    65 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    76 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    77 = 1.00000
+    78 = 1.00000
+    82 = 1.00000
+    79 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    100 = 1.00000
+    104 = 1.00000
+    101 = 1.00000
+    105 = 1.00000
+    102 = 1.00000
+    106 = 1.00000
+    103 = 1.00000
+    107 = 1.00000
+    120 = 1.00000
+    128 = 1.00000
+    121 = 1.00000
+    129 = 1.00000
+    122 = 1.00000
+    130 = 1.00000
+    123 = 1.00000
+    131 = 1.00000
+    192 = 1.00000
+    194 = 1.00000
+    198 = 1.00000
+    200 = 1.00000
+    210 = 1.00000
+    214 = 1.00000
+    211 = 1.00000
+    215 = 1.00000
+    228 = 1.00000
+    232 = 1.00000
+    229 = 1.00000
+    233 = 1.00000
+    240 = 1.00000
+    244 = 1.00000
+    241 = 1.00000
+    245 = 1.00000
+    264 = 1.00000
+    272 = 1.00000
+    265 = 1.00000
+    273 = 1.00000
+    266 = 1.00000
+    274 = 1.00000
+    267 = 1.00000
+    275 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    350 = 1.00000
+    352 = 1.00000
+    351 = 1.00000
+    353 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    386 = 1.00000
+    388 = 1.00000
+    387 = 1.00000
+    389 = 1.00000
+    400 = 1.00000
+    404 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    402 = 1.00000
+    406 = 1.00000
+    403 = 1.00000
+    407 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    590 = 1.00000
+    591 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    602 = 1.00000
+    604 = 1.00000
+    603 = 1.00000
+    605 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    613 = 1.00000
+    617 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    628 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    629 = 1.00000
+    630 = 1.00000
+    634 = 1.00000
+    631 = 1.00000
+    635 = 1.00000
+    638 = 1.00000
+    640 = 1.00000
+    639 = 1.00000
+    641 = 1.00000
+    652 = 1.00000
+    656 = 1.00000
+    653 = 1.00000
+    657 = 1.00000
+    654 = 1.00000
+    658 = 1.00000
+    655 = 1.00000
+    659 = 1.00000
+    672 = 1.00000
+    680 = 1.00000
+    673 = 1.00000
+    681 = 1.00000
+    674 = 1.00000
+    682 = 1.00000
+    675 = 1.00000
+    683 = 1.00000
+    732 = 1.00000
+    734 = 1.00000
+    744 = 1.00000
+    748 = 1.00000
+    745 = 1.00000
+    749 = 1.00000
+    756 = 1.00000
+    760 = 1.00000
+    757 = 1.00000
+    761 = 1.00000
+    780 = 1.00000
+    788 = 1.00000
+    781 = 1.00000
+    789 = 1.00000
+    782 = 1.00000
+    790 = 1.00000
+    783 = 1.00000
+    791 = 1.00000
+    841 = 1.00000
+    842 = 1.00000
+    848 = 1.00000
+    850 = 1.00000
+    849 = 1.00000
+    851 = 1.00000
+    866 = 1.00000
+    868 = 1.00000
+    867 = 1.00000
+    869 = 1.00000
+    880 = 1.00000
+    884 = 1.00000
+    881 = 1.00000
+    885 = 1.00000
+    882 = 1.00000
+    886 = 1.00000
+    883 = 1.00000
+    887 = 1.00000
+    1029 = 1.00000
+    1031 = 1.00000
+    1035 = 1.00000
+    1037 = 1.00000
+    1047 = 1.00000
+    1051 = 1.00000
+    1048 = 1.00000
+    1052 = 1.00000
+    1065 = 1.00000
+    1069 = 1.00000
+    1066 = 1.00000
+    1070 = 1.00000
+    1077 = 1.00000
+    1081 = 1.00000
+    1078 = 1.00000
+    1082 = 1.00000
+    1101 = 1.00000
+    1109 = 1.00000
+    1102 = 1.00000
+    1110 = 1.00000
+    1103 = 1.00000
+    1111 = 1.00000
+    1104 = 1.00000
+    1112 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1177 = 1.00000
+    1178 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1181 = 1.00000
+    1183 = 1.00000
+    1184 = 1.00000
+    1187 = 1.00000
+    1189 = 1.00000
+    1188 = 1.00000
+    1190 = 1.00000
+    1191 = 1.00000
+    1195 = 1.00000
+    1192 = 1.00000
+    1196 = 1.00000
+    1205 = 1.00000
+    1207 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1209 = 1.00000
+    1213 = 1.00000
+    1210 = 1.00000
+    1214 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1225 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1226 = 1.00000
+    1229 = 1.00000
+    1231 = 1.00000
+    1230 = 1.00000
+    1232 = 1.00000
+    1237 = 1.00000
+    1241 = 1.00000
+    1238 = 1.00000
+    1242 = 1.00000
+    1239 = 1.00000
+    1243 = 1.00000
+    1240 = 1.00000
+    1244 = 1.00000
+    1245 = 1.00000
+    1253 = 1.00000
+    1246 = 1.00000
+    1254 = 1.00000
+    1247 = 1.00000
+    1255 = 1.00000
+    1248 = 1.00000
+    1256 = 1.00000
+    1426 = 1.00000
+    1427 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1433 = 1.00000
+    1435 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1445 = 1.00000
+    1447 = 1.00000
+    1446 = 1.00000
+    1448 = 1.00000
+    1457 = 1.00000
+    1459 = 1.00000
+    1458 = 1.00000
+    1460 = 1.00000
+    1465 = 1.00000
+    1469 = 1.00000
+    1466 = 1.00000
+    1470 = 1.00000
+    1467 = 1.00000
+    1471 = 1.00000
+    1468 = 1.00000
+    1472 = 1.00000
+    1533 = 1.00000
+    1535 = 1.00000
+    1545 = 1.00000
+    1549 = 1.00000
+    1546 = 1.00000
+    1550 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1558 = 1.00000
+    1562 = 1.00000
+    1581 = 1.00000
+    1589 = 1.00000
+    1582 = 1.00000
+    1590 = 1.00000
+    1583 = 1.00000
+    1591 = 1.00000
+    1584 = 1.00000
+    1592 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1643 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1649 = 1.00000
+    1651 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1653 = 1.00000
+    1657 = 1.00000
+    1654 = 1.00000
+    1658 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1669 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1670 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1674 = 1.00000
+    1676 = 1.00000
+    1681 = 1.00000
+    1685 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1683 = 1.00000
+    1687 = 1.00000
+    1684 = 1.00000
+    1688 = 1.00000
+    1689 = 1.00000
+    1697 = 1.00000
+    1690 = 1.00000
+    1698 = 1.00000
+    1691 = 1.00000
+    1699 = 1.00000
+    1692 = 1.00000
+    1700 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1836 = 1.00000
+    1838 = 1.00000
+    1847 = 1.00000
+    1849 = 1.00000
+    1848 = 1.00000
+    1850 = 1.00000
+    1855 = 1.00000
+    1859 = 1.00000
+    1856 = 1.00000
+    1860 = 1.00000
+    1857 = 1.00000
+    1861 = 1.00000
+    1858 = 1.00000
+    1862 = 1.00000
+    1912 = 1.00000
+    1913 = 1.00000
+    1918 = 1.00000
+    1919 = 1.00000
+    1925 = 1.00000
+    1927 = 1.00000
+    1926 = 1.00000
+    1928 = 1.00000
+    1943 = 1.00000
+    1945 = 1.00000
+    1944 = 1.00000
+    1946 = 1.00000
+    1961 = 1.00000
+    1963 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1975 = 1.00000
+    1979 = 1.00000
+    1976 = 1.00000
+    1980 = 1.00000
+    1977 = 1.00000
+    1981 = 1.00000
+    1978 = 1.00000
+    1982 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2177 = 1.00000
+    2179 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2195 = 1.00000
+    2197 = 1.00000
+    2196 = 1.00000
+    2198 = 1.00000
+    2213 = 1.00000
+    2215 = 1.00000
+    2214 = 1.00000
+    2216 = 1.00000
+    2227 = 1.00000
+    2231 = 1.00000
+    2228 = 1.00000
+    2232 = 1.00000
+    2229 = 1.00000
+    2233 = 1.00000
+    2230 = 1.00000
+    2234 = 1.00000
+    2416 = 1.00000
+    2417 = 1.00000
+    2423 = 1.00000
+    2425 = 1.00000
+    2424 = 1.00000
+    2426 = 1.00000
+    2441 = 1.00000
+    2443 = 1.00000
+    2442 = 1.00000
+    2444 = 1.00000
+    2455 = 1.00000
+    2459 = 1.00000
+    2456 = 1.00000
+    2460 = 1.00000
+    2457 = 1.00000
+    2461 = 1.00000
+    2458 = 1.00000
+    2462 = 1.00000
+    2605 = 1.00000
+    2606 = 1.00000
+    2612 = 1.00000
+    2614 = 1.00000
+    2613 = 1.00000
+    2615 = 1.00000
+    2630 = 1.00000
+    2632 = 1.00000
+    2631 = 1.00000
+    2633 = 1.00000
+    2644 = 1.00000
+    2648 = 1.00000
+    2645 = 1.00000
+    2649 = 1.00000
+    2646 = 1.00000
+    2650 = 1.00000
+    2647 = 1.00000
+    2651 = 1.00000
+    2902 = 1.00000
+    2903 = 1.00000
+    2905 = 1.00000
+    2906 = 1.00000
+    2909 = 1.00000
+    2911 = 1.00000
+    2910 = 1.00000
+    2912 = 1.00000
+    2921 = 1.00000
+    2923 = 1.00000
+    2922 = 1.00000
+    2924 = 1.00000
+    2933 = 1.00000
+    2935 = 1.00000
+    2934 = 1.00000
+    2936 = 1.00000
+    2941 = 1.00000
+    2945 = 1.00000
+    2942 = 1.00000
+    2946 = 1.00000
+    2943 = 1.00000
+    2947 = 1.00000
+    2944 = 1.00000
+    2948 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3121 = 1.00000
+    3122 = 1.00000
+    3125 = 1.00000
+    3127 = 1.00000
+    3126 = 1.00000
+    3128 = 1.00000
+    3137 = 1.00000
+    3139 = 1.00000
+    3138 = 1.00000
+    3140 = 1.00000
+    3149 = 1.00000
+    3151 = 1.00000
+    3150 = 1.00000
+    3152 = 1.00000
+    3157 = 1.00000
+    3161 = 1.00000
+    3158 = 1.00000
+    3162 = 1.00000
+    3159 = 1.00000
+    3163 = 1.00000
+    3160 = 1.00000
+    3164 = 1.00000
+    3307 = 1.00000
+    3308 = 1.00000
+    3311 = 1.00000
+    3313 = 1.00000
+    3312 = 1.00000
+    3314 = 1.00000
+    3323 = 1.00000
+    3325 = 1.00000
+    3324 = 1.00000
+    3326 = 1.00000
+    3331 = 1.00000
+    3335 = 1.00000
+    3332 = 1.00000
+    3336 = 1.00000
+    3333 = 1.00000
+    3337 = 1.00000
+    3334 = 1.00000
+    3338 = 1.00000
+    3469 = 1.00000
+    3470 = 1.00000
+    3473 = 1.00000
+    3475 = 1.00000
+    3474 = 1.00000
+    3476 = 1.00000
+    3485 = 1.00000
+    3487 = 1.00000
+    3486 = 1.00000
+    3488 = 1.00000
+    3493 = 1.00000
+    3497 = 1.00000
+    3494 = 1.00000
+    3498 = 1.00000
+    3495 = 1.00000
+    3499 = 1.00000
+    3496 = 1.00000
+    3500 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3551 = 1.00000
+    3552 = 1.00000
+    3554 = 1.00000
+    3556 = 1.00000
+    3557 = 1.00000
+    3563 = 1.00000
+    3565 = 1.00000
+    3564 = 1.00000
+    3566 = 1.00000
+    3573 = 1.00000
+    3577 = 1.00000
+    3574 = 1.00000
+    3578 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3589 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3590 = 1.00000
+    3591 = 1.00000
+    3595 = 1.00000
+    3592 = 1.00000
+    3596 = 1.00000
+    3599 = 1.00000
+    3601 = 1.00000
+    3600 = 1.00000
+    3602 = 1.00000
+    3613 = 1.00000
+    3617 = 1.00000
+    3614 = 1.00000
+    3618 = 1.00000
+    3615 = 1.00000
+    3619 = 1.00000
+    3616 = 1.00000
+    3620 = 1.00000
+    3633 = 1.00000
+    3641 = 1.00000
+    3634 = 1.00000
+    3642 = 1.00000
+    3635 = 1.00000
+    3643 = 1.00000
+    3636 = 1.00000
+    3644 = 1.00000
+    3693 = 1.00000
+    3695 = 1.00000
+    3705 = 1.00000
+    3709 = 1.00000
+    3706 = 1.00000
+    3710 = 1.00000
+    3717 = 1.00000
+    3721 = 1.00000
+    3718 = 1.00000
+    3722 = 1.00000
+    3741 = 1.00000
+    3749 = 1.00000
+    3742 = 1.00000
+    3750 = 1.00000
+    3743 = 1.00000
+    3751 = 1.00000
+    3744 = 1.00000
+    3752 = 1.00000
+    3802 = 1.00000
+    3803 = 1.00000
+    3809 = 1.00000
+    3811 = 1.00000
+    3810 = 1.00000
+    3812 = 1.00000
+    3827 = 1.00000
+    3829 = 1.00000
+    3828 = 1.00000
+    3830 = 1.00000
+    3841 = 1.00000
+    3845 = 1.00000
+    3842 = 1.00000
+    3846 = 1.00000
+    3843 = 1.00000
+    3847 = 1.00000
+    3844 = 1.00000
+    3848 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3993 = 1.00000
+    3995 = 1.00000
+    3997 = 1.00000
+    3998 = 1.00000
+    4004 = 1.00000
+    4006 = 1.00000
+    4005 = 1.00000
+    4007 = 1.00000
+    4014 = 1.00000
+    4018 = 1.00000
+    4015 = 1.00000
+    4019 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4030 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4031 = 1.00000
+    4032 = 1.00000
+    4036 = 1.00000
+    4033 = 1.00000
+    4037 = 1.00000
+    4040 = 1.00000
+    4042 = 1.00000
+    4041 = 1.00000
+    4043 = 1.00000
+    4054 = 1.00000
+    4058 = 1.00000
+    4055 = 1.00000
+    4059 = 1.00000
+    4056 = 1.00000
+    4060 = 1.00000
+    4057 = 1.00000
+    4061 = 1.00000
+    4074 = 1.00000
+    4082 = 1.00000
+    4075 = 1.00000
+    4083 = 1.00000
+    4076 = 1.00000
+    4084 = 1.00000
+    4077 = 1.00000
+    4085 = 1.00000
+    4134 = 1.00000
+    4136 = 1.00000
+    4146 = 1.00000
+    4150 = 1.00000
+    4147 = 1.00000
+    4151 = 1.00000
+    4158 = 1.00000
+    4162 = 1.00000
+    4159 = 1.00000
+    4163 = 1.00000
+    4182 = 1.00000
+    4190 = 1.00000
+    4183 = 1.00000
+    4191 = 1.00000
+    4184 = 1.00000
+    4192 = 1.00000
+    4185 = 1.00000
+    4193 = 1.00000
+    4243 = 1.00000
+    4244 = 1.00000
+    4250 = 1.00000
+    4252 = 1.00000
+    4251 = 1.00000
+    4253 = 1.00000
+    4268 = 1.00000
+    4270 = 1.00000
+    4269 = 1.00000
+    4271 = 1.00000
+    4282 = 1.00000
+    4286 = 1.00000
+    4283 = 1.00000
+    4287 = 1.00000
+    4284 = 1.00000
+    4288 = 1.00000
+    4285 = 1.00000
+    4289 = 1.00000
+    4431 = 1.00000
+    4433 = 1.00000
+    4443 = 1.00000
+    4447 = 1.00000
+    4444 = 1.00000
+    4448 = 1.00000
+    4455 = 1.00000
+    4459 = 1.00000
+    4456 = 1.00000
+    4460 = 1.00000
+    4479 = 1.00000
+    4487 = 1.00000
+    4480 = 1.00000
+    4488 = 1.00000
+    4481 = 1.00000
+    4489 = 1.00000
+    4482 = 1.00000
+    4490 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4541 = 1.00000
+    4543 = 1.00000
+    4544 = 1.00000
+    4547 = 1.00000
+    4549 = 1.00000
+    4548 = 1.00000
+    4550 = 1.00000
+    4551 = 1.00000
+    4555 = 1.00000
+    4552 = 1.00000
+    4556 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4567 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4568 = 1.00000
+    4571 = 1.00000
+    4573 = 1.00000
+    4572 = 1.00000
+    4574 = 1.00000
+    4579 = 1.00000
+    4583 = 1.00000
+    4580 = 1.00000
+    4584 = 1.00000
+    4581 = 1.00000
+    4585 = 1.00000
+    4582 = 1.00000
+    4586 = 1.00000
+    4587 = 1.00000
+    4595 = 1.00000
+    4588 = 1.00000
+    4596 = 1.00000
+    4589 = 1.00000
+    4597 = 1.00000
+    4590 = 1.00000
+    4598 = 1.00000
+    4729 = 1.00000
+    4730 = 1.00000
+    4733 = 1.00000
+    4735 = 1.00000
+    4734 = 1.00000
+    4736 = 1.00000
+    4745 = 1.00000
+    4747 = 1.00000
+    4746 = 1.00000
+    4748 = 1.00000
+    4753 = 1.00000
+    4757 = 1.00000
+    4754 = 1.00000
+    4758 = 1.00000
+    4755 = 1.00000
+    4759 = 1.00000
+    4756 = 1.00000
+    4760 = 1.00000
+    4809 = 1.00000
+    4811 = 1.00000
+    4821 = 1.00000
+    4825 = 1.00000
+    4822 = 1.00000
+    4826 = 1.00000
+    4833 = 1.00000
+    4837 = 1.00000
+    4834 = 1.00000
+    4838 = 1.00000
+    4857 = 1.00000
+    4865 = 1.00000
+    4858 = 1.00000
+    4866 = 1.00000
+    4859 = 1.00000
+    4867 = 1.00000
+    4860 = 1.00000
+    4868 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4919 = 1.00000
+    4921 = 1.00000
+    4922 = 1.00000
+    4925 = 1.00000
+    4927 = 1.00000
+    4926 = 1.00000
+    4928 = 1.00000
+    4929 = 1.00000
+    4933 = 1.00000
+    4930 = 1.00000
+    4934 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4945 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4946 = 1.00000
+    4949 = 1.00000
+    4951 = 1.00000
+    4950 = 1.00000
+    4952 = 1.00000
+    4957 = 1.00000
+    4961 = 1.00000
+    4958 = 1.00000
+    4962 = 1.00000
+    4959 = 1.00000
+    4963 = 1.00000
+    4960 = 1.00000
+    4964 = 1.00000
+    4965 = 1.00000
+    4973 = 1.00000
+    4966 = 1.00000
+    4974 = 1.00000
+    4967 = 1.00000
+    4975 = 1.00000
+    4968 = 1.00000
+    4976 = 1.00000
+    5107 = 1.00000
+    5108 = 1.00000
+    5111 = 1.00000
+    5113 = 1.00000
+    5112 = 1.00000
+    5114 = 1.00000
+    5123 = 1.00000
+    5125 = 1.00000
+    5124 = 1.00000
+    5126 = 1.00000
+    5131 = 1.00000
+    5135 = 1.00000
+    5132 = 1.00000
+    5136 = 1.00000
+    5133 = 1.00000
+    5137 = 1.00000
+    5134 = 1.00000
+    5138 = 1.00000
+    5188 = 1.00000
+    5189 = 1.00000
+    5195 = 1.00000
+    5197 = 1.00000
+    5196 = 1.00000
+    5198 = 1.00000
+    5213 = 1.00000
+    5215 = 1.00000
+    5214 = 1.00000
+    5216 = 1.00000
+    5227 = 1.00000
+    5231 = 1.00000
+    5228 = 1.00000
+    5232 = 1.00000
+    5229 = 1.00000
+    5233 = 1.00000
+    5230 = 1.00000
+    5234 = 1.00000
+    5377 = 1.00000
+    5378 = 1.00000
+    5384 = 1.00000
+    5386 = 1.00000
+    5385 = 1.00000
+    5387 = 1.00000
+    5402 = 1.00000
+    5404 = 1.00000
+    5403 = 1.00000
+    5405 = 1.00000
+    5416 = 1.00000
+    5420 = 1.00000
+    5417 = 1.00000
+    5421 = 1.00000
+    5418 = 1.00000
+    5422 = 1.00000
+    5419 = 1.00000
+    5423 = 1.00000
+    5566 = 1.00000
+    5567 = 1.00000
+    5573 = 1.00000
+    5575 = 1.00000
+    5574 = 1.00000
+    5576 = 1.00000
+    5591 = 1.00000
+    5593 = 1.00000
+    5592 = 1.00000
+    5594 = 1.00000
+    5605 = 1.00000
+    5609 = 1.00000
+    5606 = 1.00000
+    5610 = 1.00000
+    5607 = 1.00000
+    5611 = 1.00000
+    5608 = 1.00000
+    5612 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5762 = 1.00000
+    5764 = 1.00000
+    5763 = 1.00000
+    5765 = 1.00000
+    5780 = 1.00000
+    5782 = 1.00000
+    5781 = 1.00000
+    5783 = 1.00000
+    5794 = 1.00000
+    5798 = 1.00000
+    5795 = 1.00000
+    5799 = 1.00000
+    5796 = 1.00000
+    5800 = 1.00000
+    5797 = 1.00000
+    5801 = 1.00000
+    6025 = 1.00000
+    6026 = 1.00000
+    6029 = 1.00000
+    6031 = 1.00000
+    6030 = 1.00000
+    6032 = 1.00000
+    6041 = 1.00000
+    6043 = 1.00000
+    6042 = 1.00000
+    6044 = 1.00000
+    6049 = 1.00000
+    6053 = 1.00000
+    6050 = 1.00000
+    6054 = 1.00000
+    6051 = 1.00000
+    6055 = 1.00000
+    6052 = 1.00000
+    6056 = 1.00000
+    6187 = 1.00000
+    6188 = 1.00000
+    6191 = 1.00000
+    6193 = 1.00000
+    6192 = 1.00000
+    6194 = 1.00000
+    6203 = 1.00000
+    6205 = 1.00000
+    6204 = 1.00000
+    6206 = 1.00000
+    6211 = 1.00000
+    6215 = 1.00000
+    6212 = 1.00000
+    6216 = 1.00000
+    6213 = 1.00000
+    6217 = 1.00000
+    6214 = 1.00000
+    6218 = 1.00000
+    6349 = 1.00000
+    6350 = 1.00000
+    6353 = 1.00000
+    6355 = 1.00000
+    6354 = 1.00000
+    6356 = 1.00000
+    6365 = 1.00000
+    6367 = 1.00000
+    6366 = 1.00000
+    6368 = 1.00000
+    6373 = 1.00000
+    6377 = 1.00000
+    6374 = 1.00000
+    6378 = 1.00000
+    6375 = 1.00000
+    6379 = 1.00000
+    6376 = 1.00000
+    6380 = 1.00000
+    6511 = 1.00000
+    6512 = 1.00000
+    6515 = 1.00000
+    6517 = 1.00000
+    6516 = 1.00000
+    6518 = 1.00000
+    6527 = 1.00000
+    6529 = 1.00000
+    6528 = 1.00000
+    6530 = 1.00000
+    6535 = 1.00000
+    6539 = 1.00000
+    6536 = 1.00000
+    6540 = 1.00000
+    6537 = 1.00000
+    6541 = 1.00000
+    6538 = 1.00000
+    6542 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=3
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    5 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    26 = 1.00000
+    28 = 1.00000
+    27 = 1.00000
+    29 = 1.00000
+    36 = 1.00000
+    40 = 1.00000
+    37 = 1.00000
+    41 = 1.00000
+    50 = 1.00000
+    52 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    60 = 1.00000
+    64 = 1.00000
+    61 = 1.00000
+    65 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    76 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    77 = 1.00000
+    78 = 1.00000
+    82 = 1.00000
+    79 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    100 = 1.00000
+    104 = 1.00000
+    101 = 1.00000
+    105 = 1.00000
+    102 = 1.00000
+    106 = 1.00000
+    103 = 1.00000
+    107 = 1.00000
+    120 = 1.00000
+    128 = 1.00000
+    121 = 1.00000
+    129 = 1.00000
+    122 = 1.00000
+    130 = 1.00000
+    123 = 1.00000
+    131 = 1.00000
+    192 = 1.00000
+    194 = 1.00000
+    198 = 1.00000
+    200 = 1.00000
+    210 = 1.00000
+    214 = 1.00000
+    211 = 1.00000
+    215 = 1.00000
+    228 = 1.00000
+    232 = 1.00000
+    229 = 1.00000
+    233 = 1.00000
+    240 = 1.00000
+    244 = 1.00000
+    241 = 1.00000
+    245 = 1.00000
+    264 = 1.00000
+    272 = 1.00000
+    265 = 1.00000
+    273 = 1.00000
+    266 = 1.00000
+    274 = 1.00000
+    267 = 1.00000
+    275 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    350 = 1.00000
+    352 = 1.00000
+    351 = 1.00000
+    353 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    386 = 1.00000
+    388 = 1.00000
+    387 = 1.00000
+    389 = 1.00000
+    400 = 1.00000
+    404 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    402 = 1.00000
+    406 = 1.00000
+    403 = 1.00000
+    407 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    590 = 1.00000
+    591 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    602 = 1.00000
+    604 = 1.00000
+    603 = 1.00000
+    605 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    613 = 1.00000
+    617 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    628 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    629 = 1.00000
+    630 = 1.00000
+    634 = 1.00000
+    631 = 1.00000
+    635 = 1.00000
+    638 = 1.00000
+    640 = 1.00000
+    639 = 1.00000
+    641 = 1.00000
+    652 = 1.00000
+    656 = 1.00000
+    653 = 1.00000
+    657 = 1.00000
+    654 = 1.00000
+    658 = 1.00000
+    655 = 1.00000
+    659 = 1.00000
+    672 = 1.00000
+    680 = 1.00000
+    673 = 1.00000
+    681 = 1.00000
+    674 = 1.00000
+    682 = 1.00000
+    675 = 1.00000
+    683 = 1.00000
+    732 = 1.00000
+    734 = 1.00000
+    744 = 1.00000
+    748 = 1.00000
+    745 = 1.00000
+    749 = 1.00000
+    756 = 1.00000
+    760 = 1.00000
+    757 = 1.00000
+    761 = 1.00000
+    780 = 1.00000
+    788 = 1.00000
+    781 = 1.00000
+    789 = 1.00000
+    782 = 1.00000
+    790 = 1.00000
+    783 = 1.00000
+    791 = 1.00000
+    841 = 1.00000
+    842 = 1.00000
+    848 = 1.00000
+    850 = 1.00000
+    849 = 1.00000
+    851 = 1.00000
+    866 = 1.00000
+    868 = 1.00000
+    867 = 1.00000
+    869 = 1.00000
+    880 = 1.00000
+    884 = 1.00000
+    881 = 1.00000
+    885 = 1.00000
+    882 = 1.00000
+    886 = 1.00000
+    883 = 1.00000
+    887 = 1.00000
+    1029 = 1.00000
+    1031 = 1.00000
+    1035 = 1.00000
+    1037 = 1.00000
+    1047 = 1.00000
+    1051 = 1.00000
+    1048 = 1.00000
+    1052 = 1.00000
+    1065 = 1.00000
+    1069 = 1.00000
+    1066 = 1.00000
+    1070 = 1.00000
+    1077 = 1.00000
+    1081 = 1.00000
+    1078 = 1.00000
+    1082 = 1.00000
+    1101 = 1.00000
+    1109 = 1.00000
+    1102 = 1.00000
+    1110 = 1.00000
+    1103 = 1.00000
+    1111 = 1.00000
+    1104 = 1.00000
+    1112 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1177 = 1.00000
+    1178 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1181 = 1.00000
+    1183 = 1.00000
+    1184 = 1.00000
+    1187 = 1.00000
+    1189 = 1.00000
+    1188 = 1.00000
+    1190 = 1.00000
+    1191 = 1.00000
+    1195 = 1.00000
+    1192 = 1.00000
+    1196 = 1.00000
+    1205 = 1.00000
+    1207 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1209 = 1.00000
+    1213 = 1.00000
+    1210 = 1.00000
+    1214 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1225 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1226 = 1.00000
+    1229 = 1.00000
+    1231 = 1.00000
+    1230 = 1.00000
+    1232 = 1.00000
+    1237 = 1.00000
+    1241 = 1.00000
+    1238 = 1.00000
+    1242 = 1.00000
+    1239 = 1.00000
+    1243 = 1.00000
+    1240 = 1.00000
+    1244 = 1.00000
+    1245 = 1.00000
+    1253 = 1.00000
+    1246 = 1.00000
+    1254 = 1.00000
+    1247 = 1.00000
+    1255 = 1.00000
+    1248 = 1.00000
+    1256 = 1.00000
+    1426 = 1.00000
+    1427 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1433 = 1.00000
+    1435 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1445 = 1.00000
+    1447 = 1.00000
+    1446 = 1.00000
+    1448 = 1.00000
+    1457 = 1.00000
+    1459 = 1.00000
+    1458 = 1.00000
+    1460 = 1.00000
+    1465 = 1.00000
+    1469 = 1.00000
+    1466 = 1.00000
+    1470 = 1.00000
+    1467 = 1.00000
+    1471 = 1.00000
+    1468 = 1.00000
+    1472 = 1.00000
+    1533 = 1.00000
+    1535 = 1.00000
+    1545 = 1.00000
+    1549 = 1.00000
+    1546 = 1.00000
+    1550 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1558 = 1.00000
+    1562 = 1.00000
+    1581 = 1.00000
+    1589 = 1.00000
+    1582 = 1.00000
+    1590 = 1.00000
+    1583 = 1.00000
+    1591 = 1.00000
+    1584 = 1.00000
+    1592 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1643 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1649 = 1.00000
+    1651 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1653 = 1.00000
+    1657 = 1.00000
+    1654 = 1.00000
+    1658 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1669 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1670 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1674 = 1.00000
+    1676 = 1.00000
+    1681 = 1.00000
+    1685 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1683 = 1.00000
+    1687 = 1.00000
+    1684 = 1.00000
+    1688 = 1.00000
+    1689 = 1.00000
+    1697 = 1.00000
+    1690 = 1.00000
+    1698 = 1.00000
+    1691 = 1.00000
+    1699 = 1.00000
+    1692 = 1.00000
+    1700 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1836 = 1.00000
+    1838 = 1.00000
+    1847 = 1.00000
+    1849 = 1.00000
+    1848 = 1.00000
+    1850 = 1.00000
+    1855 = 1.00000
+    1859 = 1.00000
+    1856 = 1.00000
+    1860 = 1.00000
+    1857 = 1.00000
+    1861 = 1.00000
+    1858 = 1.00000
+    1862 = 1.00000
+    1912 = 1.00000
+    1913 = 1.00000
+    1918 = 1.00000
+    1919 = 1.00000
+    1925 = 1.00000
+    1927 = 1.00000
+    1926 = 1.00000
+    1928 = 1.00000
+    1943 = 1.00000
+    1945 = 1.00000
+    1944 = 1.00000
+    1946 = 1.00000
+    1961 = 1.00000
+    1963 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1975 = 1.00000
+    1979 = 1.00000
+    1976 = 1.00000
+    1980 = 1.00000
+    1977 = 1.00000
+    1981 = 1.00000
+    1978 = 1.00000
+    1982 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2166 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2174 = 1.00000
+    2177 = 1.00000
+    2179 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2187 = 1.00000
+    2191 = 1.00000
+    2188 = 1.00000
+    2192 = 1.00000
+    2195 = 1.00000
+    2197 = 1.00000
+    2196 = 1.00000
+    2198 = 1.00000
+    2205 = 1.00000
+    2209 = 1.00000
+    2206 = 1.00000
+    2210 = 1.00000
+    2211 = 1.00000
+    2213 = 1.00000
+    2215 = 1.00000
+    2212 = 1.00000
+    2214 = 1.00000
+    2216 = 1.00000
+    2217 = 1.00000
+    2221 = 1.00000
+    2218 = 1.00000
+    2222 = 1.00000
+    2227 = 1.00000
+    2231 = 1.00000
+    2228 = 1.00000
+    2232 = 1.00000
+    2229 = 1.00000
+    2233 = 1.00000
+    2230 = 1.00000
+    2234 = 1.00000
+    2247 = 1.00000
+    2255 = 1.00000
+    2248 = 1.00000
+    2256 = 1.00000
+    2249 = 1.00000
+    2257 = 1.00000
+    2250 = 1.00000
+    2258 = 1.00000
+    2307 = 1.00000
+    2309 = 1.00000
+    2310 = 1.00000
+    2312 = 1.00000
+    2319 = 1.00000
+    2323 = 1.00000
+    2320 = 1.00000
+    2324 = 1.00000
+    2331 = 1.00000
+    2335 = 1.00000
+    2332 = 1.00000
+    2336 = 1.00000
+    2337 = 1.00000
+    2341 = 1.00000
+    2338 = 1.00000
+    2342 = 1.00000
+    2355 = 1.00000
+    2363 = 1.00000
+    2356 = 1.00000
+    2364 = 1.00000
+    2357 = 1.00000
+    2365 = 1.00000
+    2358 = 1.00000
+    2366 = 1.00000
+    2416 = 1.00000
+    2417 = 1.00000
+    2423 = 1.00000
+    2425 = 1.00000
+    2424 = 1.00000
+    2426 = 1.00000
+    2441 = 1.00000
+    2443 = 1.00000
+    2442 = 1.00000
+    2444 = 1.00000
+    2455 = 1.00000
+    2459 = 1.00000
+    2456 = 1.00000
+    2460 = 1.00000
+    2457 = 1.00000
+    2461 = 1.00000
+    2458 = 1.00000
+    2462 = 1.00000
+    2604 = 1.00000
+    2605 = 1.00000
+    2606 = 1.00000
+    2607 = 1.00000
+    2609 = 1.00000
+    2612 = 1.00000
+    2614 = 1.00000
+    2613 = 1.00000
+    2615 = 1.00000
+    2622 = 1.00000
+    2626 = 1.00000
+    2623 = 1.00000
+    2627 = 1.00000
+    2628 = 1.00000
+    2630 = 1.00000
+    2632 = 1.00000
+    2629 = 1.00000
+    2631 = 1.00000
+    2633 = 1.00000
+    2634 = 1.00000
+    2638 = 1.00000
+    2635 = 1.00000
+    2639 = 1.00000
+    2644 = 1.00000
+    2648 = 1.00000
+    2645 = 1.00000
+    2649 = 1.00000
+    2646 = 1.00000
+    2650 = 1.00000
+    2647 = 1.00000
+    2651 = 1.00000
+    2664 = 1.00000
+    2672 = 1.00000
+    2665 = 1.00000
+    2673 = 1.00000
+    2666 = 1.00000
+    2674 = 1.00000
+    2667 = 1.00000
+    2675 = 1.00000
+    2712 = 1.00000
+    2714 = 1.00000
+    2721 = 1.00000
+    2725 = 1.00000
+    2722 = 1.00000
+    2726 = 1.00000
+    2727 = 1.00000
+    2731 = 1.00000
+    2728 = 1.00000
+    2732 = 1.00000
+    2745 = 1.00000
+    2753 = 1.00000
+    2746 = 1.00000
+    2754 = 1.00000
+    2747 = 1.00000
+    2755 = 1.00000
+    2748 = 1.00000
+    2756 = 1.00000
+    2902 = 1.00000
+    2903 = 1.00000
+    2905 = 1.00000
+    2906 = 1.00000
+    2909 = 1.00000
+    2911 = 1.00000
+    2910 = 1.00000
+    2912 = 1.00000
+    2921 = 1.00000
+    2923 = 1.00000
+    2922 = 1.00000
+    2924 = 1.00000
+    2933 = 1.00000
+    2935 = 1.00000
+    2934 = 1.00000
+    2936 = 1.00000
+    2941 = 1.00000
+    2945 = 1.00000
+    2942 = 1.00000
+    2946 = 1.00000
+    2943 = 1.00000
+    2947 = 1.00000
+    2944 = 1.00000
+    2948 = 1.00000
+    3009 = 1.00000
+    3011 = 1.00000
+    3012 = 1.00000
+    3014 = 1.00000
+    3021 = 1.00000
+    3025 = 1.00000
+    3022 = 1.00000
+    3026 = 1.00000
+    3033 = 1.00000
+    3037 = 1.00000
+    3034 = 1.00000
+    3038 = 1.00000
+    3039 = 1.00000
+    3043 = 1.00000
+    3040 = 1.00000
+    3044 = 1.00000
+    3057 = 1.00000
+    3065 = 1.00000
+    3058 = 1.00000
+    3066 = 1.00000
+    3059 = 1.00000
+    3067 = 1.00000
+    3060 = 1.00000
+    3068 = 1.00000
+    3117 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3120 = 1.00000
+    3121 = 1.00000
+    3122 = 1.00000
+    3125 = 1.00000
+    3127 = 1.00000
+    3126 = 1.00000
+    3128 = 1.00000
+    3129 = 1.00000
+    3133 = 1.00000
+    3130 = 1.00000
+    3134 = 1.00000
+    3137 = 1.00000
+    3139 = 1.00000
+    3138 = 1.00000
+    3140 = 1.00000
+    3141 = 1.00000
+    3145 = 1.00000
+    3142 = 1.00000
+    3146 = 1.00000
+    3147 = 1.00000
+    3149 = 1.00000
+    3151 = 1.00000
+    3148 = 1.00000
+    3150 = 1.00000
+    3152 = 1.00000
+    3157 = 1.00000
+    3161 = 1.00000
+    3158 = 1.00000
+    3162 = 1.00000
+    3159 = 1.00000
+    3163 = 1.00000
+    3160 = 1.00000
+    3164 = 1.00000
+    3165 = 1.00000
+    3173 = 1.00000
+    3166 = 1.00000
+    3174 = 1.00000
+    3167 = 1.00000
+    3175 = 1.00000
+    3168 = 1.00000
+    3176 = 1.00000
+    3307 = 1.00000
+    3308 = 1.00000
+    3311 = 1.00000
+    3313 = 1.00000
+    3312 = 1.00000
+    3314 = 1.00000
+    3323 = 1.00000
+    3325 = 1.00000
+    3324 = 1.00000
+    3326 = 1.00000
+    3331 = 1.00000
+    3335 = 1.00000
+    3332 = 1.00000
+    3336 = 1.00000
+    3333 = 1.00000
+    3337 = 1.00000
+    3334 = 1.00000
+    3338 = 1.00000
+    3387 = 1.00000
+    3389 = 1.00000
+    3396 = 1.00000
+    3400 = 1.00000
+    3397 = 1.00000
+    3401 = 1.00000
+    3402 = 1.00000
+    3406 = 1.00000
+    3403 = 1.00000
+    3407 = 1.00000
+    3420 = 1.00000
+    3428 = 1.00000
+    3421 = 1.00000
+    3429 = 1.00000
+    3422 = 1.00000
+    3430 = 1.00000
+    3423 = 1.00000
+    3431 = 1.00000
+    3468 = 1.00000
+    3469 = 1.00000
+    3470 = 1.00000
+    3473 = 1.00000
+    3475 = 1.00000
+    3474 = 1.00000
+    3476 = 1.00000
+    3477 = 1.00000
+    3481 = 1.00000
+    3478 = 1.00000
+    3482 = 1.00000
+    3483 = 1.00000
+    3485 = 1.00000
+    3487 = 1.00000
+    3484 = 1.00000
+    3486 = 1.00000
+    3488 = 1.00000
+    3493 = 1.00000
+    3497 = 1.00000
+    3494 = 1.00000
+    3498 = 1.00000
+    3495 = 1.00000
+    3499 = 1.00000
+    3496 = 1.00000
+    3500 = 1.00000
+    3501 = 1.00000
+    3509 = 1.00000
+    3502 = 1.00000
+    3510 = 1.00000
+    3503 = 1.00000
+    3511 = 1.00000
+    3504 = 1.00000
+    3512 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3551 = 1.00000
+    3552 = 1.00000
+    3554 = 1.00000
+    3556 = 1.00000
+    3557 = 1.00000
+    3563 = 1.00000
+    3565 = 1.00000
+    3564 = 1.00000
+    3566 = 1.00000
+    3573 = 1.00000
+    3577 = 1.00000
+    3574 = 1.00000
+    3578 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3589 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3590 = 1.00000
+    3591 = 1.00000
+    3595 = 1.00000
+    3592 = 1.00000
+    3596 = 1.00000
+    3599 = 1.00000
+    3601 = 1.00000
+    3600 = 1.00000
+    3602 = 1.00000
+    3613 = 1.00000
+    3617 = 1.00000
+    3614 = 1.00000
+    3618 = 1.00000
+    3615 = 1.00000
+    3619 = 1.00000
+    3616 = 1.00000
+    3620 = 1.00000
+    3633 = 1.00000
+    3641 = 1.00000
+    3634 = 1.00000
+    3642 = 1.00000
+    3635 = 1.00000
+    3643 = 1.00000
+    3636 = 1.00000
+    3644 = 1.00000
+    3693 = 1.00000
+    3695 = 1.00000
+    3705 = 1.00000
+    3709 = 1.00000
+    3706 = 1.00000
+    3710 = 1.00000
+    3717 = 1.00000
+    3721 = 1.00000
+    3718 = 1.00000
+    3722 = 1.00000
+    3741 = 1.00000
+    3749 = 1.00000
+    3742 = 1.00000
+    3750 = 1.00000
+    3743 = 1.00000
+    3751 = 1.00000
+    3744 = 1.00000
+    3752 = 1.00000
+    3802 = 1.00000
+    3803 = 1.00000
+    3809 = 1.00000
+    3811 = 1.00000
+    3810 = 1.00000
+    3812 = 1.00000
+    3827 = 1.00000
+    3829 = 1.00000
+    3828 = 1.00000
+    3830 = 1.00000
+    3841 = 1.00000
+    3845 = 1.00000
+    3842 = 1.00000
+    3846 = 1.00000
+    3843 = 1.00000
+    3847 = 1.00000
+    3844 = 1.00000
+    3848 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3993 = 1.00000
+    3995 = 1.00000
+    3997 = 1.00000
+    3998 = 1.00000
+    4004 = 1.00000
+    4006 = 1.00000
+    4005 = 1.00000
+    4007 = 1.00000
+    4014 = 1.00000
+    4018 = 1.00000
+    4015 = 1.00000
+    4019 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4030 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4031 = 1.00000
+    4032 = 1.00000
+    4036 = 1.00000
+    4033 = 1.00000
+    4037 = 1.00000
+    4040 = 1.00000
+    4042 = 1.00000
+    4041 = 1.00000
+    4043 = 1.00000
+    4054 = 1.00000
+    4058 = 1.00000
+    4055 = 1.00000
+    4059 = 1.00000
+    4056 = 1.00000
+    4060 = 1.00000
+    4057 = 1.00000
+    4061 = 1.00000
+    4074 = 1.00000
+    4082 = 1.00000
+    4075 = 1.00000
+    4083 = 1.00000
+    4076 = 1.00000
+    4084 = 1.00000
+    4077 = 1.00000
+    4085 = 1.00000
+    4134 = 1.00000
+    4136 = 1.00000
+    4146 = 1.00000
+    4150 = 1.00000
+    4147 = 1.00000
+    4151 = 1.00000
+    4158 = 1.00000
+    4162 = 1.00000
+    4159 = 1.00000
+    4163 = 1.00000
+    4182 = 1.00000
+    4190 = 1.00000
+    4183 = 1.00000
+    4191 = 1.00000
+    4184 = 1.00000
+    4192 = 1.00000
+    4185 = 1.00000
+    4193 = 1.00000
+    4243 = 1.00000
+    4244 = 1.00000
+    4250 = 1.00000
+    4252 = 1.00000
+    4251 = 1.00000
+    4253 = 1.00000
+    4268 = 1.00000
+    4270 = 1.00000
+    4269 = 1.00000
+    4271 = 1.00000
+    4282 = 1.00000
+    4286 = 1.00000
+    4283 = 1.00000
+    4287 = 1.00000
+    4284 = 1.00000
+    4288 = 1.00000
+    4285 = 1.00000
+    4289 = 1.00000
+    4431 = 1.00000
+    4433 = 1.00000
+    4443 = 1.00000
+    4447 = 1.00000
+    4444 = 1.00000
+    4448 = 1.00000
+    4455 = 1.00000
+    4459 = 1.00000
+    4456 = 1.00000
+    4460 = 1.00000
+    4479 = 1.00000
+    4487 = 1.00000
+    4480 = 1.00000
+    4488 = 1.00000
+    4481 = 1.00000
+    4489 = 1.00000
+    4482 = 1.00000
+    4490 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4541 = 1.00000
+    4543 = 1.00000
+    4544 = 1.00000
+    4547 = 1.00000
+    4549 = 1.00000
+    4548 = 1.00000
+    4550 = 1.00000
+    4551 = 1.00000
+    4555 = 1.00000
+    4552 = 1.00000
+    4556 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4567 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4568 = 1.00000
+    4571 = 1.00000
+    4573 = 1.00000
+    4572 = 1.00000
+    4574 = 1.00000
+    4579 = 1.00000
+    4583 = 1.00000
+    4580 = 1.00000
+    4584 = 1.00000
+    4581 = 1.00000
+    4585 = 1.00000
+    4582 = 1.00000
+    4586 = 1.00000
+    4587 = 1.00000
+    4595 = 1.00000
+    4588 = 1.00000
+    4596 = 1.00000
+    4589 = 1.00000
+    4597 = 1.00000
+    4590 = 1.00000
+    4598 = 1.00000
+    4729 = 1.00000
+    4730 = 1.00000
+    4733 = 1.00000
+    4735 = 1.00000
+    4734 = 1.00000
+    4736 = 1.00000
+    4745 = 1.00000
+    4747 = 1.00000
+    4746 = 1.00000
+    4748 = 1.00000
+    4753 = 1.00000
+    4757 = 1.00000
+    4754 = 1.00000
+    4758 = 1.00000
+    4755 = 1.00000
+    4759 = 1.00000
+    4756 = 1.00000
+    4760 = 1.00000
+    4809 = 1.00000
+    4811 = 1.00000
+    4821 = 1.00000
+    4825 = 1.00000
+    4822 = 1.00000
+    4826 = 1.00000
+    4833 = 1.00000
+    4837 = 1.00000
+    4834 = 1.00000
+    4838 = 1.00000
+    4857 = 1.00000
+    4865 = 1.00000
+    4858 = 1.00000
+    4866 = 1.00000
+    4859 = 1.00000
+    4867 = 1.00000
+    4860 = 1.00000
+    4868 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4919 = 1.00000
+    4921 = 1.00000
+    4922 = 1.00000
+    4925 = 1.00000
+    4927 = 1.00000
+    4926 = 1.00000
+    4928 = 1.00000
+    4929 = 1.00000
+    4933 = 1.00000
+    4930 = 1.00000
+    4934 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4945 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4946 = 1.00000
+    4949 = 1.00000
+    4951 = 1.00000
+    4950 = 1.00000
+    4952 = 1.00000
+    4957 = 1.00000
+    4961 = 1.00000
+    4958 = 1.00000
+    4962 = 1.00000
+    4959 = 1.00000
+    4963 = 1.00000
+    4960 = 1.00000
+    4964 = 1.00000
+    4965 = 1.00000
+    4973 = 1.00000
+    4966 = 1.00000
+    4974 = 1.00000
+    4967 = 1.00000
+    4975 = 1.00000
+    4968 = 1.00000
+    4976 = 1.00000
+    5107 = 1.00000
+    5108 = 1.00000
+    5111 = 1.00000
+    5113 = 1.00000
+    5112 = 1.00000
+    5114 = 1.00000
+    5123 = 1.00000
+    5125 = 1.00000
+    5124 = 1.00000
+    5126 = 1.00000
+    5131 = 1.00000
+    5135 = 1.00000
+    5132 = 1.00000
+    5136 = 1.00000
+    5133 = 1.00000
+    5137 = 1.00000
+    5134 = 1.00000
+    5138 = 1.00000
+    5188 = 1.00000
+    5189 = 1.00000
+    5195 = 1.00000
+    5197 = 1.00000
+    5196 = 1.00000
+    5198 = 1.00000
+    5213 = 1.00000
+    5215 = 1.00000
+    5214 = 1.00000
+    5216 = 1.00000
+    5227 = 1.00000
+    5231 = 1.00000
+    5228 = 1.00000
+    5232 = 1.00000
+    5229 = 1.00000
+    5233 = 1.00000
+    5230 = 1.00000
+    5234 = 1.00000
+    5376 = 1.00000
+    5377 = 1.00000
+    5378 = 1.00000
+    5379 = 1.00000
+    5381 = 1.00000
+    5384 = 1.00000
+    5386 = 1.00000
+    5385 = 1.00000
+    5387 = 1.00000
+    5394 = 1.00000
+    5398 = 1.00000
+    5395 = 1.00000
+    5399 = 1.00000
+    5400 = 1.00000
+    5402 = 1.00000
+    5404 = 1.00000
+    5401 = 1.00000
+    5403 = 1.00000
+    5405 = 1.00000
+    5406 = 1.00000
+    5410 = 1.00000
+    5407 = 1.00000
+    5411 = 1.00000
+    5416 = 1.00000
+    5420 = 1.00000
+    5417 = 1.00000
+    5421 = 1.00000
+    5418 = 1.00000
+    5422 = 1.00000
+    5419 = 1.00000
+    5423 = 1.00000
+    5436 = 1.00000
+    5444 = 1.00000
+    5437 = 1.00000
+    5445 = 1.00000
+    5438 = 1.00000
+    5446 = 1.00000
+    5439 = 1.00000
+    5447 = 1.00000
+    5484 = 1.00000
+    5486 = 1.00000
+    5493 = 1.00000
+    5497 = 1.00000
+    5494 = 1.00000
+    5498 = 1.00000
+    5499 = 1.00000
+    5503 = 1.00000
+    5500 = 1.00000
+    5504 = 1.00000
+    5517 = 1.00000
+    5525 = 1.00000
+    5518 = 1.00000
+    5526 = 1.00000
+    5519 = 1.00000
+    5527 = 1.00000
+    5520 = 1.00000
+    5528 = 1.00000
+    5566 = 1.00000
+    5567 = 1.00000
+    5573 = 1.00000
+    5575 = 1.00000
+    5574 = 1.00000
+    5576 = 1.00000
+    5591 = 1.00000
+    5593 = 1.00000
+    5592 = 1.00000
+    5594 = 1.00000
+    5605 = 1.00000
+    5609 = 1.00000
+    5606 = 1.00000
+    5610 = 1.00000
+    5607 = 1.00000
+    5611 = 1.00000
+    5608 = 1.00000
+    5612 = 1.00000
+    5754 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5757 = 1.00000
+    5759 = 1.00000
+    5762 = 1.00000
+    5764 = 1.00000
+    5763 = 1.00000
+    5765 = 1.00000
+    5772 = 1.00000
+    5776 = 1.00000
+    5773 = 1.00000
+    5777 = 1.00000
+    5778 = 1.00000
+    5780 = 1.00000
+    5782 = 1.00000
+    5779 = 1.00000
+    5781 = 1.00000
+    5783 = 1.00000
+    5784 = 1.00000
+    5788 = 1.00000
+    5785 = 1.00000
+    5789 = 1.00000
+    5794 = 1.00000
+    5798 = 1.00000
+    5795 = 1.00000
+    5799 = 1.00000
+    5796 = 1.00000
+    5800 = 1.00000
+    5797 = 1.00000
+    5801 = 1.00000
+    5814 = 1.00000
+    5822 = 1.00000
+    5815 = 1.00000
+    5823 = 1.00000
+    5816 = 1.00000
+    5824 = 1.00000
+    5817 = 1.00000
+    5825 = 1.00000
+    5862 = 1.00000
+    5864 = 1.00000
+    5871 = 1.00000
+    5875 = 1.00000
+    5872 = 1.00000
+    5876 = 1.00000
+    5877 = 1.00000
+    5881 = 1.00000
+    5878 = 1.00000
+    5882 = 1.00000
+    5895 = 1.00000
+    5903 = 1.00000
+    5896 = 1.00000
+    5904 = 1.00000
+    5897 = 1.00000
+    5905 = 1.00000
+    5898 = 1.00000
+    5906 = 1.00000
+    6025 = 1.00000
+    6026 = 1.00000
+    6029 = 1.00000
+    6031 = 1.00000
+    6030 = 1.00000
+    6032 = 1.00000
+    6041 = 1.00000
+    6043 = 1.00000
+    6042 = 1.00000
+    6044 = 1.00000
+    6049 = 1.00000
+    6053 = 1.00000
+    6050 = 1.00000
+    6054 = 1.00000
+    6051 = 1.00000
+    6055 = 1.00000
+    6052 = 1.00000
+    6056 = 1.00000
+    6105 = 1.00000
+    6107 = 1.00000
+    6114 = 1.00000
+    6118 = 1.00000
+    6115 = 1.00000
+    6119 = 1.00000
+    6120 = 1.00000
+    6124 = 1.00000
+    6121 = 1.00000
+    6125 = 1.00000
+    6138 = 1.00000
+    6146 = 1.00000
+    6139 = 1.00000
+    6147 = 1.00000
+    6140 = 1.00000
+    6148 = 1.00000
+    6141 = 1.00000
+    6149 = 1.00000
+    6186 = 1.00000
+    6187 = 1.00000
+    6188 = 1.00000
+    6191 = 1.00000
+    6193 = 1.00000
+    6192 = 1.00000
+    6194 = 1.00000
+    6195 = 1.00000
+    6199 = 1.00000
+    6196 = 1.00000
+    6200 = 1.00000
+    6201 = 1.00000
+    6203 = 1.00000
+    6205 = 1.00000
+    6202 = 1.00000
+    6204 = 1.00000
+    6206 = 1.00000
+    6211 = 1.00000
+    6215 = 1.00000
+    6212 = 1.00000
+    6216 = 1.00000
+    6213 = 1.00000
+    6217 = 1.00000
+    6214 = 1.00000
+    6218 = 1.00000
+    6219 = 1.00000
+    6227 = 1.00000
+    6220 = 1.00000
+    6228 = 1.00000
+    6221 = 1.00000
+    6229 = 1.00000
+    6222 = 1.00000
+    6230 = 1.00000
+    6349 = 1.00000
+    6350 = 1.00000
+    6353 = 1.00000
+    6355 = 1.00000
+    6354 = 1.00000
+    6356 = 1.00000
+    6365 = 1.00000
+    6367 = 1.00000
+    6366 = 1.00000
+    6368 = 1.00000
+    6373 = 1.00000
+    6377 = 1.00000
+    6374 = 1.00000
+    6378 = 1.00000
+    6375 = 1.00000
+    6379 = 1.00000
+    6376 = 1.00000
+    6380 = 1.00000
+    6429 = 1.00000
+    6431 = 1.00000
+    6438 = 1.00000
+    6442 = 1.00000
+    6439 = 1.00000
+    6443 = 1.00000
+    6444 = 1.00000
+    6448 = 1.00000
+    6445 = 1.00000
+    6449 = 1.00000
+    6462 = 1.00000
+    6470 = 1.00000
+    6463 = 1.00000
+    6471 = 1.00000
+    6464 = 1.00000
+    6472 = 1.00000
+    6465 = 1.00000
+    6473 = 1.00000
+    6510 = 1.00000
+    6511 = 1.00000
+    6512 = 1.00000
+    6515 = 1.00000
+    6517 = 1.00000
+    6516 = 1.00000
+    6518 = 1.00000
+    6519 = 1.00000
+    6523 = 1.00000
+    6520 = 1.00000
+    6524 = 1.00000
+    6525 = 1.00000
+    6527 = 1.00000
+    6529 = 1.00000
+    6526 = 1.00000
+    6528 = 1.00000
+    6530 = 1.00000
+    6535 = 1.00000
+    6539 = 1.00000
+    6536 = 1.00000
+    6540 = 1.00000
+    6537 = 1.00000
+    6541 = 1.00000
+    6538 = 1.00000
+    6542 = 1.00000
+    6543 = 1.00000
+    6551 = 1.00000
+    6544 = 1.00000
+    6552 = 1.00000
+    6545 = 1.00000
+    6553 = 1.00000
+    6546 = 1.00000
+    6554 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=4
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    10 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    26 = 1.00000
+    28 = 1.00000
+    25 = 1.00000
+    27 = 1.00000
+    29 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    31 = 1.00000
+    33 = 1.00000
+    36 = 1.00000
+    38 = 1.00000
+    40 = 1.00000
+    37 = 1.00000
+    39 = 1.00000
+    41 = 1.00000
+    42 = 1.00000
+    44 = 1.00000
+    43 = 1.00000
+    45 = 1.00000
+    50 = 1.00000
+    52 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    60 = 1.00000
+    64 = 1.00000
+    61 = 1.00000
+    65 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    76 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    77 = 1.00000
+    78 = 1.00000
+    82 = 1.00000
+    79 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    100 = 1.00000
+    104 = 1.00000
+    101 = 1.00000
+    105 = 1.00000
+    102 = 1.00000
+    106 = 1.00000
+    103 = 1.00000
+    107 = 1.00000
+    120 = 1.00000
+    128 = 1.00000
+    121 = 1.00000
+    129 = 1.00000
+    122 = 1.00000
+    130 = 1.00000
+    123 = 1.00000
+    131 = 1.00000
+    144 = 1.00000
+    148 = 1.00000
+    145 = 1.00000
+    149 = 1.00000
+    146 = 1.00000
+    150 = 1.00000
+    147 = 1.00000
+    151 = 1.00000
+    192 = 1.00000
+    193 = 1.00000
+    194 = 1.00000
+    195 = 1.00000
+    196 = 1.00000
+    198 = 1.00000
+    200 = 1.00000
+    204 = 1.00000
+    206 = 1.00000
+    205 = 1.00000
+    207 = 1.00000
+    210 = 1.00000
+    212 = 1.00000
+    214 = 1.00000
+    211 = 1.00000
+    213 = 1.00000
+    215 = 1.00000
+    216 = 1.00000
+    218 = 1.00000
+    217 = 1.00000
+    219 = 1.00000
+    228 = 1.00000
+    232 = 1.00000
+    229 = 1.00000
+    233 = 1.00000
+    240 = 1.00000
+    244 = 1.00000
+    241 = 1.00000
+    245 = 1.00000
+    264 = 1.00000
+    272 = 1.00000
+    265 = 1.00000
+    273 = 1.00000
+    266 = 1.00000
+    274 = 1.00000
+    267 = 1.00000
+    275 = 1.00000
+    288 = 1.00000
+    292 = 1.00000
+    289 = 1.00000
+    293 = 1.00000
+    290 = 1.00000
+    294 = 1.00000
+    291 = 1.00000
+    295 = 1.00000
+    336 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    339 = 1.00000
+    340 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    348 = 1.00000
+    350 = 1.00000
+    352 = 1.00000
+    349 = 1.00000
+    351 = 1.00000
+    353 = 1.00000
+    354 = 1.00000
+    356 = 1.00000
+    355 = 1.00000
+    357 = 1.00000
+    360 = 1.00000
+    362 = 1.00000
+    361 = 1.00000
+    363 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    386 = 1.00000
+    388 = 1.00000
+    387 = 1.00000
+    389 = 1.00000
+    400 = 1.00000
+    404 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    402 = 1.00000
+    406 = 1.00000
+    403 = 1.00000
+    407 = 1.00000
+    432 = 1.00000
+    436 = 1.00000
+    433 = 1.00000
+    437 = 1.00000
+    434 = 1.00000
+    438 = 1.00000
+    435 = 1.00000
+    439 = 1.00000
+    480 = 1.00000
+    481 = 1.00000
+    486 = 1.00000
+    488 = 1.00000
+    487 = 1.00000
+    489 = 1.00000
+    492 = 1.00000
+    494 = 1.00000
+    493 = 1.00000
+    495 = 1.00000
+    540 = 1.00000
+    544 = 1.00000
+    541 = 1.00000
+    545 = 1.00000
+    542 = 1.00000
+    546 = 1.00000
+    543 = 1.00000
+    547 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    590 = 1.00000
+    591 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    602 = 1.00000
+    604 = 1.00000
+    603 = 1.00000
+    605 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    613 = 1.00000
+    617 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    628 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    629 = 1.00000
+    630 = 1.00000
+    634 = 1.00000
+    631 = 1.00000
+    635 = 1.00000
+    638 = 1.00000
+    640 = 1.00000
+    639 = 1.00000
+    641 = 1.00000
+    652 = 1.00000
+    656 = 1.00000
+    653 = 1.00000
+    657 = 1.00000
+    654 = 1.00000
+    658 = 1.00000
+    655 = 1.00000
+    659 = 1.00000
+    672 = 1.00000
+    680 = 1.00000
+    673 = 1.00000
+    681 = 1.00000
+    674 = 1.00000
+    682 = 1.00000
+    675 = 1.00000
+    683 = 1.00000
+    732 = 1.00000
+    734 = 1.00000
+    744 = 1.00000
+    748 = 1.00000
+    745 = 1.00000
+    749 = 1.00000
+    756 = 1.00000
+    760 = 1.00000
+    757 = 1.00000
+    761 = 1.00000
+    780 = 1.00000
+    788 = 1.00000
+    781 = 1.00000
+    789 = 1.00000
+    782 = 1.00000
+    790 = 1.00000
+    783 = 1.00000
+    791 = 1.00000
+    841 = 1.00000
+    842 = 1.00000
+    848 = 1.00000
+    850 = 1.00000
+    849 = 1.00000
+    851 = 1.00000
+    866 = 1.00000
+    868 = 1.00000
+    867 = 1.00000
+    869 = 1.00000
+    880 = 1.00000
+    884 = 1.00000
+    881 = 1.00000
+    885 = 1.00000
+    882 = 1.00000
+    886 = 1.00000
+    883 = 1.00000
+    887 = 1.00000
+    1029 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1032 = 1.00000
+    1033 = 1.00000
+    1035 = 1.00000
+    1037 = 1.00000
+    1041 = 1.00000
+    1043 = 1.00000
+    1042 = 1.00000
+    1044 = 1.00000
+    1047 = 1.00000
+    1049 = 1.00000
+    1051 = 1.00000
+    1048 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1053 = 1.00000
+    1055 = 1.00000
+    1054 = 1.00000
+    1056 = 1.00000
+    1065 = 1.00000
+    1069 = 1.00000
+    1066 = 1.00000
+    1070 = 1.00000
+    1077 = 1.00000
+    1081 = 1.00000
+    1078 = 1.00000
+    1082 = 1.00000
+    1101 = 1.00000
+    1109 = 1.00000
+    1102 = 1.00000
+    1110 = 1.00000
+    1103 = 1.00000
+    1111 = 1.00000
+    1104 = 1.00000
+    1112 = 1.00000
+    1125 = 1.00000
+    1129 = 1.00000
+    1126 = 1.00000
+    1130 = 1.00000
+    1127 = 1.00000
+    1131 = 1.00000
+    1128 = 1.00000
+    1132 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1177 = 1.00000
+    1178 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1181 = 1.00000
+    1183 = 1.00000
+    1184 = 1.00000
+    1185 = 1.00000
+    1187 = 1.00000
+    1189 = 1.00000
+    1186 = 1.00000
+    1188 = 1.00000
+    1190 = 1.00000
+    1191 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1192 = 1.00000
+    1194 = 1.00000
+    1196 = 1.00000
+    1197 = 1.00000
+    1199 = 1.00000
+    1198 = 1.00000
+    1200 = 1.00000
+    1205 = 1.00000
+    1207 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1209 = 1.00000
+    1213 = 1.00000
+    1210 = 1.00000
+    1214 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1225 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1226 = 1.00000
+    1229 = 1.00000
+    1231 = 1.00000
+    1230 = 1.00000
+    1232 = 1.00000
+    1237 = 1.00000
+    1241 = 1.00000
+    1238 = 1.00000
+    1242 = 1.00000
+    1239 = 1.00000
+    1243 = 1.00000
+    1240 = 1.00000
+    1244 = 1.00000
+    1245 = 1.00000
+    1253 = 1.00000
+    1246 = 1.00000
+    1254 = 1.00000
+    1247 = 1.00000
+    1255 = 1.00000
+    1248 = 1.00000
+    1256 = 1.00000
+    1269 = 1.00000
+    1273 = 1.00000
+    1270 = 1.00000
+    1274 = 1.00000
+    1271 = 1.00000
+    1275 = 1.00000
+    1272 = 1.00000
+    1276 = 1.00000
+    1317 = 1.00000
+    1318 = 1.00000
+    1323 = 1.00000
+    1325 = 1.00000
+    1324 = 1.00000
+    1326 = 1.00000
+    1329 = 1.00000
+    1331 = 1.00000
+    1330 = 1.00000
+    1332 = 1.00000
+    1377 = 1.00000
+    1381 = 1.00000
+    1378 = 1.00000
+    1382 = 1.00000
+    1379 = 1.00000
+    1383 = 1.00000
+    1380 = 1.00000
+    1384 = 1.00000
+    1425 = 1.00000
+    1426 = 1.00000
+    1427 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1431 = 1.00000
+    1433 = 1.00000
+    1435 = 1.00000
+    1432 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1437 = 1.00000
+    1439 = 1.00000
+    1438 = 1.00000
+    1440 = 1.00000
+    1445 = 1.00000
+    1447 = 1.00000
+    1446 = 1.00000
+    1448 = 1.00000
+    1457 = 1.00000
+    1459 = 1.00000
+    1458 = 1.00000
+    1460 = 1.00000
+    1465 = 1.00000
+    1469 = 1.00000
+    1466 = 1.00000
+    1470 = 1.00000
+    1467 = 1.00000
+    1471 = 1.00000
+    1468 = 1.00000
+    1472 = 1.00000
+    1485 = 1.00000
+    1489 = 1.00000
+    1486 = 1.00000
+    1490 = 1.00000
+    1487 = 1.00000
+    1491 = 1.00000
+    1488 = 1.00000
+    1492 = 1.00000
+    1533 = 1.00000
+    1535 = 1.00000
+    1545 = 1.00000
+    1549 = 1.00000
+    1546 = 1.00000
+    1550 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1558 = 1.00000
+    1562 = 1.00000
+    1581 = 1.00000
+    1589 = 1.00000
+    1582 = 1.00000
+    1590 = 1.00000
+    1583 = 1.00000
+    1591 = 1.00000
+    1584 = 1.00000
+    1592 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1643 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1649 = 1.00000
+    1651 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1653 = 1.00000
+    1657 = 1.00000
+    1654 = 1.00000
+    1658 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1669 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1670 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1674 = 1.00000
+    1676 = 1.00000
+    1681 = 1.00000
+    1685 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1683 = 1.00000
+    1687 = 1.00000
+    1684 = 1.00000
+    1688 = 1.00000
+    1689 = 1.00000
+    1697 = 1.00000
+    1690 = 1.00000
+    1698 = 1.00000
+    1691 = 1.00000
+    1699 = 1.00000
+    1692 = 1.00000
+    1700 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1836 = 1.00000
+    1838 = 1.00000
+    1847 = 1.00000
+    1849 = 1.00000
+    1848 = 1.00000
+    1850 = 1.00000
+    1855 = 1.00000
+    1859 = 1.00000
+    1856 = 1.00000
+    1860 = 1.00000
+    1857 = 1.00000
+    1861 = 1.00000
+    1858 = 1.00000
+    1862 = 1.00000
+    1911 = 1.00000
+    1912 = 1.00000
+    1913 = 1.00000
+    1914 = 1.00000
+    1915 = 1.00000
+    1918 = 1.00000
+    1919 = 1.00000
+    1923 = 1.00000
+    1925 = 1.00000
+    1927 = 1.00000
+    1924 = 1.00000
+    1926 = 1.00000
+    1928 = 1.00000
+    1929 = 1.00000
+    1931 = 1.00000
+    1930 = 1.00000
+    1932 = 1.00000
+    1935 = 1.00000
+    1937 = 1.00000
+    1936 = 1.00000
+    1938 = 1.00000
+    1943 = 1.00000
+    1945 = 1.00000
+    1944 = 1.00000
+    1946 = 1.00000
+    1961 = 1.00000
+    1963 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1975 = 1.00000
+    1979 = 1.00000
+    1976 = 1.00000
+    1980 = 1.00000
+    1977 = 1.00000
+    1981 = 1.00000
+    1978 = 1.00000
+    1982 = 1.00000
+    2007 = 1.00000
+    2011 = 1.00000
+    2008 = 1.00000
+    2012 = 1.00000
+    2009 = 1.00000
+    2013 = 1.00000
+    2010 = 1.00000
+    2014 = 1.00000
+    2055 = 1.00000
+    2056 = 1.00000
+    2061 = 1.00000
+    2063 = 1.00000
+    2062 = 1.00000
+    2064 = 1.00000
+    2067 = 1.00000
+    2069 = 1.00000
+    2068 = 1.00000
+    2070 = 1.00000
+    2115 = 1.00000
+    2119 = 1.00000
+    2116 = 1.00000
+    2120 = 1.00000
+    2117 = 1.00000
+    2121 = 1.00000
+    2118 = 1.00000
+    2122 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2166 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2174 = 1.00000
+    2175 = 1.00000
+    2177 = 1.00000
+    2179 = 1.00000
+    2176 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2181 = 1.00000
+    2183 = 1.00000
+    2182 = 1.00000
+    2184 = 1.00000
+    2187 = 1.00000
+    2189 = 1.00000
+    2191 = 1.00000
+    2188 = 1.00000
+    2190 = 1.00000
+    2192 = 1.00000
+    2195 = 1.00000
+    2197 = 1.00000
+    2196 = 1.00000
+    2198 = 1.00000
+    2205 = 1.00000
+    2209 = 1.00000
+    2206 = 1.00000
+    2210 = 1.00000
+    2211 = 1.00000
+    2213 = 1.00000
+    2215 = 1.00000
+    2212 = 1.00000
+    2214 = 1.00000
+    2216 = 1.00000
+    2217 = 1.00000
+    2221 = 1.00000
+    2218 = 1.00000
+    2222 = 1.00000
+    2227 = 1.00000
+    2231 = 1.00000
+    2228 = 1.00000
+    2232 = 1.00000
+    2229 = 1.00000
+    2233 = 1.00000
+    2230 = 1.00000
+    2234 = 1.00000
+    2247 = 1.00000
+    2255 = 1.00000
+    2248 = 1.00000
+    2256 = 1.00000
+    2249 = 1.00000
+    2257 = 1.00000
+    2250 = 1.00000
+    2258 = 1.00000
+    2259 = 1.00000
+    2263 = 1.00000
+    2260 = 1.00000
+    2264 = 1.00000
+    2261 = 1.00000
+    2265 = 1.00000
+    2262 = 1.00000
+    2266 = 1.00000
+    2307 = 1.00000
+    2308 = 1.00000
+    2309 = 1.00000
+    2310 = 1.00000
+    2312 = 1.00000
+    2313 = 1.00000
+    2315 = 1.00000
+    2314 = 1.00000
+    2316 = 1.00000
+    2319 = 1.00000
+    2321 = 1.00000
+    2323 = 1.00000
+    2320 = 1.00000
+    2322 = 1.00000
+    2324 = 1.00000
+    2331 = 1.00000
+    2335 = 1.00000
+    2332 = 1.00000
+    2336 = 1.00000
+    2337 = 1.00000
+    2341 = 1.00000
+    2338 = 1.00000
+    2342 = 1.00000
+    2355 = 1.00000
+    2363 = 1.00000
+    2356 = 1.00000
+    2364 = 1.00000
+    2357 = 1.00000
+    2365 = 1.00000
+    2358 = 1.00000
+    2366 = 1.00000
+    2367 = 1.00000
+    2371 = 1.00000
+    2368 = 1.00000
+    2372 = 1.00000
+    2369 = 1.00000
+    2373 = 1.00000
+    2370 = 1.00000
+    2374 = 1.00000
+    2416 = 1.00000
+    2417 = 1.00000
+    2423 = 1.00000
+    2425 = 1.00000
+    2424 = 1.00000
+    2426 = 1.00000
+    2441 = 1.00000
+    2443 = 1.00000
+    2442 = 1.00000
+    2444 = 1.00000
+    2455 = 1.00000
+    2459 = 1.00000
+    2456 = 1.00000
+    2460 = 1.00000
+    2457 = 1.00000
+    2461 = 1.00000
+    2458 = 1.00000
+    2462 = 1.00000
+    2604 = 1.00000
+    2605 = 1.00000
+    2606 = 1.00000
+    2607 = 1.00000
+    2609 = 1.00000
+    2612 = 1.00000
+    2614 = 1.00000
+    2613 = 1.00000
+    2615 = 1.00000
+    2622 = 1.00000
+    2626 = 1.00000
+    2623 = 1.00000
+    2627 = 1.00000
+    2628 = 1.00000
+    2630 = 1.00000
+    2632 = 1.00000
+    2629 = 1.00000
+    2631 = 1.00000
+    2633 = 1.00000
+    2634 = 1.00000
+    2638 = 1.00000
+    2635 = 1.00000
+    2639 = 1.00000
+    2644 = 1.00000
+    2648 = 1.00000
+    2645 = 1.00000
+    2649 = 1.00000
+    2646 = 1.00000
+    2650 = 1.00000
+    2647 = 1.00000
+    2651 = 1.00000
+    2664 = 1.00000
+    2672 = 1.00000
+    2665 = 1.00000
+    2673 = 1.00000
+    2666 = 1.00000
+    2674 = 1.00000
+    2667 = 1.00000
+    2675 = 1.00000
+    2712 = 1.00000
+    2714 = 1.00000
+    2721 = 1.00000
+    2725 = 1.00000
+    2722 = 1.00000
+    2726 = 1.00000
+    2727 = 1.00000
+    2731 = 1.00000
+    2728 = 1.00000
+    2732 = 1.00000
+    2745 = 1.00000
+    2753 = 1.00000
+    2746 = 1.00000
+    2754 = 1.00000
+    2747 = 1.00000
+    2755 = 1.00000
+    2748 = 1.00000
+    2756 = 1.00000
+    2793 = 1.00000
+    2794 = 1.00000
+    2799 = 1.00000
+    2801 = 1.00000
+    2800 = 1.00000
+    2802 = 1.00000
+    2805 = 1.00000
+    2807 = 1.00000
+    2806 = 1.00000
+    2808 = 1.00000
+    2853 = 1.00000
+    2857 = 1.00000
+    2854 = 1.00000
+    2858 = 1.00000
+    2855 = 1.00000
+    2859 = 1.00000
+    2856 = 1.00000
+    2860 = 1.00000
+    2901 = 1.00000
+    2902 = 1.00000
+    2903 = 1.00000
+    2905 = 1.00000
+    2906 = 1.00000
+    2907 = 1.00000
+    2909 = 1.00000
+    2911 = 1.00000
+    2908 = 1.00000
+    2910 = 1.00000
+    2912 = 1.00000
+    2913 = 1.00000
+    2915 = 1.00000
+    2914 = 1.00000
+    2916 = 1.00000
+    2921 = 1.00000
+    2923 = 1.00000
+    2922 = 1.00000
+    2924 = 1.00000
+    2933 = 1.00000
+    2935 = 1.00000
+    2934 = 1.00000
+    2936 = 1.00000
+    2941 = 1.00000
+    2945 = 1.00000
+    2942 = 1.00000
+    2946 = 1.00000
+    2943 = 1.00000
+    2947 = 1.00000
+    2944 = 1.00000
+    2948 = 1.00000
+    2961 = 1.00000
+    2965 = 1.00000
+    2962 = 1.00000
+    2966 = 1.00000
+    2963 = 1.00000
+    2967 = 1.00000
+    2964 = 1.00000
+    2968 = 1.00000
+    3009 = 1.00000
+    3010 = 1.00000
+    3011 = 1.00000
+    3012 = 1.00000
+    3014 = 1.00000
+    3015 = 1.00000
+    3017 = 1.00000
+    3016 = 1.00000
+    3018 = 1.00000
+    3021 = 1.00000
+    3023 = 1.00000
+    3025 = 1.00000
+    3022 = 1.00000
+    3024 = 1.00000
+    3026 = 1.00000
+    3033 = 1.00000
+    3037 = 1.00000
+    3034 = 1.00000
+    3038 = 1.00000
+    3039 = 1.00000
+    3043 = 1.00000
+    3040 = 1.00000
+    3044 = 1.00000
+    3057 = 1.00000
+    3065 = 1.00000
+    3058 = 1.00000
+    3066 = 1.00000
+    3059 = 1.00000
+    3067 = 1.00000
+    3060 = 1.00000
+    3068 = 1.00000
+    3069 = 1.00000
+    3073 = 1.00000
+    3070 = 1.00000
+    3074 = 1.00000
+    3071 = 1.00000
+    3075 = 1.00000
+    3072 = 1.00000
+    3076 = 1.00000
+    3117 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3120 = 1.00000
+    3121 = 1.00000
+    3122 = 1.00000
+    3123 = 1.00000
+    3125 = 1.00000
+    3127 = 1.00000
+    3124 = 1.00000
+    3126 = 1.00000
+    3128 = 1.00000
+    3129 = 1.00000
+    3131 = 1.00000
+    3133 = 1.00000
+    3130 = 1.00000
+    3132 = 1.00000
+    3134 = 1.00000
+    3137 = 1.00000
+    3139 = 1.00000
+    3138 = 1.00000
+    3140 = 1.00000
+    3141 = 1.00000
+    3145 = 1.00000
+    3142 = 1.00000
+    3146 = 1.00000
+    3147 = 1.00000
+    3149 = 1.00000
+    3151 = 1.00000
+    3148 = 1.00000
+    3150 = 1.00000
+    3152 = 1.00000
+    3157 = 1.00000
+    3161 = 1.00000
+    3158 = 1.00000
+    3162 = 1.00000
+    3159 = 1.00000
+    3163 = 1.00000
+    3160 = 1.00000
+    3164 = 1.00000
+    3165 = 1.00000
+    3173 = 1.00000
+    3166 = 1.00000
+    3174 = 1.00000
+    3167 = 1.00000
+    3175 = 1.00000
+    3168 = 1.00000
+    3176 = 1.00000
+    3177 = 1.00000
+    3181 = 1.00000
+    3178 = 1.00000
+    3182 = 1.00000
+    3179 = 1.00000
+    3183 = 1.00000
+    3180 = 1.00000
+    3184 = 1.00000
+    3307 = 1.00000
+    3308 = 1.00000
+    3311 = 1.00000
+    3313 = 1.00000
+    3312 = 1.00000
+    3314 = 1.00000
+    3323 = 1.00000
+    3325 = 1.00000
+    3324 = 1.00000
+    3326 = 1.00000
+    3331 = 1.00000
+    3335 = 1.00000
+    3332 = 1.00000
+    3336 = 1.00000
+    3333 = 1.00000
+    3337 = 1.00000
+    3334 = 1.00000
+    3338 = 1.00000
+    3387 = 1.00000
+    3389 = 1.00000
+    3396 = 1.00000
+    3400 = 1.00000
+    3397 = 1.00000
+    3401 = 1.00000
+    3402 = 1.00000
+    3406 = 1.00000
+    3403 = 1.00000
+    3407 = 1.00000
+    3420 = 1.00000
+    3428 = 1.00000
+    3421 = 1.00000
+    3429 = 1.00000
+    3422 = 1.00000
+    3430 = 1.00000
+    3423 = 1.00000
+    3431 = 1.00000
+    3468 = 1.00000
+    3469 = 1.00000
+    3470 = 1.00000
+    3473 = 1.00000
+    3475 = 1.00000
+    3474 = 1.00000
+    3476 = 1.00000
+    3477 = 1.00000
+    3481 = 1.00000
+    3478 = 1.00000
+    3482 = 1.00000
+    3483 = 1.00000
+    3485 = 1.00000
+    3487 = 1.00000
+    3484 = 1.00000
+    3486 = 1.00000
+    3488 = 1.00000
+    3493 = 1.00000
+    3497 = 1.00000
+    3494 = 1.00000
+    3498 = 1.00000
+    3495 = 1.00000
+    3499 = 1.00000
+    3496 = 1.00000
+    3500 = 1.00000
+    3501 = 1.00000
+    3509 = 1.00000
+    3502 = 1.00000
+    3510 = 1.00000
+    3503 = 1.00000
+    3511 = 1.00000
+    3504 = 1.00000
+    3512 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3551 = 1.00000
+    3552 = 1.00000
+    3554 = 1.00000
+    3556 = 1.00000
+    3557 = 1.00000
+    3563 = 1.00000
+    3565 = 1.00000
+    3564 = 1.00000
+    3566 = 1.00000
+    3573 = 1.00000
+    3577 = 1.00000
+    3574 = 1.00000
+    3578 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3589 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3590 = 1.00000
+    3591 = 1.00000
+    3595 = 1.00000
+    3592 = 1.00000
+    3596 = 1.00000
+    3599 = 1.00000
+    3601 = 1.00000
+    3600 = 1.00000
+    3602 = 1.00000
+    3613 = 1.00000
+    3617 = 1.00000
+    3614 = 1.00000
+    3618 = 1.00000
+    3615 = 1.00000
+    3619 = 1.00000
+    3616 = 1.00000
+    3620 = 1.00000
+    3633 = 1.00000
+    3641 = 1.00000
+    3634 = 1.00000
+    3642 = 1.00000
+    3635 = 1.00000
+    3643 = 1.00000
+    3636 = 1.00000
+    3644 = 1.00000
+    3693 = 1.00000
+    3695 = 1.00000
+    3705 = 1.00000
+    3709 = 1.00000
+    3706 = 1.00000
+    3710 = 1.00000
+    3717 = 1.00000
+    3721 = 1.00000
+    3718 = 1.00000
+    3722 = 1.00000
+    3741 = 1.00000
+    3749 = 1.00000
+    3742 = 1.00000
+    3750 = 1.00000
+    3743 = 1.00000
+    3751 = 1.00000
+    3744 = 1.00000
+    3752 = 1.00000
+    3802 = 1.00000
+    3803 = 1.00000
+    3809 = 1.00000
+    3811 = 1.00000
+    3810 = 1.00000
+    3812 = 1.00000
+    3827 = 1.00000
+    3829 = 1.00000
+    3828 = 1.00000
+    3830 = 1.00000
+    3841 = 1.00000
+    3845 = 1.00000
+    3842 = 1.00000
+    3846 = 1.00000
+    3843 = 1.00000
+    3847 = 1.00000
+    3844 = 1.00000
+    3848 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3993 = 1.00000
+    3995 = 1.00000
+    3997 = 1.00000
+    3998 = 1.00000
+    4004 = 1.00000
+    4006 = 1.00000
+    4005 = 1.00000
+    4007 = 1.00000
+    4014 = 1.00000
+    4018 = 1.00000
+    4015 = 1.00000
+    4019 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4030 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4031 = 1.00000
+    4032 = 1.00000
+    4036 = 1.00000
+    4033 = 1.00000
+    4037 = 1.00000
+    4040 = 1.00000
+    4042 = 1.00000
+    4041 = 1.00000
+    4043 = 1.00000
+    4054 = 1.00000
+    4058 = 1.00000
+    4055 = 1.00000
+    4059 = 1.00000
+    4056 = 1.00000
+    4060 = 1.00000
+    4057 = 1.00000
+    4061 = 1.00000
+    4074 = 1.00000
+    4082 = 1.00000
+    4075 = 1.00000
+    4083 = 1.00000
+    4076 = 1.00000
+    4084 = 1.00000
+    4077 = 1.00000
+    4085 = 1.00000
+    4134 = 1.00000
+    4136 = 1.00000
+    4146 = 1.00000
+    4150 = 1.00000
+    4147 = 1.00000
+    4151 = 1.00000
+    4158 = 1.00000
+    4162 = 1.00000
+    4159 = 1.00000
+    4163 = 1.00000
+    4182 = 1.00000
+    4190 = 1.00000
+    4183 = 1.00000
+    4191 = 1.00000
+    4184 = 1.00000
+    4192 = 1.00000
+    4185 = 1.00000
+    4193 = 1.00000
+    4243 = 1.00000
+    4244 = 1.00000
+    4250 = 1.00000
+    4252 = 1.00000
+    4251 = 1.00000
+    4253 = 1.00000
+    4268 = 1.00000
+    4270 = 1.00000
+    4269 = 1.00000
+    4271 = 1.00000
+    4282 = 1.00000
+    4286 = 1.00000
+    4283 = 1.00000
+    4287 = 1.00000
+    4284 = 1.00000
+    4288 = 1.00000
+    4285 = 1.00000
+    4289 = 1.00000
+    4431 = 1.00000
+    4433 = 1.00000
+    4443 = 1.00000
+    4447 = 1.00000
+    4444 = 1.00000
+    4448 = 1.00000
+    4455 = 1.00000
+    4459 = 1.00000
+    4456 = 1.00000
+    4460 = 1.00000
+    4479 = 1.00000
+    4487 = 1.00000
+    4480 = 1.00000
+    4488 = 1.00000
+    4481 = 1.00000
+    4489 = 1.00000
+    4482 = 1.00000
+    4490 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4541 = 1.00000
+    4543 = 1.00000
+    4544 = 1.00000
+    4547 = 1.00000
+    4549 = 1.00000
+    4548 = 1.00000
+    4550 = 1.00000
+    4551 = 1.00000
+    4555 = 1.00000
+    4552 = 1.00000
+    4556 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4567 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4568 = 1.00000
+    4571 = 1.00000
+    4573 = 1.00000
+    4572 = 1.00000
+    4574 = 1.00000
+    4579 = 1.00000
+    4583 = 1.00000
+    4580 = 1.00000
+    4584 = 1.00000
+    4581 = 1.00000
+    4585 = 1.00000
+    4582 = 1.00000
+    4586 = 1.00000
+    4587 = 1.00000
+    4595 = 1.00000
+    4588 = 1.00000
+    4596 = 1.00000
+    4589 = 1.00000
+    4597 = 1.00000
+    4590 = 1.00000
+    4598 = 1.00000
+    4729 = 1.00000
+    4730 = 1.00000
+    4733 = 1.00000
+    4735 = 1.00000
+    4734 = 1.00000
+    4736 = 1.00000
+    4745 = 1.00000
+    4747 = 1.00000
+    4746 = 1.00000
+    4748 = 1.00000
+    4753 = 1.00000
+    4757 = 1.00000
+    4754 = 1.00000
+    4758 = 1.00000
+    4755 = 1.00000
+    4759 = 1.00000
+    4756 = 1.00000
+    4760 = 1.00000
+    4809 = 1.00000
+    4811 = 1.00000
+    4821 = 1.00000
+    4825 = 1.00000
+    4822 = 1.00000
+    4826 = 1.00000
+    4833 = 1.00000
+    4837 = 1.00000
+    4834 = 1.00000
+    4838 = 1.00000
+    4857 = 1.00000
+    4865 = 1.00000
+    4858 = 1.00000
+    4866 = 1.00000
+    4859 = 1.00000
+    4867 = 1.00000
+    4860 = 1.00000
+    4868 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4919 = 1.00000
+    4921 = 1.00000
+    4922 = 1.00000
+    4925 = 1.00000
+    4927 = 1.00000
+    4926 = 1.00000
+    4928 = 1.00000
+    4929 = 1.00000
+    4933 = 1.00000
+    4930 = 1.00000
+    4934 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4945 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4946 = 1.00000
+    4949 = 1.00000
+    4951 = 1.00000
+    4950 = 1.00000
+    4952 = 1.00000
+    4957 = 1.00000
+    4961 = 1.00000
+    4958 = 1.00000
+    4962 = 1.00000
+    4959 = 1.00000
+    4963 = 1.00000
+    4960 = 1.00000
+    4964 = 1.00000
+    4965 = 1.00000
+    4973 = 1.00000
+    4966 = 1.00000
+    4974 = 1.00000
+    4967 = 1.00000
+    4975 = 1.00000
+    4968 = 1.00000
+    4976 = 1.00000
+    5107 = 1.00000
+    5108 = 1.00000
+    5111 = 1.00000
+    5113 = 1.00000
+    5112 = 1.00000
+    5114 = 1.00000
+    5123 = 1.00000
+    5125 = 1.00000
+    5124 = 1.00000
+    5126 = 1.00000
+    5131 = 1.00000
+    5135 = 1.00000
+    5132 = 1.00000
+    5136 = 1.00000
+    5133 = 1.00000
+    5137 = 1.00000
+    5134 = 1.00000
+    5138 = 1.00000
+    5188 = 1.00000
+    5189 = 1.00000
+    5195 = 1.00000
+    5197 = 1.00000
+    5196 = 1.00000
+    5198 = 1.00000
+    5213 = 1.00000
+    5215 = 1.00000
+    5214 = 1.00000
+    5216 = 1.00000
+    5227 = 1.00000
+    5231 = 1.00000
+    5228 = 1.00000
+    5232 = 1.00000
+    5229 = 1.00000
+    5233 = 1.00000
+    5230 = 1.00000
+    5234 = 1.00000
+    5376 = 1.00000
+    5377 = 1.00000
+    5378 = 1.00000
+    5379 = 1.00000
+    5381 = 1.00000
+    5384 = 1.00000
+    5386 = 1.00000
+    5385 = 1.00000
+    5387 = 1.00000
+    5394 = 1.00000
+    5398 = 1.00000
+    5395 = 1.00000
+    5399 = 1.00000
+    5400 = 1.00000
+    5402 = 1.00000
+    5404 = 1.00000
+    5401 = 1.00000
+    5403 = 1.00000
+    5405 = 1.00000
+    5406 = 1.00000
+    5410 = 1.00000
+    5407 = 1.00000
+    5411 = 1.00000
+    5416 = 1.00000
+    5420 = 1.00000
+    5417 = 1.00000
+    5421 = 1.00000
+    5418 = 1.00000
+    5422 = 1.00000
+    5419 = 1.00000
+    5423 = 1.00000
+    5436 = 1.00000
+    5444 = 1.00000
+    5437 = 1.00000
+    5445 = 1.00000
+    5438 = 1.00000
+    5446 = 1.00000
+    5439 = 1.00000
+    5447 = 1.00000
+    5484 = 1.00000
+    5486 = 1.00000
+    5493 = 1.00000
+    5497 = 1.00000
+    5494 = 1.00000
+    5498 = 1.00000
+    5499 = 1.00000
+    5503 = 1.00000
+    5500 = 1.00000
+    5504 = 1.00000
+    5517 = 1.00000
+    5525 = 1.00000
+    5518 = 1.00000
+    5526 = 1.00000
+    5519 = 1.00000
+    5527 = 1.00000
+    5520 = 1.00000
+    5528 = 1.00000
+    5566 = 1.00000
+    5567 = 1.00000
+    5573 = 1.00000
+    5575 = 1.00000
+    5574 = 1.00000
+    5576 = 1.00000
+    5591 = 1.00000
+    5593 = 1.00000
+    5592 = 1.00000
+    5594 = 1.00000
+    5605 = 1.00000
+    5609 = 1.00000
+    5606 = 1.00000
+    5610 = 1.00000
+    5607 = 1.00000
+    5611 = 1.00000
+    5608 = 1.00000
+    5612 = 1.00000
+    5754 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5757 = 1.00000
+    5759 = 1.00000
+    5762 = 1.00000
+    5764 = 1.00000
+    5763 = 1.00000
+    5765 = 1.00000
+    5772 = 1.00000
+    5776 = 1.00000
+    5773 = 1.00000
+    5777 = 1.00000
+    5778 = 1.00000
+    5780 = 1.00000
+    5782 = 1.00000
+    5779 = 1.00000
+    5781 = 1.00000
+    5783 = 1.00000
+    5784 = 1.00000
+    5788 = 1.00000
+    5785 = 1.00000
+    5789 = 1.00000
+    5794 = 1.00000
+    5798 = 1.00000
+    5795 = 1.00000
+    5799 = 1.00000
+    5796 = 1.00000
+    5800 = 1.00000
+    5797 = 1.00000
+    5801 = 1.00000
+    5814 = 1.00000
+    5822 = 1.00000
+    5815 = 1.00000
+    5823 = 1.00000
+    5816 = 1.00000
+    5824 = 1.00000
+    5817 = 1.00000
+    5825 = 1.00000
+    5862 = 1.00000
+    5864 = 1.00000
+    5871 = 1.00000
+    5875 = 1.00000
+    5872 = 1.00000
+    5876 = 1.00000
+    5877 = 1.00000
+    5881 = 1.00000
+    5878 = 1.00000
+    5882 = 1.00000
+    5895 = 1.00000
+    5903 = 1.00000
+    5896 = 1.00000
+    5904 = 1.00000
+    5897 = 1.00000
+    5905 = 1.00000
+    5898 = 1.00000
+    5906 = 1.00000
+    6025 = 1.00000
+    6026 = 1.00000
+    6029 = 1.00000
+    6031 = 1.00000
+    6030 = 1.00000
+    6032 = 1.00000
+    6041 = 1.00000
+    6043 = 1.00000
+    6042 = 1.00000
+    6044 = 1.00000
+    6049 = 1.00000
+    6053 = 1.00000
+    6050 = 1.00000
+    6054 = 1.00000
+    6051 = 1.00000
+    6055 = 1.00000
+    6052 = 1.00000
+    6056 = 1.00000
+    6105 = 1.00000
+    6107 = 1.00000
+    6114 = 1.00000
+    6118 = 1.00000
+    6115 = 1.00000
+    6119 = 1.00000
+    6120 = 1.00000
+    6124 = 1.00000
+    6121 = 1.00000
+    6125 = 1.00000
+    6138 = 1.00000
+    6146 = 1.00000
+    6139 = 1.00000
+    6147 = 1.00000
+    6140 = 1.00000
+    6148 = 1.00000
+    6141 = 1.00000
+    6149 = 1.00000
+    6186 = 1.00000
+    6187 = 1.00000
+    6188 = 1.00000
+    6191 = 1.00000
+    6193 = 1.00000
+    6192 = 1.00000
+    6194 = 1.00000
+    6195 = 1.00000
+    6199 = 1.00000
+    6196 = 1.00000
+    6200 = 1.00000
+    6201 = 1.00000
+    6203 = 1.00000
+    6205 = 1.00000
+    6202 = 1.00000
+    6204 = 1.00000
+    6206 = 1.00000
+    6211 = 1.00000
+    6215 = 1.00000
+    6212 = 1.00000
+    6216 = 1.00000
+    6213 = 1.00000
+    6217 = 1.00000
+    6214 = 1.00000
+    6218 = 1.00000
+    6219 = 1.00000
+    6227 = 1.00000
+    6220 = 1.00000
+    6228 = 1.00000
+    6221 = 1.00000
+    6229 = 1.00000
+    6222 = 1.00000
+    6230 = 1.00000
+    6349 = 1.00000
+    6350 = 1.00000
+    6353 = 1.00000
+    6355 = 1.00000
+    6354 = 1.00000
+    6356 = 1.00000
+    6365 = 1.00000
+    6367 = 1.00000
+    6366 = 1.00000
+    6368 = 1.00000
+    6373 = 1.00000
+    6377 = 1.00000
+    6374 = 1.00000
+    6378 = 1.00000
+    6375 = 1.00000
+    6379 = 1.00000
+    6376 = 1.00000
+    6380 = 1.00000
+    6429 = 1.00000
+    6431 = 1.00000
+    6438 = 1.00000
+    6442 = 1.00000
+    6439 = 1.00000
+    6443 = 1.00000
+    6444 = 1.00000
+    6448 = 1.00000
+    6445 = 1.00000
+    6449 = 1.00000
+    6462 = 1.00000
+    6470 = 1.00000
+    6463 = 1.00000
+    6471 = 1.00000
+    6464 = 1.00000
+    6472 = 1.00000
+    6465 = 1.00000
+    6473 = 1.00000
+    6510 = 1.00000
+    6511 = 1.00000
+    6512 = 1.00000
+    6515 = 1.00000
+    6517 = 1.00000
+    6516 = 1.00000
+    6518 = 1.00000
+    6519 = 1.00000
+    6523 = 1.00000
+    6520 = 1.00000
+    6524 = 1.00000
+    6525 = 1.00000
+    6527 = 1.00000
+    6529 = 1.00000
+    6526 = 1.00000
+    6528 = 1.00000
+    6530 = 1.00000
+    6535 = 1.00000
+    6539 = 1.00000
+    6536 = 1.00000
+    6540 = 1.00000
+    6537 = 1.00000
+    6541 = 1.00000
+    6538 = 1.00000
+    6542 = 1.00000
+    6543 = 1.00000
+    6551 = 1.00000
+    6544 = 1.00000
+    6552 = 1.00000
+    6545 = 1.00000
+    6553 = 1.00000
+    6546 = 1.00000
+    6554 = 1.00000
+DEAL::FE=FESystem<3>[FE_Q<3>(3)^3], case=5
+    0 = 1.00000
+    1 = 1.00000
+    2 = 1.00000
+    3 = 1.00000
+    4 = 1.00000
+    5 = 1.00000
+    6 = 1.00000
+    7 = 1.00000
+    8 = 1.00000
+    9 = 1.00000
+    10 = 1.00000
+    12 = 1.00000
+    13 = 1.00000
+    14 = 1.00000
+    15 = 1.00000
+    17 = 1.00000
+    19 = 1.00000
+    20 = 1.00000
+    24 = 1.00000
+    26 = 1.00000
+    28 = 1.00000
+    25 = 1.00000
+    27 = 1.00000
+    29 = 1.00000
+    30 = 1.00000
+    32 = 1.00000
+    31 = 1.00000
+    33 = 1.00000
+    36 = 1.00000
+    38 = 1.00000
+    40 = 1.00000
+    37 = 1.00000
+    39 = 1.00000
+    41 = 1.00000
+    42 = 1.00000
+    44 = 1.00000
+    43 = 1.00000
+    45 = 1.00000
+    50 = 1.00000
+    52 = 1.00000
+    51 = 1.00000
+    53 = 1.00000
+    60 = 1.00000
+    64 = 1.00000
+    61 = 1.00000
+    65 = 1.00000
+    72 = 1.00000
+    74 = 1.00000
+    76 = 1.00000
+    73 = 1.00000
+    75 = 1.00000
+    77 = 1.00000
+    78 = 1.00000
+    82 = 1.00000
+    79 = 1.00000
+    83 = 1.00000
+    86 = 1.00000
+    88 = 1.00000
+    87 = 1.00000
+    89 = 1.00000
+    100 = 1.00000
+    104 = 1.00000
+    101 = 1.00000
+    105 = 1.00000
+    102 = 1.00000
+    106 = 1.00000
+    103 = 1.00000
+    107 = 1.00000
+    120 = 1.00000
+    128 = 1.00000
+    121 = 1.00000
+    129 = 1.00000
+    122 = 1.00000
+    130 = 1.00000
+    123 = 1.00000
+    131 = 1.00000
+    144 = 1.00000
+    148 = 1.00000
+    145 = 1.00000
+    149 = 1.00000
+    146 = 1.00000
+    150 = 1.00000
+    147 = 1.00000
+    151 = 1.00000
+    192 = 1.00000
+    193 = 1.00000
+    194 = 1.00000
+    195 = 1.00000
+    196 = 1.00000
+    198 = 1.00000
+    200 = 1.00000
+    204 = 1.00000
+    206 = 1.00000
+    205 = 1.00000
+    207 = 1.00000
+    210 = 1.00000
+    212 = 1.00000
+    214 = 1.00000
+    211 = 1.00000
+    213 = 1.00000
+    215 = 1.00000
+    216 = 1.00000
+    218 = 1.00000
+    217 = 1.00000
+    219 = 1.00000
+    228 = 1.00000
+    232 = 1.00000
+    229 = 1.00000
+    233 = 1.00000
+    240 = 1.00000
+    244 = 1.00000
+    241 = 1.00000
+    245 = 1.00000
+    264 = 1.00000
+    272 = 1.00000
+    265 = 1.00000
+    273 = 1.00000
+    266 = 1.00000
+    274 = 1.00000
+    267 = 1.00000
+    275 = 1.00000
+    288 = 1.00000
+    292 = 1.00000
+    289 = 1.00000
+    293 = 1.00000
+    290 = 1.00000
+    294 = 1.00000
+    291 = 1.00000
+    295 = 1.00000
+    336 = 1.00000
+    337 = 1.00000
+    338 = 1.00000
+    339 = 1.00000
+    340 = 1.00000
+    343 = 1.00000
+    344 = 1.00000
+    348 = 1.00000
+    350 = 1.00000
+    352 = 1.00000
+    349 = 1.00000
+    351 = 1.00000
+    353 = 1.00000
+    354 = 1.00000
+    356 = 1.00000
+    355 = 1.00000
+    357 = 1.00000
+    360 = 1.00000
+    362 = 1.00000
+    361 = 1.00000
+    363 = 1.00000
+    368 = 1.00000
+    370 = 1.00000
+    369 = 1.00000
+    371 = 1.00000
+    386 = 1.00000
+    388 = 1.00000
+    387 = 1.00000
+    389 = 1.00000
+    400 = 1.00000
+    404 = 1.00000
+    401 = 1.00000
+    405 = 1.00000
+    402 = 1.00000
+    406 = 1.00000
+    403 = 1.00000
+    407 = 1.00000
+    432 = 1.00000
+    436 = 1.00000
+    433 = 1.00000
+    437 = 1.00000
+    434 = 1.00000
+    438 = 1.00000
+    435 = 1.00000
+    439 = 1.00000
+    480 = 1.00000
+    481 = 1.00000
+    486 = 1.00000
+    488 = 1.00000
+    487 = 1.00000
+    489 = 1.00000
+    492 = 1.00000
+    494 = 1.00000
+    493 = 1.00000
+    495 = 1.00000
+    540 = 1.00000
+    544 = 1.00000
+    541 = 1.00000
+    545 = 1.00000
+    542 = 1.00000
+    546 = 1.00000
+    543 = 1.00000
+    547 = 1.00000
+    588 = 1.00000
+    589 = 1.00000
+    590 = 1.00000
+    591 = 1.00000
+    593 = 1.00000
+    595 = 1.00000
+    596 = 1.00000
+    602 = 1.00000
+    604 = 1.00000
+    603 = 1.00000
+    605 = 1.00000
+    612 = 1.00000
+    616 = 1.00000
+    613 = 1.00000
+    617 = 1.00000
+    624 = 1.00000
+    626 = 1.00000
+    628 = 1.00000
+    625 = 1.00000
+    627 = 1.00000
+    629 = 1.00000
+    630 = 1.00000
+    634 = 1.00000
+    631 = 1.00000
+    635 = 1.00000
+    638 = 1.00000
+    640 = 1.00000
+    639 = 1.00000
+    641 = 1.00000
+    652 = 1.00000
+    656 = 1.00000
+    653 = 1.00000
+    657 = 1.00000
+    654 = 1.00000
+    658 = 1.00000
+    655 = 1.00000
+    659 = 1.00000
+    672 = 1.00000
+    680 = 1.00000
+    673 = 1.00000
+    681 = 1.00000
+    674 = 1.00000
+    682 = 1.00000
+    675 = 1.00000
+    683 = 1.00000
+    732 = 1.00000
+    734 = 1.00000
+    744 = 1.00000
+    748 = 1.00000
+    745 = 1.00000
+    749 = 1.00000
+    756 = 1.00000
+    760 = 1.00000
+    757 = 1.00000
+    761 = 1.00000
+    780 = 1.00000
+    788 = 1.00000
+    781 = 1.00000
+    789 = 1.00000
+    782 = 1.00000
+    790 = 1.00000
+    783 = 1.00000
+    791 = 1.00000
+    841 = 1.00000
+    842 = 1.00000
+    848 = 1.00000
+    850 = 1.00000
+    849 = 1.00000
+    851 = 1.00000
+    866 = 1.00000
+    868 = 1.00000
+    867 = 1.00000
+    869 = 1.00000
+    880 = 1.00000
+    884 = 1.00000
+    881 = 1.00000
+    885 = 1.00000
+    882 = 1.00000
+    886 = 1.00000
+    883 = 1.00000
+    887 = 1.00000
+    1029 = 1.00000
+    1030 = 1.00000
+    1031 = 1.00000
+    1032 = 1.00000
+    1033 = 1.00000
+    1035 = 1.00000
+    1037 = 1.00000
+    1041 = 1.00000
+    1043 = 1.00000
+    1042 = 1.00000
+    1044 = 1.00000
+    1047 = 1.00000
+    1049 = 1.00000
+    1051 = 1.00000
+    1048 = 1.00000
+    1050 = 1.00000
+    1052 = 1.00000
+    1053 = 1.00000
+    1055 = 1.00000
+    1054 = 1.00000
+    1056 = 1.00000
+    1065 = 1.00000
+    1069 = 1.00000
+    1066 = 1.00000
+    1070 = 1.00000
+    1077 = 1.00000
+    1081 = 1.00000
+    1078 = 1.00000
+    1082 = 1.00000
+    1101 = 1.00000
+    1109 = 1.00000
+    1102 = 1.00000
+    1110 = 1.00000
+    1103 = 1.00000
+    1111 = 1.00000
+    1104 = 1.00000
+    1112 = 1.00000
+    1125 = 1.00000
+    1129 = 1.00000
+    1126 = 1.00000
+    1130 = 1.00000
+    1127 = 1.00000
+    1131 = 1.00000
+    1128 = 1.00000
+    1132 = 1.00000
+    1173 = 1.00000
+    1174 = 1.00000
+    1175 = 1.00000
+    1176 = 1.00000
+    1177 = 1.00000
+    1178 = 1.00000
+    1179 = 1.00000
+    1180 = 1.00000
+    1181 = 1.00000
+    1183 = 1.00000
+    1184 = 1.00000
+    1185 = 1.00000
+    1187 = 1.00000
+    1189 = 1.00000
+    1186 = 1.00000
+    1188 = 1.00000
+    1190 = 1.00000
+    1191 = 1.00000
+    1193 = 1.00000
+    1195 = 1.00000
+    1192 = 1.00000
+    1194 = 1.00000
+    1196 = 1.00000
+    1197 = 1.00000
+    1199 = 1.00000
+    1198 = 1.00000
+    1200 = 1.00000
+    1205 = 1.00000
+    1207 = 1.00000
+    1206 = 1.00000
+    1208 = 1.00000
+    1209 = 1.00000
+    1213 = 1.00000
+    1210 = 1.00000
+    1214 = 1.00000
+    1221 = 1.00000
+    1223 = 1.00000
+    1225 = 1.00000
+    1222 = 1.00000
+    1224 = 1.00000
+    1226 = 1.00000
+    1229 = 1.00000
+    1231 = 1.00000
+    1230 = 1.00000
+    1232 = 1.00000
+    1237 = 1.00000
+    1241 = 1.00000
+    1238 = 1.00000
+    1242 = 1.00000
+    1239 = 1.00000
+    1243 = 1.00000
+    1240 = 1.00000
+    1244 = 1.00000
+    1245 = 1.00000
+    1253 = 1.00000
+    1246 = 1.00000
+    1254 = 1.00000
+    1247 = 1.00000
+    1255 = 1.00000
+    1248 = 1.00000
+    1256 = 1.00000
+    1269 = 1.00000
+    1273 = 1.00000
+    1270 = 1.00000
+    1274 = 1.00000
+    1271 = 1.00000
+    1275 = 1.00000
+    1272 = 1.00000
+    1276 = 1.00000
+    1317 = 1.00000
+    1318 = 1.00000
+    1323 = 1.00000
+    1325 = 1.00000
+    1324 = 1.00000
+    1326 = 1.00000
+    1329 = 1.00000
+    1331 = 1.00000
+    1330 = 1.00000
+    1332 = 1.00000
+    1377 = 1.00000
+    1381 = 1.00000
+    1378 = 1.00000
+    1382 = 1.00000
+    1379 = 1.00000
+    1383 = 1.00000
+    1380 = 1.00000
+    1384 = 1.00000
+    1425 = 1.00000
+    1426 = 1.00000
+    1427 = 1.00000
+    1429 = 1.00000
+    1430 = 1.00000
+    1431 = 1.00000
+    1433 = 1.00000
+    1435 = 1.00000
+    1432 = 1.00000
+    1434 = 1.00000
+    1436 = 1.00000
+    1437 = 1.00000
+    1439 = 1.00000
+    1438 = 1.00000
+    1440 = 1.00000
+    1445 = 1.00000
+    1447 = 1.00000
+    1446 = 1.00000
+    1448 = 1.00000
+    1457 = 1.00000
+    1459 = 1.00000
+    1458 = 1.00000
+    1460 = 1.00000
+    1465 = 1.00000
+    1469 = 1.00000
+    1466 = 1.00000
+    1470 = 1.00000
+    1467 = 1.00000
+    1471 = 1.00000
+    1468 = 1.00000
+    1472 = 1.00000
+    1485 = 1.00000
+    1489 = 1.00000
+    1486 = 1.00000
+    1490 = 1.00000
+    1487 = 1.00000
+    1491 = 1.00000
+    1488 = 1.00000
+    1492 = 1.00000
+    1533 = 1.00000
+    1535 = 1.00000
+    1545 = 1.00000
+    1549 = 1.00000
+    1546 = 1.00000
+    1550 = 1.00000
+    1557 = 1.00000
+    1561 = 1.00000
+    1558 = 1.00000
+    1562 = 1.00000
+    1581 = 1.00000
+    1589 = 1.00000
+    1582 = 1.00000
+    1590 = 1.00000
+    1583 = 1.00000
+    1591 = 1.00000
+    1584 = 1.00000
+    1592 = 1.00000
+    1641 = 1.00000
+    1642 = 1.00000
+    1643 = 1.00000
+    1645 = 1.00000
+    1646 = 1.00000
+    1649 = 1.00000
+    1651 = 1.00000
+    1650 = 1.00000
+    1652 = 1.00000
+    1653 = 1.00000
+    1657 = 1.00000
+    1654 = 1.00000
+    1658 = 1.00000
+    1665 = 1.00000
+    1667 = 1.00000
+    1669 = 1.00000
+    1666 = 1.00000
+    1668 = 1.00000
+    1670 = 1.00000
+    1673 = 1.00000
+    1675 = 1.00000
+    1674 = 1.00000
+    1676 = 1.00000
+    1681 = 1.00000
+    1685 = 1.00000
+    1682 = 1.00000
+    1686 = 1.00000
+    1683 = 1.00000
+    1687 = 1.00000
+    1684 = 1.00000
+    1688 = 1.00000
+    1689 = 1.00000
+    1697 = 1.00000
+    1690 = 1.00000
+    1698 = 1.00000
+    1691 = 1.00000
+    1699 = 1.00000
+    1692 = 1.00000
+    1700 = 1.00000
+    1831 = 1.00000
+    1832 = 1.00000
+    1835 = 1.00000
+    1837 = 1.00000
+    1836 = 1.00000
+    1838 = 1.00000
+    1847 = 1.00000
+    1849 = 1.00000
+    1848 = 1.00000
+    1850 = 1.00000
+    1855 = 1.00000
+    1859 = 1.00000
+    1856 = 1.00000
+    1860 = 1.00000
+    1857 = 1.00000
+    1861 = 1.00000
+    1858 = 1.00000
+    1862 = 1.00000
+    1911 = 1.00000
+    1912 = 1.00000
+    1913 = 1.00000
+    1914 = 1.00000
+    1915 = 1.00000
+    1918 = 1.00000
+    1919 = 1.00000
+    1923 = 1.00000
+    1925 = 1.00000
+    1927 = 1.00000
+    1924 = 1.00000
+    1926 = 1.00000
+    1928 = 1.00000
+    1929 = 1.00000
+    1931 = 1.00000
+    1930 = 1.00000
+    1932 = 1.00000
+    1935 = 1.00000
+    1937 = 1.00000
+    1936 = 1.00000
+    1938 = 1.00000
+    1943 = 1.00000
+    1945 = 1.00000
+    1944 = 1.00000
+    1946 = 1.00000
+    1961 = 1.00000
+    1963 = 1.00000
+    1962 = 1.00000
+    1964 = 1.00000
+    1975 = 1.00000
+    1979 = 1.00000
+    1976 = 1.00000
+    1980 = 1.00000
+    1977 = 1.00000
+    1981 = 1.00000
+    1978 = 1.00000
+    1982 = 1.00000
+    2007 = 1.00000
+    2011 = 1.00000
+    2008 = 1.00000
+    2012 = 1.00000
+    2009 = 1.00000
+    2013 = 1.00000
+    2010 = 1.00000
+    2014 = 1.00000
+    2055 = 1.00000
+    2056 = 1.00000
+    2061 = 1.00000
+    2063 = 1.00000
+    2062 = 1.00000
+    2064 = 1.00000
+    2067 = 1.00000
+    2069 = 1.00000
+    2068 = 1.00000
+    2070 = 1.00000
+    2115 = 1.00000
+    2119 = 1.00000
+    2116 = 1.00000
+    2120 = 1.00000
+    2117 = 1.00000
+    2121 = 1.00000
+    2118 = 1.00000
+    2122 = 1.00000
+    2163 = 1.00000
+    2164 = 1.00000
+    2165 = 1.00000
+    2166 = 1.00000
+    2167 = 1.00000
+    2168 = 1.00000
+    2169 = 1.00000
+    2170 = 1.00000
+    2171 = 1.00000
+    2172 = 1.00000
+    2174 = 1.00000
+    2175 = 1.00000
+    2177 = 1.00000
+    2179 = 1.00000
+    2176 = 1.00000
+    2178 = 1.00000
+    2180 = 1.00000
+    2181 = 1.00000
+    2183 = 1.00000
+    2182 = 1.00000
+    2184 = 1.00000
+    2187 = 1.00000
+    2189 = 1.00000
+    2191 = 1.00000
+    2188 = 1.00000
+    2190 = 1.00000
+    2192 = 1.00000
+    2195 = 1.00000
+    2197 = 1.00000
+    2196 = 1.00000
+    2198 = 1.00000
+    2205 = 1.00000
+    2209 = 1.00000
+    2206 = 1.00000
+    2210 = 1.00000
+    2211 = 1.00000
+    2213 = 1.00000
+    2215 = 1.00000
+    2212 = 1.00000
+    2214 = 1.00000
+    2216 = 1.00000
+    2217 = 1.00000
+    2221 = 1.00000
+    2218 = 1.00000
+    2222 = 1.00000
+    2227 = 1.00000
+    2231 = 1.00000
+    2228 = 1.00000
+    2232 = 1.00000
+    2229 = 1.00000
+    2233 = 1.00000
+    2230 = 1.00000
+    2234 = 1.00000
+    2247 = 1.00000
+    2255 = 1.00000
+    2248 = 1.00000
+    2256 = 1.00000
+    2249 = 1.00000
+    2257 = 1.00000
+    2250 = 1.00000
+    2258 = 1.00000
+    2259 = 1.00000
+    2263 = 1.00000
+    2260 = 1.00000
+    2264 = 1.00000
+    2261 = 1.00000
+    2265 = 1.00000
+    2262 = 1.00000
+    2266 = 1.00000
+    2307 = 1.00000
+    2308 = 1.00000
+    2309 = 1.00000
+    2310 = 1.00000
+    2312 = 1.00000
+    2313 = 1.00000
+    2315 = 1.00000
+    2314 = 1.00000
+    2316 = 1.00000
+    2319 = 1.00000
+    2321 = 1.00000
+    2323 = 1.00000
+    2320 = 1.00000
+    2322 = 1.00000
+    2324 = 1.00000
+    2331 = 1.00000
+    2335 = 1.00000
+    2332 = 1.00000
+    2336 = 1.00000
+    2337 = 1.00000
+    2341 = 1.00000
+    2338 = 1.00000
+    2342 = 1.00000
+    2355 = 1.00000
+    2363 = 1.00000
+    2356 = 1.00000
+    2364 = 1.00000
+    2357 = 1.00000
+    2365 = 1.00000
+    2358 = 1.00000
+    2366 = 1.00000
+    2367 = 1.00000
+    2371 = 1.00000
+    2368 = 1.00000
+    2372 = 1.00000
+    2369 = 1.00000
+    2373 = 1.00000
+    2370 = 1.00000
+    2374 = 1.00000
+    2416 = 1.00000
+    2417 = 1.00000
+    2423 = 1.00000
+    2425 = 1.00000
+    2424 = 1.00000
+    2426 = 1.00000
+    2441 = 1.00000
+    2443 = 1.00000
+    2442 = 1.00000
+    2444 = 1.00000
+    2455 = 1.00000
+    2459 = 1.00000
+    2456 = 1.00000
+    2460 = 1.00000
+    2457 = 1.00000
+    2461 = 1.00000
+    2458 = 1.00000
+    2462 = 1.00000
+    2604 = 1.00000
+    2605 = 1.00000
+    2606 = 1.00000
+    2607 = 1.00000
+    2609 = 1.00000
+    2612 = 1.00000
+    2614 = 1.00000
+    2613 = 1.00000
+    2615 = 1.00000
+    2622 = 1.00000
+    2626 = 1.00000
+    2623 = 1.00000
+    2627 = 1.00000
+    2628 = 1.00000
+    2630 = 1.00000
+    2632 = 1.00000
+    2629 = 1.00000
+    2631 = 1.00000
+    2633 = 1.00000
+    2634 = 1.00000
+    2638 = 1.00000
+    2635 = 1.00000
+    2639 = 1.00000
+    2644 = 1.00000
+    2648 = 1.00000
+    2645 = 1.00000
+    2649 = 1.00000
+    2646 = 1.00000
+    2650 = 1.00000
+    2647 = 1.00000
+    2651 = 1.00000
+    2664 = 1.00000
+    2672 = 1.00000
+    2665 = 1.00000
+    2673 = 1.00000
+    2666 = 1.00000
+    2674 = 1.00000
+    2667 = 1.00000
+    2675 = 1.00000
+    2712 = 1.00000
+    2714 = 1.00000
+    2721 = 1.00000
+    2725 = 1.00000
+    2722 = 1.00000
+    2726 = 1.00000
+    2727 = 1.00000
+    2731 = 1.00000
+    2728 = 1.00000
+    2732 = 1.00000
+    2745 = 1.00000
+    2753 = 1.00000
+    2746 = 1.00000
+    2754 = 1.00000
+    2747 = 1.00000
+    2755 = 1.00000
+    2748 = 1.00000
+    2756 = 1.00000
+    2793 = 1.00000
+    2794 = 1.00000
+    2799 = 1.00000
+    2801 = 1.00000
+    2800 = 1.00000
+    2802 = 1.00000
+    2805 = 1.00000
+    2807 = 1.00000
+    2806 = 1.00000
+    2808 = 1.00000
+    2853 = 1.00000
+    2857 = 1.00000
+    2854 = 1.00000
+    2858 = 1.00000
+    2855 = 1.00000
+    2859 = 1.00000
+    2856 = 1.00000
+    2860 = 1.00000
+    2901 = 1.00000
+    2902 = 1.00000
+    2903 = 1.00000
+    2905 = 1.00000
+    2906 = 1.00000
+    2907 = 1.00000
+    2909 = 1.00000
+    2911 = 1.00000
+    2908 = 1.00000
+    2910 = 1.00000
+    2912 = 1.00000
+    2913 = 1.00000
+    2915 = 1.00000
+    2914 = 1.00000
+    2916 = 1.00000
+    2921 = 1.00000
+    2923 = 1.00000
+    2922 = 1.00000
+    2924 = 1.00000
+    2933 = 1.00000
+    2935 = 1.00000
+    2934 = 1.00000
+    2936 = 1.00000
+    2941 = 1.00000
+    2945 = 1.00000
+    2942 = 1.00000
+    2946 = 1.00000
+    2943 = 1.00000
+    2947 = 1.00000
+    2944 = 1.00000
+    2948 = 1.00000
+    2961 = 1.00000
+    2965 = 1.00000
+    2962 = 1.00000
+    2966 = 1.00000
+    2963 = 1.00000
+    2967 = 1.00000
+    2964 = 1.00000
+    2968 = 1.00000
+    3009 = 1.00000
+    3010 = 1.00000
+    3011 = 1.00000
+    3012 = 1.00000
+    3014 = 1.00000
+    3015 = 1.00000
+    3017 = 1.00000
+    3016 = 1.00000
+    3018 = 1.00000
+    3021 = 1.00000
+    3023 = 1.00000
+    3025 = 1.00000
+    3022 = 1.00000
+    3024 = 1.00000
+    3026 = 1.00000
+    3033 = 1.00000
+    3037 = 1.00000
+    3034 = 1.00000
+    3038 = 1.00000
+    3039 = 1.00000
+    3043 = 1.00000
+    3040 = 1.00000
+    3044 = 1.00000
+    3057 = 1.00000
+    3065 = 1.00000
+    3058 = 1.00000
+    3066 = 1.00000
+    3059 = 1.00000
+    3067 = 1.00000
+    3060 = 1.00000
+    3068 = 1.00000
+    3069 = 1.00000
+    3073 = 1.00000
+    3070 = 1.00000
+    3074 = 1.00000
+    3071 = 1.00000
+    3075 = 1.00000
+    3072 = 1.00000
+    3076 = 1.00000
+    3117 = 1.00000
+    3118 = 1.00000
+    3119 = 1.00000
+    3120 = 1.00000
+    3121 = 1.00000
+    3122 = 1.00000
+    3123 = 1.00000
+    3125 = 1.00000
+    3127 = 1.00000
+    3124 = 1.00000
+    3126 = 1.00000
+    3128 = 1.00000
+    3129 = 1.00000
+    3131 = 1.00000
+    3133 = 1.00000
+    3130 = 1.00000
+    3132 = 1.00000
+    3134 = 1.00000
+    3137 = 1.00000
+    3139 = 1.00000
+    3138 = 1.00000
+    3140 = 1.00000
+    3141 = 1.00000
+    3145 = 1.00000
+    3142 = 1.00000
+    3146 = 1.00000
+    3147 = 1.00000
+    3149 = 1.00000
+    3151 = 1.00000
+    3148 = 1.00000
+    3150 = 1.00000
+    3152 = 1.00000
+    3157 = 1.00000
+    3161 = 1.00000
+    3158 = 1.00000
+    3162 = 1.00000
+    3159 = 1.00000
+    3163 = 1.00000
+    3160 = 1.00000
+    3164 = 1.00000
+    3165 = 1.00000
+    3173 = 1.00000
+    3166 = 1.00000
+    3174 = 1.00000
+    3167 = 1.00000
+    3175 = 1.00000
+    3168 = 1.00000
+    3176 = 1.00000
+    3177 = 1.00000
+    3181 = 1.00000
+    3178 = 1.00000
+    3182 = 1.00000
+    3179 = 1.00000
+    3183 = 1.00000
+    3180 = 1.00000
+    3184 = 1.00000
+    3307 = 1.00000
+    3308 = 1.00000
+    3311 = 1.00000
+    3313 = 1.00000
+    3312 = 1.00000
+    3314 = 1.00000
+    3323 = 1.00000
+    3325 = 1.00000
+    3324 = 1.00000
+    3326 = 1.00000
+    3331 = 1.00000
+    3335 = 1.00000
+    3332 = 1.00000
+    3336 = 1.00000
+    3333 = 1.00000
+    3337 = 1.00000
+    3334 = 1.00000
+    3338 = 1.00000
+    3387 = 1.00000
+    3389 = 1.00000
+    3396 = 1.00000
+    3400 = 1.00000
+    3397 = 1.00000
+    3401 = 1.00000
+    3402 = 1.00000
+    3406 = 1.00000
+    3403 = 1.00000
+    3407 = 1.00000
+    3420 = 1.00000
+    3428 = 1.00000
+    3421 = 1.00000
+    3429 = 1.00000
+    3422 = 1.00000
+    3430 = 1.00000
+    3423 = 1.00000
+    3431 = 1.00000
+    3468 = 1.00000
+    3469 = 1.00000
+    3470 = 1.00000
+    3473 = 1.00000
+    3475 = 1.00000
+    3474 = 1.00000
+    3476 = 1.00000
+    3477 = 1.00000
+    3481 = 1.00000
+    3478 = 1.00000
+    3482 = 1.00000
+    3483 = 1.00000
+    3485 = 1.00000
+    3487 = 1.00000
+    3484 = 1.00000
+    3486 = 1.00000
+    3488 = 1.00000
+    3493 = 1.00000
+    3497 = 1.00000
+    3494 = 1.00000
+    3498 = 1.00000
+    3495 = 1.00000
+    3499 = 1.00000
+    3496 = 1.00000
+    3500 = 1.00000
+    3501 = 1.00000
+    3509 = 1.00000
+    3502 = 1.00000
+    3510 = 1.00000
+    3503 = 1.00000
+    3511 = 1.00000
+    3504 = 1.00000
+    3512 = 1.00000
+    3549 = 1.00000
+    3550 = 1.00000
+    3551 = 1.00000
+    3552 = 1.00000
+    3554 = 1.00000
+    3556 = 1.00000
+    3557 = 1.00000
+    3563 = 1.00000
+    3565 = 1.00000
+    3564 = 1.00000
+    3566 = 1.00000
+    3573 = 1.00000
+    3577 = 1.00000
+    3574 = 1.00000
+    3578 = 1.00000
+    3585 = 1.00000
+    3587 = 1.00000
+    3589 = 1.00000
+    3586 = 1.00000
+    3588 = 1.00000
+    3590 = 1.00000
+    3591 = 1.00000
+    3595 = 1.00000
+    3592 = 1.00000
+    3596 = 1.00000
+    3599 = 1.00000
+    3601 = 1.00000
+    3600 = 1.00000
+    3602 = 1.00000
+    3613 = 1.00000
+    3617 = 1.00000
+    3614 = 1.00000
+    3618 = 1.00000
+    3615 = 1.00000
+    3619 = 1.00000
+    3616 = 1.00000
+    3620 = 1.00000
+    3633 = 1.00000
+    3641 = 1.00000
+    3634 = 1.00000
+    3642 = 1.00000
+    3635 = 1.00000
+    3643 = 1.00000
+    3636 = 1.00000
+    3644 = 1.00000
+    3693 = 1.00000
+    3695 = 1.00000
+    3705 = 1.00000
+    3709 = 1.00000
+    3706 = 1.00000
+    3710 = 1.00000
+    3717 = 1.00000
+    3721 = 1.00000
+    3718 = 1.00000
+    3722 = 1.00000
+    3741 = 1.00000
+    3749 = 1.00000
+    3742 = 1.00000
+    3750 = 1.00000
+    3743 = 1.00000
+    3751 = 1.00000
+    3744 = 1.00000
+    3752 = 1.00000
+    3802 = 1.00000
+    3803 = 1.00000
+    3809 = 1.00000
+    3811 = 1.00000
+    3810 = 1.00000
+    3812 = 1.00000
+    3827 = 1.00000
+    3829 = 1.00000
+    3828 = 1.00000
+    3830 = 1.00000
+    3841 = 1.00000
+    3845 = 1.00000
+    3842 = 1.00000
+    3846 = 1.00000
+    3843 = 1.00000
+    3847 = 1.00000
+    3844 = 1.00000
+    3848 = 1.00000
+    3990 = 1.00000
+    3991 = 1.00000
+    3992 = 1.00000
+    3993 = 1.00000
+    3994 = 1.00000
+    3995 = 1.00000
+    3996 = 1.00000
+    3997 = 1.00000
+    3998 = 1.00000
+    3999 = 1.00000
+    4000 = 1.00000
+    4002 = 1.00000
+    4004 = 1.00000
+    4006 = 1.00000
+    4003 = 1.00000
+    4005 = 1.00000
+    4007 = 1.00000
+    4008 = 1.00000
+    4010 = 1.00000
+    4009 = 1.00000
+    4011 = 1.00000
+    4014 = 1.00000
+    4016 = 1.00000
+    4018 = 1.00000
+    4015 = 1.00000
+    4017 = 1.00000
+    4019 = 1.00000
+    4020 = 1.00000
+    4022 = 1.00000
+    4021 = 1.00000
+    4023 = 1.00000
+    4026 = 1.00000
+    4028 = 1.00000
+    4030 = 1.00000
+    4027 = 1.00000
+    4029 = 1.00000
+    4031 = 1.00000
+    4032 = 1.00000
+    4036 = 1.00000
+    4033 = 1.00000
+    4037 = 1.00000
+    4040 = 1.00000
+    4042 = 1.00000
+    4041 = 1.00000
+    4043 = 1.00000
+    4054 = 1.00000
+    4058 = 1.00000
+    4055 = 1.00000
+    4059 = 1.00000
+    4056 = 1.00000
+    4060 = 1.00000
+    4057 = 1.00000
+    4061 = 1.00000
+    4074 = 1.00000
+    4082 = 1.00000
+    4075 = 1.00000
+    4083 = 1.00000
+    4076 = 1.00000
+    4084 = 1.00000
+    4077 = 1.00000
+    4085 = 1.00000
+    4098 = 1.00000
+    4102 = 1.00000
+    4099 = 1.00000
+    4103 = 1.00000
+    4100 = 1.00000
+    4104 = 1.00000
+    4101 = 1.00000
+    4105 = 1.00000
+    4134 = 1.00000
+    4135 = 1.00000
+    4136 = 1.00000
+    4137 = 1.00000
+    4138 = 1.00000
+    4140 = 1.00000
+    4142 = 1.00000
+    4141 = 1.00000
+    4143 = 1.00000
+    4146 = 1.00000
+    4148 = 1.00000
+    4150 = 1.00000
+    4147 = 1.00000
+    4149 = 1.00000
+    4151 = 1.00000
+    4152 = 1.00000
+    4154 = 1.00000
+    4153 = 1.00000
+    4155 = 1.00000
+    4158 = 1.00000
+    4162 = 1.00000
+    4159 = 1.00000
+    4163 = 1.00000
+    4182 = 1.00000
+    4190 = 1.00000
+    4183 = 1.00000
+    4191 = 1.00000
+    4184 = 1.00000
+    4192 = 1.00000
+    4185 = 1.00000
+    4193 = 1.00000
+    4206 = 1.00000
+    4210 = 1.00000
+    4207 = 1.00000
+    4211 = 1.00000
+    4208 = 1.00000
+    4212 = 1.00000
+    4209 = 1.00000
+    4213 = 1.00000
+    4242 = 1.00000
+    4243 = 1.00000
+    4244 = 1.00000
+    4245 = 1.00000
+    4246 = 1.00000
+    4248 = 1.00000
+    4250 = 1.00000
+    4252 = 1.00000
+    4249 = 1.00000
+    4251 = 1.00000
+    4253 = 1.00000
+    4254 = 1.00000
+    4256 = 1.00000
+    4255 = 1.00000
+    4257 = 1.00000
+    4260 = 1.00000
+    4262 = 1.00000
+    4261 = 1.00000
+    4263 = 1.00000
+    4268 = 1.00000
+    4270 = 1.00000
+    4269 = 1.00000
+    4271 = 1.00000
+    4282 = 1.00000
+    4286 = 1.00000
+    4283 = 1.00000
+    4287 = 1.00000
+    4284 = 1.00000
+    4288 = 1.00000
+    4285 = 1.00000
+    4289 = 1.00000
+    4314 = 1.00000
+    4318 = 1.00000
+    4315 = 1.00000
+    4319 = 1.00000
+    4316 = 1.00000
+    4320 = 1.00000
+    4317 = 1.00000
+    4321 = 1.00000
+    4350 = 1.00000
+    4351 = 1.00000
+    4353 = 1.00000
+    4355 = 1.00000
+    4354 = 1.00000
+    4356 = 1.00000
+    4359 = 1.00000
+    4361 = 1.00000
+    4360 = 1.00000
+    4362 = 1.00000
+    4395 = 1.00000
+    4399 = 1.00000
+    4396 = 1.00000
+    4400 = 1.00000
+    4397 = 1.00000
+    4401 = 1.00000
+    4398 = 1.00000
+    4402 = 1.00000
+    4431 = 1.00000
+    4433 = 1.00000
+    4443 = 1.00000
+    4447 = 1.00000
+    4444 = 1.00000
+    4448 = 1.00000
+    4455 = 1.00000
+    4459 = 1.00000
+    4456 = 1.00000
+    4460 = 1.00000
+    4479 = 1.00000
+    4487 = 1.00000
+    4480 = 1.00000
+    4488 = 1.00000
+    4481 = 1.00000
+    4489 = 1.00000
+    4482 = 1.00000
+    4490 = 1.00000
+    4539 = 1.00000
+    4540 = 1.00000
+    4541 = 1.00000
+    4543 = 1.00000
+    4544 = 1.00000
+    4547 = 1.00000
+    4549 = 1.00000
+    4548 = 1.00000
+    4550 = 1.00000
+    4551 = 1.00000
+    4555 = 1.00000
+    4552 = 1.00000
+    4556 = 1.00000
+    4563 = 1.00000
+    4565 = 1.00000
+    4567 = 1.00000
+    4564 = 1.00000
+    4566 = 1.00000
+    4568 = 1.00000
+    4571 = 1.00000
+    4573 = 1.00000
+    4572 = 1.00000
+    4574 = 1.00000
+    4579 = 1.00000
+    4583 = 1.00000
+    4580 = 1.00000
+    4584 = 1.00000
+    4581 = 1.00000
+    4585 = 1.00000
+    4582 = 1.00000
+    4586 = 1.00000
+    4587 = 1.00000
+    4595 = 1.00000
+    4588 = 1.00000
+    4596 = 1.00000
+    4589 = 1.00000
+    4597 = 1.00000
+    4590 = 1.00000
+    4598 = 1.00000
+    4729 = 1.00000
+    4730 = 1.00000
+    4733 = 1.00000
+    4735 = 1.00000
+    4734 = 1.00000
+    4736 = 1.00000
+    4745 = 1.00000
+    4747 = 1.00000
+    4746 = 1.00000
+    4748 = 1.00000
+    4753 = 1.00000
+    4757 = 1.00000
+    4754 = 1.00000
+    4758 = 1.00000
+    4755 = 1.00000
+    4759 = 1.00000
+    4756 = 1.00000
+    4760 = 1.00000
+    4809 = 1.00000
+    4810 = 1.00000
+    4811 = 1.00000
+    4812 = 1.00000
+    4813 = 1.00000
+    4815 = 1.00000
+    4817 = 1.00000
+    4816 = 1.00000
+    4818 = 1.00000
+    4821 = 1.00000
+    4823 = 1.00000
+    4825 = 1.00000
+    4822 = 1.00000
+    4824 = 1.00000
+    4826 = 1.00000
+    4827 = 1.00000
+    4829 = 1.00000
+    4828 = 1.00000
+    4830 = 1.00000
+    4833 = 1.00000
+    4837 = 1.00000
+    4834 = 1.00000
+    4838 = 1.00000
+    4857 = 1.00000
+    4865 = 1.00000
+    4858 = 1.00000
+    4866 = 1.00000
+    4859 = 1.00000
+    4867 = 1.00000
+    4860 = 1.00000
+    4868 = 1.00000
+    4881 = 1.00000
+    4885 = 1.00000
+    4882 = 1.00000
+    4886 = 1.00000
+    4883 = 1.00000
+    4887 = 1.00000
+    4884 = 1.00000
+    4888 = 1.00000
+    4917 = 1.00000
+    4918 = 1.00000
+    4919 = 1.00000
+    4920 = 1.00000
+    4921 = 1.00000
+    4922 = 1.00000
+    4923 = 1.00000
+    4925 = 1.00000
+    4927 = 1.00000
+    4924 = 1.00000
+    4926 = 1.00000
+    4928 = 1.00000
+    4929 = 1.00000
+    4931 = 1.00000
+    4933 = 1.00000
+    4930 = 1.00000
+    4932 = 1.00000
+    4934 = 1.00000
+    4935 = 1.00000
+    4937 = 1.00000
+    4936 = 1.00000
+    4938 = 1.00000
+    4941 = 1.00000
+    4943 = 1.00000
+    4945 = 1.00000
+    4942 = 1.00000
+    4944 = 1.00000
+    4946 = 1.00000
+    4949 = 1.00000
+    4951 = 1.00000
+    4950 = 1.00000
+    4952 = 1.00000
+    4957 = 1.00000
+    4961 = 1.00000
+    4958 = 1.00000
+    4962 = 1.00000
+    4959 = 1.00000
+    4963 = 1.00000
+    4960 = 1.00000
+    4964 = 1.00000
+    4965 = 1.00000
+    4973 = 1.00000
+    4966 = 1.00000
+    4974 = 1.00000
+    4967 = 1.00000
+    4975 = 1.00000
+    4968 = 1.00000
+    4976 = 1.00000
+    4989 = 1.00000
+    4993 = 1.00000
+    4990 = 1.00000
+    4994 = 1.00000
+    4991 = 1.00000
+    4995 = 1.00000
+    4992 = 1.00000
+    4996 = 1.00000
+    5025 = 1.00000
+    5026 = 1.00000
+    5028 = 1.00000
+    5030 = 1.00000
+    5029 = 1.00000
+    5031 = 1.00000
+    5034 = 1.00000
+    5036 = 1.00000
+    5035 = 1.00000
+    5037 = 1.00000
+    5070 = 1.00000
+    5074 = 1.00000
+    5071 = 1.00000
+    5075 = 1.00000
+    5072 = 1.00000
+    5076 = 1.00000
+    5073 = 1.00000
+    5077 = 1.00000
+    5106 = 1.00000
+    5107 = 1.00000
+    5108 = 1.00000
+    5109 = 1.00000
+    5111 = 1.00000
+    5113 = 1.00000
+    5110 = 1.00000
+    5112 = 1.00000
+    5114 = 1.00000
+    5115 = 1.00000
+    5117 = 1.00000
+    5116 = 1.00000
+    5118 = 1.00000
+    5123 = 1.00000
+    5125 = 1.00000
+    5124 = 1.00000
+    5126 = 1.00000
+    5131 = 1.00000
+    5135 = 1.00000
+    5132 = 1.00000
+    5136 = 1.00000
+    5133 = 1.00000
+    5137 = 1.00000
+    5134 = 1.00000
+    5138 = 1.00000
+    5151 = 1.00000
+    5155 = 1.00000
+    5152 = 1.00000
+    5156 = 1.00000
+    5153 = 1.00000
+    5157 = 1.00000
+    5154 = 1.00000
+    5158 = 1.00000
+    5188 = 1.00000
+    5189 = 1.00000
+    5195 = 1.00000
+    5197 = 1.00000
+    5196 = 1.00000
+    5198 = 1.00000
+    5213 = 1.00000
+    5215 = 1.00000
+    5214 = 1.00000
+    5216 = 1.00000
+    5227 = 1.00000
+    5231 = 1.00000
+    5228 = 1.00000
+    5232 = 1.00000
+    5229 = 1.00000
+    5233 = 1.00000
+    5230 = 1.00000
+    5234 = 1.00000
+    5376 = 1.00000
+    5377 = 1.00000
+    5378 = 1.00000
+    5379 = 1.00000
+    5381 = 1.00000
+    5384 = 1.00000
+    5386 = 1.00000
+    5385 = 1.00000
+    5387 = 1.00000
+    5394 = 1.00000
+    5398 = 1.00000
+    5395 = 1.00000
+    5399 = 1.00000
+    5400 = 1.00000
+    5402 = 1.00000
+    5404 = 1.00000
+    5401 = 1.00000
+    5403 = 1.00000
+    5405 = 1.00000
+    5406 = 1.00000
+    5410 = 1.00000
+    5407 = 1.00000
+    5411 = 1.00000
+    5416 = 1.00000
+    5420 = 1.00000
+    5417 = 1.00000
+    5421 = 1.00000
+    5418 = 1.00000
+    5422 = 1.00000
+    5419 = 1.00000
+    5423 = 1.00000
+    5436 = 1.00000
+    5444 = 1.00000
+    5437 = 1.00000
+    5445 = 1.00000
+    5438 = 1.00000
+    5446 = 1.00000
+    5439 = 1.00000
+    5447 = 1.00000
+    5484 = 1.00000
+    5486 = 1.00000
+    5493 = 1.00000
+    5497 = 1.00000
+    5494 = 1.00000
+    5498 = 1.00000
+    5499 = 1.00000
+    5503 = 1.00000
+    5500 = 1.00000
+    5504 = 1.00000
+    5517 = 1.00000
+    5525 = 1.00000
+    5518 = 1.00000
+    5526 = 1.00000
+    5519 = 1.00000
+    5527 = 1.00000
+    5520 = 1.00000
+    5528 = 1.00000
+    5565 = 1.00000
+    5566 = 1.00000
+    5567 = 1.00000
+    5568 = 1.00000
+    5569 = 1.00000
+    5571 = 1.00000
+    5573 = 1.00000
+    5575 = 1.00000
+    5572 = 1.00000
+    5574 = 1.00000
+    5576 = 1.00000
+    5577 = 1.00000
+    5579 = 1.00000
+    5578 = 1.00000
+    5580 = 1.00000
+    5583 = 1.00000
+    5585 = 1.00000
+    5584 = 1.00000
+    5586 = 1.00000
+    5591 = 1.00000
+    5593 = 1.00000
+    5592 = 1.00000
+    5594 = 1.00000
+    5605 = 1.00000
+    5609 = 1.00000
+    5606 = 1.00000
+    5610 = 1.00000
+    5607 = 1.00000
+    5611 = 1.00000
+    5608 = 1.00000
+    5612 = 1.00000
+    5637 = 1.00000
+    5641 = 1.00000
+    5638 = 1.00000
+    5642 = 1.00000
+    5639 = 1.00000
+    5643 = 1.00000
+    5640 = 1.00000
+    5644 = 1.00000
+    5673 = 1.00000
+    5674 = 1.00000
+    5676 = 1.00000
+    5678 = 1.00000
+    5677 = 1.00000
+    5679 = 1.00000
+    5682 = 1.00000
+    5684 = 1.00000
+    5683 = 1.00000
+    5685 = 1.00000
+    5718 = 1.00000
+    5722 = 1.00000
+    5719 = 1.00000
+    5723 = 1.00000
+    5720 = 1.00000
+    5724 = 1.00000
+    5721 = 1.00000
+    5725 = 1.00000
+    5754 = 1.00000
+    5755 = 1.00000
+    5756 = 1.00000
+    5757 = 1.00000
+    5758 = 1.00000
+    5759 = 1.00000
+    5760 = 1.00000
+    5762 = 1.00000
+    5764 = 1.00000
+    5761 = 1.00000
+    5763 = 1.00000
+    5765 = 1.00000
+    5766 = 1.00000
+    5768 = 1.00000
+    5767 = 1.00000
+    5769 = 1.00000
+    5772 = 1.00000
+    5774 = 1.00000
+    5776 = 1.00000
+    5773 = 1.00000
+    5775 = 1.00000
+    5777 = 1.00000
+    5778 = 1.00000
+    5780 = 1.00000
+    5782 = 1.00000
+    5779 = 1.00000
+    5781 = 1.00000
+    5783 = 1.00000
+    5784 = 1.00000
+    5788 = 1.00000
+    5785 = 1.00000
+    5789 = 1.00000
+    5794 = 1.00000
+    5798 = 1.00000
+    5795 = 1.00000
+    5799 = 1.00000
+    5796 = 1.00000
+    5800 = 1.00000
+    5797 = 1.00000
+    5801 = 1.00000
+    5814 = 1.00000
+    5822 = 1.00000
+    5815 = 1.00000
+    5823 = 1.00000
+    5816 = 1.00000
+    5824 = 1.00000
+    5817 = 1.00000
+    5825 = 1.00000
+    5826 = 1.00000
+    5830 = 1.00000
+    5827 = 1.00000
+    5831 = 1.00000
+    5828 = 1.00000
+    5832 = 1.00000
+    5829 = 1.00000
+    5833 = 1.00000
+    5862 = 1.00000
+    5863 = 1.00000
+    5864 = 1.00000
+    5865 = 1.00000
+    5867 = 1.00000
+    5866 = 1.00000
+    5868 = 1.00000
+    5871 = 1.00000
+    5873 = 1.00000
+    5875 = 1.00000
+    5872 = 1.00000
+    5874 = 1.00000
+    5876 = 1.00000
+    5877 = 1.00000
+    5881 = 1.00000
+    5878 = 1.00000
+    5882 = 1.00000
+    5895 = 1.00000
+    5903 = 1.00000
+    5896 = 1.00000
+    5904 = 1.00000
+    5897 = 1.00000
+    5905 = 1.00000
+    5898 = 1.00000
+    5906 = 1.00000
+    5907 = 1.00000
+    5911 = 1.00000
+    5908 = 1.00000
+    5912 = 1.00000
+    5909 = 1.00000
+    5913 = 1.00000
+    5910 = 1.00000
+    5914 = 1.00000
+    6025 = 1.00000
+    6026 = 1.00000
+    6029 = 1.00000
+    6031 = 1.00000
+    6030 = 1.00000
+    6032 = 1.00000
+    6041 = 1.00000
+    6043 = 1.00000
+    6042 = 1.00000
+    6044 = 1.00000
+    6049 = 1.00000
+    6053 = 1.00000
+    6050 = 1.00000
+    6054 = 1.00000
+    6051 = 1.00000
+    6055 = 1.00000
+    6052 = 1.00000
+    6056 = 1.00000
+    6105 = 1.00000
+    6107 = 1.00000
+    6114 = 1.00000
+    6118 = 1.00000
+    6115 = 1.00000
+    6119 = 1.00000
+    6120 = 1.00000
+    6124 = 1.00000
+    6121 = 1.00000
+    6125 = 1.00000
+    6138 = 1.00000
+    6146 = 1.00000
+    6139 = 1.00000
+    6147 = 1.00000
+    6140 = 1.00000
+    6148 = 1.00000
+    6141 = 1.00000
+    6149 = 1.00000
+    6186 = 1.00000
+    6187 = 1.00000
+    6188 = 1.00000
+    6191 = 1.00000
+    6193 = 1.00000
+    6192 = 1.00000
+    6194 = 1.00000
+    6195 = 1.00000
+    6199 = 1.00000
+    6196 = 1.00000
+    6200 = 1.00000
+    6201 = 1.00000
+    6203 = 1.00000
+    6205 = 1.00000
+    6202 = 1.00000
+    6204 = 1.00000
+    6206 = 1.00000
+    6211 = 1.00000
+    6215 = 1.00000
+    6212 = 1.00000
+    6216 = 1.00000
+    6213 = 1.00000
+    6217 = 1.00000
+    6214 = 1.00000
+    6218 = 1.00000
+    6219 = 1.00000
+    6227 = 1.00000
+    6220 = 1.00000
+    6228 = 1.00000
+    6221 = 1.00000
+    6229 = 1.00000
+    6222 = 1.00000
+    6230 = 1.00000
+    6267 = 1.00000
+    6268 = 1.00000
+    6270 = 1.00000
+    6272 = 1.00000
+    6271 = 1.00000
+    6273 = 1.00000
+    6276 = 1.00000
+    6278 = 1.00000
+    6277 = 1.00000
+    6279 = 1.00000
+    6312 = 1.00000
+    6316 = 1.00000
+    6313 = 1.00000
+    6317 = 1.00000
+    6314 = 1.00000
+    6318 = 1.00000
+    6315 = 1.00000
+    6319 = 1.00000
+    6348 = 1.00000
+    6349 = 1.00000
+    6350 = 1.00000
+    6351 = 1.00000
+    6353 = 1.00000
+    6355 = 1.00000
+    6352 = 1.00000
+    6354 = 1.00000
+    6356 = 1.00000
+    6357 = 1.00000
+    6359 = 1.00000
+    6358 = 1.00000
+    6360 = 1.00000
+    6365 = 1.00000
+    6367 = 1.00000
+    6366 = 1.00000
+    6368 = 1.00000
+    6373 = 1.00000
+    6377 = 1.00000
+    6374 = 1.00000
+    6378 = 1.00000
+    6375 = 1.00000
+    6379 = 1.00000
+    6376 = 1.00000
+    6380 = 1.00000
+    6393 = 1.00000
+    6397 = 1.00000
+    6394 = 1.00000
+    6398 = 1.00000
+    6395 = 1.00000
+    6399 = 1.00000
+    6396 = 1.00000
+    6400 = 1.00000
+    6429 = 1.00000
+    6430 = 1.00000
+    6431 = 1.00000
+    6432 = 1.00000
+    6434 = 1.00000
+    6433 = 1.00000
+    6435 = 1.00000
+    6438 = 1.00000
+    6440 = 1.00000
+    6442 = 1.00000
+    6439 = 1.00000
+    6441 = 1.00000
+    6443 = 1.00000
+    6444 = 1.00000
+    6448 = 1.00000
+    6445 = 1.00000
+    6449 = 1.00000
+    6462 = 1.00000
+    6470 = 1.00000
+    6463 = 1.00000
+    6471 = 1.00000
+    6464 = 1.00000
+    6472 = 1.00000
+    6465 = 1.00000
+    6473 = 1.00000
+    6474 = 1.00000
+    6478 = 1.00000
+    6475 = 1.00000
+    6479 = 1.00000
+    6476 = 1.00000
+    6480 = 1.00000
+    6477 = 1.00000
+    6481 = 1.00000
+    6510 = 1.00000
+    6511 = 1.00000
+    6512 = 1.00000
+    6513 = 1.00000
+    6515 = 1.00000
+    6517 = 1.00000
+    6514 = 1.00000
+    6516 = 1.00000
+    6518 = 1.00000
+    6519 = 1.00000
+    6521 = 1.00000
+    6523 = 1.00000
+    6520 = 1.00000
+    6522 = 1.00000
+    6524 = 1.00000
+    6525 = 1.00000
+    6527 = 1.00000
+    6529 = 1.00000
+    6526 = 1.00000
+    6528 = 1.00000
+    6530 = 1.00000
+    6535 = 1.00000
+    6539 = 1.00000
+    6536 = 1.00000
+    6540 = 1.00000
+    6537 = 1.00000
+    6541 = 1.00000
+    6538 = 1.00000
+    6542 = 1.00000
+    6543 = 1.00000
+    6551 = 1.00000
+    6544 = 1.00000
+    6552 = 1.00000
+    6545 = 1.00000
+    6553 = 1.00000
+    6546 = 1.00000
+    6554 = 1.00000
+    6555 = 1.00000
+    6559 = 1.00000
+    6556 = 1.00000
+    6560 = 1.00000
+    6557 = 1.00000
+    6561 = 1.00000
+    6558 = 1.00000
+    6562 = 1.00000
index fc3cdd70127f07fc65c447de0e9205347e080850..655ecea87cbfa8bc492dc23156e76c7527947b42 100644 (file)
@@ -26,7 +26,7 @@
 #include <unistd.h>
 
 
-template <int dim, int spacedim=dim>
+template <int dim, int spacedim>
 void write_vtk (const parallel::distributed::Triangulation<dim,spacedim> &tria,
                 const char                                *filename)
 {
diff --git a/tests/fail/merge_triangulations_02.cc b/tests/fail/merge_triangulations_02.cc
new file mode 100644 (file)
index 0000000..0dc6530
--- /dev/null
@@ -0,0 +1,115 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// GridGenerator::merge_triangulation did not call
+// GridReordering::reorder_cells, but even then it may sometimes fail.
+//
+// testcase by Carlos Galeano
+
+#include "../tests.h"
+#include <deal.II/grid/tria_boundary.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/base/logstream.h>
+#include <cmath>
+#include <cstdlib>
+
+#include <fstream>
+#include <iomanip>
+#include <cstdio>
+
+std::ofstream logfile("output");
+
+template<int dim>
+void mesh_info(const Triangulation<dim> &tria)
+{
+  deallog << "Mesh info:" << std::endl
+         << " dimension: " << dim << std::endl
+         << " no. of cells: " << tria.n_active_cells() << std::endl;
+
+  // Next loop over all faces of all cells and find how often each boundary
+  // indicator is used:
+  {
+    std::map<unsigned int, unsigned int> boundary_count;
+    typename Triangulation<dim>::active_cell_iterator
+      cell = tria.begin_active(),
+      endc = tria.end();
+    for (; cell!=endc; ++cell)
+      {
+        for (unsigned int face=0; face<GeometryInfo<dim>::faces_per_cell; ++face)
+          {
+            if (cell->face(face)->at_boundary())
+              boundary_count[cell->face(face)->boundary_indicator()]++;
+          }
+      }
+
+    deallog << " boundary indicators: ";
+    for (std::map<unsigned int, unsigned int>::iterator it=boundary_count.begin();
+         it!=boundary_count.end();
+         ++it)
+      {
+        deallog << it->first << "(" << it->second << " times) ";
+      }
+    deallog << std::endl;
+  }
+
+  // Finally, produce a graphical representation of the mesh to an output
+  // file:
+  GridOut grid_out;
+  grid_out.write_gnuplot (tria, deallog.get_file_stream());
+}
+
+
+void make_grid ()
+{
+  Triangulation<2> tria1;
+  GridGenerator::hyper_cube_with_cylindrical_hole (tria1, 0.25, 1.0);
+  
+  Triangulation<2> tria3;
+  GridGenerator::hyper_cube_with_cylindrical_hole (tria3, 0.25, 1.0);
+  GridTools::shift (Point<2>(0,-2), tria3);
+  Triangulation<2> triangulation2;
+
+  mesh_info (tria1);
+  mesh_info (tria3);
+  GridGenerator::merge_triangulations (tria1, tria3, triangulation2);
+
+  mesh_info(triangulation2);
+  deallog << "Number of active cells: "
+         << triangulation2.n_active_cells()
+         << std::endl;
+  deallog << "Total number of cells: "
+         << triangulation2.n_cells()
+         << std::endl;
+
+}
+
+
+int main ()
+{
+  deallog << std::setprecision(2);
+  logfile << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  make_grid();
+}
diff --git a/tests/fe/bdm_1.cc b/tests/fe/bdm_1.cc
new file mode 100644 (file)
index 0000000..03b1766
--- /dev/null
@@ -0,0 +1,102 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// Show the shape functions of the Raviart-Thomas element on the unit cell
+// Plots are gnuplot compatible if lines with desired prefix are selected.
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/fe/fe_bdm.h>
+
+#include <vector>
+#include <fstream>
+#include <sstream>
+#include <string>
+
+#define PRECISION 2
+
+
+
+template<int dim>
+inline void
+plot_shape_functions(const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+  deallog.push(fe_rt.get_name());
+  
+  const unsigned int div=2;
+  for (unsigned int mz=0; mz<=((dim>2) ? div : 0) ; ++mz)
+    for (unsigned int my=0; my<=((dim>1) ? div : 0) ; ++my)
+      {
+        for (unsigned int mx=0; mx<=div; ++mx)
+          {
+            const Point<dim> p = (dim==2 ?
+                                  Point<dim>(1.*mx/div, 1.*my/div) :
+                                  Point<dim>(1.*mx/div, 1.*my/div, 1.*mz/div));
+
+            // Lines with function
+            // values contain
+            // quadrature point and one
+            // vector of dim entries
+            // for each chape function
+            deallog << "value " << p;
+            for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+              {
+                for (unsigned int c=0; c<dim; ++c)
+                  deallog << " " << fe_rt.shape_value_component(i,p,c);
+                deallog << "  ";
+              }
+            deallog << std::endl << "grad "  << p;
+            for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+              {
+                for (unsigned int c=0; c<dim; ++c)
+                  {
+                    deallog << ' ';
+                    for (unsigned int d=0; d<dim; ++d)
+                      deallog << ' ' << fe_rt.shape_grad_component(i,p,c)[d];
+                  }
+              }
+            deallog << std::endl;
+          }
+        deallog << "value " << std::endl;
+        deallog << "grad " << std::endl;
+      }
+
+  deallog.pop();
+}
+
+
+int
+main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int degree=1; degree<4; ++degree)
+    plot_shape_functions<2>(degree);
+//  plot_shape_functions<3>(degree);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_1.output b/tests/fe/bdm_1.output
new file mode 100644 (file)
index 0000000..b0e53a8
--- /dev/null
@@ -0,0 +1,73 @@
+
+DEAL:FE_BDM<2>(1)::value 0.00 0.00 1.37 0   -0.37 0   0 0   0 0   0 1.37   0 -0.37   0 0   0 0  
+DEAL:FE_BDM<2>(1)::grad 0.00 0.00  -1.37 -1.73  0 0.87  0.37 1.73  0 -0.87  1.37 0  0 -0.87  -0.37 0  0 0.87  0.87 0  -1.73 -1.37  -0.87 0  1.73 0.37  -0.87 0  0 1.37  0.87 0  0 -0.37
+DEAL:FE_BDM<2>(1)::value 0.50 0.00 0.68 0   -0.18 0   0.68 0   -0.18 0   0.22 0.50   -0.22 0.50   -0.22 0   0.22 0  
+DEAL:FE_BDM<2>(1)::grad 0.50 0.00  -1.37 -0.87  0 0.87  0.37 0.87  0 -0.87  1.37 -0.87  0 -0.87  -0.37 0.87  0 0.87  0 0  -1.73 -0.50  0 0  1.73 -0.50  0 0  0 0.50  0 0  0 0.50
+DEAL:FE_BDM<2>(1)::value 1.00 0.00 0 0   0 0   1.37 0   -0.37 0   0 -0.37   0 1.37   0 0   0 0  
+DEAL:FE_BDM<2>(1)::grad 1.00 0.00  -1.37 0  0 0.87  0.37 0  0 -0.87  1.37 -1.73  0 -0.87  -0.37 1.73  0 0.87  -0.87 0  -1.73 0.37  0.87 0  1.73 -1.37  0.87 0  0 -0.37  -0.87 0  0 1.37
+DEAL:FE_BDM<2>(1)::value 
+DEAL:FE_BDM<2>(1)::grad 
+DEAL:FE_BDM<2>(1)::value 0.00 0.50 0.50 0.22   0.50 -0.22   0 -0.22   0 0.22   0 0.68   0 -0.18   0 0.68   0 -0.18  
+DEAL:FE_BDM<2>(1)::grad 0.00 0.50  -0.50 -1.73  0 0  -0.50 1.73  0 0  0.50 0  0 0  0.50 0  0 0  0.87 0  -0.87 -1.37  -0.87 0  0.87 0.37  -0.87 0  -0.87 1.37  0.87 0  0.87 -0.37
+DEAL:FE_BDM<2>(1)::value 0.50 0.50 0.25 0.22   0.25 -0.22   0.25 -0.22   0.25 0.22   0.22 0.25   -0.22 0.25   -0.22 0.25   0.22 0.25  
+DEAL:FE_BDM<2>(1)::grad 0.50 0.50  -0.50 -0.87  0 0  -0.50 0.87  0 0  0.50 -0.87  0 0  0.50 0.87  0 0  0 0  -0.87 -0.50  0 0  0.87 -0.50  0 0  -0.87 0.50  0 0  0.87 0.50
+DEAL:FE_BDM<2>(1)::value 1.00 0.50 0 0.22   0 -0.22   0.50 -0.22   0.50 0.22   0 -0.18   0 0.68   0 -0.18   0 0.68  
+DEAL:FE_BDM<2>(1)::grad 1.00 0.50  -0.50 0  0 0  -0.50 0  0 0  0.50 -1.73  0 0  0.50 1.73  0 0  -0.87 0  -0.87 0.37  0.87 0  0.87 -1.37  0.87 0  -0.87 -0.37  -0.87 0  0.87 1.37
+DEAL:FE_BDM<2>(1)::value 
+DEAL:FE_BDM<2>(1)::grad 
+DEAL:FE_BDM<2>(1)::value 0.00 1.00 -0.37 0   1.37 0   0 0   0 0   0 0   0 0   0 1.37   0 -0.37  
+DEAL:FE_BDM<2>(1)::grad 0.00 1.00  0.37 -1.73  0 -0.87  -1.37 1.73  0 0.87  -0.37 0  0 0.87  1.37 0  0 -0.87  0.87 0  0 -1.37  -0.87 0  0 0.37  -0.87 0  -1.73 1.37  0.87 0  1.73 -0.37
+DEAL:FE_BDM<2>(1)::value 0.50 1.00 -0.18 0   0.68 0   -0.18 0   0.68 0   0.22 0   -0.22 0   -0.22 0.50   0.22 0.50  
+DEAL:FE_BDM<2>(1)::grad 0.50 1.00  0.37 -0.87  0 -0.87  -1.37 0.87  0 0.87  -0.37 -0.87  0 0.87  1.37 0.87  0 -0.87  0 0  0 -0.50  0 0  0 -0.50  0 0  -1.73 0.50  0 0  1.73 0.50
+DEAL:FE_BDM<2>(1)::value 1.00 1.00 0 0   0 0   -0.37 0   1.37 0   0 0   0 0   0 -0.37   0 1.37  
+DEAL:FE_BDM<2>(1)::grad 1.00 1.00  0.37 0  0 -0.87  -1.37 0  0 0.87  -0.37 -1.73  0 0.87  1.37 1.73  0 -0.87  -0.87 0  0 0.37  0.87 0  0 -1.37  0.87 0  -1.73 -0.37  -0.87 0  1.73 1.37
+DEAL:FE_BDM<2>(1)::value 
+DEAL:FE_BDM<2>(1)::grad 
+DEAL:FE_BDM<2>(2)::value 0.00 0.00 1.48 0   -0.67 0   0.19 0   0 0   0 0   0 0   0 1.48   0 -0.67   0 0.19   0 0   0 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(2)::grad 0.00 0.00  -2.31 -4.62  0 0.56  -0.67 6.67  0 -1.11  -1.02 -2.04  0 0.56  0.65 0  0 -0.56  -2.00 0  0 1.11  -0.65 0  0 -0.56  0.56 0  -4.62 -2.31  -1.11 0  6.67 -0.67  0.56 0  -2.04 -1.02  -0.56 0  0 0.65  1.11 0  0 -2.00  -0.56 0  0 -0.65  6.00 0  0 0  0 0  0 6.00
+DEAL:FE_BDM<2>(2)::value 0.50 0.00 0.53 0   -0.67 0   -0.11 0   0.53 0   -0.67 0   -0.11 0   0 0   0 1.00   0 0   0 0   0 0   0 0   1.50 0   0 0  
+DEAL:FE_BDM<2>(2)::grad 0.50 0.00  -1.48 -2.31  0 0.56  0.67 3.33  0 -1.11  -0.19 -1.02  0 0.56  1.48 -2.31  0 -0.56  -0.67 3.33  0 1.11  0.19 -1.02  0 -0.56  -0.28 0  -1.29 -0.83  0.56 0  0 -2.33  -0.28 0  1.29 -0.83  0.28 0  0 -0.83  -0.56 0  0 -0.33  0.28 0  0 -0.83  0 0  0 0  0 0  0 6.00
+DEAL:FE_BDM<2>(2)::value 1.00 0.00 0 0   0 0   0 0   1.48 0   -0.67 0   0.19 0   0 0.19   0 -0.67   0 1.48   0 0   0 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(2)::grad 1.00 0.00  -0.65 0  0 0.56  2.00 0  0 -1.11  0.65 0  0 0.56  2.31 -4.62  0 -0.56  0.67 6.67  0 1.11  1.02 -2.04  0 -0.56  0.56 0  2.04 -1.02  -1.11 0  -6.67 -0.67  0.56 0  4.62 -2.31  -0.56 0  0 -0.65  1.11 0  0 -2.00  -0.56 0  0 0.65  -6.00 0  0 0  0 0  0 6.00
+DEAL:FE_BDM<2>(2)::value 
+DEAL:FE_BDM<2>(2)::grad 
+DEAL:FE_BDM<2>(2)::value 0.00 0.50 0 0   1.00 0   0 0   0 0   0 0   0 0   0 0.53   0 -0.67   0 -0.11   0 0.53   0 -0.67   0 -0.11   0 0   0 1.50  
+DEAL:FE_BDM<2>(2)::grad 0.00 0.50  -0.83 -1.29  0 -0.28  -2.33 0  0 0.56  -0.83 1.29  0 -0.28  -0.83 0  0 0.28  -0.33 0  0 -0.56  -0.83 0  0 0.28  0.56 0  -2.31 -1.48  -1.11 0  3.33 0.67  0.56 0  -1.02 -0.19  -0.56 0  -2.31 1.48  1.11 0  3.33 -0.67  -0.56 0  -1.02 0.19  6.00 0  0 0  0 0  0 0
+DEAL:FE_BDM<2>(2)::value 0.50 0.50 -0.21 0   0.17 0   -0.21 0   -0.21 0   0.17 0   -0.21 0   0 -0.21   0 0.17   0 -0.21   0 -0.21   0 0.17   0 -0.21   1.50 0   0 1.50  
+DEAL:FE_BDM<2>(2)::grad 0.50 0.50  0 -0.65  0 -0.28  -1.00 0  0 0.56  0 0.65  0 -0.28  0 -0.65  0 0.28  1.00 0  0 -0.56  0 0.65  0 0.28  -0.28 0  -0.65 0  0.56 0  0 -1.00  -0.28 0  0.65 0  0.28 0  -0.65 0  -0.56 0  0 1.00  0.28 0  0.65 0  0 0  0 0  0 0  0 0
+DEAL:FE_BDM<2>(2)::value 1.00 0.50 0 0   0 0   0 0   0 0   1.00 0   0 0   0 -0.11   0 -0.67   0 0.53   0 -0.11   0 -0.67   0 0.53   0 0   0 1.50  
+DEAL:FE_BDM<2>(2)::grad 1.00 0.50  0.83 0  0 -0.28  0.33 0  0 0.56  0.83 0  0 -0.28  0.83 -1.29  0 0.28  2.33 0  0 -0.56  0.83 1.29  0 0.28  0.56 0  1.02 -0.19  -1.11 0  -3.33 0.67  0.56 0  2.31 -1.48  -0.56 0  1.02 0.19  1.11 0  -3.33 -0.67  -0.56 0  2.31 1.48  -6.00 0  0 0  0 0  0 0
+DEAL:FE_BDM<2>(2)::value 
+DEAL:FE_BDM<2>(2)::grad 
+DEAL:FE_BDM<2>(2)::value 0.00 1.00 0.19 0   -0.67 0   1.48 0   0 0   0 0   0 0   0 0   0 0   0 0   0 1.48   0 -0.67   0 0.19   0 0   0 0  
+DEAL:FE_BDM<2>(2)::grad 0.00 1.00  -1.02 2.04  0 0.56  -0.67 -6.67  0 -1.11  -2.31 4.62  0 0.56  -0.65 0  0 -0.56  -2.00 0  0 1.11  0.65 0  0 -0.56  0.56 0  0 -0.65  -1.11 0  0 2.00  0.56 0  0 0.65  -0.56 0  -4.62 2.31  1.11 0  6.67 0.67  -0.56 0  -2.04 1.02  6.00 0  0 0  0 0  0 -6.00
+DEAL:FE_BDM<2>(2)::value 0.50 1.00 -0.11 0   -0.67 0   0.53 0   -0.11 0   -0.67 0   0.53 0   0 0   0 0   0 0   0 0   0 1.00   0 0   1.50 0   0 0  
+DEAL:FE_BDM<2>(2)::grad 0.50 1.00  -0.19 1.02  0 0.56  0.67 -3.33  0 -1.11  -1.48 2.31  0 0.56  0.19 1.02  0 -0.56  -0.67 -3.33  0 1.11  1.48 2.31  0 -0.56  -0.28 0  0 0.83  0.56 0  0 0.33  -0.28 0  0 0.83  0.28 0  -1.29 0.83  -0.56 0  0 2.33  0.28 0  1.29 0.83  0 0  0 0  0 0  0 -6.00
+DEAL:FE_BDM<2>(2)::value 1.00 1.00 0 0   0 0   0 0   0.19 0   -0.67 0   1.48 0   0 0   0 0   0 0   0 0.19   0 -0.67   0 1.48   0 0   0 0  
+DEAL:FE_BDM<2>(2)::grad 1.00 1.00  0.65 0  0 0.56  2.00 0  0 -1.11  -0.65 0  0 0.56  1.02 2.04  0 -0.56  0.67 -6.67  0 1.11  2.31 4.62  0 -0.56  0.56 0  0 0.65  -1.11 0  0 2.00  0.56 0  0 -0.65  -0.56 0  2.04 1.02  1.11 0  -6.67 0.67  -0.56 0  4.62 2.31  -6.00 0  0 0  0 0  0 -6.00
+DEAL:FE_BDM<2>(2)::value 
+DEAL:FE_BDM<2>(2)::grad 
+DEAL:FE_BDM<2>(3)::value 0.00 0.00 1.53 0   -0.81 0   0.40 0   -0.11 0   0 0   0 0   0 0   0 0   0 1.53   0 -0.81   0 0.40   0 -0.11   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 0.00 0.00  -4.27 -8.55  0 0.37  -2.79 13.81  0 -0.94  -2.01 -7.42  0 0.94  0.07 2.16  0 -0.37  0.53 0  0 -0.37  -1.16 0  0 0.94  2.05 0  0 -0.94  1.58 0  0 0.37  0.37 0  -8.55 -4.27  -0.94 0  13.81 -2.79  0.94 0  -7.42 -2.01  -0.37 0  2.16 0.07  -0.37 0  0 0.53  0.94 0  0 -1.16  -0.94 0  0 2.05  0.37 0  0 1.58  54.00 0  0 0  -60.00 0  0 0  -36.00 0  0 0  0 0  0 54.00  0 0  0 -36.00  0 0  0 -60.00
+DEAL:FE_BDM<2>(3)::value 0.50 0.00 0.30 0   -0.90 0   0.21 0   0.15 0   0.30 0   -0.90 0   0.21 0   0.15 0   -0.02 -0.09   0.06 0.59   -0.06 0.59   0.02 -0.09   0.02 0   -0.06 0   0.06 0   -0.02 0   6.00 0   0 0   -9.00 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 0.50 0.00  -1.09 -3.60  0 0.37  1.63 7.40  0 -0.94  0.41 -4.21  0 0.94  0.55 0.40  0 -0.37  1.09 -3.60  0 -0.37  -1.63 7.40  0 0.94  -0.41 -4.21  0 -0.94  -0.55 0.40  0 0.37  0 0  0.21 -1.30  0 0  -3.48 -3.20  0 0  3.48 -3.20  0 0  -0.21 -1.30  0 0  0 0.26  0 0  0 1.24  0 0  0 1.24  0 0  0 0.26  -15.00 -9.00  0 0  30.00 0  0 0  0 18.00  0 0  0 0  0 36.00  0 0  0 0  0 0  0 -60.00
+DEAL:FE_BDM<2>(3)::value 1.00 0.00 0 0   0 0   0 0   0 0   1.53 0   -0.81 0   0.40 0   -0.11 0   0 -0.11   0 0.40   0 -0.81   0 1.53   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 1.00 0.00  -0.53 0  0 0.37  1.16 0  0 -0.94  -2.05 0  0 0.94  -1.58 0  0 -0.37  4.27 -8.55  0 -0.37  2.79 13.81  0 0.94  2.01 -7.42  0 -0.94  -0.07 2.16  0 0.37  -0.37 0  -2.16 0.07  0.94 0  7.42 -2.01  -0.94 0  -13.81 -2.79  0.37 0  8.55 -4.27  0.37 0  0 1.58  -0.94 0  0 2.05  0.94 0  0 -1.16  -0.37 0  0 0.53  6.00 0  0 0  -60.00 0  0 0  36.00 0  0 0  0 0  0 18.00  0 0  0 36.00  0 0  0 -60.00
+DEAL:FE_BDM<2>(3)::value 
+DEAL:FE_BDM<2>(3)::grad 
+DEAL:FE_BDM<2>(3)::value 0.00 0.50 -0.09 -0.02   0.59 0.06   0.59 -0.06   -0.09 0.02   0 0.02   0 -0.06   0 0.06   0 -0.02   0 0.30   0 -0.90   0 0.21   0 0.15   0 0.30   0 -0.90   0 0.21   0 0.15   0 0   0 0   0 0   0 6.00   0 -9.00   0 0  
+DEAL:FE_BDM<2>(3)::grad 0.00 0.50  -1.30 0.21  0 0  -3.20 -3.48  0 0  -3.20 3.48  0 0  -1.30 -0.21  0 0  0.26 0  0 0  1.24 0  0 0  1.24 0  0 0  0.26 0  0 0  0.37 0  -3.60 -1.09  -0.94 0  7.40 1.63  0.94 0  -4.21 0.41  -0.37 0  0.40 0.55  -0.37 0  -3.60 1.09  0.94 0  7.40 -1.63  -0.94 0  -4.21 -0.41  0.37 0  0.40 -0.55  36.00 0  0 0  -60.00 0  0 0  0 0  0 0  0 0  -9.00 -15.00  0 0  18.00 0  0 0  0 30.00
+DEAL:FE_BDM<2>(3)::value 0.50 0.50 -0.18 -0.02   0.05 0.06   0.05 -0.06   -0.18 0.02   -0.18 0.02   0.05 -0.06   0.05 0.06   -0.18 -0.02   -0.02 -0.18   0.06 0.05   -0.06 0.05   0.02 -0.18   0.02 -0.18   -0.06 0.05   0.06 0.05   -0.02 -0.18   1.50 0   0 0   0 0   0 1.50   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 0.50 0.50  0.53 0.78  0 0  0.22 -1.24  0 0  0.22 1.24  0 0  0.53 -0.78  0 0  -0.53 0.78  0 0  -0.22 -1.24  0 0  -0.22 1.24  0 0  -0.53 -0.78  0 0  0 0  0.78 0.53  0 0  -1.24 0.22  0 0  1.24 0.22  0 0  -0.78 0.53  0 0  0.78 -0.53  0 0  -1.24 -0.22  0 0  1.24 -0.22  0 0  -0.78 -0.53  -15.00 -9.00  0 0  30.00 0  0 0  0 18.00  0 0  0 0  -9.00 -15.00  0 0  18.00 0  0 0  0 30.00
+DEAL:FE_BDM<2>(3)::value 1.00 0.50 0 -0.02   0 0.06   0 -0.06   0 0.02   -0.09 0.02   0.59 -0.06   0.59 0.06   -0.09 -0.02   0 0.15   0 0.21   0 -0.90   0 0.30   0 0.15   0 0.21   0 -0.90   0 0.30   0 0   0 0   0 0   0 -3.00   0 9.00   0 0  
+DEAL:FE_BDM<2>(3)::grad 1.00 0.50  -0.26 0  0 0  -1.24 0  0 0  -1.24 0  0 0  -0.26 0  0 0  1.30 0.21  0 0  3.20 -3.48  0 0  3.20 3.48  0 0  1.30 -0.21  0 0  -0.37 0  -0.40 0.55  0.94 0  4.21 0.41  -0.94 0  -7.40 1.63  0.37 0  3.60 -1.09  0.37 0  -0.40 -0.55  -0.94 0  4.21 -0.41  0.94 0  -7.40 -1.63  -0.37 0  3.60 1.09  24.00 0  0 0  -60.00 0  0 0  0 0  0 0  0 0  -9.00 -15.00  0 0  18.00 0  0 0  0 30.00
+DEAL:FE_BDM<2>(3)::value 
+DEAL:FE_BDM<2>(3)::grad 
+DEAL:FE_BDM<2>(3)::value 0.00 1.00 -0.11 0   0.40 0   -0.81 0   1.53 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 0   0 1.53   0 -0.81   0 0.40   0 -0.11   0 0   0 0   0 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 0.00 1.00  0.07 -2.16  0 -0.37  -2.01 7.42  0 0.94  -2.79 -13.81  0 -0.94  -4.27 8.55  0 0.37  1.58 0  0 0.37  2.05 0  0 -0.94  -1.16 0  0 0.94  0.53 0  0 -0.37  0.37 0  0 -0.53  -0.94 0  0 1.16  0.94 0  0 -2.05  -0.37 0  0 -1.58  -0.37 0  -8.55 4.27  0.94 0  13.81 2.79  -0.94 0  -7.42 2.01  0.37 0  2.16 -0.07  18.00 0  0 0  -60.00 0  0 0  36.00 0  0 0  0 0  0 6.00  0 0  0 36.00  0 0  0 -60.00
+DEAL:FE_BDM<2>(3)::value 0.50 1.00 0.15 0   0.21 0   -0.90 0   0.30 0   0.15 0   0.21 0   -0.90 0   0.30 0   -0.02 0   0.06 0   -0.06 0   0.02 0   0.02 -0.09   -0.06 0.59   0.06 0.59   -0.02 -0.09   -3.00 0   0 0   9.00 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 0.50 1.00  0.55 -0.40  0 -0.37  0.41 4.21  0 0.94  1.63 -7.40  0 -0.94  -1.09 3.60  0 0.37  -0.55 -0.40  0 0.37  -0.41 4.21  0 -0.94  -1.63 -7.40  0 0.94  1.09 3.60  0 -0.37  0 0  0 -0.26  0 0  0 -1.24  0 0  0 -1.24  0 0  0 -0.26  0 0  0.21 1.30  0 0  -3.48 3.20  0 0  3.48 3.20  0 0  -0.21 1.30  -15.00 -9.00  0 0  30.00 0  0 0  0 18.00  0 0  0 0  0 24.00  0 0  0 0  0 0  0 -60.00
+DEAL:FE_BDM<2>(3)::value 1.00 1.00 0 0   0 0   0 0   0 0   -0.11 0   0.40 0   -0.81 0   1.53 0   0 0   0 0   0 0   0 0   0 -0.11   0 0.40   0 -0.81   0 1.53   0 0   0 0   0 0   0 0   0 0   0 0  
+DEAL:FE_BDM<2>(3)::grad 1.00 1.00  -1.58 0  0 -0.37  -2.05 0  0 0.94  1.16 0  0 -0.94  -0.53 0  0 0.37  -0.07 -2.16  0 0.37  2.01 7.42  0 -0.94  2.79 -13.81  0 0.94  4.27 8.55  0 -0.37  -0.37 0  0 -1.58  0.94 0  0 -2.05  -0.94 0  0 1.16  0.37 0  0 -0.53  0.37 0  -2.16 -0.07  -0.94 0  7.42 2.01  0.94 0  -13.81 2.79  -0.37 0  8.55 4.27  42.00 0  0 0  -60.00 0  0 0  -36.00 0  0 0  0 0  0 42.00  0 0  0 -36.00  0 0  0 -60.00
+DEAL:FE_BDM<2>(3)::value 
+DEAL:FE_BDM<2>(3)::grad 
diff --git a/tests/fe/bdm_10.cc b/tests/fe/bdm_10.cc
new file mode 100644 (file)
index 0000000..facba4d
--- /dev/null
@@ -0,0 +1,103 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Observe how the values of the shape functions change as we make a
+// cell smaller and smaller
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+
+  deallog << "Degree=" << degree
+          << std::endl;
+
+  for (double h=1; h>1./128; h/=2)
+    {
+      deallog << "  h=" << h
+              << std::endl;
+
+      Triangulation<dim> tr;
+      GridGenerator::hyper_cube(tr, 0., h);
+
+      DoFHandler<dim> dof(tr);
+      dof.distribute_dofs(fe_rt);
+
+      QTrapez<dim> quadrature;
+
+      FEValues<dim> fe_values (fe_rt, quadrature, update_values);
+      fe_values.reinit (dof.begin_active());
+      for (unsigned int q=0; q<quadrature.size(); ++q)
+        {
+          deallog << "    Quadrature point " << q << ": ";
+          for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+            {
+              deallog << '[';
+              for (unsigned int c=0; c<fe_rt.n_components(); ++c)
+                deallog << fe_values.shape_value_component(i,q,c) << ' ';
+              deallog << ']';
+            }
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_10.output b/tests/fe/bdm_10.output
new file mode 100644 (file)
index 0000000..cf25993
--- /dev/null
@@ -0,0 +1,109 @@
+
+DEAL::Degree=1
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.37 0 ][-0.37 0 ][0 0 ][0 0 ][0 1.37 ][0 -0.37 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][1.37 0 ][-0.37 0 ][0 -0.37 ][0 1.37 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-0.37 0 ][1.37 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.37 ][0 -0.37 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-0.37 0 ][1.37 0 ][0 0 ][0 0 ][0 -0.37 ][0 1.37 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [2.73 0 ][-0.73 0 ][0 0 ][0 0 ][0 2.73 ][0 -0.73 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][2.73 0 ][-0.73 0 ][0 -0.73 ][0 2.73 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-0.73 0 ][2.73 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 2.73 ][0 -0.73 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-0.73 0 ][2.73 0 ][0 0 ][0 0 ][0 -0.73 ][0 2.73 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [5.46 0 ][-1.46 0 ][0 0 ][0 0 ][0 5.46 ][0 -1.46 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][5.46 0 ][-1.46 0 ][0 -1.46 ][0 5.46 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-1.46 0 ][5.46 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 5.46 ][0 -1.46 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-1.46 0 ][5.46 0 ][0 0 ][0 0 ][0 -1.46 ][0 5.46 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [10.93 0 ][-2.93 0 ][0 0 ][0 0 ][0 10.93 ][0 -2.93 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][10.93 0 ][-2.93 0 ][0 -2.93 ][0 10.93 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-2.93 0 ][10.93 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 10.93 ][0 -2.93 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-2.93 0 ][10.93 0 ][0 0 ][0 0 ][0 -2.93 ][0 10.93 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [21.86 0 ][-5.86 0 ][0 0 ][0 0 ][0 21.86 ][0 -5.86 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][21.86 0 ][-5.86 0 ][0 -5.86 ][0 21.86 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-5.86 0 ][21.86 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 21.86 ][0 -5.86 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-5.86 0 ][21.86 0 ][0 0 ][0 0 ][0 -5.86 ][0 21.86 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [43.71 0 ][-11.71 0 ][0 0 ][0 0 ][0 43.71 ][0 -11.71 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][43.71 0 ][-11.71 0 ][0 -11.71 ][0 43.71 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-11.71 0 ][43.71 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 43.71 ][0 -11.71 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-11.71 0 ][43.71 0 ][0 0 ][0 0 ][0 -11.71 ][0 43.71 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [87.43 0 ][-23.43 0 ][0 0 ][0 0 ][0 87.43 ][0 -23.43 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][87.43 0 ][-23.43 0 ][0 -23.43 ][0 87.43 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-23.43 0 ][87.43 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 87.43 ][0 -23.43 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][-23.43 0 ][87.43 0 ][0 0 ][0 0 ][0 -23.43 ][0 87.43 ]
+DEAL::Degree=2
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.48 0 ][-0.67 0 ][0.19 0 ][0 0 ][0 0 ][0 0 ][0 1.48 ][0 -0.67 ][0 0.19 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][1.48 0 ][-0.67 0 ][0.19 0 ][0 0.19 ][0 -0.67 ][0 1.48 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [0.19 0 ][-0.67 0 ][1.48 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.48 ][0 -0.67 ][0 0.19 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0.19 0 ][-0.67 0 ][1.48 0 ][0 0 ][0 0 ][0 0 ][0 0.19 ][0 -0.67 ][0 1.48 ][0 0 ][0 0 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [2.96 0 ][-1.33 0 ][0.38 0 ][0 0 ][0 0 ][0 0 ][0 2.96 ][0 -1.33 ][0 0.38 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][2.96 0 ][-1.33 0 ][0.38 0 ][0 0.38 ][0 -1.33 ][0 2.96 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [0.38 0 ][-1.33 0 ][2.96 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 2.96 ][0 -1.33 ][0 0.38 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0.38 0 ][-1.33 0 ][2.96 0 ][0 0 ][0 0 ][0 0 ][0 0.38 ][0 -1.33 ][0 2.96 ][0 0 ][0 0 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [5.92 0 ][-2.67 0 ][0.75 0 ][0 0 ][0 0 ][0 0 ][0 5.92 ][0 -2.67 ][0 0.75 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][5.92 0 ][-2.67 0 ][0.75 0 ][0 0.75 ][0 -2.67 ][0 5.92 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [0.75 0 ][-2.67 0 ][5.92 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 5.92 ][0 -2.67 ][0 0.75 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0.75 0 ][-2.67 0 ][5.92 0 ][0 0 ][0 0 ][0 0 ][0 0.75 ][0 -2.67 ][0 5.92 ][0 0 ][0 0 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [11.83 0 ][-5.33 0 ][1.50 0 ][0 0 ][0 0 ][0 0 ][0 11.83 ][0 -5.33 ][0 1.50 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][11.83 0 ][-5.33 0 ][1.50 0 ][0 1.50 ][0 -5.33 ][0 11.83 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [1.50 0 ][-5.33 0 ][11.83 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 11.83 ][0 -5.33 ][0 1.50 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][1.50 0 ][-5.33 0 ][11.83 0 ][0 0 ][0 0 ][0 0 ][0 1.50 ][0 -5.33 ][0 11.83 ][0 0 ][0 0 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [23.66 0 ][-10.67 0 ][3.01 0 ][0 0 ][0 0 ][0 0 ][0 23.66 ][0 -10.67 ][0 3.01 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][23.66 0 ][-10.67 0 ][3.01 0 ][0 3.01 ][0 -10.67 ][0 23.66 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [3.01 0 ][-10.67 0 ][23.66 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 23.66 ][0 -10.67 ][0 3.01 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][3.01 0 ][-10.67 0 ][23.66 0 ][0 0 ][0 0 ][0 0 ][0 3.01 ][0 -10.67 ][0 23.66 ][0 0 ][0 0 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [47.32 0 ][-21.33 0 ][6.01 0 ][0 0 ][0 0 ][0 0 ][0 47.32 ][0 -21.33 ][0 6.01 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][47.32 0 ][-21.33 0 ][6.01 0 ][0 6.01 ][0 -21.33 ][0 47.32 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [6.01 0 ][-21.33 0 ][47.32 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 47.32 ][0 -21.33 ][0 6.01 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][6.01 0 ][-21.33 0 ][47.32 0 ][0 0 ][0 0 ][0 0 ][0 6.01 ][0 -21.33 ][0 47.32 ][0 0 ][0 0 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [94.65 0 ][-42.67 0 ][12.02 0 ][0 0 ][0 0 ][0 0 ][0 94.65 ][0 -42.67 ][0 12.02 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][94.65 0 ][-42.67 0 ][12.02 0 ][0 12.02 ][0 -42.67 ][0 94.65 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [12.02 0 ][-42.67 0 ][94.65 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 94.65 ][0 -42.67 ][0 12.02 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][12.02 0 ][-42.67 0 ][94.65 0 ][0 0 ][0 0 ][0 0 ][0 12.02 ][0 -42.67 ][0 94.65 ][0 0 ][0 0 ]
+DEAL::Degree=3
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.53 0 ][-0.81 0 ][0.40 0 ][-0.11 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.53 ][0 -0.81 ][0 0.40 ][0 -0.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][1.53 0 ][-0.81 0 ][0.40 0 ][-0.11 0 ][0 -0.11 ][0 0.40 ][0 -0.81 ][0 1.53 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-0.11 0 ][0.40 0 ][-0.81 0 ][1.53 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.53 ][0 -0.81 ][0 0.40 ][0 -0.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-0.11 0 ][0.40 0 ][-0.81 0 ][1.53 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -0.11 ][0 0.40 ][0 -0.81 ][0 1.53 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [3.05 0 ][-1.63 0 ][0.80 0 ][-0.23 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 3.05 ][0 -1.63 ][0 0.80 ][0 -0.23 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][3.05 0 ][-1.63 0 ][0.80 0 ][-0.23 0 ][0 -0.23 ][0 0.80 ][0 -1.63 ][0 3.05 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-0.23 0 ][0.80 0 ][-1.63 0 ][3.05 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 3.05 ][0 -1.63 ][0 0.80 ][0 -0.23 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-0.23 0 ][0.80 0 ][-1.63 0 ][3.05 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -0.23 ][0 0.80 ][0 -1.63 ][0 3.05 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [6.11 0 ][-3.25 0 ][1.60 0 ][-0.46 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 6.11 ][0 -3.25 ][0 1.60 ][0 -0.46 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][6.11 0 ][-3.25 0 ][1.60 0 ][-0.46 0 ][0 -0.46 ][0 1.60 ][0 -3.25 ][0 6.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-0.46 0 ][1.60 0 ][-3.25 0 ][6.11 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 6.11 ][0 -3.25 ][0 1.60 ][0 -0.46 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-0.46 0 ][1.60 0 ][-3.25 0 ][6.11 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -0.46 ][0 1.60 ][0 -3.25 ][0 6.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [12.21 0 ][-6.51 0 ][3.21 0 ][-0.91 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 12.21 ][0 -6.51 ][0 3.21 ][0 -0.91 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][12.21 0 ][-6.51 0 ][3.21 0 ][-0.91 0 ][0 -0.91 ][0 3.21 ][0 -6.51 ][0 12.21 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-0.91 0 ][3.21 0 ][-6.51 0 ][12.21 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 12.21 ][0 -6.51 ][0 3.21 ][0 -0.91 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-0.91 0 ][3.21 0 ][-6.51 0 ][12.21 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -0.91 ][0 3.21 ][0 -6.51 ][0 12.21 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [24.43 0 ][-13.02 0 ][6.41 0 ][-1.82 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 24.43 ][0 -13.02 ][0 6.41 ][0 -1.82 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][24.43 0 ][-13.02 0 ][6.41 0 ][-1.82 0 ][0 -1.82 ][0 6.41 ][0 -13.02 ][0 24.43 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-1.82 0 ][6.41 0 ][-13.02 0 ][24.43 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 24.43 ][0 -13.02 ][0 6.41 ][0 -1.82 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-1.82 0 ][6.41 0 ][-13.02 0 ][24.43 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -1.82 ][0 6.41 ][0 -13.02 ][0 24.43 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [48.86 0 ][-26.04 0 ][12.82 0 ][-3.65 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 48.86 ][0 -26.04 ][0 12.82 ][0 -3.65 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][48.86 0 ][-26.04 0 ][12.82 0 ][-3.65 0 ][0 -3.65 ][0 12.82 ][0 -26.04 ][0 48.86 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-3.65 0 ][12.82 0 ][-26.04 0 ][48.86 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 48.86 ][0 -26.04 ][0 12.82 ][0 -3.65 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-3.65 0 ][12.82 0 ][-26.04 0 ][48.86 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -3.65 ][0 12.82 ][0 -26.04 ][0 48.86 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [97.71 0 ][-52.07 0 ][25.65 0 ][-7.29 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 97.71 ][0 -52.07 ][0 25.65 ][0 -7.29 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][0 0 ][0 0 ][0 0 ][97.71 0 ][-52.07 0 ][25.65 0 ][-7.29 0 ][0 -7.29 ][0 25.65 ][0 -52.07 ][0 97.71 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 2: [-7.29 0 ][25.65 0 ][-52.07 0 ][97.71 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 97.71 ][0 -52.07 ][0 25.65 ][0 -7.29 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 3: [0 0 ][0 0 ][0 0 ][0 0 ][-7.29 0 ][25.65 0 ][-52.07 0 ][97.71 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 -7.29 ][0 25.65 ][0 -52.07 ][0 97.71 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
diff --git a/tests/fe/bdm_11.cc b/tests/fe/bdm_11.cc
new file mode 100644 (file)
index 0000000..ba3d774
--- /dev/null
@@ -0,0 +1,109 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Observe how the values of the shape functions change as we make a
+// cell smaller and smaller. Evaluate the values with FEFaceValues, to
+// make sure the values scale as in rt_10 where we used FEValues
+//
+// the test used to fail because of the issue with computing the
+// normals using FEFaceValue, where FEFaceValue by accident uses the
+// *face* mapping, not the *cell* mapping to compute the Piola
+// transform (leading to a missing power of h in the determinant)
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+
+  deallog << "Degree=" << degree
+          << std::endl;
+
+  for (double h=1; h>1./128; h/=2)
+    {
+      deallog << "  h=" << h
+              << std::endl;
+
+      Triangulation<dim> tr;
+      GridGenerator::hyper_cube(tr, 0., h);
+
+      DoFHandler<dim> dof(tr);
+      dof.distribute_dofs(fe_rt);
+
+      QTrapez<dim-1> quadrature;
+
+      FEFaceValues<dim> fe_values (fe_rt, quadrature, update_values);
+      fe_values.reinit (dof.begin_active(), 0);
+      for (unsigned int q=0; q<quadrature.size(); ++q)
+        {
+          deallog << "    Quadrature point " << q << ": ";
+          for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+            {
+              deallog << '[';
+              for (unsigned int c=0; c<fe_rt.n_components(); ++c)
+                deallog << fe_values.shape_value_component(i,q,c) << ' ';
+              deallog << ']';
+            }
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_11.output b/tests/fe/bdm_11.output
new file mode 100644 (file)
index 0000000..68667e5
--- /dev/null
@@ -0,0 +1,67 @@
+
+DEAL::Degree=1
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.37 0 ][-0.37 0 ][0 0 ][0 0 ][0 1.37 ][0 -0.37 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.37 0 ][1.37 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.37 ][0 -0.37 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [2.73 0 ][-0.73 0 ][0 0 ][0 0 ][0 2.73 ][0 -0.73 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.73 0 ][2.73 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 2.73 ][0 -0.73 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [5.46 0 ][-1.46 0 ][0 0 ][0 0 ][0 5.46 ][0 -1.46 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-1.46 0 ][5.46 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 5.46 ][0 -1.46 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [10.93 0 ][-2.93 0 ][0 0 ][0 0 ][0 10.93 ][0 -2.93 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-2.93 0 ][10.93 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 10.93 ][0 -2.93 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [21.86 0 ][-5.86 0 ][0 0 ][0 0 ][0 21.86 ][0 -5.86 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-5.86 0 ][21.86 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 21.86 ][0 -5.86 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [43.71 0 ][-11.71 0 ][0 0 ][0 0 ][0 43.71 ][0 -11.71 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-11.71 0 ][43.71 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 43.71 ][0 -11.71 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [87.43 0 ][-23.43 0 ][0 0 ][0 0 ][0 87.43 ][0 -23.43 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-23.43 0 ][87.43 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 87.43 ][0 -23.43 ]
+DEAL::Degree=2
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.48 0 ][-0.67 0 ][0.19 0 ][0 0 ][0 0 ][0 0 ][0 1.48 ][0 -0.67 ][0 0.19 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0.19 0 ][-0.67 0 ][1.48 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.48 ][0 -0.67 ][0 0.19 ][0 0 ][0 0 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [2.96 0 ][-1.33 0 ][0.38 0 ][0 0 ][0 0 ][0 0 ][0 2.96 ][0 -1.33 ][0 0.38 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0.38 0 ][-1.33 0 ][2.96 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 2.96 ][0 -1.33 ][0 0.38 ][0 0 ][0 0 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [5.92 0 ][-2.67 0 ][0.75 0 ][0 0 ][0 0 ][0 0 ][0 5.92 ][0 -2.67 ][0 0.75 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0.75 0 ][-2.67 0 ][5.92 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 5.92 ][0 -2.67 ][0 0.75 ][0 0 ][0 0 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [11.83 0 ][-5.33 0 ][1.50 0 ][0 0 ][0 0 ][0 0 ][0 11.83 ][0 -5.33 ][0 1.50 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [1.50 0 ][-5.33 0 ][11.83 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 11.83 ][0 -5.33 ][0 1.50 ][0 0 ][0 0 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [23.66 0 ][-10.67 0 ][3.01 0 ][0 0 ][0 0 ][0 0 ][0 23.66 ][0 -10.67 ][0 3.01 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [3.01 0 ][-10.67 0 ][23.66 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 23.66 ][0 -10.67 ][0 3.01 ][0 0 ][0 0 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [47.32 0 ][-21.33 0 ][6.01 0 ][0 0 ][0 0 ][0 0 ][0 47.32 ][0 -21.33 ][0 6.01 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [6.01 0 ][-21.33 0 ][47.32 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 47.32 ][0 -21.33 ][0 6.01 ][0 0 ][0 0 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [94.65 0 ][-42.67 0 ][12.02 0 ][0 0 ][0 0 ][0 0 ][0 94.65 ][0 -42.67 ][0 12.02 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [12.02 0 ][-42.67 0 ][94.65 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 94.65 ][0 -42.67 ][0 12.02 ][0 0 ][0 0 ]
+DEAL::Degree=3
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.53 0 ][-0.81 0 ][0.40 0 ][-0.11 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.53 ][0 -0.81 ][0 0.40 ][0 -0.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.11 0 ][0.40 0 ][-0.81 0 ][1.53 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.53 ][0 -0.81 ][0 0.40 ][0 -0.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [3.05 0 ][-1.63 0 ][0.80 0 ][-0.23 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 3.05 ][0 -1.63 ][0 0.80 ][0 -0.23 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.23 0 ][0.80 0 ][-1.63 0 ][3.05 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 3.05 ][0 -1.63 ][0 0.80 ][0 -0.23 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [6.11 0 ][-3.25 0 ][1.60 0 ][-0.46 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 6.11 ][0 -3.25 ][0 1.60 ][0 -0.46 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.46 0 ][1.60 0 ][-3.25 0 ][6.11 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 6.11 ][0 -3.25 ][0 1.60 ][0 -0.46 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [12.21 0 ][-6.51 0 ][3.21 0 ][-0.91 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 12.21 ][0 -6.51 ][0 3.21 ][0 -0.91 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.91 0 ][3.21 0 ][-6.51 0 ][12.21 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 12.21 ][0 -6.51 ][0 3.21 ][0 -0.91 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [24.43 0 ][-13.02 0 ][6.41 0 ][-1.82 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 24.43 ][0 -13.02 ][0 6.41 ][0 -1.82 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-1.82 0 ][6.41 0 ][-13.02 0 ][24.43 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 24.43 ][0 -13.02 ][0 6.41 ][0 -1.82 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [48.86 0 ][-26.04 0 ][12.82 0 ][-3.65 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 48.86 ][0 -26.04 ][0 12.82 ][0 -3.65 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-3.65 0 ][12.82 0 ][-26.04 0 ][48.86 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 48.86 ][0 -26.04 ][0 12.82 ][0 -3.65 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [97.71 0 ][-52.07 0 ][25.65 0 ][-7.29 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 97.71 ][0 -52.07 ][0 25.65 ][0 -7.29 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-7.29 0 ][25.65 0 ][-52.07 0 ][97.71 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 97.71 ][0 -52.07 ][0 25.65 ][0 -7.29 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
diff --git a/tests/fe/bdm_12.cc b/tests/fe/bdm_12.cc
new file mode 100644 (file)
index 0000000..59d36b1
--- /dev/null
@@ -0,0 +1,102 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Like rt_10, but check gradients instead of values
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+
+  deallog << "Degree=" << degree
+          << std::endl;
+
+  for (double h=1; h>1./128; h/=2)
+    {
+      deallog << "  h=" << h
+              << std::endl;
+
+      Triangulation<dim> tr;
+      GridGenerator::hyper_cube(tr, 0., h);
+
+      DoFHandler<dim> dof(tr);
+      dof.distribute_dofs(fe_rt);
+
+      QTrapez<dim> quadrature;
+
+      FEValues<dim> fe_values (fe_rt, quadrature, update_gradients);
+      fe_values.reinit (dof.begin_active());
+      for (unsigned int q=0; q<quadrature.size(); ++q)
+        {
+          deallog << "    Quadrature point " << q << ": ";
+          for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+            {
+              deallog << '[';
+              for (unsigned int c=0; c<fe_rt.n_components(); ++c)
+                deallog << fe_values.shape_grad_component(i,q,c) << ' ';
+              deallog << ']';
+            }
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_12.output b/tests/fe/bdm_12.output
new file mode 100644 (file)
index 0000000..4d3e379
--- /dev/null
@@ -0,0 +1,109 @@
+
+DEAL::Degree=1
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-1.37 -1.73 0.00 0.87 ][0.37 1.73 0.00 -0.87 ][1.37 0.00 0.00 -0.87 ][-0.37 0.00 0.00 0.87 ][0.87 0.00 -1.73 -1.37 ][-0.87 0.00 1.73 0.37 ][-0.87 0.00 0.00 1.37 ][0.87 0.00 0.00 -0.37 ]
+DEAL::    Quadrature point 1: [-1.37 0.00 0.00 0.87 ][0.37 0.00 0.00 -0.87 ][1.37 -1.73 0.00 -0.87 ][-0.37 1.73 0.00 0.87 ][-0.87 0.00 -1.73 0.37 ][0.87 0.00 1.73 -1.37 ][0.87 0.00 0.00 -0.37 ][-0.87 0.00 0.00 1.37 ]
+DEAL::    Quadrature point 2: [0.37 -1.73 0.00 -0.87 ][-1.37 1.73 0.00 0.87 ][-0.37 0.00 0.00 0.87 ][1.37 0.00 0.00 -0.87 ][0.87 0.00 0.00 -1.37 ][-0.87 0.00 0.00 0.37 ][-0.87 0.00 -1.73 1.37 ][0.87 0.00 1.73 -0.37 ]
+DEAL::    Quadrature point 3: [0.37 0.00 0.00 -0.87 ][-1.37 0.00 0.00 0.87 ][-0.37 -1.73 0.00 0.87 ][1.37 1.73 0.00 -0.87 ][-0.87 0.00 0.00 0.37 ][0.87 0.00 0.00 -1.37 ][0.87 0.00 -1.73 -0.37 ][-0.87 0.00 1.73 1.37 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-5.46 -6.93 0.00 3.46 ][1.46 6.93 0.00 -3.46 ][5.46 0.00 0.00 -3.46 ][-1.46 0.00 0.00 3.46 ][3.46 0.00 -6.93 -5.46 ][-3.46 0.00 6.93 1.46 ][-3.46 0.00 0.00 5.46 ][3.46 0.00 0.00 -1.46 ]
+DEAL::    Quadrature point 1: [-5.46 0.00 0.00 3.46 ][1.46 0.00 0.00 -3.46 ][5.46 -6.93 0.00 -3.46 ][-1.46 6.93 0.00 3.46 ][-3.46 0.00 -6.93 1.46 ][3.46 0.00 6.93 -5.46 ][3.46 0.00 0.00 -1.46 ][-3.46 0.00 0.00 5.46 ]
+DEAL::    Quadrature point 2: [1.46 -6.93 0.00 -3.46 ][-5.46 6.93 0.00 3.46 ][-1.46 0.00 0.00 3.46 ][5.46 0.00 0.00 -3.46 ][3.46 0.00 0.00 -5.46 ][-3.46 0.00 0.00 1.46 ][-3.46 0.00 -6.93 5.46 ][3.46 0.00 6.93 -1.46 ]
+DEAL::    Quadrature point 3: [1.46 0.00 0.00 -3.46 ][-5.46 0.00 0.00 3.46 ][-1.46 -6.93 0.00 3.46 ][5.46 6.93 0.00 -3.46 ][-3.46 0.00 0.00 1.46 ][3.46 0.00 0.00 -5.46 ][3.46 0.00 -6.93 -1.46 ][-3.46 0.00 6.93 5.46 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-21.86 -27.71 0.00 13.86 ][5.86 27.71 0.00 -13.86 ][21.86 0.00 0.00 -13.86 ][-5.86 0.00 0.00 13.86 ][13.86 0.00 -27.71 -21.86 ][-13.86 0.00 27.71 5.86 ][-13.86 0.00 0.00 21.86 ][13.86 0.00 0.00 -5.86 ]
+DEAL::    Quadrature point 1: [-21.86 0.00 0.00 13.86 ][5.86 0.00 0.00 -13.86 ][21.86 -27.71 0.00 -13.86 ][-5.86 27.71 0.00 13.86 ][-13.86 0.00 -27.71 5.86 ][13.86 0.00 27.71 -21.86 ][13.86 0.00 0.00 -5.86 ][-13.86 0.00 0.00 21.86 ]
+DEAL::    Quadrature point 2: [5.86 -27.71 0.00 -13.86 ][-21.86 27.71 0.00 13.86 ][-5.86 0.00 0.00 13.86 ][21.86 0.00 0.00 -13.86 ][13.86 0.00 0.00 -21.86 ][-13.86 0.00 0.00 5.86 ][-13.86 0.00 -27.71 21.86 ][13.86 0.00 27.71 -5.86 ]
+DEAL::    Quadrature point 3: [5.86 0.00 0.00 -13.86 ][-21.86 0.00 0.00 13.86 ][-5.86 -27.71 0.00 13.86 ][21.86 27.71 0.00 -13.86 ][-13.86 0.00 0.00 5.86 ][13.86 0.00 0.00 -21.86 ][13.86 0.00 -27.71 -5.86 ][-13.86 0.00 27.71 21.86 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-87.43 -110.85 0.00 55.43 ][23.43 110.85 0.00 -55.43 ][87.43 0.00 0.00 -55.43 ][-23.43 0.00 0.00 55.43 ][55.43 0.00 -110.85 -87.43 ][-55.43 0.00 110.85 23.43 ][-55.43 0.00 0.00 87.43 ][55.43 0.00 0.00 -23.43 ]
+DEAL::    Quadrature point 1: [-87.43 0.00 0.00 55.43 ][23.43 0.00 0.00 -55.43 ][87.43 -110.85 0.00 -55.43 ][-23.43 110.85 0.00 55.43 ][-55.43 0.00 -110.85 23.43 ][55.43 0.00 110.85 -87.43 ][55.43 0.00 0.00 -23.43 ][-55.43 0.00 0.00 87.43 ]
+DEAL::    Quadrature point 2: [23.43 -110.85 0.00 -55.43 ][-87.43 110.85 0.00 55.43 ][-23.43 0.00 0.00 55.43 ][87.43 0.00 0.00 -55.43 ][55.43 0.00 0.00 -87.43 ][-55.43 0.00 0.00 23.43 ][-55.43 0.00 -110.85 87.43 ][55.43 0.00 110.85 -23.43 ]
+DEAL::    Quadrature point 3: [23.43 0.00 0.00 -55.43 ][-87.43 0.00 0.00 55.43 ][-23.43 -110.85 0.00 55.43 ][87.43 110.85 0.00 -55.43 ][-55.43 0.00 0.00 23.43 ][55.43 0.00 0.00 -87.43 ][55.43 0.00 -110.85 -23.43 ][-55.43 0.00 110.85 87.43 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-349.70 -443.41 0.00 221.70 ][93.70 443.41 0.00 -221.70 ][349.70 0.00 0.00 -221.70 ][-93.70 0.00 0.00 221.70 ][221.70 0.00 -443.41 -349.70 ][-221.70 0.00 443.41 93.70 ][-221.70 0.00 0.00 349.70 ][221.70 0.00 0.00 -93.70 ]
+DEAL::    Quadrature point 1: [-349.70 0.00 0.00 221.70 ][93.70 0.00 0.00 -221.70 ][349.70 -443.41 0.00 -221.70 ][-93.70 443.41 0.00 221.70 ][-221.70 0.00 -443.41 93.70 ][221.70 0.00 443.41 -349.70 ][221.70 0.00 0.00 -93.70 ][-221.70 0.00 0.00 349.70 ]
+DEAL::    Quadrature point 2: [93.70 -443.41 0.00 -221.70 ][-349.70 443.41 0.00 221.70 ][-93.70 0.00 0.00 221.70 ][349.70 0.00 0.00 -221.70 ][221.70 0.00 0.00 -349.70 ][-221.70 0.00 0.00 93.70 ][-221.70 0.00 -443.41 349.70 ][221.70 0.00 443.41 -93.70 ]
+DEAL::    Quadrature point 3: [93.70 0.00 0.00 -221.70 ][-349.70 0.00 0.00 221.70 ][-93.70 -443.41 0.00 221.70 ][349.70 443.41 0.00 -221.70 ][-221.70 0.00 0.00 93.70 ][221.70 0.00 0.00 -349.70 ][221.70 0.00 -443.41 -93.70 ][-221.70 0.00 443.41 349.70 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-1398.81 -1773.62 0.00 886.81 ][374.81 1773.62 0.00 -886.81 ][1398.81 0.00 0.00 -886.81 ][-374.81 0.00 0.00 886.81 ][886.81 0.00 -1773.62 -1398.81 ][-886.81 0.00 1773.62 374.81 ][-886.81 0.00 0.00 1398.81 ][886.81 0.00 0.00 -374.81 ]
+DEAL::    Quadrature point 1: [-1398.81 0.00 0.00 886.81 ][374.81 0.00 0.00 -886.81 ][1398.81 -1773.62 0.00 -886.81 ][-374.81 1773.62 0.00 886.81 ][-886.81 0.00 -1773.62 374.81 ][886.81 0.00 1773.62 -1398.81 ][886.81 0.00 0.00 -374.81 ][-886.81 0.00 0.00 1398.81 ]
+DEAL::    Quadrature point 2: [374.81 -1773.62 0.00 -886.81 ][-1398.81 1773.62 0.00 886.81 ][-374.81 0.00 0.00 886.81 ][1398.81 0.00 0.00 -886.81 ][886.81 0.00 0.00 -1398.81 ][-886.81 0.00 0.00 374.81 ][-886.81 0.00 -1773.62 1398.81 ][886.81 0.00 1773.62 -374.81 ]
+DEAL::    Quadrature point 3: [374.81 0.00 0.00 -886.81 ][-1398.81 0.00 0.00 886.81 ][-374.81 -1773.62 0.00 886.81 ][1398.81 1773.62 0.00 -886.81 ][-886.81 0.00 0.00 374.81 ][886.81 0.00 0.00 -1398.81 ][886.81 0.00 -1773.62 -374.81 ][-886.81 0.00 1773.62 1398.81 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-5595.24 -7094.48 0.00 3547.24 ][1499.24 7094.48 0.00 -3547.24 ][5595.24 0.00 0.00 -3547.24 ][-1499.24 0.00 0.00 3547.24 ][3547.24 0.00 -7094.48 -5595.24 ][-3547.24 0.00 7094.48 1499.24 ][-3547.24 0.00 0.00 5595.24 ][3547.24 0.00 0.00 -1499.24 ]
+DEAL::    Quadrature point 1: [-5595.24 0.00 0.00 3547.24 ][1499.24 0.00 0.00 -3547.24 ][5595.24 -7094.48 0.00 -3547.24 ][-1499.24 7094.48 0.00 3547.24 ][-3547.24 0.00 -7094.48 1499.24 ][3547.24 0.00 7094.48 -5595.24 ][3547.24 0.00 0.00 -1499.24 ][-3547.24 0.00 0.00 5595.24 ]
+DEAL::    Quadrature point 2: [1499.24 -7094.48 0.00 -3547.24 ][-5595.24 7094.48 0.00 3547.24 ][-1499.24 0.00 0.00 3547.24 ][5595.24 0.00 0.00 -3547.24 ][3547.24 0.00 0.00 -5595.24 ][-3547.24 0.00 0.00 1499.24 ][-3547.24 0.00 -7094.48 5595.24 ][3547.24 0.00 7094.48 -1499.24 ]
+DEAL::    Quadrature point 3: [1499.24 0.00 0.00 -3547.24 ][-5595.24 0.00 0.00 3547.24 ][-1499.24 -7094.48 0.00 3547.24 ][5595.24 7094.48 0.00 -3547.24 ][-3547.24 0.00 0.00 1499.24 ][3547.24 0.00 0.00 -5595.24 ][3547.24 0.00 -7094.48 -1499.24 ][-3547.24 0.00 7094.48 5595.24 ]
+DEAL::Degree=2
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-2.31 -4.62 0.00 0.56 ][-0.67 6.67 0.00 -1.11 ][-1.02 -2.04 0.00 0.56 ][0.65 0.00 0.00 -0.56 ][-2.00 0.00 0.00 1.11 ][-0.65 0.00 0.00 -0.56 ][0.56 0.00 -4.62 -2.31 ][-1.11 0.00 6.67 -0.67 ][0.56 0.00 -2.04 -1.02 ][-0.56 0.00 0.00 0.65 ][1.11 0.00 0.00 -2.00 ][-0.56 0.00 0.00 -0.65 ][6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6.00 ]
+DEAL::    Quadrature point 1: [-0.65 0.00 0.00 0.56 ][2.00 0.00 0.00 -1.11 ][0.65 0.00 0.00 0.56 ][2.31 -4.62 0.00 -0.56 ][0.67 6.67 0.00 1.11 ][1.02 -2.04 0.00 -0.56 ][0.56 0.00 2.04 -1.02 ][-1.11 0.00 -6.67 -0.67 ][0.56 0.00 4.62 -2.31 ][-0.56 0.00 0.00 -0.65 ][1.11 0.00 0.00 -2.00 ][-0.56 0.00 0.00 0.65 ][-6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6.00 ]
+DEAL::    Quadrature point 2: [-1.02 2.04 0.00 0.56 ][-0.67 -6.67 0.00 -1.11 ][-2.31 4.62 0.00 0.56 ][-0.65 0.00 0.00 -0.56 ][-2.00 0.00 0.00 1.11 ][0.65 0.00 0.00 -0.56 ][0.56 0.00 0.00 -0.65 ][-1.11 0.00 0.00 2.00 ][0.56 0.00 0.00 0.65 ][-0.56 0.00 -4.62 2.31 ][1.11 0.00 6.67 0.67 ][-0.56 0.00 -2.04 1.02 ][6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -6.00 ]
+DEAL::    Quadrature point 3: [0.65 0.00 0.00 0.56 ][2.00 0.00 0.00 -1.11 ][-0.65 0.00 0.00 0.56 ][1.02 2.04 0.00 -0.56 ][0.67 -6.67 0.00 1.11 ][2.31 4.62 0.00 -0.56 ][0.56 0.00 0.00 0.65 ][-1.11 0.00 0.00 2.00 ][0.56 0.00 0.00 -0.65 ][-0.56 0.00 2.04 1.02 ][1.11 0.00 -6.67 0.67 ][-0.56 0.00 4.62 2.31 ][-6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -6.00 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-9.25 -18.50 0.00 2.22 ][-2.67 26.67 0.00 -4.44 ][-4.08 -8.17 0.00 2.22 ][2.58 0.00 0.00 -2.22 ][-8.00 0.00 0.00 4.44 ][-2.58 0.00 0.00 -2.22 ][2.22 0.00 -18.50 -9.25 ][-4.44 0.00 26.67 -2.67 ][2.22 0.00 -8.17 -4.08 ][-2.22 0.00 0.00 2.58 ][4.44 0.00 0.00 -8.00 ][-2.22 0.00 0.00 -2.58 ][24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24.00 ]
+DEAL::    Quadrature point 1: [-2.58 0.00 0.00 2.22 ][8.00 0.00 0.00 -4.44 ][2.58 0.00 0.00 2.22 ][9.25 -18.50 0.00 -2.22 ][2.67 26.67 0.00 4.44 ][4.08 -8.17 0.00 -2.22 ][2.22 0.00 8.17 -4.08 ][-4.44 0.00 -26.67 -2.67 ][2.22 0.00 18.50 -9.25 ][-2.22 0.00 0.00 -2.58 ][4.44 0.00 0.00 -8.00 ][-2.22 0.00 0.00 2.58 ][-24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24.00 ]
+DEAL::    Quadrature point 2: [-4.08 8.17 0.00 2.22 ][-2.67 -26.67 0.00 -4.44 ][-9.25 18.50 0.00 2.22 ][-2.58 0.00 0.00 -2.22 ][-8.00 0.00 0.00 4.44 ][2.58 0.00 0.00 -2.22 ][2.22 0.00 0.00 -2.58 ][-4.44 0.00 0.00 8.00 ][2.22 0.00 0.00 2.58 ][-2.22 0.00 -18.50 9.25 ][4.44 0.00 26.67 2.67 ][-2.22 0.00 -8.17 4.08 ][24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -24.00 ]
+DEAL::    Quadrature point 3: [2.58 0.00 0.00 2.22 ][8.00 0.00 0.00 -4.44 ][-2.58 0.00 0.00 2.22 ][4.08 8.17 0.00 -2.22 ][2.67 -26.67 0.00 4.44 ][9.25 18.50 0.00 -2.22 ][2.22 0.00 0.00 2.58 ][-4.44 0.00 0.00 8.00 ][2.22 0.00 0.00 -2.58 ][-2.22 0.00 8.17 4.08 ][4.44 0.00 -26.67 2.67 ][-2.22 0.00 18.50 9.25 ][-24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -24.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-36.99 -73.99 0.00 8.89 ][-10.67 106.67 0.00 -17.78 ][-16.34 -32.68 0.00 8.89 ][10.33 0.00 0.00 -8.89 ][-32.00 0.00 0.00 17.78 ][-10.33 0.00 0.00 -8.89 ][8.89 0.00 -73.99 -36.99 ][-17.78 0.00 106.67 -10.67 ][8.89 0.00 -32.68 -16.34 ][-8.89 0.00 0.00 10.33 ][17.78 0.00 0.00 -32.00 ][-8.89 0.00 0.00 -10.33 ][96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 96.00 ]
+DEAL::    Quadrature point 1: [-10.33 0.00 0.00 8.89 ][32.00 0.00 0.00 -17.78 ][10.33 0.00 0.00 8.89 ][36.99 -73.99 0.00 -8.89 ][10.67 106.67 0.00 17.78 ][16.34 -32.68 0.00 -8.89 ][8.89 0.00 32.68 -16.34 ][-17.78 0.00 -106.67 -10.67 ][8.89 0.00 73.99 -36.99 ][-8.89 0.00 0.00 -10.33 ][17.78 0.00 0.00 -32.00 ][-8.89 0.00 0.00 10.33 ][-96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 96.00 ]
+DEAL::    Quadrature point 2: [-16.34 32.68 0.00 8.89 ][-10.67 -106.67 0.00 -17.78 ][-36.99 73.99 0.00 8.89 ][-10.33 0.00 0.00 -8.89 ][-32.00 0.00 0.00 17.78 ][10.33 0.00 0.00 -8.89 ][8.89 0.00 0.00 -10.33 ][-17.78 0.00 0.00 32.00 ][8.89 0.00 0.00 10.33 ][-8.89 0.00 -73.99 36.99 ][17.78 0.00 106.67 10.67 ][-8.89 0.00 -32.68 16.34 ][96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -96.00 ]
+DEAL::    Quadrature point 3: [10.33 0.00 0.00 8.89 ][32.00 0.00 0.00 -17.78 ][-10.33 0.00 0.00 8.89 ][16.34 32.68 0.00 -8.89 ][10.67 -106.67 0.00 17.78 ][36.99 73.99 0.00 -8.89 ][8.89 0.00 0.00 10.33 ][-17.78 0.00 0.00 32.00 ][8.89 0.00 0.00 -10.33 ][-8.89 0.00 32.68 16.34 ][17.78 0.00 -106.67 10.67 ][-8.89 0.00 73.99 36.99 ][-96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -96.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-147.98 -295.96 0.00 35.56 ][-42.67 426.67 0.00 -71.11 ][-65.35 -130.71 0.00 35.56 ][41.31 0.00 0.00 -35.56 ][-128.00 0.00 0.00 71.11 ][-41.31 0.00 0.00 -35.56 ][35.56 0.00 -295.96 -147.98 ][-71.11 0.00 426.67 -42.67 ][35.56 0.00 -130.71 -65.35 ][-35.56 0.00 0.00 41.31 ][71.11 0.00 0.00 -128.00 ][-35.56 0.00 0.00 -41.31 ][384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 384.00 ]
+DEAL::    Quadrature point 1: [-41.31 0.00 0.00 35.56 ][128.00 0.00 0.00 -71.11 ][41.31 0.00 0.00 35.56 ][147.98 -295.96 0.00 -35.56 ][42.67 426.67 0.00 71.11 ][65.35 -130.71 0.00 -35.56 ][35.56 0.00 130.71 -65.35 ][-71.11 0.00 -426.67 -42.67 ][35.56 0.00 295.96 -147.98 ][-35.56 0.00 0.00 -41.31 ][71.11 0.00 0.00 -128.00 ][-35.56 0.00 0.00 41.31 ][-384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 384.00 ]
+DEAL::    Quadrature point 2: [-65.35 130.71 0.00 35.56 ][-42.67 -426.67 0.00 -71.11 ][-147.98 295.96 0.00 35.56 ][-41.31 0.00 0.00 -35.56 ][-128.00 0.00 0.00 71.11 ][41.31 0.00 0.00 -35.56 ][35.56 0.00 0.00 -41.31 ][-71.11 0.00 0.00 128.00 ][35.56 0.00 0.00 41.31 ][-35.56 0.00 -295.96 147.98 ][71.11 0.00 426.67 42.67 ][-35.56 0.00 -130.71 65.35 ][384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -384.00 ]
+DEAL::    Quadrature point 3: [41.31 0.00 0.00 35.56 ][128.00 0.00 0.00 -71.11 ][-41.31 0.00 0.00 35.56 ][65.35 130.71 0.00 -35.56 ][42.67 -426.67 0.00 71.11 ][147.98 295.96 0.00 -35.56 ][35.56 0.00 0.00 41.31 ][-71.11 0.00 0.00 128.00 ][35.56 0.00 0.00 -41.31 ][-35.56 0.00 130.71 65.35 ][71.11 0.00 -426.67 42.67 ][-35.56 0.00 295.96 147.98 ][-384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -384.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-591.91 -1183.83 0.00 142.22 ][-170.67 1706.67 0.00 -284.44 ][-261.42 -522.84 0.00 142.22 ][165.25 0.00 0.00 -142.22 ][-512.00 0.00 0.00 284.44 ][-165.25 0.00 0.00 -142.22 ][142.22 0.00 -1183.83 -591.91 ][-284.44 0.00 1706.67 -170.67 ][142.22 0.00 -522.84 -261.42 ][-142.22 0.00 0.00 165.25 ][284.44 0.00 0.00 -512.00 ][-142.22 0.00 0.00 -165.25 ][1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1536.00 ]
+DEAL::    Quadrature point 1: [-165.25 0.00 0.00 142.22 ][512.00 0.00 0.00 -284.44 ][165.25 0.00 0.00 142.22 ][591.91 -1183.83 0.00 -142.22 ][170.67 1706.67 0.00 284.44 ][261.42 -522.84 0.00 -142.22 ][142.22 0.00 522.84 -261.42 ][-284.44 0.00 -1706.67 -170.67 ][142.22 0.00 1183.83 -591.91 ][-142.22 0.00 0.00 -165.25 ][284.44 0.00 0.00 -512.00 ][-142.22 0.00 0.00 165.25 ][-1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1536.00 ]
+DEAL::    Quadrature point 2: [-261.42 522.84 0.00 142.22 ][-170.67 -1706.67 0.00 -284.44 ][-591.91 1183.83 0.00 142.22 ][-165.25 0.00 0.00 -142.22 ][-512.00 0.00 0.00 284.44 ][165.25 0.00 0.00 -142.22 ][142.22 0.00 0.00 -165.25 ][-284.44 0.00 0.00 512.00 ][142.22 0.00 0.00 165.25 ][-142.22 0.00 -1183.83 591.91 ][284.44 0.00 1706.67 170.67 ][-142.22 0.00 -522.84 261.42 ][1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -1536.00 ]
+DEAL::    Quadrature point 3: [165.25 0.00 0.00 142.22 ][512.00 0.00 0.00 -284.44 ][-165.25 0.00 0.00 142.22 ][261.42 522.84 0.00 -142.22 ][170.67 -1706.67 0.00 284.44 ][591.91 1183.83 0.00 -142.22 ][142.22 0.00 0.00 165.25 ][-284.44 0.00 0.00 512.00 ][142.22 0.00 0.00 -165.25 ][-142.22 0.00 522.84 261.42 ][284.44 0.00 -1706.67 170.67 ][-142.22 0.00 1183.83 591.91 ][-1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -1536.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-2367.66 -4735.31 0.00 568.89 ][-682.67 6826.67 0.00 -1137.78 ][-1045.68 -2091.36 0.00 568.89 ][660.99 0.00 0.00 -568.89 ][-2048.00 0.00 0.00 1137.78 ][-660.99 0.00 0.00 -568.89 ][568.89 0.00 -4735.31 -2367.66 ][-1137.78 0.00 6826.67 -682.67 ][568.89 0.00 -2091.36 -1045.68 ][-568.89 0.00 0.00 660.99 ][1137.78 0.00 0.00 -2048.00 ][-568.89 0.00 0.00 -660.99 ][6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6144.00 ]
+DEAL::    Quadrature point 1: [-660.99 0.00 0.00 568.89 ][2048.00 0.00 0.00 -1137.78 ][660.99 0.00 0.00 568.89 ][2367.66 -4735.31 0.00 -568.89 ][682.67 6826.67 0.00 1137.78 ][1045.68 -2091.36 0.00 -568.89 ][568.89 0.00 2091.36 -1045.68 ][-1137.78 0.00 -6826.67 -682.67 ][568.89 0.00 4735.31 -2367.66 ][-568.89 0.00 0.00 -660.99 ][1137.78 0.00 0.00 -2048.00 ][-568.89 0.00 0.00 660.99 ][-6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6144.00 ]
+DEAL::    Quadrature point 2: [-1045.68 2091.36 0.00 568.89 ][-682.67 -6826.67 0.00 -1137.78 ][-2367.66 4735.31 0.00 568.89 ][-660.99 0.00 0.00 -568.89 ][-2048.00 0.00 0.00 1137.78 ][660.99 0.00 0.00 -568.89 ][568.89 0.00 0.00 -660.99 ][-1137.78 0.00 0.00 2048.00 ][568.89 0.00 0.00 660.99 ][-568.89 0.00 -4735.31 2367.66 ][1137.78 0.00 6826.67 682.67 ][-568.89 0.00 -2091.36 1045.68 ][6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -6144.00 ]
+DEAL::    Quadrature point 3: [660.99 0.00 0.00 568.89 ][2048.00 0.00 0.00 -1137.78 ][-660.99 0.00 0.00 568.89 ][1045.68 2091.36 0.00 -568.89 ][682.67 -6826.67 0.00 1137.78 ][2367.66 4735.31 0.00 -568.89 ][568.89 0.00 0.00 660.99 ][-1137.78 0.00 0.00 2048.00 ][568.89 0.00 0.00 -660.99 ][-568.89 0.00 2091.36 1045.68 ][1137.78 0.00 -6826.67 682.67 ][-568.89 0.00 4735.31 2367.66 ][-6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -6144.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-9470.62 -18941.25 0.00 2275.56 ][-2730.67 27306.67 0.00 -4551.11 ][-4182.71 -8365.42 0.00 2275.56 ][2643.96 0.00 0.00 -2275.56 ][-8192.00 0.00 0.00 4551.11 ][-2643.96 0.00 0.00 -2275.56 ][2275.56 0.00 -18941.25 -9470.62 ][-4551.11 0.00 27306.67 -2730.67 ][2275.56 0.00 -8365.42 -4182.71 ][-2275.56 0.00 0.00 2643.96 ][4551.11 0.00 0.00 -8192.00 ][-2275.56 0.00 0.00 -2643.96 ][24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24576.00 ]
+DEAL::    Quadrature point 1: [-2643.96 0.00 0.00 2275.56 ][8192.00 0.00 0.00 -4551.11 ][2643.96 0.00 0.00 2275.56 ][9470.62 -18941.25 0.00 -2275.56 ][2730.67 27306.67 0.00 4551.11 ][4182.71 -8365.42 0.00 -2275.56 ][2275.56 0.00 8365.42 -4182.71 ][-4551.11 0.00 -27306.67 -2730.67 ][2275.56 0.00 18941.25 -9470.62 ][-2275.56 0.00 0.00 -2643.96 ][4551.11 0.00 0.00 -8192.00 ][-2275.56 0.00 0.00 2643.96 ][-24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24576.00 ]
+DEAL::    Quadrature point 2: [-4182.71 8365.42 0.00 2275.56 ][-2730.67 -27306.67 0.00 -4551.11 ][-9470.62 18941.25 0.00 2275.56 ][-2643.96 0.00 0.00 -2275.56 ][-8192.00 0.00 0.00 4551.11 ][2643.96 0.00 0.00 -2275.56 ][2275.56 0.00 0.00 -2643.96 ][-4551.11 0.00 0.00 8192.00 ][2275.56 0.00 0.00 2643.96 ][-2275.56 0.00 -18941.25 9470.62 ][4551.11 0.00 27306.67 2730.67 ][-2275.56 0.00 -8365.42 4182.71 ][24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -24576.00 ]
+DEAL::    Quadrature point 3: [2643.96 0.00 0.00 2275.56 ][8192.00 0.00 0.00 -4551.11 ][-2643.96 0.00 0.00 2275.56 ][4182.71 8365.42 0.00 -2275.56 ][2730.67 -27306.67 0.00 4551.11 ][9470.62 18941.25 0.00 -2275.56 ][2275.56 0.00 0.00 2643.96 ][-4551.11 0.00 0.00 8192.00 ][2275.56 0.00 0.00 -2643.96 ][-2275.56 0.00 8365.42 4182.71 ][4551.11 0.00 -27306.67 2730.67 ][-2275.56 0.00 18941.25 9470.62 ][-24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -24576.00 ]
+DEAL::Degree=3
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-4.27 -8.55 0.00 0.37 ][-2.79 13.81 0.00 -0.94 ][-2.01 -7.42 0.00 0.94 ][0.07 2.16 0.00 -0.37 ][0.53 0.00 0.00 -0.37 ][-1.16 0.00 0.00 0.94 ][2.05 0.00 0.00 -0.94 ][1.58 0.00 0.00 0.37 ][0.37 0.00 -8.55 -4.27 ][-0.94 0.00 13.81 -2.79 ][0.94 0.00 -7.42 -2.01 ][-0.37 0.00 2.16 0.07 ][-0.37 0.00 0.00 0.53 ][0.94 0.00 0.00 -1.16 ][-0.94 0.00 0.00 2.05 ][0.37 0.00 0.00 1.58 ][54.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][-36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 54.00 ][0.00 0.00 0.00 -36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::    Quadrature point 1: [-0.53 0.00 0.00 0.37 ][1.16 0.00 0.00 -0.94 ][-2.05 0.00 0.00 0.94 ][-1.58 0.00 0.00 -0.37 ][4.27 -8.55 0.00 -0.37 ][2.79 13.81 0.00 0.94 ][2.01 -7.42 0.00 -0.94 ][-0.07 2.16 0.00 0.37 ][-0.37 0.00 -2.16 0.07 ][0.94 0.00 7.42 -2.01 ][-0.94 0.00 -13.81 -2.79 ][0.37 0.00 8.55 -4.27 ][0.37 0.00 0.00 1.58 ][-0.94 0.00 0.00 2.05 ][0.94 0.00 0.00 -1.16 ][-0.37 0.00 0.00 0.53 ][6.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 18.00 ][0.00 0.00 0.00 36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::    Quadrature point 2: [0.07 -2.16 0.00 -0.37 ][-2.01 7.42 0.00 0.94 ][-2.79 -13.81 0.00 -0.94 ][-4.27 8.55 0.00 0.37 ][1.58 0.00 0.00 0.37 ][2.05 0.00 0.00 -0.94 ][-1.16 0.00 0.00 0.94 ][0.53 0.00 0.00 -0.37 ][0.37 0.00 0.00 -0.53 ][-0.94 0.00 0.00 1.16 ][0.94 0.00 0.00 -2.05 ][-0.37 0.00 0.00 -1.58 ][-0.37 0.00 -8.55 4.27 ][0.94 0.00 13.81 2.79 ][-0.94 0.00 -7.42 2.01 ][0.37 0.00 2.16 -0.07 ][18.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6.00 ][0.00 0.00 0.00 36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::    Quadrature point 3: [-1.58 0.00 0.00 -0.37 ][-2.05 0.00 0.00 0.94 ][1.16 0.00 0.00 -0.94 ][-0.53 0.00 0.00 0.37 ][-0.07 -2.16 0.00 0.37 ][2.01 7.42 0.00 -0.94 ][2.79 -13.81 0.00 0.94 ][4.27 8.55 0.00 -0.37 ][-0.37 0.00 0.00 -1.58 ][0.94 0.00 0.00 -2.05 ][-0.94 0.00 0.00 1.16 ][0.37 0.00 0.00 -0.53 ][0.37 0.00 -2.16 -0.07 ][-0.94 0.00 7.42 2.01 ][0.94 0.00 -13.81 2.79 ][-0.37 0.00 8.55 4.27 ][42.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][-36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 42.00 ][0.00 0.00 0.00 -36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-17.06 -34.18 0.00 1.48 ][-11.17 55.23 0.00 -3.76 ][-8.05 -29.67 0.00 3.76 ][0.28 8.62 0.00 -1.48 ][2.11 0.00 0.00 -1.48 ][-4.64 0.00 0.00 3.76 ][8.20 0.00 0.00 -3.76 ][6.33 0.00 0.00 1.48 ][1.48 0.00 -34.18 -17.06 ][-3.76 0.00 55.23 -11.17 ][3.76 0.00 -29.67 -8.05 ][-1.48 0.00 8.62 0.28 ][-1.48 0.00 0.00 2.11 ][3.76 0.00 0.00 -4.64 ][-3.76 0.00 0.00 8.20 ][1.48 0.00 0.00 6.33 ][216.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][-144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 216.00 ][0.00 0.00 0.00 -144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::    Quadrature point 1: [-2.11 0.00 0.00 1.48 ][4.64 0.00 0.00 -3.76 ][-8.20 0.00 0.00 3.76 ][-6.33 0.00 0.00 -1.48 ][17.06 -34.18 0.00 -1.48 ][11.17 55.23 0.00 3.76 ][8.05 -29.67 0.00 -3.76 ][-0.28 8.62 0.00 1.48 ][-1.48 0.00 -8.62 0.28 ][3.76 0.00 29.67 -8.05 ][-3.76 0.00 -55.23 -11.17 ][1.48 0.00 34.18 -17.06 ][1.48 0.00 0.00 6.33 ][-3.76 0.00 0.00 8.20 ][3.76 0.00 0.00 -4.64 ][-1.48 0.00 0.00 2.11 ][24.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 72.00 ][0.00 0.00 0.00 144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::    Quadrature point 2: [0.28 -8.62 0.00 -1.48 ][-8.05 29.67 0.00 3.76 ][-11.17 -55.23 0.00 -3.76 ][-17.06 34.18 0.00 1.48 ][6.33 0.00 0.00 1.48 ][8.20 0.00 0.00 -3.76 ][-4.64 0.00 0.00 3.76 ][2.11 0.00 0.00 -1.48 ][1.48 0.00 0.00 -2.11 ][-3.76 0.00 0.00 4.64 ][3.76 0.00 0.00 -8.20 ][-1.48 0.00 0.00 -6.33 ][-1.48 0.00 -34.18 17.06 ][3.76 0.00 55.23 11.17 ][-3.76 0.00 -29.67 8.05 ][1.48 0.00 8.62 -0.28 ][72.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24.00 ][0.00 0.00 0.00 144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::    Quadrature point 3: [-6.33 0.00 0.00 -1.48 ][-8.20 0.00 0.00 3.76 ][4.64 0.00 0.00 -3.76 ][-2.11 0.00 0.00 1.48 ][-0.28 -8.62 0.00 1.48 ][8.05 29.67 0.00 -3.76 ][11.17 -55.23 0.00 3.76 ][17.06 34.18 0.00 -1.48 ][-1.48 0.00 0.00 -6.33 ][3.76 0.00 0.00 -8.20 ][-3.76 0.00 0.00 4.64 ][1.48 0.00 0.00 -2.11 ][1.48 0.00 -8.62 -0.28 ][-3.76 0.00 29.67 8.05 ][3.76 0.00 -55.23 11.17 ][-1.48 0.00 34.18 17.06 ][168.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][-144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 168.00 ][0.00 0.00 0.00 -144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-68.26 -136.74 0.00 5.94 ][-44.68 220.91 0.00 -15.04 ][-32.19 -118.67 0.00 15.04 ][1.13 34.49 0.00 -5.94 ][8.43 0.00 0.00 -5.94 ][-18.55 0.00 0.00 15.04 ][32.81 0.00 0.00 -15.04 ][25.31 0.00 0.00 5.94 ][5.94 0.00 -136.74 -68.26 ][-15.04 0.00 220.91 -44.68 ][15.04 0.00 -118.67 -32.19 ][-5.94 0.00 34.49 1.13 ][-5.94 0.00 0.00 8.43 ][15.04 0.00 0.00 -18.55 ][-15.04 0.00 0.00 32.81 ][5.94 0.00 0.00 25.31 ][864.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][-576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 864.00 ][0.00 0.00 0.00 -576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::    Quadrature point 1: [-8.43 0.00 0.00 5.94 ][18.55 0.00 0.00 -15.04 ][-32.81 0.00 0.00 15.04 ][-25.31 0.00 0.00 -5.94 ][68.26 -136.74 0.00 -5.94 ][44.68 220.91 0.00 15.04 ][32.19 -118.67 0.00 -15.04 ][-1.13 34.49 0.00 5.94 ][-5.94 0.00 -34.49 1.13 ][15.04 0.00 118.67 -32.19 ][-15.04 0.00 -220.91 -44.68 ][5.94 0.00 136.74 -68.26 ][5.94 0.00 0.00 25.31 ][-15.04 0.00 0.00 32.81 ][15.04 0.00 0.00 -18.55 ][-5.94 0.00 0.00 8.43 ][96.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 288.00 ][0.00 0.00 0.00 576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::    Quadrature point 2: [1.13 -34.49 0.00 -5.94 ][-32.19 118.67 0.00 15.04 ][-44.68 -220.91 0.00 -15.04 ][-68.26 136.74 0.00 5.94 ][25.31 0.00 0.00 5.94 ][32.81 0.00 0.00 -15.04 ][-18.55 0.00 0.00 15.04 ][8.43 0.00 0.00 -5.94 ][5.94 0.00 0.00 -8.43 ][-15.04 0.00 0.00 18.55 ][15.04 0.00 0.00 -32.81 ][-5.94 0.00 0.00 -25.31 ][-5.94 0.00 -136.74 68.26 ][15.04 0.00 220.91 44.68 ][-15.04 0.00 -118.67 32.19 ][5.94 0.00 34.49 -1.13 ][288.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 96.00 ][0.00 0.00 0.00 576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::    Quadrature point 3: [-25.31 0.00 0.00 -5.94 ][-32.81 0.00 0.00 15.04 ][18.55 0.00 0.00 -15.04 ][-8.43 0.00 0.00 5.94 ][-1.13 -34.49 0.00 5.94 ][32.19 118.67 0.00 -15.04 ][44.68 -220.91 0.00 15.04 ][68.26 136.74 0.00 -5.94 ][-5.94 0.00 0.00 -25.31 ][15.04 0.00 0.00 -32.81 ][-15.04 0.00 0.00 18.55 ][5.94 0.00 0.00 -8.43 ][5.94 0.00 -34.49 -1.13 ][-15.04 0.00 118.67 32.19 ][15.04 0.00 -220.91 44.68 ][-5.94 0.00 136.74 68.26 ][672.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][-576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 672.00 ][0.00 0.00 0.00 -576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-273.04 -546.95 0.00 23.75 ][-178.73 883.66 0.00 -60.15 ][-128.74 -474.69 0.00 60.15 ][4.51 137.98 0.00 -23.75 ][33.71 0.00 0.00 -23.75 ][-74.19 0.00 0.00 60.15 ][131.24 0.00 0.00 -60.15 ][101.24 0.00 0.00 23.75 ][23.75 0.00 -546.95 -273.04 ][-60.15 0.00 883.66 -178.73 ][60.15 0.00 -474.69 -128.74 ][-23.75 0.00 137.98 4.51 ][-23.75 0.00 0.00 33.71 ][60.15 0.00 0.00 -74.19 ][-60.15 0.00 0.00 131.24 ][23.75 0.00 0.00 101.24 ][3456.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][-2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 3456.00 ][0.00 0.00 0.00 -2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::    Quadrature point 1: [-33.71 0.00 0.00 23.75 ][74.19 0.00 0.00 -60.15 ][-131.24 0.00 0.00 60.15 ][-101.24 0.00 0.00 -23.75 ][273.04 -546.95 0.00 -23.75 ][178.73 883.66 0.00 60.15 ][128.74 -474.69 0.00 -60.15 ][-4.51 137.98 0.00 23.75 ][-23.75 0.00 -137.98 4.51 ][60.15 0.00 474.69 -128.74 ][-60.15 0.00 -883.66 -178.73 ][23.75 0.00 546.95 -273.04 ][23.75 0.00 0.00 101.24 ][-60.15 0.00 0.00 131.24 ][60.15 0.00 0.00 -74.19 ][-23.75 0.00 0.00 33.71 ][384.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1152.00 ][0.00 0.00 0.00 2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::    Quadrature point 2: [4.51 -137.98 0.00 -23.75 ][-128.74 474.69 0.00 60.15 ][-178.73 -883.66 0.00 -60.15 ][-273.04 546.95 0.00 23.75 ][101.24 0.00 0.00 23.75 ][131.24 0.00 0.00 -60.15 ][-74.19 0.00 0.00 60.15 ][33.71 0.00 0.00 -23.75 ][23.75 0.00 0.00 -33.71 ][-60.15 0.00 0.00 74.19 ][60.15 0.00 0.00 -131.24 ][-23.75 0.00 0.00 -101.24 ][-23.75 0.00 -546.95 273.04 ][60.15 0.00 883.66 178.73 ][-60.15 0.00 -474.69 128.74 ][23.75 0.00 137.98 -4.51 ][1152.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 384.00 ][0.00 0.00 0.00 2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::    Quadrature point 3: [-101.24 0.00 0.00 -23.75 ][-131.24 0.00 0.00 60.15 ][74.19 0.00 0.00 -60.15 ][-33.71 0.00 0.00 23.75 ][-4.51 -137.98 0.00 23.75 ][128.74 474.69 0.00 -60.15 ][178.73 -883.66 0.00 60.15 ][273.04 546.95 0.00 -23.75 ][-23.75 0.00 0.00 -101.24 ][60.15 0.00 0.00 -131.24 ][-60.15 0.00 0.00 74.19 ][23.75 0.00 0.00 -33.71 ][23.75 0.00 -137.98 -4.51 ][-60.15 0.00 474.69 128.74 ][60.15 0.00 -883.66 178.73 ][-23.75 0.00 546.95 273.04 ][2688.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][-2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 2688.00 ][0.00 0.00 0.00 -2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-1092.14 -2187.78 0.00 94.98 ][-714.92 3534.63 0.00 -240.58 ][-514.97 -1898.77 0.00 240.58 ][18.04 551.92 0.00 -94.98 ][134.83 0.00 0.00 -94.98 ][-296.76 0.00 0.00 240.58 ][524.96 0.00 0.00 -240.58 ][404.97 0.00 0.00 94.98 ][94.98 0.00 -2187.78 -1092.14 ][-240.58 0.00 3534.63 -714.92 ][240.58 0.00 -1898.77 -514.97 ][-94.98 0.00 551.92 18.04 ][-94.98 0.00 0.00 134.83 ][240.58 0.00 0.00 -296.76 ][-240.58 0.00 0.00 524.96 ][94.98 0.00 0.00 404.97 ][13824.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][-9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 13824.00 ][0.00 0.00 0.00 -9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::    Quadrature point 1: [-134.83 0.00 0.00 94.98 ][296.76 0.00 0.00 -240.58 ][-524.96 0.00 0.00 240.58 ][-404.97 0.00 0.00 -94.98 ][1092.14 -2187.78 0.00 -94.98 ][714.92 3534.63 0.00 240.58 ][514.97 -1898.77 0.00 -240.58 ][-18.04 551.92 0.00 94.98 ][-94.98 0.00 -551.92 18.04 ][240.58 0.00 1898.77 -514.97 ][-240.58 0.00 -3534.63 -714.92 ][94.98 0.00 2187.78 -1092.14 ][94.98 0.00 0.00 404.97 ][-240.58 0.00 0.00 524.96 ][240.58 0.00 0.00 -296.76 ][-94.98 0.00 0.00 134.83 ][1536.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 4608.00 ][0.00 0.00 0.00 9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::    Quadrature point 2: [18.04 -551.92 0.00 -94.98 ][-514.97 1898.77 0.00 240.58 ][-714.92 -3534.63 0.00 -240.58 ][-1092.14 2187.78 0.00 94.98 ][404.97 0.00 0.00 94.98 ][524.96 0.00 0.00 -240.58 ][-296.76 0.00 0.00 240.58 ][134.83 0.00 0.00 -94.98 ][94.98 0.00 0.00 -134.83 ][-240.58 0.00 0.00 296.76 ][240.58 0.00 0.00 -524.96 ][-94.98 0.00 0.00 -404.97 ][-94.98 0.00 -2187.78 1092.14 ][240.58 0.00 3534.63 714.92 ][-240.58 0.00 -1898.77 514.97 ][94.98 0.00 551.92 -18.04 ][4608.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1536.00 ][0.00 0.00 0.00 9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::    Quadrature point 3: [-404.97 0.00 0.00 -94.98 ][-524.96 0.00 0.00 240.58 ][296.76 0.00 0.00 -240.58 ][-134.83 0.00 0.00 94.98 ][-18.04 -551.92 0.00 94.98 ][514.97 1898.77 0.00 -240.58 ][714.92 -3534.63 0.00 240.58 ][1092.14 2187.78 0.00 -94.98 ][-94.98 0.00 0.00 -404.97 ][240.58 0.00 0.00 -524.96 ][-240.58 0.00 0.00 296.76 ][94.98 0.00 0.00 -134.83 ][94.98 0.00 -551.92 -18.04 ][-240.58 0.00 1898.77 514.97 ][240.58 0.00 -3534.63 714.92 ][-94.98 0.00 2187.78 1092.14 ][10752.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][-9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 10752.00 ][0.00 0.00 0.00 -9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-4368.57 -8751.13 0.00 379.93 ][-2859.70 14138.54 0.00 -962.33 ][-2059.89 -7595.08 0.00 962.33 ][72.17 2207.67 0.00 -379.93 ][539.31 0.00 0.00 -379.93 ][-1187.03 0.00 0.00 962.33 ][2099.85 0.00 0.00 -962.33 ][1619.88 0.00 0.00 379.93 ][379.93 0.00 -8751.13 -4368.57 ][-962.33 0.00 14138.54 -2859.70 ][962.33 0.00 -7595.08 -2059.89 ][-379.93 0.00 2207.67 72.17 ][-379.93 0.00 0.00 539.31 ][962.33 0.00 0.00 -1187.03 ][-962.33 0.00 0.00 2099.85 ][379.93 0.00 0.00 1619.88 ][55296.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][-36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 55296.00 ][0.00 0.00 0.00 -36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::    Quadrature point 1: [-539.31 0.00 0.00 379.93 ][1187.03 0.00 0.00 -962.33 ][-2099.85 0.00 0.00 962.33 ][-1619.88 0.00 0.00 -379.93 ][4368.57 -8751.13 0.00 -379.93 ][2859.70 14138.54 0.00 962.33 ][2059.89 -7595.08 0.00 -962.33 ][-72.17 2207.67 0.00 379.93 ][-379.93 0.00 -2207.67 72.17 ][962.33 0.00 7595.08 -2059.89 ][-962.33 0.00 -14138.54 -2859.70 ][379.93 0.00 8751.13 -4368.57 ][379.93 0.00 0.00 1619.88 ][-962.33 0.00 0.00 2099.85 ][962.33 0.00 0.00 -1187.03 ][-379.93 0.00 0.00 539.31 ][6144.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 18432.00 ][0.00 0.00 0.00 36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::    Quadrature point 2: [72.17 -2207.67 0.00 -379.93 ][-2059.89 7595.08 0.00 962.33 ][-2859.70 -14138.54 0.00 -962.33 ][-4368.57 8751.13 0.00 379.93 ][1619.88 0.00 0.00 379.93 ][2099.85 0.00 0.00 -962.33 ][-1187.03 0.00 0.00 962.33 ][539.31 0.00 0.00 -379.93 ][379.93 0.00 0.00 -539.31 ][-962.33 0.00 0.00 1187.03 ][962.33 0.00 0.00 -2099.85 ][-379.93 0.00 0.00 -1619.88 ][-379.93 0.00 -8751.13 4368.57 ][962.33 0.00 14138.54 2859.70 ][-962.33 0.00 -7595.08 2059.89 ][379.93 0.00 2207.67 -72.17 ][18432.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6144.00 ][0.00 0.00 0.00 36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::    Quadrature point 3: [-1619.88 0.00 0.00 -379.93 ][-2099.85 0.00 0.00 962.33 ][1187.03 0.00 0.00 -962.33 ][-539.31 0.00 0.00 379.93 ][-72.17 -2207.67 0.00 379.93 ][2059.89 7595.08 0.00 -962.33 ][2859.70 -14138.54 0.00 962.33 ][4368.57 8751.13 0.00 -379.93 ][-379.93 0.00 0.00 -1619.88 ][962.33 0.00 0.00 -2099.85 ][-962.33 0.00 0.00 1187.03 ][379.93 0.00 0.00 -539.31 ][379.93 0.00 -2207.67 -72.17 ][-962.33 0.00 7595.08 2059.89 ][962.33 0.00 -14138.54 2859.70 ][-379.93 0.00 8751.13 4368.57 ][43008.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][-36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 43008.00 ][0.00 0.00 0.00 -36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-17474.29 -35004.51 0.00 1519.73 ][-11438.80 56554.16 0.00 -3849.31 ][-8239.58 -30380.32 0.00 3849.31 ][288.66 8830.68 0.00 -1519.73 ][2157.22 0.00 0.00 -1519.73 ][-4748.14 0.00 0.00 3849.31 ][8399.39 0.00 0.00 -3849.31 ][6479.52 0.00 0.00 1519.73 ][1519.73 0.00 -35004.51 -17474.29 ][-3849.31 0.00 56554.16 -11438.80 ][3849.31 0.00 -30380.32 -8239.58 ][-1519.73 0.00 8830.68 288.66 ][-1519.73 0.00 0.00 2157.22 ][3849.31 0.00 0.00 -4748.14 ][-3849.31 0.00 0.00 8399.39 ][1519.73 0.00 0.00 6479.52 ][221184.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][-147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 221184.00 ][0.00 0.00 0.00 -147456.00 ][0.00 0.00 0.00 -245760.00 ]
+DEAL::    Quadrature point 1: [-2157.22 0.00 0.00 1519.73 ][4748.14 0.00 0.00 -3849.31 ][-8399.39 0.00 0.00 3849.31 ][-6479.52 0.00 0.00 -1519.73 ][17474.29 -35004.51 0.00 -1519.73 ][11438.80 56554.16 0.00 3849.31 ][8239.58 -30380.32 0.00 -3849.31 ][-288.66 8830.68 0.00 1519.73 ][-1519.73 0.00 -8830.68 288.66 ][3849.31 0.00 30380.32 -8239.58 ][-3849.31 0.00 -56554.16 -11438.80 ][1519.73 0.00 35004.51 -17474.29 ][1519.73 0.00 0.00 6479.52 ][-3849.31 0.00 0.00 8399.39 ][3849.31 0.00 0.00 -4748.14 ][-1519.73 0.00 0.00 2157.22 ][24576.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 73728.00 ][0.00 0.00 0.00 147456.00 ][0.00 0.00 0.00 -245760.00 ]
+DEAL::    Quadrature point 2: [288.66 -8830.68 0.00 -1519.73 ][-8239.58 30380.32 0.00 3849.31 ][-11438.80 -56554.16 0.00 -3849.31 ][-17474.29 35004.51 0.00 1519.73 ][6479.52 0.00 0.00 1519.73 ][8399.39 0.00 0.00 -3849.31 ][-4748.14 0.00 0.00 3849.31 ][2157.22 0.00 0.00 -1519.73 ][1519.73 0.00 0.00 -2157.22 ][-3849.31 0.00 0.00 4748.14 ][3849.31 0.00 0.00 -8399.39 ][-1519.73 0.00 0.00 -6479.52 ][-1519.73 0.00 -35004.51 17474.29 ][3849.31 0.00 56554.16 11438.80 ][-3849.31 0.00 -30380.32 8239.58 ][1519.73 0.00 8830.68 -288.66 ][73728.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24576.00 ][0.00 0.00 0.00 147456.00 ][0.00 0.00 0.00 -245760.00 ]
+DEAL::    Quadrature point 3: [-6479.52 0.00 0.00 -1519.73 ][-8399.39 0.00 0.00 3849.31 ][4748.14 0.00 0.00 -3849.31 ][-2157.22 0.00 0.00 1519.73 ][-288.66 -8830.68 0.00 1519.73 ][8239.58 30380.32 0.00 -3849.31 ][11438.80 -56554.16 0.00 3849.31 ][17474.29 35004.51 0.00 -1519.73 ][-1519.73 0.00 0.00 -6479.52 ][3849.31 0.00 0.00 -8399.39 ][-3849.31 0.00 0.00 4748.14 ][1519.73 0.00 0.00 -2157.22 ][1519.73 0.00 -8830.68 -288.66 ][-3849.31 0.00 30380.32 8239.58 ][3849.31 0.00 -56554.16 11438.80 ][-1519.73 0.00 35004.51 17474.29 ][172032.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][-147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 172032.00 ][0.00 0.00 0.00 -147456.00 ][0.00 0.00 0.00 -245760.00 ]
diff --git a/tests/fe/bdm_13.cc b/tests/fe/bdm_13.cc
new file mode 100644 (file)
index 0000000..d05e9d5
--- /dev/null
@@ -0,0 +1,107 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Like rt_11, but for gradients (just as rt_12 is to rt_10)
+//
+// the test used to fail because of the issue with computing the
+// normals using FEFaceValue, where FEFaceValue by accident uses the
+// *face* mapping, not the *cell* mapping to compute the Piola
+// transform (leading to a missing power of h in the determinant)
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+
+  deallog << "Degree=" << degree
+          << std::endl;
+
+  for (double h=1; h>1./128; h/=2)
+    {
+      deallog << "  h=" << h
+              << std::endl;
+
+      Triangulation<dim> tr;
+      GridGenerator::hyper_cube(tr, 0., h);
+
+      DoFHandler<dim> dof(tr);
+      dof.distribute_dofs(fe_rt);
+
+      QTrapez<dim-1> quadrature;
+
+      FEFaceValues<dim> fe_values (fe_rt, quadrature, update_gradients);
+      fe_values.reinit (dof.begin_active(), 0);
+      for (unsigned int q=0; q<quadrature.size(); ++q)
+        {
+          deallog << "    Quadrature point " << q << ": ";
+          for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+            {
+              deallog << '[';
+              for (unsigned int c=0; c<fe_rt.n_components(); ++c)
+                deallog << fe_values.shape_grad_component(i,q,c) << ' ';
+              deallog << ']';
+            }
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_13.output b/tests/fe/bdm_13.output
new file mode 100644 (file)
index 0000000..31aaf01
--- /dev/null
@@ -0,0 +1,67 @@
+
+DEAL::Degree=1
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-1.37 -1.73 0.00 0.87 ][0.37 1.73 0.00 -0.87 ][1.37 0.00 0.00 -0.87 ][-0.37 0.00 0.00 0.87 ][0.87 0.00 -1.73 -1.37 ][-0.87 0.00 1.73 0.37 ][-0.87 0.00 0.00 1.37 ][0.87 0.00 0.00 -0.37 ]
+DEAL::    Quadrature point 1: [0.37 -1.73 0.00 -0.87 ][-1.37 1.73 0.00 0.87 ][-0.37 0.00 0.00 0.87 ][1.37 0.00 0.00 -0.87 ][0.87 0.00 0.00 -1.37 ][-0.87 0.00 0.00 0.37 ][-0.87 0.00 -1.73 1.37 ][0.87 0.00 1.73 -0.37 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-5.46 -6.93 0.00 3.46 ][1.46 6.93 0.00 -3.46 ][5.46 0.00 0.00 -3.46 ][-1.46 0.00 0.00 3.46 ][3.46 0.00 -6.93 -5.46 ][-3.46 0.00 6.93 1.46 ][-3.46 0.00 0.00 5.46 ][3.46 0.00 0.00 -1.46 ]
+DEAL::    Quadrature point 1: [1.46 -6.93 0.00 -3.46 ][-5.46 6.93 0.00 3.46 ][-1.46 0.00 0.00 3.46 ][5.46 0.00 0.00 -3.46 ][3.46 0.00 0.00 -5.46 ][-3.46 0.00 0.00 1.46 ][-3.46 0.00 -6.93 5.46 ][3.46 0.00 6.93 -1.46 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-21.86 -27.71 0.00 13.86 ][5.86 27.71 0.00 -13.86 ][21.86 0.00 0.00 -13.86 ][-5.86 0.00 0.00 13.86 ][13.86 0.00 -27.71 -21.86 ][-13.86 0.00 27.71 5.86 ][-13.86 0.00 0.00 21.86 ][13.86 0.00 0.00 -5.86 ]
+DEAL::    Quadrature point 1: [5.86 -27.71 0.00 -13.86 ][-21.86 27.71 0.00 13.86 ][-5.86 0.00 0.00 13.86 ][21.86 0.00 0.00 -13.86 ][13.86 0.00 0.00 -21.86 ][-13.86 0.00 0.00 5.86 ][-13.86 0.00 -27.71 21.86 ][13.86 0.00 27.71 -5.86 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-87.43 -110.85 0.00 55.43 ][23.43 110.85 0.00 -55.43 ][87.43 0.00 0.00 -55.43 ][-23.43 0.00 0.00 55.43 ][55.43 0.00 -110.85 -87.43 ][-55.43 0.00 110.85 23.43 ][-55.43 0.00 0.00 87.43 ][55.43 0.00 0.00 -23.43 ]
+DEAL::    Quadrature point 1: [23.43 -110.85 0.00 -55.43 ][-87.43 110.85 0.00 55.43 ][-23.43 0.00 0.00 55.43 ][87.43 0.00 0.00 -55.43 ][55.43 0.00 0.00 -87.43 ][-55.43 0.00 0.00 23.43 ][-55.43 0.00 -110.85 87.43 ][55.43 0.00 110.85 -23.43 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-349.70 -443.41 0.00 221.70 ][93.70 443.41 0.00 -221.70 ][349.70 0.00 0.00 -221.70 ][-93.70 0.00 0.00 221.70 ][221.70 0.00 -443.41 -349.70 ][-221.70 0.00 443.41 93.70 ][-221.70 0.00 0.00 349.70 ][221.70 0.00 0.00 -93.70 ]
+DEAL::    Quadrature point 1: [93.70 -443.41 0.00 -221.70 ][-349.70 443.41 0.00 221.70 ][-93.70 0.00 0.00 221.70 ][349.70 0.00 0.00 -221.70 ][221.70 0.00 0.00 -349.70 ][-221.70 0.00 0.00 93.70 ][-221.70 0.00 -443.41 349.70 ][221.70 0.00 443.41 -93.70 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-1398.81 -1773.62 0.00 886.81 ][374.81 1773.62 0.00 -886.81 ][1398.81 0.00 0.00 -886.81 ][-374.81 0.00 0.00 886.81 ][886.81 0.00 -1773.62 -1398.81 ][-886.81 0.00 1773.62 374.81 ][-886.81 0.00 0.00 1398.81 ][886.81 0.00 0.00 -374.81 ]
+DEAL::    Quadrature point 1: [374.81 -1773.62 0.00 -886.81 ][-1398.81 1773.62 0.00 886.81 ][-374.81 0.00 0.00 886.81 ][1398.81 0.00 0.00 -886.81 ][886.81 0.00 0.00 -1398.81 ][-886.81 0.00 0.00 374.81 ][-886.81 0.00 -1773.62 1398.81 ][886.81 0.00 1773.62 -374.81 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-5595.24 -7094.48 0.00 3547.24 ][1499.24 7094.48 0.00 -3547.24 ][5595.24 0.00 0.00 -3547.24 ][-1499.24 0.00 0.00 3547.24 ][3547.24 0.00 -7094.48 -5595.24 ][-3547.24 0.00 7094.48 1499.24 ][-3547.24 0.00 0.00 5595.24 ][3547.24 0.00 0.00 -1499.24 ]
+DEAL::    Quadrature point 1: [1499.24 -7094.48 0.00 -3547.24 ][-5595.24 7094.48 0.00 3547.24 ][-1499.24 0.00 0.00 3547.24 ][5595.24 0.00 0.00 -3547.24 ][3547.24 0.00 0.00 -5595.24 ][-3547.24 0.00 0.00 1499.24 ][-3547.24 0.00 -7094.48 5595.24 ][3547.24 0.00 7094.48 -1499.24 ]
+DEAL::Degree=2
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-2.31 -4.62 0.00 0.56 ][-0.67 6.67 0.00 -1.11 ][-1.02 -2.04 0.00 0.56 ][0.65 0.00 0.00 -0.56 ][-2.00 0.00 0.00 1.11 ][-0.65 0.00 0.00 -0.56 ][0.56 0.00 -4.62 -2.31 ][-1.11 0.00 6.67 -0.67 ][0.56 0.00 -2.04 -1.02 ][-0.56 0.00 0.00 0.65 ][1.11 0.00 0.00 -2.00 ][-0.56 0.00 0.00 -0.65 ][6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6.00 ]
+DEAL::    Quadrature point 1: [-1.02 2.04 0.00 0.56 ][-0.67 -6.67 0.00 -1.11 ][-2.31 4.62 0.00 0.56 ][-0.65 0.00 0.00 -0.56 ][-2.00 0.00 0.00 1.11 ][0.65 0.00 0.00 -0.56 ][0.56 0.00 0.00 -0.65 ][-1.11 0.00 0.00 2.00 ][0.56 0.00 0.00 0.65 ][-0.56 0.00 -4.62 2.31 ][1.11 0.00 6.67 0.67 ][-0.56 0.00 -2.04 1.02 ][6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -6.00 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-9.25 -18.50 0.00 2.22 ][-2.67 26.67 0.00 -4.44 ][-4.08 -8.17 0.00 2.22 ][2.58 0.00 0.00 -2.22 ][-8.00 0.00 0.00 4.44 ][-2.58 0.00 0.00 -2.22 ][2.22 0.00 -18.50 -9.25 ][-4.44 0.00 26.67 -2.67 ][2.22 0.00 -8.17 -4.08 ][-2.22 0.00 0.00 2.58 ][4.44 0.00 0.00 -8.00 ][-2.22 0.00 0.00 -2.58 ][24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24.00 ]
+DEAL::    Quadrature point 1: [-4.08 8.17 0.00 2.22 ][-2.67 -26.67 0.00 -4.44 ][-9.25 18.50 0.00 2.22 ][-2.58 0.00 0.00 -2.22 ][-8.00 0.00 0.00 4.44 ][2.58 0.00 0.00 -2.22 ][2.22 0.00 0.00 -2.58 ][-4.44 0.00 0.00 8.00 ][2.22 0.00 0.00 2.58 ][-2.22 0.00 -18.50 9.25 ][4.44 0.00 26.67 2.67 ][-2.22 0.00 -8.17 4.08 ][24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -24.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-36.99 -73.99 0.00 8.89 ][-10.67 106.67 0.00 -17.78 ][-16.34 -32.68 0.00 8.89 ][10.33 0.00 0.00 -8.89 ][-32.00 0.00 0.00 17.78 ][-10.33 0.00 0.00 -8.89 ][8.89 0.00 -73.99 -36.99 ][-17.78 0.00 106.67 -10.67 ][8.89 0.00 -32.68 -16.34 ][-8.89 0.00 0.00 10.33 ][17.78 0.00 0.00 -32.00 ][-8.89 0.00 0.00 -10.33 ][96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 96.00 ]
+DEAL::    Quadrature point 1: [-16.34 32.68 0.00 8.89 ][-10.67 -106.67 0.00 -17.78 ][-36.99 73.99 0.00 8.89 ][-10.33 0.00 0.00 -8.89 ][-32.00 0.00 0.00 17.78 ][10.33 0.00 0.00 -8.89 ][8.89 0.00 0.00 -10.33 ][-17.78 0.00 0.00 32.00 ][8.89 0.00 0.00 10.33 ][-8.89 0.00 -73.99 36.99 ][17.78 0.00 106.67 10.67 ][-8.89 0.00 -32.68 16.34 ][96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -96.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-147.98 -295.96 0.00 35.56 ][-42.67 426.67 0.00 -71.11 ][-65.35 -130.71 0.00 35.56 ][41.31 0.00 0.00 -35.56 ][-128.00 0.00 0.00 71.11 ][-41.31 0.00 0.00 -35.56 ][35.56 0.00 -295.96 -147.98 ][-71.11 0.00 426.67 -42.67 ][35.56 0.00 -130.71 -65.35 ][-35.56 0.00 0.00 41.31 ][71.11 0.00 0.00 -128.00 ][-35.56 0.00 0.00 -41.31 ][384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 384.00 ]
+DEAL::    Quadrature point 1: [-65.35 130.71 0.00 35.56 ][-42.67 -426.67 0.00 -71.11 ][-147.98 295.96 0.00 35.56 ][-41.31 0.00 0.00 -35.56 ][-128.00 0.00 0.00 71.11 ][41.31 0.00 0.00 -35.56 ][35.56 0.00 0.00 -41.31 ][-71.11 0.00 0.00 128.00 ][35.56 0.00 0.00 41.31 ][-35.56 0.00 -295.96 147.98 ][71.11 0.00 426.67 42.67 ][-35.56 0.00 -130.71 65.35 ][384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -384.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-591.91 -1183.83 0.00 142.22 ][-170.67 1706.67 0.00 -284.44 ][-261.42 -522.84 0.00 142.22 ][165.25 0.00 0.00 -142.22 ][-512.00 0.00 0.00 284.44 ][-165.25 0.00 0.00 -142.22 ][142.22 0.00 -1183.83 -591.91 ][-284.44 0.00 1706.67 -170.67 ][142.22 0.00 -522.84 -261.42 ][-142.22 0.00 0.00 165.25 ][284.44 0.00 0.00 -512.00 ][-142.22 0.00 0.00 -165.25 ][1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1536.00 ]
+DEAL::    Quadrature point 1: [-261.42 522.84 0.00 142.22 ][-170.67 -1706.67 0.00 -284.44 ][-591.91 1183.83 0.00 142.22 ][-165.25 0.00 0.00 -142.22 ][-512.00 0.00 0.00 284.44 ][165.25 0.00 0.00 -142.22 ][142.22 0.00 0.00 -165.25 ][-284.44 0.00 0.00 512.00 ][142.22 0.00 0.00 165.25 ][-142.22 0.00 -1183.83 591.91 ][284.44 0.00 1706.67 170.67 ][-142.22 0.00 -522.84 261.42 ][1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -1536.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-2367.66 -4735.31 0.00 568.89 ][-682.67 6826.67 0.00 -1137.78 ][-1045.68 -2091.36 0.00 568.89 ][660.99 0.00 0.00 -568.89 ][-2048.00 0.00 0.00 1137.78 ][-660.99 0.00 0.00 -568.89 ][568.89 0.00 -4735.31 -2367.66 ][-1137.78 0.00 6826.67 -682.67 ][568.89 0.00 -2091.36 -1045.68 ][-568.89 0.00 0.00 660.99 ][1137.78 0.00 0.00 -2048.00 ][-568.89 0.00 0.00 -660.99 ][6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6144.00 ]
+DEAL::    Quadrature point 1: [-1045.68 2091.36 0.00 568.89 ][-682.67 -6826.67 0.00 -1137.78 ][-2367.66 4735.31 0.00 568.89 ][-660.99 0.00 0.00 -568.89 ][-2048.00 0.00 0.00 1137.78 ][660.99 0.00 0.00 -568.89 ][568.89 0.00 0.00 -660.99 ][-1137.78 0.00 0.00 2048.00 ][568.89 0.00 0.00 660.99 ][-568.89 0.00 -4735.31 2367.66 ][1137.78 0.00 6826.67 682.67 ][-568.89 0.00 -2091.36 1045.68 ][6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -6144.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-9470.62 -18941.25 0.00 2275.56 ][-2730.67 27306.67 0.00 -4551.11 ][-4182.71 -8365.42 0.00 2275.56 ][2643.96 0.00 0.00 -2275.56 ][-8192.00 0.00 0.00 4551.11 ][-2643.96 0.00 0.00 -2275.56 ][2275.56 0.00 -18941.25 -9470.62 ][-4551.11 0.00 27306.67 -2730.67 ][2275.56 0.00 -8365.42 -4182.71 ][-2275.56 0.00 0.00 2643.96 ][4551.11 0.00 0.00 -8192.00 ][-2275.56 0.00 0.00 -2643.96 ][24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24576.00 ]
+DEAL::    Quadrature point 1: [-4182.71 8365.42 0.00 2275.56 ][-2730.67 -27306.67 0.00 -4551.11 ][-9470.62 18941.25 0.00 2275.56 ][-2643.96 0.00 0.00 -2275.56 ][-8192.00 0.00 0.00 4551.11 ][2643.96 0.00 0.00 -2275.56 ][2275.56 0.00 0.00 -2643.96 ][-4551.11 0.00 0.00 8192.00 ][2275.56 0.00 0.00 2643.96 ][-2275.56 0.00 -18941.25 9470.62 ][4551.11 0.00 27306.67 2730.67 ][-2275.56 0.00 -8365.42 4182.71 ][24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 -24576.00 ]
+DEAL::Degree=3
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-4.27 -8.55 0.00 0.37 ][-2.79 13.81 0.00 -0.94 ][-2.01 -7.42 0.00 0.94 ][0.07 2.16 0.00 -0.37 ][0.53 0.00 0.00 -0.37 ][-1.16 0.00 0.00 0.94 ][2.05 0.00 0.00 -0.94 ][1.58 0.00 0.00 0.37 ][0.37 0.00 -8.55 -4.27 ][-0.94 0.00 13.81 -2.79 ][0.94 0.00 -7.42 -2.01 ][-0.37 0.00 2.16 0.07 ][-0.37 0.00 0.00 0.53 ][0.94 0.00 0.00 -1.16 ][-0.94 0.00 0.00 2.05 ][0.37 0.00 0.00 1.58 ][54.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][-36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 54.00 ][0.00 0.00 0.00 -36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::    Quadrature point 1: [0.07 -2.16 0.00 -0.37 ][-2.01 7.42 0.00 0.94 ][-2.79 -13.81 0.00 -0.94 ][-4.27 8.55 0.00 0.37 ][1.58 0.00 0.00 0.37 ][2.05 0.00 0.00 -0.94 ][-1.16 0.00 0.00 0.94 ][0.53 0.00 0.00 -0.37 ][0.37 0.00 0.00 -0.53 ][-0.94 0.00 0.00 1.16 ][0.94 0.00 0.00 -2.05 ][-0.37 0.00 0.00 -1.58 ][-0.37 0.00 -8.55 4.27 ][0.94 0.00 13.81 2.79 ][-0.94 0.00 -7.42 2.01 ][0.37 0.00 2.16 -0.07 ][18.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6.00 ][0.00 0.00 0.00 36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-17.06 -34.18 0.00 1.48 ][-11.17 55.23 0.00 -3.76 ][-8.05 -29.67 0.00 3.76 ][0.28 8.62 0.00 -1.48 ][2.11 0.00 0.00 -1.48 ][-4.64 0.00 0.00 3.76 ][8.20 0.00 0.00 -3.76 ][6.33 0.00 0.00 1.48 ][1.48 0.00 -34.18 -17.06 ][-3.76 0.00 55.23 -11.17 ][3.76 0.00 -29.67 -8.05 ][-1.48 0.00 8.62 0.28 ][-1.48 0.00 0.00 2.11 ][3.76 0.00 0.00 -4.64 ][-3.76 0.00 0.00 8.20 ][1.48 0.00 0.00 6.33 ][216.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][-144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 216.00 ][0.00 0.00 0.00 -144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::    Quadrature point 1: [0.28 -8.62 0.00 -1.48 ][-8.05 29.67 0.00 3.76 ][-11.17 -55.23 0.00 -3.76 ][-17.06 34.18 0.00 1.48 ][6.33 0.00 0.00 1.48 ][8.20 0.00 0.00 -3.76 ][-4.64 0.00 0.00 3.76 ][2.11 0.00 0.00 -1.48 ][1.48 0.00 0.00 -2.11 ][-3.76 0.00 0.00 4.64 ][3.76 0.00 0.00 -8.20 ][-1.48 0.00 0.00 -6.33 ][-1.48 0.00 -34.18 17.06 ][3.76 0.00 55.23 11.17 ][-3.76 0.00 -29.67 8.05 ][1.48 0.00 8.62 -0.28 ][72.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24.00 ][0.00 0.00 0.00 144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-68.26 -136.74 0.00 5.94 ][-44.68 220.91 0.00 -15.04 ][-32.19 -118.67 0.00 15.04 ][1.13 34.49 0.00 -5.94 ][8.43 0.00 0.00 -5.94 ][-18.55 0.00 0.00 15.04 ][32.81 0.00 0.00 -15.04 ][25.31 0.00 0.00 5.94 ][5.94 0.00 -136.74 -68.26 ][-15.04 0.00 220.91 -44.68 ][15.04 0.00 -118.67 -32.19 ][-5.94 0.00 34.49 1.13 ][-5.94 0.00 0.00 8.43 ][15.04 0.00 0.00 -18.55 ][-15.04 0.00 0.00 32.81 ][5.94 0.00 0.00 25.31 ][864.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][-576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 864.00 ][0.00 0.00 0.00 -576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::    Quadrature point 1: [1.13 -34.49 0.00 -5.94 ][-32.19 118.67 0.00 15.04 ][-44.68 -220.91 0.00 -15.04 ][-68.26 136.74 0.00 5.94 ][25.31 0.00 0.00 5.94 ][32.81 0.00 0.00 -15.04 ][-18.55 0.00 0.00 15.04 ][8.43 0.00 0.00 -5.94 ][5.94 0.00 0.00 -8.43 ][-15.04 0.00 0.00 18.55 ][15.04 0.00 0.00 -32.81 ][-5.94 0.00 0.00 -25.31 ][-5.94 0.00 -136.74 68.26 ][15.04 0.00 220.91 44.68 ][-15.04 0.00 -118.67 32.19 ][5.94 0.00 34.49 -1.13 ][288.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 96.00 ][0.00 0.00 0.00 576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-273.04 -546.95 0.00 23.75 ][-178.73 883.66 0.00 -60.15 ][-128.74 -474.69 0.00 60.15 ][4.51 137.98 0.00 -23.75 ][33.71 0.00 0.00 -23.75 ][-74.19 0.00 0.00 60.15 ][131.24 0.00 0.00 -60.15 ][101.24 0.00 0.00 23.75 ][23.75 0.00 -546.95 -273.04 ][-60.15 0.00 883.66 -178.73 ][60.15 0.00 -474.69 -128.74 ][-23.75 0.00 137.98 4.51 ][-23.75 0.00 0.00 33.71 ][60.15 0.00 0.00 -74.19 ][-60.15 0.00 0.00 131.24 ][23.75 0.00 0.00 101.24 ][3456.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][-2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 3456.00 ][0.00 0.00 0.00 -2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::    Quadrature point 1: [4.51 -137.98 0.00 -23.75 ][-128.74 474.69 0.00 60.15 ][-178.73 -883.66 0.00 -60.15 ][-273.04 546.95 0.00 23.75 ][101.24 0.00 0.00 23.75 ][131.24 0.00 0.00 -60.15 ][-74.19 0.00 0.00 60.15 ][33.71 0.00 0.00 -23.75 ][23.75 0.00 0.00 -33.71 ][-60.15 0.00 0.00 74.19 ][60.15 0.00 0.00 -131.24 ][-23.75 0.00 0.00 -101.24 ][-23.75 0.00 -546.95 273.04 ][60.15 0.00 883.66 178.73 ][-60.15 0.00 -474.69 128.74 ][23.75 0.00 137.98 -4.51 ][1152.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 384.00 ][0.00 0.00 0.00 2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-1092.14 -2187.78 0.00 94.98 ][-714.92 3534.63 0.00 -240.58 ][-514.97 -1898.77 0.00 240.58 ][18.04 551.92 0.00 -94.98 ][134.83 0.00 0.00 -94.98 ][-296.76 0.00 0.00 240.58 ][524.96 0.00 0.00 -240.58 ][404.97 0.00 0.00 94.98 ][94.98 0.00 -2187.78 -1092.14 ][-240.58 0.00 3534.63 -714.92 ][240.58 0.00 -1898.77 -514.97 ][-94.98 0.00 551.92 18.04 ][-94.98 0.00 0.00 134.83 ][240.58 0.00 0.00 -296.76 ][-240.58 0.00 0.00 524.96 ][94.98 0.00 0.00 404.97 ][13824.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][-9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 13824.00 ][0.00 0.00 0.00 -9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::    Quadrature point 1: [18.04 -551.92 0.00 -94.98 ][-514.97 1898.77 0.00 240.58 ][-714.92 -3534.63 0.00 -240.58 ][-1092.14 2187.78 0.00 94.98 ][404.97 0.00 0.00 94.98 ][524.96 0.00 0.00 -240.58 ][-296.76 0.00 0.00 240.58 ][134.83 0.00 0.00 -94.98 ][94.98 0.00 0.00 -134.83 ][-240.58 0.00 0.00 296.76 ][240.58 0.00 0.00 -524.96 ][-94.98 0.00 0.00 -404.97 ][-94.98 0.00 -2187.78 1092.14 ][240.58 0.00 3534.63 714.92 ][-240.58 0.00 -1898.77 514.97 ][94.98 0.00 551.92 -18.04 ][4608.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1536.00 ][0.00 0.00 0.00 9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-4368.57 -8751.13 0.00 379.93 ][-2859.70 14138.54 0.00 -962.33 ][-2059.89 -7595.08 0.00 962.33 ][72.17 2207.67 0.00 -379.93 ][539.31 0.00 0.00 -379.93 ][-1187.03 0.00 0.00 962.33 ][2099.85 0.00 0.00 -962.33 ][1619.88 0.00 0.00 379.93 ][379.93 0.00 -8751.13 -4368.57 ][-962.33 0.00 14138.54 -2859.70 ][962.33 0.00 -7595.08 -2059.89 ][-379.93 0.00 2207.67 72.17 ][-379.93 0.00 0.00 539.31 ][962.33 0.00 0.00 -1187.03 ][-962.33 0.00 0.00 2099.85 ][379.93 0.00 0.00 1619.88 ][55296.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][-36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 55296.00 ][0.00 0.00 0.00 -36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::    Quadrature point 1: [72.17 -2207.67 0.00 -379.93 ][-2059.89 7595.08 0.00 962.33 ][-2859.70 -14138.54 0.00 -962.33 ][-4368.57 8751.13 0.00 379.93 ][1619.88 0.00 0.00 379.93 ][2099.85 0.00 0.00 -962.33 ][-1187.03 0.00 0.00 962.33 ][539.31 0.00 0.00 -379.93 ][379.93 0.00 0.00 -539.31 ][-962.33 0.00 0.00 1187.03 ][962.33 0.00 0.00 -2099.85 ][-379.93 0.00 0.00 -1619.88 ][-379.93 0.00 -8751.13 4368.57 ][962.33 0.00 14138.54 2859.70 ][-962.33 0.00 -7595.08 2059.89 ][379.93 0.00 2207.67 -72.17 ][18432.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6144.00 ][0.00 0.00 0.00 36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-17474.29 -35004.51 0.00 1519.73 ][-11438.80 56554.16 0.00 -3849.31 ][-8239.58 -30380.32 0.00 3849.31 ][288.66 8830.68 0.00 -1519.73 ][2157.22 0.00 0.00 -1519.73 ][-4748.14 0.00 0.00 3849.31 ][8399.39 0.00 0.00 -3849.31 ][6479.52 0.00 0.00 1519.73 ][1519.73 0.00 -35004.51 -17474.29 ][-3849.31 0.00 56554.16 -11438.80 ][3849.31 0.00 -30380.32 -8239.58 ][-1519.73 0.00 8830.68 288.66 ][-1519.73 0.00 0.00 2157.22 ][3849.31 0.00 0.00 -4748.14 ][-3849.31 0.00 0.00 8399.39 ][1519.73 0.00 0.00 6479.52 ][221184.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][-147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 221184.00 ][0.00 0.00 0.00 -147456.00 ][0.00 0.00 0.00 -245760.00 ]
+DEAL::    Quadrature point 1: [288.66 -8830.68 0.00 -1519.73 ][-8239.58 30380.32 0.00 3849.31 ][-11438.80 -56554.16 0.00 -3849.31 ][-17474.29 35004.51 0.00 1519.73 ][6479.52 0.00 0.00 1519.73 ][8399.39 0.00 0.00 -3849.31 ][-4748.14 0.00 0.00 3849.31 ][2157.22 0.00 0.00 -1519.73 ][1519.73 0.00 0.00 -2157.22 ][-3849.31 0.00 0.00 4748.14 ][3849.31 0.00 0.00 -8399.39 ][-1519.73 0.00 0.00 -6479.52 ][-1519.73 0.00 -35004.51 17474.29 ][3849.31 0.00 56554.16 11438.80 ][-3849.31 0.00 -30380.32 8239.58 ][1519.73 0.00 8830.68 -288.66 ][73728.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24576.00 ][0.00 0.00 0.00 147456.00 ][0.00 0.00 0.00 -245760.00 ]
diff --git a/tests/fe/bdm_14.cc b/tests/fe/bdm_14.cc
new file mode 100644 (file)
index 0000000..4a7ac87
--- /dev/null
@@ -0,0 +1,107 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// like rt_11, but use FESubfaceValues
+//
+// the test used to fail because of the issue with computing the
+// normals using FEFaceValue, where FEFaceValue by accident uses the
+// *face* mapping, not the *cell* mapping to compute the Piola
+// transform (leading to a missing power of h in the determinant)
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+
+  deallog << "Degree=" << degree
+          << std::endl;
+
+  for (double h=1; h>1./128; h/=2)
+    {
+      deallog << "  h=" << h
+              << std::endl;
+
+      Triangulation<dim> tr;
+      GridGenerator::hyper_cube(tr, 0., h);
+
+      DoFHandler<dim> dof(tr);
+      dof.distribute_dofs(fe_rt);
+
+      QTrapez<dim-1> quadrature;
+
+      FESubfaceValues<dim> fe_values (fe_rt, quadrature, update_values);
+      fe_values.reinit (dof.begin_active(), 0, 0);
+      for (unsigned int q=0; q<quadrature.size(); ++q)
+        {
+          deallog << "    Quadrature point " << q << ": ";
+          for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+            {
+              deallog << '[';
+              for (unsigned int c=0; c<fe_rt.n_components(); ++c)
+                deallog << fe_values.shape_value_component(i,q,c) << ' ';
+              deallog << ']';
+            }
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_14.output b/tests/fe/bdm_14.output
new file mode 100644 (file)
index 0000000..3eb843b
--- /dev/null
@@ -0,0 +1,67 @@
+
+DEAL::Degree=1
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.37 0 ][-0.37 0 ][0 0 ][0 0 ][0 1.37 ][0 -0.37 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0.50 0.22 ][0.50 -0.22 ][0 -0.22 ][0 0.22 ][0 0.68 ][0 -0.18 ][0 0.68 ][0 -0.18 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [2.73 0 ][-0.73 0 ][0 0 ][0 0 ][0 2.73 ][0 -0.73 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [1.00 0.43 ][1.00 -0.43 ][0 -0.43 ][0 0.43 ][0 1.37 ][0 -0.37 ][0 1.37 ][0 -0.37 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [5.46 0 ][-1.46 0 ][0 0 ][0 0 ][0 5.46 ][0 -1.46 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [2.00 0.87 ][2.00 -0.87 ][0 -0.87 ][0 0.87 ][0 2.73 ][0 -0.73 ][0 2.73 ][0 -0.73 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [10.93 0 ][-2.93 0 ][0 0 ][0 0 ][0 10.93 ][0 -2.93 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [4.00 1.73 ][4.00 -1.73 ][0 -1.73 ][0 1.73 ][0 5.46 ][0 -1.46 ][0 5.46 ][0 -1.46 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [21.86 0 ][-5.86 0 ][0 0 ][0 0 ][0 21.86 ][0 -5.86 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [8.00 3.46 ][8.00 -3.46 ][0 -3.46 ][0 3.46 ][0 10.93 ][0 -2.93 ][0 10.93 ][0 -2.93 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [43.71 0 ][-11.71 0 ][0 0 ][0 0 ][0 43.71 ][0 -11.71 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [16.00 6.93 ][16.00 -6.93 ][0 -6.93 ][0 6.93 ][0 21.86 ][0 -5.86 ][0 21.86 ][0 -5.86 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [87.43 0 ][-23.43 0 ][0 0 ][0 0 ][0 87.43 ][0 -23.43 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [32.00 13.86 ][32.00 -13.86 ][0 -13.86 ][0 13.86 ][0 43.71 ][0 -11.71 ][0 43.71 ][0 -11.71 ]
+DEAL::Degree=2
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.48 0 ][-0.67 0 ][0.19 0 ][0 0 ][0 0 ][0 0 ][0 1.48 ][0 -0.67 ][0 0.19 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][1.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0.53 ][0 -0.67 ][0 -0.11 ][0 0.53 ][0 -0.67 ][0 -0.11 ][0 0 ][0 1.50 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [2.96 0 ][-1.33 0 ][0.38 0 ][0 0 ][0 0 ][0 0 ][0 2.96 ][0 -1.33 ][0 0.38 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][2.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.06 ][0 -1.33 ][0 -0.23 ][0 1.06 ][0 -1.33 ][0 -0.23 ][0 0 ][0 3.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [5.92 0 ][-2.67 0 ][0.75 0 ][0 0 ][0 0 ][0 0 ][0 5.92 ][0 -2.67 ][0 0.75 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][4.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 2.12 ][0 -2.67 ][0 -0.46 ][0 2.12 ][0 -2.67 ][0 -0.46 ][0 0 ][0 6.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [11.83 0 ][-5.33 0 ][1.50 0 ][0 0 ][0 0 ][0 0 ][0 11.83 ][0 -5.33 ][0 1.50 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][8.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 4.25 ][0 -5.33 ][0 -0.92 ][0 4.25 ][0 -5.33 ][0 -0.92 ][0 0 ][0 12.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [23.66 0 ][-10.67 0 ][3.01 0 ][0 0 ][0 0 ][0 0 ][0 23.66 ][0 -10.67 ][0 3.01 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][16.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 8.50 ][0 -10.67 ][0 -1.83 ][0 8.50 ][0 -10.67 ][0 -1.83 ][0 0 ][0 24.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [47.32 0 ][-21.33 0 ][6.01 0 ][0 0 ][0 0 ][0 0 ][0 47.32 ][0 -21.33 ][0 6.01 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][32.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 16.99 ][0 -21.33 ][0 -3.66 ][0 16.99 ][0 -21.33 ][0 -3.66 ][0 0 ][0 48.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [94.65 0 ][-42.67 0 ][12.02 0 ][0 0 ][0 0 ][0 0 ][0 94.65 ][0 -42.67 ][0 12.02 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [0 0 ][64.00 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 33.99 ][0 -42.67 ][0 -7.32 ][0 33.99 ][0 -42.67 ][0 -7.32 ][0 0 ][0 96.00 ]
+DEAL::Degree=3
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [1.53 0 ][-0.81 0 ][0.40 0 ][-0.11 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 1.53 ][0 -0.81 ][0 0.40 ][0 -0.11 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.09 -0.02 ][0.59 0.06 ][0.59 -0.06 ][-0.09 0.02 ][0 0.02 ][0 -0.06 ][0 0.06 ][0 -0.02 ][0 0.30 ][0 -0.90 ][0 0.21 ][0 0.15 ][0 0.30 ][0 -0.90 ][0 0.21 ][0 0.15 ][0 0 ][0 0 ][0 0 ][0 6.00 ][0 -9.00 ][0 0 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [3.05 0 ][-1.63 0 ][0.80 0 ][-0.23 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 3.05 ][0 -1.63 ][0 0.80 ][0 -0.23 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.18 -0.05 ][1.18 0.12 ][1.18 -0.12 ][-0.18 0.05 ][0 0.05 ][0 -0.12 ][0 0.12 ][0 -0.05 ][0 0.59 ][0 -1.80 ][0 0.41 ][0 0.30 ][0 0.59 ][0 -1.80 ][0 0.41 ][0 0.30 ][0 0 ][0 0 ][0 0 ][0 12.00 ][0 -18.00 ][0 0 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [6.11 0 ][-3.25 0 ][1.60 0 ][-0.46 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 6.11 ][0 -3.25 ][0 1.60 ][0 -0.46 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.37 -0.09 ][2.37 0.23 ][2.37 -0.23 ][-0.37 0.09 ][0 0.09 ][0 -0.23 ][0 0.23 ][0 -0.09 ][0 1.18 ][0 -3.60 ][0 0.82 ][0 0.60 ][0 1.18 ][0 -3.60 ][0 0.82 ][0 0.60 ][0 0 ][0 0 ][0 0 ][0 24.00 ][0 -36.00 ][0 0 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [12.21 0 ][-6.51 0 ][3.21 0 ][-0.91 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 12.21 ][0 -6.51 ][0 3.21 ][0 -0.91 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-0.74 -0.19 ][4.74 0.47 ][4.74 -0.47 ][-0.74 0.19 ][0 0.19 ][0 -0.47 ][0 0.47 ][0 -0.19 ][0 2.37 ][0 -7.21 ][0 1.64 ][0 1.20 ][0 2.37 ][0 -7.21 ][0 1.64 ][0 1.20 ][0 0 ][0 0 ][0 0 ][0 48.00 ][0 -72.00 ][0 0 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [24.43 0 ][-13.02 0 ][6.41 0 ][-1.82 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 24.43 ][0 -13.02 ][0 6.41 ][0 -1.82 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-1.48 -0.37 ][9.48 0.94 ][9.48 -0.94 ][-1.48 0.37 ][0 0.37 ][0 -0.94 ][0 0.94 ][0 -0.37 ][0 4.74 ][0 -14.41 ][0 3.28 ][0 2.39 ][0 4.74 ][0 -14.41 ][0 3.28 ][0 2.39 ][0 0 ][0 0 ][0 0 ][0 96.00 ][0 -144.00 ][0 0 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [48.86 0 ][-26.04 0 ][12.82 0 ][-3.65 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 48.86 ][0 -26.04 ][0 12.82 ][0 -3.65 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-2.95 -0.74 ][18.95 1.88 ][18.95 -1.88 ][-2.95 0.74 ][0 0.74 ][0 -1.88 ][0 1.88 ][0 -0.74 ][0 9.47 ][0 -28.83 ][0 6.57 ][0 4.79 ][0 9.47 ][0 -28.83 ][0 6.57 ][0 4.79 ][0 0 ][0 0 ][0 0 ][0 192.00 ][0 -288.00 ][0 0 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [97.71 0 ][-52.07 0 ][25.65 0 ][-7.29 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 97.71 ][0 -52.07 ][0 25.65 ][0 -7.29 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ][0 0 ]
+DEAL::    Quadrature point 1: [-5.91 -1.48 ][37.91 3.76 ][37.91 -3.76 ][-5.91 1.48 ][0 1.48 ][0 -3.76 ][0 3.76 ][0 -1.48 ][0 18.94 ][0 -57.65 ][0 13.14 ][0 9.57 ][0 18.94 ][0 -57.65 ][0 13.14 ][0 9.57 ][0 0 ][0 0 ][0 0 ][0 384.00 ][0 -576.00 ][0 0 ]
diff --git a/tests/fe/bdm_15.cc b/tests/fe/bdm_15.cc
new file mode 100644 (file)
index 0000000..1ccb488
--- /dev/null
@@ -0,0 +1,107 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Like rt_13, but use FESubfaceValues
+//
+// the test used to fail because of the issue with computing the
+// normals using FEFaceValue, where FEFaceValue by accident uses the
+// *face* mapping, not the *cell* mapping to compute the Piola
+// transform (leading to a missing power of h in the determinant)
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+
+  deallog << "Degree=" << degree
+          << std::endl;
+
+  for (double h=1; h>1./128; h/=2)
+    {
+      deallog << "  h=" << h
+              << std::endl;
+
+      Triangulation<dim> tr;
+      GridGenerator::hyper_cube(tr, 0., h);
+
+      DoFHandler<dim> dof(tr);
+      dof.distribute_dofs(fe_rt);
+
+      QTrapez<dim-1> quadrature;
+
+      FESubfaceValues<dim> fe_values (fe_rt, quadrature, update_gradients);
+      fe_values.reinit (dof.begin_active(), 0, 0);
+      for (unsigned int q=0; q<quadrature.size(); ++q)
+        {
+          deallog << "    Quadrature point " << q << ": ";
+          for (unsigned int i=0; i<fe_rt.dofs_per_cell; ++i)
+            {
+              deallog << '[';
+              for (unsigned int c=0; c<fe_rt.n_components(); ++c)
+                deallog << fe_values.shape_grad_component(i,q,c) << ' ';
+              deallog << ']';
+            }
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_15.output b/tests/fe/bdm_15.output
new file mode 100644 (file)
index 0000000..7078928
--- /dev/null
@@ -0,0 +1,67 @@
+
+DEAL::Degree=1
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-1.37 -1.73 0.00 0.87 ][0.37 1.73 0.00 -0.87 ][1.37 0.00 0.00 -0.87 ][-0.37 0.00 0.00 0.87 ][0.87 0.00 -1.73 -1.37 ][-0.87 0.00 1.73 0.37 ][-0.87 0.00 0.00 1.37 ][0.87 0.00 0.00 -0.37 ]
+DEAL::    Quadrature point 1: [-0.50 -1.73 0.00 0.00 ][-0.50 1.73 0.00 0.00 ][0.50 0.00 0.00 0.00 ][0.50 0.00 0.00 0.00 ][0.87 0.00 -0.87 -1.37 ][-0.87 0.00 0.87 0.37 ][-0.87 0.00 -0.87 1.37 ][0.87 0.00 0.87 -0.37 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-5.46 -6.93 0.00 3.46 ][1.46 6.93 0.00 -3.46 ][5.46 0.00 0.00 -3.46 ][-1.46 0.00 0.00 3.46 ][3.46 0.00 -6.93 -5.46 ][-3.46 0.00 6.93 1.46 ][-3.46 0.00 0.00 5.46 ][3.46 0.00 0.00 -1.46 ]
+DEAL::    Quadrature point 1: [-2.00 -6.93 0.00 0.00 ][-2.00 6.93 0.00 0.00 ][2.00 0.00 0.00 0.00 ][2.00 0.00 0.00 0.00 ][3.46 0.00 -3.46 -5.46 ][-3.46 0.00 3.46 1.46 ][-3.46 0.00 -3.46 5.46 ][3.46 0.00 3.46 -1.46 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-21.86 -27.71 0.00 13.86 ][5.86 27.71 0.00 -13.86 ][21.86 0.00 0.00 -13.86 ][-5.86 0.00 0.00 13.86 ][13.86 0.00 -27.71 -21.86 ][-13.86 0.00 27.71 5.86 ][-13.86 0.00 0.00 21.86 ][13.86 0.00 0.00 -5.86 ]
+DEAL::    Quadrature point 1: [-8.00 -27.71 0.00 0.00 ][-8.00 27.71 0.00 0.00 ][8.00 0.00 0.00 0.00 ][8.00 0.00 0.00 0.00 ][13.86 0.00 -13.86 -21.86 ][-13.86 0.00 13.86 5.86 ][-13.86 0.00 -13.86 21.86 ][13.86 0.00 13.86 -5.86 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-87.43 -110.85 0.00 55.43 ][23.43 110.85 0.00 -55.43 ][87.43 0.00 0.00 -55.43 ][-23.43 0.00 0.00 55.43 ][55.43 0.00 -110.85 -87.43 ][-55.43 0.00 110.85 23.43 ][-55.43 0.00 0.00 87.43 ][55.43 0.00 0.00 -23.43 ]
+DEAL::    Quadrature point 1: [-32.00 -110.85 0.00 0.00 ][-32.00 110.85 0.00 0.00 ][32.00 0.00 0.00 0.00 ][32.00 0.00 0.00 0.00 ][55.43 0.00 -55.43 -87.43 ][-55.43 0.00 55.43 23.43 ][-55.43 0.00 -55.43 87.43 ][55.43 0.00 55.43 -23.43 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-349.70 -443.41 0.00 221.70 ][93.70 443.41 0.00 -221.70 ][349.70 0.00 0.00 -221.70 ][-93.70 0.00 0.00 221.70 ][221.70 0.00 -443.41 -349.70 ][-221.70 0.00 443.41 93.70 ][-221.70 0.00 0.00 349.70 ][221.70 0.00 0.00 -93.70 ]
+DEAL::    Quadrature point 1: [-128.00 -443.41 0.00 0.00 ][-128.00 443.41 0.00 0.00 ][128.00 0.00 0.00 0.00 ][128.00 0.00 0.00 0.00 ][221.70 0.00 -221.70 -349.70 ][-221.70 0.00 221.70 93.70 ][-221.70 0.00 -221.70 349.70 ][221.70 0.00 221.70 -93.70 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-1398.81 -1773.62 0.00 886.81 ][374.81 1773.62 0.00 -886.81 ][1398.81 0.00 0.00 -886.81 ][-374.81 0.00 0.00 886.81 ][886.81 0.00 -1773.62 -1398.81 ][-886.81 0.00 1773.62 374.81 ][-886.81 0.00 0.00 1398.81 ][886.81 0.00 0.00 -374.81 ]
+DEAL::    Quadrature point 1: [-512.00 -1773.62 0.00 0.00 ][-512.00 1773.62 0.00 0.00 ][512.00 0.00 0.00 0.00 ][512.00 0.00 0.00 0.00 ][886.81 0.00 -886.81 -1398.81 ][-886.81 0.00 886.81 374.81 ][-886.81 0.00 -886.81 1398.81 ][886.81 0.00 886.81 -374.81 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-5595.24 -7094.48 0.00 3547.24 ][1499.24 7094.48 0.00 -3547.24 ][5595.24 0.00 0.00 -3547.24 ][-1499.24 0.00 0.00 3547.24 ][3547.24 0.00 -7094.48 -5595.24 ][-3547.24 0.00 7094.48 1499.24 ][-3547.24 0.00 0.00 5595.24 ][3547.24 0.00 0.00 -1499.24 ]
+DEAL::    Quadrature point 1: [-2048.00 -7094.48 0.00 0.00 ][-2048.00 7094.48 0.00 0.00 ][2048.00 0.00 0.00 0.00 ][2048.00 0.00 0.00 0.00 ][3547.24 0.00 -3547.24 -5595.24 ][-3547.24 0.00 3547.24 1499.24 ][-3547.24 0.00 -3547.24 5595.24 ][3547.24 0.00 3547.24 -1499.24 ]
+DEAL::Degree=2
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-2.31 -4.62 0.00 0.56 ][-0.67 6.67 0.00 -1.11 ][-1.02 -2.04 0.00 0.56 ][0.65 0.00 0.00 -0.56 ][-2.00 0.00 0.00 1.11 ][-0.65 0.00 0.00 -0.56 ][0.56 0.00 -4.62 -2.31 ][-1.11 0.00 6.67 -0.67 ][0.56 0.00 -2.04 -1.02 ][-0.56 0.00 0.00 0.65 ][1.11 0.00 0.00 -2.00 ][-0.56 0.00 0.00 -0.65 ][6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6.00 ]
+DEAL::    Quadrature point 1: [-0.83 -1.29 0.00 -0.28 ][-2.33 0.00 0.00 0.56 ][-0.83 1.29 0.00 -0.28 ][-0.83 0.00 0.00 0.28 ][-0.33 0.00 0.00 -0.56 ][-0.83 0.00 0.00 0.28 ][0.56 0.00 -2.31 -1.48 ][-1.11 0.00 3.33 0.67 ][0.56 0.00 -1.02 -0.19 ][-0.56 0.00 -2.31 1.48 ][1.11 0.00 3.33 -0.67 ][-0.56 0.00 -1.02 0.19 ][6.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-9.25 -18.50 0.00 2.22 ][-2.67 26.67 0.00 -4.44 ][-4.08 -8.17 0.00 2.22 ][2.58 0.00 0.00 -2.22 ][-8.00 0.00 0.00 4.44 ][-2.58 0.00 0.00 -2.22 ][2.22 0.00 -18.50 -9.25 ][-4.44 0.00 26.67 -2.67 ][2.22 0.00 -8.17 -4.08 ][-2.22 0.00 0.00 2.58 ][4.44 0.00 0.00 -8.00 ][-2.22 0.00 0.00 -2.58 ][24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24.00 ]
+DEAL::    Quadrature point 1: [-3.33 -5.16 0.00 -1.11 ][-9.33 0.00 0.00 2.22 ][-3.33 5.16 0.00 -1.11 ][-3.33 0.00 0.00 1.11 ][-1.33 0.00 0.00 -2.22 ][-3.33 0.00 0.00 1.11 ][2.22 0.00 -9.25 -5.92 ][-4.44 0.00 13.33 2.67 ][2.22 0.00 -4.08 -0.75 ][-2.22 0.00 -9.25 5.92 ][4.44 0.00 13.33 -2.67 ][-2.22 0.00 -4.08 0.75 ][24.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-36.99 -73.99 0.00 8.89 ][-10.67 106.67 0.00 -17.78 ][-16.34 -32.68 0.00 8.89 ][10.33 0.00 0.00 -8.89 ][-32.00 0.00 0.00 17.78 ][-10.33 0.00 0.00 -8.89 ][8.89 0.00 -73.99 -36.99 ][-17.78 0.00 106.67 -10.67 ][8.89 0.00 -32.68 -16.34 ][-8.89 0.00 0.00 10.33 ][17.78 0.00 0.00 -32.00 ][-8.89 0.00 0.00 -10.33 ][96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 96.00 ]
+DEAL::    Quadrature point 1: [-13.33 -20.66 0.00 -4.44 ][-37.33 0.00 0.00 8.89 ][-13.33 20.66 0.00 -4.44 ][-13.33 0.00 0.00 4.44 ][-5.33 0.00 0.00 -8.89 ][-13.33 0.00 0.00 4.44 ][8.89 0.00 -36.99 -23.66 ][-17.78 0.00 53.33 10.67 ][8.89 0.00 -16.34 -3.01 ][-8.89 0.00 -36.99 23.66 ][17.78 0.00 53.33 -10.67 ][-8.89 0.00 -16.34 3.01 ][96.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-147.98 -295.96 0.00 35.56 ][-42.67 426.67 0.00 -71.11 ][-65.35 -130.71 0.00 35.56 ][41.31 0.00 0.00 -35.56 ][-128.00 0.00 0.00 71.11 ][-41.31 0.00 0.00 -35.56 ][35.56 0.00 -295.96 -147.98 ][-71.11 0.00 426.67 -42.67 ][35.56 0.00 -130.71 -65.35 ][-35.56 0.00 0.00 41.31 ][71.11 0.00 0.00 -128.00 ][-35.56 0.00 0.00 -41.31 ][384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 384.00 ]
+DEAL::    Quadrature point 1: [-53.33 -82.62 0.00 -17.78 ][-149.33 0.00 0.00 35.56 ][-53.33 82.62 0.00 -17.78 ][-53.33 0.00 0.00 17.78 ][-21.33 0.00 0.00 -35.56 ][-53.33 0.00 0.00 17.78 ][35.56 0.00 -147.98 -94.65 ][-71.11 0.00 213.33 42.67 ][35.56 0.00 -65.35 -12.02 ][-35.56 0.00 -147.98 94.65 ][71.11 0.00 213.33 -42.67 ][-35.56 0.00 -65.35 12.02 ][384.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-591.91 -1183.83 0.00 142.22 ][-170.67 1706.67 0.00 -284.44 ][-261.42 -522.84 0.00 142.22 ][165.25 0.00 0.00 -142.22 ][-512.00 0.00 0.00 284.44 ][-165.25 0.00 0.00 -142.22 ][142.22 0.00 -1183.83 -591.91 ][-284.44 0.00 1706.67 -170.67 ][142.22 0.00 -522.84 -261.42 ][-142.22 0.00 0.00 165.25 ][284.44 0.00 0.00 -512.00 ][-142.22 0.00 0.00 -165.25 ][1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 1536.00 ]
+DEAL::    Quadrature point 1: [-213.33 -330.49 0.00 -71.11 ][-597.33 0.00 0.00 142.22 ][-213.33 330.49 0.00 -71.11 ][-213.33 0.00 0.00 71.11 ][-85.33 0.00 0.00 -142.22 ][-213.33 0.00 0.00 71.11 ][142.22 0.00 -591.91 -378.58 ][-284.44 0.00 853.33 170.67 ][142.22 0.00 -261.42 -48.09 ][-142.22 0.00 -591.91 378.58 ][284.44 0.00 853.33 -170.67 ][-142.22 0.00 -261.42 48.09 ][1536.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-2367.66 -4735.31 0.00 568.89 ][-682.67 6826.67 0.00 -1137.78 ][-1045.68 -2091.36 0.00 568.89 ][660.99 0.00 0.00 -568.89 ][-2048.00 0.00 0.00 1137.78 ][-660.99 0.00 0.00 -568.89 ][568.89 0.00 -4735.31 -2367.66 ][-1137.78 0.00 6826.67 -682.67 ][568.89 0.00 -2091.36 -1045.68 ][-568.89 0.00 0.00 660.99 ][1137.78 0.00 0.00 -2048.00 ][-568.89 0.00 0.00 -660.99 ][6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 6144.00 ]
+DEAL::    Quadrature point 1: [-853.33 -1321.98 0.00 -284.44 ][-2389.33 0.00 0.00 568.89 ][-853.33 1321.98 0.00 -284.44 ][-853.33 0.00 0.00 284.44 ][-341.33 0.00 0.00 -568.89 ][-853.33 0.00 0.00 284.44 ][568.89 0.00 -2367.66 -1514.32 ][-1137.78 0.00 3413.33 682.67 ][568.89 0.00 -1045.68 -192.34 ][-568.89 0.00 -2367.66 1514.32 ][1137.78 0.00 3413.33 -682.67 ][-568.89 0.00 -1045.68 192.34 ][6144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-9470.62 -18941.25 0.00 2275.56 ][-2730.67 27306.67 0.00 -4551.11 ][-4182.71 -8365.42 0.00 2275.56 ][2643.96 0.00 0.00 -2275.56 ][-8192.00 0.00 0.00 4551.11 ][-2643.96 0.00 0.00 -2275.56 ][2275.56 0.00 -18941.25 -9470.62 ][-4551.11 0.00 27306.67 -2730.67 ][2275.56 0.00 -8365.42 -4182.71 ][-2275.56 0.00 0.00 2643.96 ][4551.11 0.00 0.00 -8192.00 ][-2275.56 0.00 0.00 -2643.96 ][24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 24576.00 ]
+DEAL::    Quadrature point 1: [-3413.33 -5287.91 0.00 -1137.78 ][-9557.33 0.00 0.00 2275.56 ][-3413.33 5287.91 0.00 -1137.78 ][-3413.33 0.00 0.00 1137.78 ][-1365.33 0.00 0.00 -2275.56 ][-3413.33 0.00 0.00 1137.78 ][2275.56 0.00 -9470.62 -6057.29 ][-4551.11 0.00 13653.33 2730.67 ][2275.56 0.00 -4182.71 -769.38 ][-2275.56 0.00 -9470.62 6057.29 ][4551.11 0.00 13653.33 -2730.67 ][-2275.56 0.00 -4182.71 769.38 ][24576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ]
+DEAL::Degree=3
+DEAL::  h=1.00
+DEAL::    Quadrature point 0: [-4.27 -8.55 0.00 0.37 ][-2.79 13.81 0.00 -0.94 ][-2.01 -7.42 0.00 0.94 ][0.07 2.16 0.00 -0.37 ][0.53 0.00 0.00 -0.37 ][-1.16 0.00 0.00 0.94 ][2.05 0.00 0.00 -0.94 ][1.58 0.00 0.00 0.37 ][0.37 0.00 -8.55 -4.27 ][-0.94 0.00 13.81 -2.79 ][0.94 0.00 -7.42 -2.01 ][-0.37 0.00 2.16 0.07 ][-0.37 0.00 0.00 0.53 ][0.94 0.00 0.00 -1.16 ][-0.94 0.00 0.00 2.05 ][0.37 0.00 0.00 1.58 ][54.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][-36.00 0.00 0.00 0.00 ][0.00 0.00 0.00 54.00 ][0.00 0.00 0.00 -36.00 ][0.00 0.00 0.00 -60.00 ]
+DEAL::    Quadrature point 1: [-1.30 0.21 0.00 0.00 ][-3.20 -3.48 0.00 0.00 ][-3.20 3.48 0.00 0.00 ][-1.30 -0.21 0.00 0.00 ][0.26 0.00 0.00 0.00 ][1.24 0.00 0.00 0.00 ][1.24 0.00 0.00 0.00 ][0.26 0.00 0.00 0.00 ][0.37 0.00 -3.60 -1.09 ][-0.94 0.00 7.40 1.63 ][0.94 0.00 -4.21 0.41 ][-0.37 0.00 0.40 0.55 ][-0.37 0.00 -3.60 1.09 ][0.94 0.00 7.40 -1.63 ][-0.94 0.00 -4.21 -0.41 ][0.37 0.00 0.40 -0.55 ][36.00 0.00 0.00 0.00 ][-60.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -9.00 -15.00 ][0.00 0.00 18.00 0.00 ][0.00 0.00 0.00 30.00 ]
+DEAL::  h=0.50
+DEAL::    Quadrature point 0: [-17.06 -34.18 0.00 1.48 ][-11.17 55.23 0.00 -3.76 ][-8.05 -29.67 0.00 3.76 ][0.28 8.62 0.00 -1.48 ][2.11 0.00 0.00 -1.48 ][-4.64 0.00 0.00 3.76 ][8.20 0.00 0.00 -3.76 ][6.33 0.00 0.00 1.48 ][1.48 0.00 -34.18 -17.06 ][-3.76 0.00 55.23 -11.17 ][3.76 0.00 -29.67 -8.05 ][-1.48 0.00 8.62 0.28 ][-1.48 0.00 0.00 2.11 ][3.76 0.00 0.00 -4.64 ][-3.76 0.00 0.00 8.20 ][1.48 0.00 0.00 6.33 ][216.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][-144.00 0.00 0.00 0.00 ][0.00 0.00 0.00 216.00 ][0.00 0.00 0.00 -144.00 ][0.00 0.00 0.00 -240.00 ]
+DEAL::    Quadrature point 1: [-5.20 0.86 0.00 0.00 ][-12.80 -13.94 0.00 0.00 ][-12.80 13.94 0.00 0.00 ][-5.20 -0.86 0.00 0.00 ][1.02 0.00 0.00 0.00 ][4.98 0.00 0.00 0.00 ][4.98 0.00 0.00 0.00 ][1.02 0.00 0.00 0.00 ][1.48 0.00 -14.40 -4.37 ][-3.76 0.00 29.61 6.52 ][3.76 0.00 -16.83 1.66 ][-1.48 0.00 1.62 2.19 ][-1.48 0.00 -14.40 4.37 ][3.76 0.00 29.61 -6.52 ][-3.76 0.00 -16.83 -1.66 ][1.48 0.00 1.62 -2.19 ][144.00 0.00 0.00 0.00 ][-240.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -36.00 -60.00 ][0.00 0.00 72.00 0.00 ][0.00 0.00 0.00 120.00 ]
+DEAL::  h=0.25
+DEAL::    Quadrature point 0: [-68.26 -136.74 0.00 5.94 ][-44.68 220.91 0.00 -15.04 ][-32.19 -118.67 0.00 15.04 ][1.13 34.49 0.00 -5.94 ][8.43 0.00 0.00 -5.94 ][-18.55 0.00 0.00 15.04 ][32.81 0.00 0.00 -15.04 ][25.31 0.00 0.00 5.94 ][5.94 0.00 -136.74 -68.26 ][-15.04 0.00 220.91 -44.68 ][15.04 0.00 -118.67 -32.19 ][-5.94 0.00 34.49 1.13 ][-5.94 0.00 0.00 8.43 ][15.04 0.00 0.00 -18.55 ][-15.04 0.00 0.00 32.81 ][5.94 0.00 0.00 25.31 ][864.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][-576.00 0.00 0.00 0.00 ][0.00 0.00 0.00 864.00 ][0.00 0.00 0.00 -576.00 ][0.00 0.00 0.00 -960.00 ]
+DEAL::    Quadrature point 1: [-20.79 3.43 0.00 0.00 ][-51.21 -55.75 0.00 0.00 ][-51.21 55.75 0.00 0.00 ][-20.79 -3.43 0.00 0.00 ][4.09 0.00 0.00 0.00 ][19.91 0.00 0.00 0.00 ][19.91 0.00 0.00 0.00 ][4.09 0.00 0.00 0.00 ][5.94 0.00 -57.58 -17.47 ][-15.04 0.00 118.44 26.06 ][15.04 0.00 -67.32 6.63 ][-5.94 0.00 6.46 8.78 ][-5.94 0.00 -57.58 17.47 ][15.04 0.00 118.44 -26.06 ][-15.04 0.00 -67.32 -6.63 ][5.94 0.00 6.46 -8.78 ][576.00 0.00 0.00 0.00 ][-960.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -144.00 -240.00 ][0.00 0.00 288.00 0.00 ][0.00 0.00 0.00 480.00 ]
+DEAL::  h=0.12
+DEAL::    Quadrature point 0: [-273.04 -546.95 0.00 23.75 ][-178.73 883.66 0.00 -60.15 ][-128.74 -474.69 0.00 60.15 ][4.51 137.98 0.00 -23.75 ][33.71 0.00 0.00 -23.75 ][-74.19 0.00 0.00 60.15 ][131.24 0.00 0.00 -60.15 ][101.24 0.00 0.00 23.75 ][23.75 0.00 -546.95 -273.04 ][-60.15 0.00 883.66 -178.73 ][60.15 0.00 -474.69 -128.74 ][-23.75 0.00 137.98 4.51 ][-23.75 0.00 0.00 33.71 ][60.15 0.00 0.00 -74.19 ][-60.15 0.00 0.00 131.24 ][23.75 0.00 0.00 101.24 ][3456.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][-2304.00 0.00 0.00 0.00 ][0.00 0.00 0.00 3456.00 ][0.00 0.00 0.00 -2304.00 ][0.00 0.00 0.00 -3840.00 ]
+DEAL::    Quadrature point 1: [-83.14 13.72 0.00 0.00 ][-204.86 -223.01 0.00 0.00 ][-204.86 223.01 0.00 0.00 ][-83.14 -13.72 0.00 0.00 ][16.35 0.00 0.00 0.00 ][79.65 0.00 0.00 0.00 ][79.65 0.00 0.00 0.00 ][16.35 0.00 0.00 0.00 ][23.75 0.00 -230.34 -69.89 ][-60.15 0.00 473.76 104.24 ][60.15 0.00 -269.27 26.52 ][-23.75 0.00 25.85 35.12 ][-23.75 0.00 -230.34 69.89 ][60.15 0.00 473.76 -104.24 ][-60.15 0.00 -269.27 -26.52 ][23.75 0.00 25.85 -35.12 ][2304.00 0.00 0.00 0.00 ][-3840.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -576.00 -960.00 ][0.00 0.00 1152.00 0.00 ][0.00 0.00 0.00 1920.00 ]
+DEAL::  h=0.06
+DEAL::    Quadrature point 0: [-1092.14 -2187.78 0.00 94.98 ][-714.92 3534.63 0.00 -240.58 ][-514.97 -1898.77 0.00 240.58 ][18.04 551.92 0.00 -94.98 ][134.83 0.00 0.00 -94.98 ][-296.76 0.00 0.00 240.58 ][524.96 0.00 0.00 -240.58 ][404.97 0.00 0.00 94.98 ][94.98 0.00 -2187.78 -1092.14 ][-240.58 0.00 3534.63 -714.92 ][240.58 0.00 -1898.77 -514.97 ][-94.98 0.00 551.92 18.04 ][-94.98 0.00 0.00 134.83 ][240.58 0.00 0.00 -296.76 ][-240.58 0.00 0.00 524.96 ][94.98 0.00 0.00 404.97 ][13824.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][-9216.00 0.00 0.00 0.00 ][0.00 0.00 0.00 13824.00 ][0.00 0.00 0.00 -9216.00 ][0.00 0.00 0.00 -15360.00 ]
+DEAL::    Quadrature point 1: [-332.57 54.89 0.00 0.00 ][-819.43 -892.02 0.00 0.00 ][-819.43 892.02 0.00 0.00 ][-332.57 -54.89 0.00 0.00 ][65.42 0.00 0.00 0.00 ][318.58 0.00 0.00 0.00 ][318.58 0.00 0.00 0.00 ][65.42 0.00 0.00 0.00 ][94.98 0.00 -921.35 -279.54 ][-240.58 0.00 1895.03 416.98 ][240.58 0.00 -1077.09 106.09 ][-94.98 0.00 103.42 140.48 ][-94.98 0.00 -921.35 279.54 ][240.58 0.00 1895.03 -416.98 ][-240.58 0.00 -1077.09 -106.09 ][94.98 0.00 103.42 -140.48 ][9216.00 0.00 0.00 0.00 ][-15360.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -2304.00 -3840.00 ][0.00 0.00 4608.00 0.00 ][0.00 0.00 0.00 7680.00 ]
+DEAL::  h=0.03
+DEAL::    Quadrature point 0: [-4368.57 -8751.13 0.00 379.93 ][-2859.70 14138.54 0.00 -962.33 ][-2059.89 -7595.08 0.00 962.33 ][72.17 2207.67 0.00 -379.93 ][539.31 0.00 0.00 -379.93 ][-1187.03 0.00 0.00 962.33 ][2099.85 0.00 0.00 -962.33 ][1619.88 0.00 0.00 379.93 ][379.93 0.00 -8751.13 -4368.57 ][-962.33 0.00 14138.54 -2859.70 ][962.33 0.00 -7595.08 -2059.89 ][-379.93 0.00 2207.67 72.17 ][-379.93 0.00 0.00 539.31 ][962.33 0.00 0.00 -1187.03 ][-962.33 0.00 0.00 2099.85 ][379.93 0.00 0.00 1619.88 ][55296.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][-36864.00 0.00 0.00 0.00 ][0.00 0.00 0.00 55296.00 ][0.00 0.00 0.00 -36864.00 ][0.00 0.00 0.00 -61440.00 ]
+DEAL::    Quadrature point 1: [-1330.27 219.58 0.00 0.00 ][-3277.73 -3568.10 0.00 0.00 ][-3277.73 3568.10 0.00 0.00 ][-1330.27 -219.58 0.00 0.00 ][261.66 0.00 0.00 0.00 ][1274.34 0.00 0.00 0.00 ][1274.34 0.00 0.00 0.00 ][261.66 0.00 0.00 0.00 ][379.93 0.00 -3685.40 -1118.18 ][-962.33 0.00 7580.11 1667.91 ][962.33 0.00 -4308.38 424.37 ][-379.93 0.00 413.67 561.91 ][-379.93 0.00 -3685.40 1118.18 ][962.33 0.00 7580.11 -1667.91 ][-962.33 0.00 -4308.38 -424.37 ][379.93 0.00 413.67 -561.91 ][36864.00 0.00 0.00 0.00 ][-61440.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -9216.00 -15360.00 ][0.00 0.00 18432.00 0.00 ][0.00 0.00 0.00 30720.00 ]
+DEAL::  h=0.02
+DEAL::    Quadrature point 0: [-17474.29 -35004.51 0.00 1519.73 ][-11438.80 56554.16 0.00 -3849.31 ][-8239.58 -30380.32 0.00 3849.31 ][288.66 8830.68 0.00 -1519.73 ][2157.22 0.00 0.00 -1519.73 ][-4748.14 0.00 0.00 3849.31 ][8399.39 0.00 0.00 -3849.31 ][6479.52 0.00 0.00 1519.73 ][1519.73 0.00 -35004.51 -17474.29 ][-3849.31 0.00 56554.16 -11438.80 ][3849.31 0.00 -30380.32 -8239.58 ][-1519.73 0.00 8830.68 288.66 ][-1519.73 0.00 0.00 2157.22 ][3849.31 0.00 0.00 -4748.14 ][-3849.31 0.00 0.00 8399.39 ][1519.73 0.00 0.00 6479.52 ][221184.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][-147456.00 0.00 0.00 0.00 ][0.00 0.00 0.00 221184.00 ][0.00 0.00 0.00 -147456.00 ][0.00 0.00 0.00 -245760.00 ]
+DEAL::    Quadrature point 1: [-5321.08 878.30 0.00 0.00 ][-13110.92 -14272.38 0.00 0.00 ][-13110.92 14272.38 0.00 0.00 ][-5321.08 -878.30 0.00 0.00 ][1046.64 0.00 0.00 0.00 ][5097.36 0.00 0.00 0.00 ][5097.36 0.00 0.00 0.00 ][1046.64 0.00 0.00 0.00 ][1519.73 0.00 -14741.60 -4472.71 ][-3849.31 0.00 30320.42 6671.62 ][3849.31 0.00 -17233.50 1697.46 ][-1519.73 0.00 1654.68 2247.62 ][-1519.73 0.00 -14741.60 4472.71 ][3849.31 0.00 30320.42 -6671.62 ][-3849.31 0.00 -17233.50 -1697.46 ][1519.73 0.00 1654.68 -2247.62 ][147456.00 0.00 0.00 0.00 ][-245760.00 0.00 0.00 0.00 ][0.00 0.00 0.00 0.00 ][0.00 0.00 -36864.00 -61440.00 ][0.00 0.00 73728.00 0.00 ][0.00 0.00 0.00 122880.00 ]
diff --git a/tests/fe/bdm_2.cc b/tests/fe/bdm_2.cc
new file mode 100644 (file)
index 0000000..d505646
--- /dev/null
@@ -0,0 +1,179 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Show the shape functions of the Raviart-Thomas element on a grid
+// with only one cell. This cell is rotated, stretched, scaled, etc,
+// and on each of these cells each time we evaluate the shape
+// functions.
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 3
+
+
+Point<2> stretch_coordinates (const Point<2> p)
+{
+  return Point<2>(2*p(0), p(1));
+}
+
+
+
+Point<2> tilt_coordinates (const Point<2> p)
+{
+  return Point<2>(p(0)+p(1), p(1));
+}
+
+
+void
+transform_grid (Triangulation<2> &tria,
+                const unsigned int  transform)
+{
+  switch (transform)
+    {
+      // first round: take
+      // original grid
+    case 0:
+      break;
+
+      // second round: rotate
+      // triangulation
+    case 1:
+      GridTools::rotate (3.14159265358/2, tria);
+      break;
+
+      // third round: inflate
+      // by a factor of 2
+    case 2:
+      GridTools::scale (2, tria);
+      break;
+
+      // third round: scale
+      // back, rotate back,
+      // stretch
+    case 3:
+      GridTools::scale (.5, tria);
+      GridTools::rotate (-3.14159265358/2, tria);
+      GridTools::transform (&stretch_coordinates, tria);
+
+      break;
+
+    default:
+      Assert (false, ExcNotImplemented());
+    };
+}
+
+
+
+
+template<int dim>
+void
+plot_shape_functions(const unsigned int degree)
+{
+  FE_BDM<dim> element(degree);
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, 0., 1.);
+
+  // check the following with a
+  // number of transformed
+  // triangulations
+  for (unsigned int transform=0; transform<4; ++transform)
+    {
+      std::ostringstream ost;
+      ost << "BDM" << degree << "-Transform" << transform;
+      deallog.push(ost.str());
+
+      transform_grid (tr, transform);
+
+      DoFHandler<dim> dof(tr);
+      typename DoFHandler<dim>::cell_iterator c = dof.begin();
+      dof.distribute_dofs(element);
+
+      QTrapez<1> q_trapez;
+      const unsigned int div=2;
+      QIterated<dim> q(q_trapez, div);
+      FEValues<dim> fe(element, q, update_values|update_gradients|update_q_points);
+      fe.reinit(c);
+
+      for (unsigned int q_point=0; q_point< q.size(); ++q_point)
+        {
+          // Output function in
+          // gnuplot readable format,
+          // namely x y z u0x u0y u0z u1x...
+          deallog << "value    " << q_point << '\t' << fe.quadrature_point(q_point);
+
+          for (unsigned int i=0; i<element.dofs_per_cell; ++i)
+            {
+              for (unsigned int c=0; c<dim; ++c)
+                deallog << '\t' << fe.shape_value_component(i,q_point,c);
+            }
+
+          // Output the gradients in
+          // similar fashion
+          deallog << std::endl << "gradient " << q_point << '\t' << fe.quadrature_point(q_point);
+
+          for (unsigned int i=0; i<element.dofs_per_cell; ++i)
+            {
+              for (unsigned int c=0; c<dim; ++c)
+                {
+                  for (unsigned int d=0; d<dim; ++d)
+                    deallog << '\t' << fe.shape_grad_component(i,q_point,c)[d];
+                }
+            }
+          deallog << std::endl;
+
+          if ((q_point+1) % (2*div-1) == 0)
+            {
+              deallog << "value    " << std::endl;
+              deallog << "gradient " << std::endl;
+            }
+        }
+
+      deallog << std::endl;
+      deallog.pop();
+    }
+}
+
+
+int
+main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int degree=1; degree<4; ++degree)
+    plot_shape_functions<2>(degree);
+
+  return 0;
+}
diff --git a/tests/fe/bdm_2.output b/tests/fe/bdm_2.output
new file mode 100644 (file)
index 0000000..6dce478
--- /dev/null
@@ -0,0 +1,301 @@
+
+DEAL:BDM1-Transform0::value    0       0.000 0.000     1.366   0       -0.366  0       0       0       0       0       0       1.366   0       -0.366  0       0       0       0
+DEAL:BDM1-Transform0::gradient 0       0.000 0.000     -1.366  -1.732  0       0.866   0.366   1.732   0       -0.866  1.366   0       0       -0.866  -0.366  0       0       0.866   0.866   0       -1.732  -1.366  -0.866  0       1.732   0.366   -0.866  0       0       1.366   0.866   0       0       -0.366
+DEAL:BDM1-Transform0::value    1       0.500 0.000     0.683   0       -0.183  0       0.683   0       -0.183  0       0.217   0.500   -0.217  0.500   -0.217  0       0.217   0
+DEAL:BDM1-Transform0::gradient 1       0.500 0.000     -1.366  -0.866  0       0.866   0.366   0.866   0       -0.866  1.366   -0.866  0       -0.866  -0.366  0.866   0       0.866   0       0       -1.732  -0.500  0       0       1.732   -0.500  0       0       0       0.500   0       0       0       0.500
+DEAL:BDM1-Transform0::value    2       1.000 0.000     0       0       0       0       1.366   0       -0.366  0       0       -0.366  0       1.366   0       0       0       0
+DEAL:BDM1-Transform0::gradient 2       1.000 0.000     -1.366  0       0       0.866   0.366   0       0       -0.866  1.366   -1.732  0       -0.866  -0.366  1.732   0       0.866   -0.866  0       -1.732  0.366   0.866   0       1.732   -1.366  0.866   0       0       -0.366  -0.866  0       0       1.366
+DEAL:BDM1-Transform0::value    
+DEAL:BDM1-Transform0::gradient 
+DEAL:BDM1-Transform0::value    3       0.000 0.500     0.500   0.217   0.500   -0.217  0       -0.217  0       0.217   0       0.683   0       -0.183  0       0.683   0       -0.183
+DEAL:BDM1-Transform0::gradient 3       0.000 0.500     -0.500  -1.732  0       0       -0.500  1.732   0       0       0.500   0       0       0       0.500   0       0       0       0.866   0       -0.866  -1.366  -0.866  0       0.866   0.366   -0.866  0       -0.866  1.366   0.866   0       0.866   -0.366
+DEAL:BDM1-Transform0::value    4       0.500 0.500     0.250   0.217   0.250   -0.217  0.250   -0.217  0.250   0.217   0.217   0.250   -0.217  0.250   -0.217  0.250   0.217   0.250
+DEAL:BDM1-Transform0::gradient 4       0.500 0.500     -0.500  -0.866  0       0       -0.500  0.866   0       0       0.500   -0.866  0       0       0.500   0.866   0       0       0       0       -0.866  -0.500  0       0       0.866   -0.500  0       0       -0.866  0.500   0       0       0.866   0.500
+DEAL:BDM1-Transform0::value    5       1.000 0.500     0       0.217   0       -0.217  0.500   -0.217  0.500   0.217   0       -0.183  0       0.683   0       -0.183  0       0.683
+DEAL:BDM1-Transform0::gradient 5       1.000 0.500     -0.500  0       0       0       -0.500  0       0       0       0.500   -1.732  0       0       0.500   1.732   0       0       -0.866  0       -0.866  0.366   0.866   0       0.866   -1.366  0.866   0       -0.866  -0.366  -0.866  0       0.866   1.366
+DEAL:BDM1-Transform0::value    
+DEAL:BDM1-Transform0::gradient 
+DEAL:BDM1-Transform0::value    6       0.000 1.000     -0.366  0       1.366   0       0       0       0       0       0       0       0       0       0       1.366   0       -0.366
+DEAL:BDM1-Transform0::gradient 6       0.000 1.000     0.366   -1.732  0       -0.866  -1.366  1.732   0       0.866   -0.366  0       0       0.866   1.366   0       0       -0.866  0.866   0       0       -1.366  -0.866  0       0       0.366   -0.866  0       -1.732  1.366   0.866   0       1.732   -0.366
+DEAL:BDM1-Transform0::value    7       0.500 1.000     -0.183  0       0.683   0       -0.183  0       0.683   0       0.217   0       -0.217  0       -0.217  0.500   0.217   0.500
+DEAL:BDM1-Transform0::gradient 7       0.500 1.000     0.366   -0.866  0       -0.866  -1.366  0.866   0       0.866   -0.366  -0.866  0       0.866   1.366   0.866   0       -0.866  0       0       0       -0.500  0       0       0       -0.500  0       0       -1.732  0.500   0       0       1.732   0.500
+DEAL:BDM1-Transform0::value    8       1.000 1.000     0       0       0       0       -0.366  0       1.366   0       0       0       0       0       0       -0.366  0       1.366
+DEAL:BDM1-Transform0::gradient 8       1.000 1.000     0.366   0       0       -0.866  -1.366  0       0       0.866   -0.366  -1.732  0       0.866   1.366   1.732   0       -0.866  -0.866  0       0       0.366   0.866   0       0       -1.366  0.866   0       -1.732  -0.366  -0.866  0       1.732   1.366
+DEAL:BDM1-Transform0::value    
+DEAL:BDM1-Transform0::gradient 
+DEAL:BDM1-Transform0::
+DEAL:BDM1-Transform1::value    0       0.000 0.000     0       1.366   0       -0.366  0       0       0       0       -1.366  0       0.366   0       0       0       0       0
+DEAL:BDM1-Transform1::gradient 0       0.000 0.000     0.866   0       1.732   -1.366  -0.866  0       -1.732  0.366   -0.866  0       0       1.366   0.866   0       0       -0.366  -1.366  1.732   0       0.866   0.366   -1.732  0       -0.866  1.366   0       0       -0.866  -0.366  0       0       0.866
+DEAL:BDM1-Transform1::value    1       0.000 0.500     0       0.683   0       -0.183  0       0.683   0       -0.183  -0.500  0.217   -0.500  -0.217  0       -0.217  0       0.217
+DEAL:BDM1-Transform1::gradient 1       0.000 0.500     0.866   0       0.866   -1.366  -0.866  0       -0.866  0.366   -0.866  0       0.866   1.366   0.866   0       -0.866  -0.366  -0.500  1.732   0       0       -0.500  -1.732  0       0       0.500   0       0       0       0.500   0       0       0
+DEAL:BDM1-Transform1::value    2       0.000 1.000     0       0       0       0       0       1.366   0       -0.366  0.366   0       -1.366  0       0       0       0       0
+DEAL:BDM1-Transform1::gradient 2       0.000 1.000     0.866   0       0       -1.366  -0.866  0       0       0.366   -0.866  0       1.732   1.366   0.866   0       -1.732  -0.366  0.366   1.732   0       -0.866  -1.366  -1.732  0       0.866   -0.366  0       0       0.866   1.366   0       0       -0.866
+DEAL:BDM1-Transform1::value    
+DEAL:BDM1-Transform1::gradient 
+DEAL:BDM1-Transform1::value    3       -0.500 0.000    -0.217  0.500   0.217   0.500   0.217   0       -0.217  0       -0.683  0       0.183   0       -0.683  0       0.183   0
+DEAL:BDM1-Transform1::gradient 3       -0.500 0.000    0       0       1.732   -0.500  0       0       -1.732  -0.500  0       0       0       0.500   0       0       0       0.500   -1.366  0.866   0       0.866   0.366   -0.866  0       -0.866  1.366   0.866   0       -0.866  -0.366  -0.866  0       0.866
+DEAL:BDM1-Transform1::value    4       -0.500 0.500    -0.217  0.250   0.217   0.250   0.217   0.250   -0.217  0.250   -0.250  0.217   -0.250  -0.217  -0.250  -0.217  -0.250  0.217
+DEAL:BDM1-Transform1::gradient 4       -0.500 0.500    0       0       0.866   -0.500  0       0       -0.866  -0.500  0       0       0.866   0.500   0       0       -0.866  0.500   -0.500  0.866   0       0       -0.500  -0.866  0       0       0.500   0.866   0       0       0.500   -0.866  0       0
+DEAL:BDM1-Transform1::value    5       -0.500 1.000    -0.217  0       0.217   0       0.217   0.500   -0.217  0.500   0.183   0       -0.683  0       0.183   0       -0.683  0
+DEAL:BDM1-Transform1::gradient 5       -0.500 1.000    0       0       0       -0.500  0       0       0       -0.500  0       0       1.732   0.500   0       0       -1.732  0.500   0.366   0.866   0       -0.866  -1.366  -0.866  0       0.866   -0.366  0.866   0       0.866   1.366   -0.866  0       -0.866
+DEAL:BDM1-Transform1::value    
+DEAL:BDM1-Transform1::gradient 
+DEAL:BDM1-Transform1::value    6       -1.000 0.000    0       -0.366  0       1.366   0       0       0       0       0       0       0       0       -1.366  0       0.366   0
+DEAL:BDM1-Transform1::gradient 6       -1.000 0.000    -0.866  0       1.732   0.366   0.866   0       -1.732  -1.366  0.866   0       0       -0.366  -0.866  0       0       1.366   -1.366  0       0       0.866   0.366   0       0       -0.866  1.366   1.732   0       -0.866  -0.366  -1.732  0       0.866
+DEAL:BDM1-Transform1::value    7       -1.000 0.500    0       -0.183  0       0.683   0       -0.183  0       0.683   0       0.217   0       -0.217  -0.500  -0.217  -0.500  0.217
+DEAL:BDM1-Transform1::gradient 7       -1.000 0.500    -0.866  0       0.866   0.366   0.866   0       -0.866  -1.366  0.866   0       0.866   -0.366  -0.866  0       -0.866  1.366   -0.500  0       0       0       -0.500  0       0       0       0.500   1.732   0       0       0.500   -1.732  0       0
+DEAL:BDM1-Transform1::value    8       -1.000 1.000    0       0       0       0       0       -0.366  0       1.366   0       0       0       0       0.366   0       -1.366  0
+DEAL:BDM1-Transform1::gradient 8       -1.000 1.000    -0.866  0       0       0.366   0.866   0       0       -1.366  0.866   0       1.732   -0.366  -0.866  0       -1.732  1.366   0.366   0       0       -0.866  -1.366  0       0       0.866   -0.366  1.732   0       0.866   1.366   -1.732  0       -0.866
+DEAL:BDM1-Transform1::value    
+DEAL:BDM1-Transform1::gradient 
+DEAL:BDM1-Transform1::
+DEAL:BDM1-Transform2::value    0       0.000 0.000     0       0.683   0       -0.183  0       0       0       0       -0.683  0       0.183   0       0       0       0       0
+DEAL:BDM1-Transform2::gradient 0       0.000 0.000     0.217   0       0.433   -0.342  -0.217  0       -0.433  0.092   -0.217  0       0       0.342   0.217   0       0       -0.092  -0.342  0.433   0       0.217   0.092   -0.433  0       -0.217  0.342   0       0       -0.217  -0.092  0       0       0.217
+DEAL:BDM1-Transform2::value    1       0.000 1.000     0       0.342   0       -0.092  0       0.342   0       -0.092  -0.250  0.108   -0.250  -0.108  0       -0.108  0       0.108
+DEAL:BDM1-Transform2::gradient 1       0.000 1.000     0.217   0       0.217   -0.342  -0.217  0       -0.217  0.092   -0.217  0       0.217   0.342   0.217   0       -0.217  -0.092  -0.125  0.433   0       0       -0.125  -0.433  0       0       0.125   0       0       0       0.125   0       0       0
+DEAL:BDM1-Transform2::value    2       0.000 2.000     0       0       0       0       0       0.683   0       -0.183  0.183   0       -0.683  0       0       0       0       0
+DEAL:BDM1-Transform2::gradient 2       0.000 2.000     0.217   0       0       -0.342  -0.217  0       0       0.092   -0.217  0       0.433   0.342   0.217   0       -0.433  -0.092  0.092   0.433   0       -0.217  -0.342  -0.433  0       0.217   -0.092  0       0       0.217   0.342   0       0       -0.217
+DEAL:BDM1-Transform2::value    
+DEAL:BDM1-Transform2::gradient 
+DEAL:BDM1-Transform2::value    3       -1.000 0.000    -0.108  0.250   0.108   0.250   0.108   0       -0.108  0       -0.342  0       0.092   0       -0.342  0       0.092   0
+DEAL:BDM1-Transform2::gradient 3       -1.000 0.000    0       0       0.433   -0.125  0       0       -0.433  -0.125  0       0       0       0.125   0       0       0       0.125   -0.342  0.217   0       0.217   0.092   -0.217  0       -0.217  0.342   0.217   0       -0.217  -0.092  -0.217  0       0.217
+DEAL:BDM1-Transform2::value    4       -1.000 1.000    -0.108  0.125   0.108   0.125   0.108   0.125   -0.108  0.125   -0.125  0.108   -0.125  -0.108  -0.125  -0.108  -0.125  0.108
+DEAL:BDM1-Transform2::gradient 4       -1.000 1.000    0       0       0.217   -0.125  0       0       -0.217  -0.125  0       0       0.217   0.125   0       0       -0.217  0.125   -0.125  0.217   0       0       -0.125  -0.217  0       0       0.125   0.217   0       0       0.125   -0.217  0       0
+DEAL:BDM1-Transform2::value    5       -1.000 2.000    -0.108  0       0.108   0       0.108   0.250   -0.108  0.250   0.092   0       -0.342  0       0.092   0       -0.342  0
+DEAL:BDM1-Transform2::gradient 5       -1.000 2.000    0       0       0       -0.125  0       0       0       -0.125  0       0       0.433   0.125   0       0       -0.433  0.125   0.092   0.217   0       -0.217  -0.342  -0.217  0       0.217   -0.092  0.217   0       0.217   0.342   -0.217  0       -0.217
+DEAL:BDM1-Transform2::value    
+DEAL:BDM1-Transform2::gradient 
+DEAL:BDM1-Transform2::value    6       -2.000 0.000    0       -0.183  0       0.683   0       0       0       0       0       0       0       0       -0.683  0       0.183   0
+DEAL:BDM1-Transform2::gradient 6       -2.000 0.000    -0.217  0       0.433   0.092   0.217   0       -0.433  -0.342  0.217   0       0       -0.092  -0.217  0       0       0.342   -0.342  0       0       0.217   0.092   0       0       -0.217  0.342   0.433   0       -0.217  -0.092  -0.433  0       0.217
+DEAL:BDM1-Transform2::value    7       -2.000 1.000    0       -0.092  0       0.342   0       -0.092  0       0.342   0       0.108   0       -0.108  -0.250  -0.108  -0.250  0.108
+DEAL:BDM1-Transform2::gradient 7       -2.000 1.000    -0.217  0       0.217   0.092   0.217   0       -0.217  -0.342  0.217   0       0.217   -0.092  -0.217  0       -0.217  0.342   -0.125  0       0       0       -0.125  0       0       0       0.125   0.433   0       0       0.125   -0.433  0       0
+DEAL:BDM1-Transform2::value    8       -2.000 2.000    0       0       0       0       0       -0.183  0       0.683   0       0       0       0       0.183   0       -0.683  0
+DEAL:BDM1-Transform2::gradient 8       -2.000 2.000    -0.217  0       0       0.092   0.217   0       0       -0.342  0.217   0       0.433   -0.092  -0.217  0       -0.433  0.342   0.092   0       0       -0.217  -0.342  0       0       0.217   -0.092  0.433   0       0.217   0.342   -0.433  0       -0.217
+DEAL:BDM1-Transform2::value    
+DEAL:BDM1-Transform2::gradient 
+DEAL:BDM1-Transform2::
+DEAL:BDM1-Transform3::value    0       0.000 0.000     1.366   0       -0.366  0       0       0       0       0       0       0.683   0       -0.183  0       0       0       0
+DEAL:BDM1-Transform3::gradient 0       0.000 0.000     -0.683  -1.732  0       0.433   0.183   1.732   0       -0.433  0.683   0       0       -0.433  -0.183  0       0       0.433   0.433   0       -0.433  -0.683  -0.433  0       0.433   0.183   -0.433  0       0       0.683   0.433   0       0       -0.183
+DEAL:BDM1-Transform3::value    1       1.000 0.000     0.683   0       -0.183  0       0.683   0       -0.183  0       0.217   0.250   -0.217  0.250   -0.217  0       0.217   0
+DEAL:BDM1-Transform3::gradient 1       1.000 0.000     -0.683  -0.866  0       0.433   0.183   0.866   0       -0.433  0.683   -0.866  0       -0.433  -0.183  0.866   0       0.433   0       0       -0.433  -0.250  0       0       0.433   -0.250  0       0       0       0.250   0       0       0       0.250
+DEAL:BDM1-Transform3::value    2       2.000 0.000     0       0       0       0       1.366   0       -0.366  0       0       -0.183  0       0.683   0       0       0       0
+DEAL:BDM1-Transform3::gradient 2       2.000 0.000     -0.683  0       0       0.433   0.183   0       0       -0.433  0.683   -1.732  0       -0.433  -0.183  1.732   0       0.433   -0.433  0       -0.433  0.183   0.433   0       0.433   -0.683  0.433   0       0       -0.183  -0.433  0       0       0.683
+DEAL:BDM1-Transform3::value    
+DEAL:BDM1-Transform3::gradient 
+DEAL:BDM1-Transform3::value    3       0.000 0.500     0.500   0.108   0.500   -0.108  0       -0.108  0       0.108   0       0.342   0       -0.092  0       0.342   0       -0.092
+DEAL:BDM1-Transform3::gradient 3       0.000 0.500     -0.250  -1.732  0       0       -0.250  1.732   0       0       0.250   0       0       0       0.250   0       0       0       0.433   0       -0.217  -0.683  -0.433  0       0.217   0.183   -0.433  0       -0.217  0.683   0.433   0       0.217   -0.183
+DEAL:BDM1-Transform3::value    4       1.000 0.500     0.250   0.108   0.250   -0.108  0.250   -0.108  0.250   0.108   0.217   0.125   -0.217  0.125   -0.217  0.125   0.217   0.125
+DEAL:BDM1-Transform3::gradient 4       1.000 0.500     -0.250  -0.866  0       0       -0.250  0.866   0       0       0.250   -0.866  0       0       0.250   0.866   0       0       0       0       -0.217  -0.250  0       0       0.217   -0.250  0       0       -0.217  0.250   0       0       0.217   0.250
+DEAL:BDM1-Transform3::value    5       2.000 0.500     0       0.108   0       -0.108  0.500   -0.108  0.500   0.108   0       -0.092  0       0.342   0       -0.092  0       0.342
+DEAL:BDM1-Transform3::gradient 5       2.000 0.500     -0.250  0       0       0       -0.250  0       0       0       0.250   -1.732  0       0       0.250   1.732   0       0       -0.433  0       -0.217  0.183   0.433   0       0.217   -0.683  0.433   0       -0.217  -0.183  -0.433  0       0.217   0.683
+DEAL:BDM1-Transform3::value    
+DEAL:BDM1-Transform3::gradient 
+DEAL:BDM1-Transform3::value    6       0.000 1.000     -0.366  0       1.366   0       0       0       0       0       0       0       0       0       0       0.683   0       -0.183
+DEAL:BDM1-Transform3::gradient 6       0.000 1.000     0.183   -1.732  0       -0.433  -0.683  1.732   0       0.433   -0.183  0       0       0.433   0.683   0       0       -0.433  0.433   0       0       -0.683  -0.433  0       0       0.183   -0.433  0       -0.433  0.683   0.433   0       0.433   -0.183
+DEAL:BDM1-Transform3::value    7       1.000 1.000     -0.183  0       0.683   0       -0.183  0       0.683   0       0.217   0       -0.217  0       -0.217  0.250   0.217   0.250
+DEAL:BDM1-Transform3::gradient 7       1.000 1.000     0.183   -0.866  0       -0.433  -0.683  0.866   0       0.433   -0.183  -0.866  0       0.433   0.683   0.866   0       -0.433  0       0       0       -0.250  0       0       0       -0.250  0       0       -0.433  0.250   0       0       0.433   0.250
+DEAL:BDM1-Transform3::value    8       2.000 1.000     0       0       0       0       -0.366  0       1.366   0       0       0       0       0       0       -0.183  0       0.683
+DEAL:BDM1-Transform3::gradient 8       2.000 1.000     0.183   0       0       -0.433  -0.683  0       0       0.433   -0.183  -1.732  0       0.433   0.683   1.732   0       -0.433  -0.433  0       0       0.183   0.433   0       0       -0.683  0.433   0       -0.433  -0.183  -0.433  0       0.433   0.683
+DEAL:BDM1-Transform3::value    
+DEAL:BDM1-Transform3::gradient 
+DEAL:BDM1-Transform3::
+DEAL:BDM2-Transform0::value    0       0.000 0.000     1.479   0       -0.667  0       0.188   0       0       0       0       0       0       0       0       1.479   0       -0.667  0       0.188   0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform0::gradient 0       0.000 0.000     -2.312  -4.624  0       0.556   -0.667  6.667   0       -1.111  -1.021  -2.042  0       0.556   0.645   0       0       -0.556  -2.000  0       0       1.111   -0.645  0       0       -0.556  0.556   0       -4.624  -2.312  -1.111  0       6.667   -0.667  0.556   0       -2.042  -1.021  -0.556  0       0       0.645   1.111   0       0       -2.000  -0.556  0       0       -0.645  6.000   0       0       0       0       0       0       6.000
+DEAL:BDM2-Transform0::value    1       0.500 0.000     0.531   0       -0.667  0       -0.114  0       0.531   0       -0.667  0       -0.114  0       0       0       0       1.000   0       0       0       0       0       0       0       0       1.500   0       0       0
+DEAL:BDM2-Transform0::gradient 1       0.500 0.000     -1.479  -2.312  0       0.556   0.667   3.333   0       -1.111  -0.188  -1.021  0       0.556   1.479   -2.312  0       -0.556  -0.667  3.333   0       1.111   0.188   -1.021  0       -0.556  -0.278  0       -1.291  -0.833  0.556   0       0       -2.333  -0.278  0       1.291   -0.833  0.278   0       0       -0.833  -0.556  0       0       -0.333  0.278   0       0       -0.833  0       0       0       0       0       0       0       6.000
+DEAL:BDM2-Transform0::value    2       1.000 0.000     0       0       0       0       0       0       1.479   0       -0.667  0       0.188   0       0       0.188   0       -0.667  0       1.479   0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform0::gradient 2       1.000 0.000     -0.645  0       0       0.556   2.000   0       0       -1.111  0.645   0       0       0.556   2.312   -4.624  0       -0.556  0.667   6.667   0       1.111   1.021   -2.042  0       -0.556  0.556   0       2.042   -1.021  -1.111  0       -6.667  -0.667  0.556   0       4.624   -2.312  -0.556  0       0       -0.645  1.111   0       0       -2.000  -0.556  0       0       0.645   -6.000  0       0       0       0       0       0       6.000
+DEAL:BDM2-Transform0::value    
+DEAL:BDM2-Transform0::gradient 
+DEAL:BDM2-Transform0::value    3       0.000 0.500     0       0       1.000   0       0       0       0       0       0       0       0       0       0       0.531   0       -0.667  0       -0.114  0       0.531   0       -0.667  0       -0.114  0       0       0       1.500
+DEAL:BDM2-Transform0::gradient 3       0.000 0.500     -0.833  -1.291  0       -0.278  -2.333  0       0       0.556   -0.833  1.291   0       -0.278  -0.833  0       0       0.278   -0.333  0       0       -0.556  -0.833  0       0       0.278   0.556   0       -2.312  -1.479  -1.111  0       3.333   0.667   0.556   0       -1.021  -0.188  -0.556  0       -2.312  1.479   1.111   0       3.333   -0.667  -0.556  0       -1.021  0.188   6.000   0       0       0       0       0       0       0
+DEAL:BDM2-Transform0::value    4       0.500 0.500     -0.208  0       0.167   0       -0.208  0       -0.208  0       0.167   0       -0.208  0       0       -0.208  0       0.167   0       -0.208  0       -0.208  0       0.167   0       -0.208  1.500   0       0       1.500
+DEAL:BDM2-Transform0::gradient 4       0.500 0.500     0       -0.645  0       -0.278  -1.000  0       0       0.556   0       0.645   0       -0.278  0       -0.645  0       0.278   1.000   0       0       -0.556  0       0.645   0       0.278   -0.278  0       -0.645  0       0.556   0       0       -1.000  -0.278  0       0.645   0       0.278   0       -0.645  0       -0.556  0       0       1.000   0.278   0       0.645   0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform0::value    5       1.000 0.500     0       0       0       0       0       0       0       0       1.000   0       0       0       0       -0.114  0       -0.667  0       0.531   0       -0.114  0       -0.667  0       0.531   0       0       0       1.500
+DEAL:BDM2-Transform0::gradient 5       1.000 0.500     0.833   0       0       -0.278  0.333   0       0       0.556   0.833   0       0       -0.278  0.833   -1.291  0       0.278   2.333   0       0       -0.556  0.833   1.291   0       0.278   0.556   0       1.021   -0.188  -1.111  0       -3.333  0.667   0.556   0       2.312   -1.479  -0.556  0       1.021   0.188   1.111   0       -3.333  -0.667  -0.556  0       2.312   1.479   -6.000  0       0       0       0       0       0       0
+DEAL:BDM2-Transform0::value    
+DEAL:BDM2-Transform0::gradient 
+DEAL:BDM2-Transform0::value    6       0.000 1.000     0.188   0       -0.667  0       1.479   0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.479   0       -0.667  0       0.188   0       0       0       0
+DEAL:BDM2-Transform0::gradient 6       0.000 1.000     -1.021  2.042   0       0.556   -0.667  -6.667  0       -1.111  -2.312  4.624   0       0.556   -0.645  0       0       -0.556  -2.000  0       0       1.111   0.645   0       0       -0.556  0.556   0       0       -0.645  -1.111  0       0       2.000   0.556   0       0       0.645   -0.556  0       -4.624  2.312   1.111   0       6.667   0.667   -0.556  0       -2.042  1.021   6.000   0       0       0       0       0       0       -6.000
+DEAL:BDM2-Transform0::value    7       0.500 1.000     -0.114  0       -0.667  0       0.531   0       -0.114  0       -0.667  0       0.531   0       0       0       0       0       0       0       0       0       0       1.000   0       0       1.500   0       0       0
+DEAL:BDM2-Transform0::gradient 7       0.500 1.000     -0.188  1.021   0       0.556   0.667   -3.333  0       -1.111  -1.479  2.312   0       0.556   0.188   1.021   0       -0.556  -0.667  -3.333  0       1.111   1.479   2.312   0       -0.556  -0.278  0       0       0.833   0.556   0       0       0.333   -0.278  0       0       0.833   0.278   0       -1.291  0.833   -0.556  0       0       2.333   0.278   0       1.291   0.833   0       0       0       0       0       0       0       -6.000
+DEAL:BDM2-Transform0::value    8       1.000 1.000     0       0       0       0       0       0       0.188   0       -0.667  0       1.479   0       0       0       0       0       0       0       0       0.188   0       -0.667  0       1.479   0       0       0       0
+DEAL:BDM2-Transform0::gradient 8       1.000 1.000     0.645   0       0       0.556   2.000   0       0       -1.111  -0.645  0       0       0.556   1.021   2.042   0       -0.556  0.667   -6.667  0       1.111   2.312   4.624   0       -0.556  0.556   0       0       0.645   -1.111  0       0       2.000   0.556   0       0       -0.645  -0.556  0       2.042   1.021   1.111   0       -6.667  0.667   -0.556  0       4.624   2.312   -6.000  0       0       0       0       0       0       -6.000
+DEAL:BDM2-Transform0::value    
+DEAL:BDM2-Transform0::gradient 
+DEAL:BDM2-Transform0::
+DEAL:BDM2-Transform1::value    0       0.000 0.000     0       1.479   0       -0.667  0       0.188   0       0       0       0       0       0       -1.479  0       0.667   0       -0.188  0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform1::gradient 0       0.000 0.000     0.556   0       4.624   -2.312  -1.111  0       -6.667  -0.667  0.556   0       2.042   -1.021  -0.556  0       0       0.645   1.111   0       0       -2.000  -0.556  0       0       -0.645  -2.312  4.624   0       0.556   -0.667  -6.667  0       -1.111  -1.021  2.042   0       0.556   0.645   0       0       -0.556  -2.000  0       0       1.111   -0.645  0       0       -0.556  0       0       0       6.000   6.000   0       0       0
+DEAL:BDM2-Transform1::value    1       0.000 0.500     0       0.531   0       -0.667  0       -0.114  0       0.531   0       -0.667  0       -0.114  0       0       -1.000  0       0       0       0       0       0       0       0       0       0       1.500   0       0
+DEAL:BDM2-Transform1::gradient 1       0.000 0.500     0.556   0       2.312   -1.479  -1.111  0       -3.333  0.667   0.556   0       1.021   -0.188  -0.556  0       2.312   1.479   1.111   0       -3.333  -0.667  -0.556  0       1.021   0.188   -0.833  1.291   0       -0.278  -2.333  0       0       0.556   -0.833  -1.291  0       -0.278  -0.833  0       0       0.278   -0.333  0       0       -0.556  -0.833  0       0       0.278   0       0       0       0       6.000   0       0       0
+DEAL:BDM2-Transform1::value    2       0.000 1.000     0       0       0       0       0       0       0       1.479   0       -0.667  0       0.188   -0.188  0       0.667   0       -1.479  0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform1::gradient 2       0.000 1.000     0.556   0       0       -0.645  -1.111  0       0       2.000   0.556   0       0       0.645   -0.556  0       4.624   2.312   1.111   0       -6.667  0.667   -0.556  0       2.042   1.021   -1.021  -2.042  0       0.556   -0.667  6.667   0       -1.111  -2.312  -4.624  0       0.556   -0.645  0       0       -0.556  -2.000  0       0       1.111   0.645   0       0       -0.556  0       0       0       -6.000  6.000   0       0       0
+DEAL:BDM2-Transform1::value    
+DEAL:BDM2-Transform1::gradient 
+DEAL:BDM2-Transform1::value    3       -0.500 0.000    0       0       0       1.000   0       0       0       0       0       0       0       0       -0.531  0       0.667   0       0.114   0       -0.531  0       0.667   0       0.114   0       0       0       -1.500  0
+DEAL:BDM2-Transform1::gradient 3       -0.500 0.000    -0.278  0       1.291   -0.833  0.556   0       0       -2.333  -0.278  0       -1.291  -0.833  0.278   0       0       -0.833  -0.556  0       0       -0.333  0.278   0       0       -0.833  -1.479  2.312   0       0.556   0.667   -3.333  0       -1.111  -0.188  1.021   0       0.556   1.479   2.312   0       -0.556  -0.667  -3.333  0       1.111   0.188   1.021   0       -0.556  0       0       0       6.000   0       0       0       0
+DEAL:BDM2-Transform1::value    4       -0.500 0.500    0       -0.208  0       0.167   0       -0.208  0       -0.208  0       0.167   0       -0.208  0.208   0       -0.167  0       0.208   0       0.208   0       -0.167  0       0.208   0       0       1.500   -1.500  0
+DEAL:BDM2-Transform1::gradient 4       -0.500 0.500    -0.278  0       0.645   0       0.556   0       0       -1.000  -0.278  0       -0.645  0       0.278   0       0.645   0       -0.556  0       0       1.000   0.278   0       -0.645  0       0       0.645   0       -0.278  -1.000  0       0       0.556   0       -0.645  0       -0.278  0       0.645   0       0.278   1.000   0       0       -0.556  0       -0.645  0       0.278   0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform1::value    5       -0.500 1.000    0       0       0       0       0       0       0       0       0       1.000   0       0       0.114   0       0.667   0       -0.531  0       0.114   0       0.667   0       -0.531  0       0       0       -1.500  0
+DEAL:BDM2-Transform1::gradient 5       -0.500 1.000    -0.278  0       0       0.833   0.556   0       0       0.333   -0.278  0       0       0.833   0.278   0       1.291   0.833   -0.556  0       0       2.333   0.278   0       -1.291  0.833   -0.188  -1.021  0       0.556   0.667   3.333   0       -1.111  -1.479  -2.312  0       0.556   0.188   -1.021  0       -0.556  -0.667  3.333   0       1.111   1.479   -2.312  0       -0.556  0       0       0       -6.000  0       0       0       0
+DEAL:BDM2-Transform1::value    
+DEAL:BDM2-Transform1::gradient 
+DEAL:BDM2-Transform1::value    6       -1.000 0.000    0       0.188   0       -0.667  0       1.479   0       0       0       0       0       0       0       0       0       0       0       0       -1.479  0       0.667   0       -0.188  0       0       0       0       0
+DEAL:BDM2-Transform1::gradient 6       -1.000 0.000    0.556   0       -2.042  -1.021  -1.111  0       6.667   -0.667  0.556   0       -4.624  -2.312  -0.556  0       0       -0.645  1.111   0       0       -2.000  -0.556  0       0       0.645   -0.645  0       0       0.556   2.000   0       0       -1.111  0.645   0       0       0.556   2.312   4.624   0       -0.556  0.667   -6.667  0       1.111   1.021   2.042   0       -0.556  0       0       0       6.000   -6.000  0       0       0
+DEAL:BDM2-Transform1::value    7       -1.000 0.500    0       -0.114  0       -0.667  0       0.531   0       -0.114  0       -0.667  0       0.531   0       0       0       0       0       0       0       0       -1.000  0       0       0       0       1.500   0       0
+DEAL:BDM2-Transform1::gradient 7       -1.000 0.500    0.556   0       -1.021  -0.188  -1.111  0       3.333   0.667   0.556   0       -2.312  -1.479  -0.556  0       -1.021  0.188   1.111   0       3.333   -0.667  -0.556  0       -2.312  1.479   0.833   0       0       -0.278  0.333   0       0       0.556   0.833   0       0       -0.278  0.833   1.291   0       0.278   2.333   0       0       -0.556  0.833   -1.291  0       0.278   0       0       0       0       -6.000  0       0       0
+DEAL:BDM2-Transform1::value    8       -1.000 1.000    0       0       0       0       0       0       0       0.188   0       -0.667  0       1.479   0       0       0       0       0       0       -0.188  0       0.667   0       -1.479  0       0       0       0       0
+DEAL:BDM2-Transform1::gradient 8       -1.000 1.000    0.556   0       0       0.645   -1.111  0       0       2.000   0.556   0       0       -0.645  -0.556  0       -2.042  1.021   1.111   0       6.667   0.667   -0.556  0       -4.624  2.312   0.645   0       0       0.556   2.000   0       0       -1.111  -0.645  0       0       0.556   1.021   -2.042  0       -0.556  0.667   6.667   0       1.111   2.312   -4.624  0       -0.556  0       0       0       -6.000  -6.000  0       0       0
+DEAL:BDM2-Transform1::value    
+DEAL:BDM2-Transform1::gradient 
+DEAL:BDM2-Transform1::
+DEAL:BDM2-Transform2::value    0       0.000 0.000     0       0.739   0       -0.333  0       0.094   0       0       0       0       0       0       -0.739  0       0.333   0       -0.094  0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform2::gradient 0       0.000 0.000     0.139   0       1.156   -0.578  -0.278  0       -1.667  -0.167  0.139   0       0.511   -0.255  -0.139  0       0       0.161   0.278   0       0       -0.500  -0.139  0       0       -0.161  -0.578  1.156   0       0.139   -0.167  -1.667  0       -0.278  -0.255  0.511   0       0.139   0.161   0       0       -0.139  -0.500  0       0       0.278   -0.161  0       0       -0.139  0       0       0       1.500   1.500   0       0       0
+DEAL:BDM2-Transform2::value    1       0.000 1.000     0       0.266   0       -0.333  0       -0.057  0       0.266   0       -0.333  0       -0.057  0       0       -0.500  0       0       0       0       0       0       0       0       0       0       0.750   0       0
+DEAL:BDM2-Transform2::gradient 1       0.000 1.000     0.139   0       0.578   -0.370  -0.278  0       -0.833  0.167   0.139   0       0.255   -0.047  -0.139  0       0.578   0.370   0.278   0       -0.833  -0.167  -0.139  0       0.255   0.047   -0.208  0.323   0       -0.069  -0.583  0       0       0.139   -0.208  -0.323  0       -0.069  -0.208  0       0       0.069   -0.083  0       0       -0.139  -0.208  0       0       0.069   0       0       0       0       1.500   0       0       0
+DEAL:BDM2-Transform2::value    2       0.000 2.000     0       0       0       0       0       0       0       0.739   0       -0.333  0       0.094   -0.094  0       0.333   0       -0.739  0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform2::gradient 2       0.000 2.000     0.139   0       0       -0.161  -0.278  0       0       0.500   0.139   0       0       0.161   -0.139  0       1.156   0.578   0.278   0       -1.667  0.167   -0.139  0       0.511   0.255   -0.255  -0.511  0       0.139   -0.167  1.667   0       -0.278  -0.578  -1.156  0       0.139   -0.161  0       0       -0.139  -0.500  0       0       0.278   0.161   0       0       -0.139  0       0       0       -1.500  1.500   0       0       0
+DEAL:BDM2-Transform2::value    
+DEAL:BDM2-Transform2::gradient 
+DEAL:BDM2-Transform2::value    3       -1.000 0.000    0       0       0       0.500   0       0       0       0       0       0       0       0       -0.266  0       0.333   0       0.057   0       -0.266  0       0.333   0       0.057   0       0       0       -0.750  0
+DEAL:BDM2-Transform2::gradient 3       -1.000 0.000    -0.069  0       0.323   -0.208  0.139   0       0       -0.583  -0.069  0       -0.323  -0.208  0.069   0       0       -0.208  -0.139  0       0       -0.083  0.069   0       0       -0.208  -0.370  0.578   0       0.139   0.167   -0.833  0       -0.278  -0.047  0.255   0       0.139   0.370   0.578   0       -0.139  -0.167  -0.833  0       0.278   0.047   0.255   0       -0.139  0       0       0       1.500   0       0       0       0
+DEAL:BDM2-Transform2::value    4       -1.000 1.000    0       -0.104  0       0.083   0       -0.104  0       -0.104  0       0.083   0       -0.104  0.104   0       -0.083  0       0.104   0       0.104   0       -0.083  0       0.104   0       0       0.750   -0.750  0
+DEAL:BDM2-Transform2::gradient 4       -1.000 1.000    -0.069  0       0.161   0       0.139   0       0       -0.250  -0.069  0       -0.161  0       0.069   0       0.161   0       -0.139  0       0       0.250   0.069   0       -0.161  0       0       0.161   0       -0.069  -0.250  0       0       0.139   0       -0.161  0       -0.069  0       0.161   0       0.069   0.250   0       0       -0.139  0       -0.161  0       0.069   0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform2::value    5       -1.000 2.000    0       0       0       0       0       0       0       0       0       0.500   0       0       0.057   0       0.333   0       -0.266  0       0.057   0       0.333   0       -0.266  0       0       0       -0.750  0
+DEAL:BDM2-Transform2::gradient 5       -1.000 2.000    -0.069  0       0       0.208   0.139   0       0       0.083   -0.069  0       0       0.208   0.069   0       0.323   0.208   -0.139  0       0       0.583   0.069   0       -0.323  0.208   -0.047  -0.255  0       0.139   0.167   0.833   0       -0.278  -0.370  -0.578  0       0.139   0.047   -0.255  0       -0.139  -0.167  0.833   0       0.278   0.370   -0.578  0       -0.139  0       0       0       -1.500  0       0       0       0
+DEAL:BDM2-Transform2::value    
+DEAL:BDM2-Transform2::gradient 
+DEAL:BDM2-Transform2::value    6       -2.000 0.000    0       0.094   0       -0.333  0       0.739   0       0       0       0       0       0       0       0       0       0       0       0       -0.739  0       0.333   0       -0.094  0       0       0       0       0
+DEAL:BDM2-Transform2::gradient 6       -2.000 0.000    0.139   0       -0.511  -0.255  -0.278  0       1.667   -0.167  0.139   0       -1.156  -0.578  -0.139  0       0       -0.161  0.278   0       0       -0.500  -0.139  0       0       0.161   -0.161  0       0       0.139   0.500   0       0       -0.278  0.161   0       0       0.139   0.578   1.156   0       -0.139  0.167   -1.667  0       0.278   0.255   0.511   0       -0.139  0       0       0       1.500   -1.500  0       0       0
+DEAL:BDM2-Transform2::value    7       -2.000 1.000    0       -0.057  0       -0.333  0       0.266   0       -0.057  0       -0.333  0       0.266   0       0       0       0       0       0       0       0       -0.500  0       0       0       0       0.750   0       0
+DEAL:BDM2-Transform2::gradient 7       -2.000 1.000    0.139   0       -0.255  -0.047  -0.278  0       0.833   0.167   0.139   0       -0.578  -0.370  -0.139  0       -0.255  0.047   0.278   0       0.833   -0.167  -0.139  0       -0.578  0.370   0.208   0       0       -0.069  0.083   0       0       0.139   0.208   0       0       -0.069  0.208   0.323   0       0.069   0.583   0       0       -0.139  0.208   -0.323  0       0.069   0       0       0       0       -1.500  0       0       0
+DEAL:BDM2-Transform2::value    8       -2.000 2.000    0       0       0       0       0       0       0       0.094   0       -0.333  0       0.739   0       0       0       0       0       0       -0.094  0       0.333   0       -0.739  0       0       0       0       0
+DEAL:BDM2-Transform2::gradient 8       -2.000 2.000    0.139   0       0       0.161   -0.278  0       0       0.500   0.139   0       0       -0.161  -0.139  0       -0.511  0.255   0.278   0       1.667   0.167   -0.139  0       -1.156  0.578   0.161   0       0       0.139   0.500   0       0       -0.278  -0.161  0       0       0.139   0.255   -0.511  0       -0.139  0.167   1.667   0       0.278   0.578   -1.156  0       -0.139  0       0       0       -1.500  -1.500  0       0       0
+DEAL:BDM2-Transform2::value    
+DEAL:BDM2-Transform2::gradient 
+DEAL:BDM2-Transform2::
+DEAL:BDM2-Transform3::value    0       0.000 0.000     1.479   0       -0.667  0       0.188   0       0       0       0       0       0       0       0       0.739   0       -0.333  0       0.094   0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform3::gradient 0       0.000 0.000     -1.156  -4.624  0       0.278   -0.333  6.667   0       -0.556  -0.511  -2.042  0       0.278   0.323   0       0       -0.278  -1.000  0       0       0.556   -0.323  0       0       -0.278  0.278   0       -1.156  -1.156  -0.556  0       1.667   -0.333  0.278   0       -0.511  -0.511  -0.278  0       0       0.323   0.556   0       0       -1.000  -0.278  0       0       -0.323  3.000   0       0       0       0       0       0       3.000
+DEAL:BDM2-Transform3::value    1       1.000 0.000     0.531   0       -0.667  0       -0.114  0       0.531   0       -0.667  0       -0.114  0       0       0       0       0.500   0       0       0       0       0       0       0       0       1.500   0       0       0
+DEAL:BDM2-Transform3::gradient 1       1.000 0.000     -0.739  -2.312  0       0.278   0.333   3.333   0       -0.556  -0.094  -1.021  0       0.278   0.739   -2.312  0       -0.278  -0.333  3.333   0       0.556   0.094   -1.021  0       -0.278  -0.139  0       -0.323  -0.417  0.278   0       0       -1.167  -0.139  0       0.323   -0.417  0.139   0       0       -0.417  -0.278  0       0       -0.167  0.139   0       0       -0.417  0       0       0       0       0       0       0       3.000
+DEAL:BDM2-Transform3::value    2       2.000 0.000     0       0       0       0       0       0       1.479   0       -0.667  0       0.188   0       0       0.094   0       -0.333  0       0.739   0       0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform3::gradient 2       2.000 0.000     -0.323  0       0       0.278   1.000   0       0       -0.556  0.323   0       0       0.278   1.156   -4.624  0       -0.278  0.333   6.667   0       0.556   0.511   -2.042  0       -0.278  0.278   0       0.511   -0.511  -0.556  0       -1.667  -0.333  0.278   0       1.156   -1.156  -0.278  0       0       -0.323  0.556   0       0       -1.000  -0.278  0       0       0.323   -3.000  0       0       0       0       0       0       3.000
+DEAL:BDM2-Transform3::value    
+DEAL:BDM2-Transform3::gradient 
+DEAL:BDM2-Transform3::value    3       0.000 0.500     0       0       1.000   0       0       0       0       0       0       0       0       0       0       0.266   0       -0.333  0       -0.057  0       0.266   0       -0.333  0       -0.057  0       0       0       0.750
+DEAL:BDM2-Transform3::gradient 3       0.000 0.500     -0.417  -1.291  0       -0.139  -1.167  0       0       0.278   -0.417  1.291   0       -0.139  -0.417  0       0       0.139   -0.167  0       0       -0.278  -0.417  0       0       0.139   0.278   0       -0.578  -0.739  -0.556  0       0.833   0.333   0.278   0       -0.255  -0.094  -0.278  0       -0.578  0.739   0.556   0       0.833   -0.333  -0.278  0       -0.255  0.094   3.000   0       0       0       0       0       0       0
+DEAL:BDM2-Transform3::value    4       1.000 0.500     -0.208  0       0.167   0       -0.208  0       -0.208  0       0.167   0       -0.208  0       0       -0.104  0       0.083   0       -0.104  0       -0.104  0       0.083   0       -0.104  1.500   0       0       0.750
+DEAL:BDM2-Transform3::gradient 4       1.000 0.500     0       -0.645  0       -0.139  -0.500  0       0       0.278   0       0.645   0       -0.139  0       -0.645  0       0.139   0.500   0       0       -0.278  0       0.645   0       0.139   -0.139  0       -0.161  0       0.278   0       0       -0.500  -0.139  0       0.161   0       0.139   0       -0.161  0       -0.278  0       0       0.500   0.139   0       0.161   0       0       0       0       0       0       0       0       0
+DEAL:BDM2-Transform3::value    5       2.000 0.500     0       0       0       0       0       0       0       0       1.000   0       0       0       0       -0.057  0       -0.333  0       0.266   0       -0.057  0       -0.333  0       0.266   0       0       0       0.750
+DEAL:BDM2-Transform3::gradient 5       2.000 0.500     0.417   0       0       -0.139  0.167   0       0       0.278   0.417   0       0       -0.139  0.417   -1.291  0       0.139   1.167   0       0       -0.278  0.417   1.291   0       0.139   0.278   0       0.255   -0.094  -0.556  0       -0.833  0.333   0.278   0       0.578   -0.739  -0.278  0       0.255   0.094   0.556   0       -0.833  -0.333  -0.278  0       0.578   0.739   -3.000  0       0       0       0       0       0       0
+DEAL:BDM2-Transform3::value    
+DEAL:BDM2-Transform3::gradient 
+DEAL:BDM2-Transform3::value    6       0.000 1.000     0.188   0       -0.667  0       1.479   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.739   0       -0.333  0       0.094   0       0       0       0
+DEAL:BDM2-Transform3::gradient 6       0.000 1.000     -0.511  2.042   0       0.278   -0.333  -6.667  0       -0.556  -1.156  4.624   0       0.278   -0.323  0       0       -0.278  -1.000  0       0       0.556   0.323   0       0       -0.278  0.278   0       0       -0.323  -0.556  0       0       1.000   0.278   0       0       0.323   -0.278  0       -1.156  1.156   0.556   0       1.667   0.333   -0.278  0       -0.511  0.511   3.000   0       0       0       0       0       0       -3.000
+DEAL:BDM2-Transform3::value    7       1.000 1.000     -0.114  0       -0.667  0       0.531   0       -0.114  0       -0.667  0       0.531   0       0       0       0       0       0       0       0       0       0       0.500   0       0       1.500   0       0       0
+DEAL:BDM2-Transform3::gradient 7       1.000 1.000     -0.094  1.021   0       0.278   0.333   -3.333  0       -0.556  -0.739  2.312   0       0.278   0.094   1.021   0       -0.278  -0.333  -3.333  0       0.556   0.739   2.312   0       -0.278  -0.139  0       0       0.417   0.278   0       0       0.167   -0.139  0       0       0.417   0.139   0       -0.323  0.417   -0.278  0       0       1.167   0.139   0       0.323   0.417   0       0       0       0       0       0       0       -3.000
+DEAL:BDM2-Transform3::value    8       2.000 1.000     0       0       0       0       0       0       0.188   0       -0.667  0       1.479   0       0       0       0       0       0       0       0       0.094   0       -0.333  0       0.739   0       0       0       0
+DEAL:BDM2-Transform3::gradient 8       2.000 1.000     0.323   0       0       0.278   1.000   0       0       -0.556  -0.323  0       0       0.278   0.511   2.042   0       -0.278  0.333   -6.667  0       0.556   1.156   4.624   0       -0.278  0.278   0       0       0.323   -0.556  0       0       1.000   0.278   0       0       -0.323  -0.278  0       0.511   0.511   0.556   0       -1.667  0.333   -0.278  0       1.156   1.156   -3.000  0       0       0       0       0       0       -3.000
+DEAL:BDM2-Transform3::value    
+DEAL:BDM2-Transform3::gradient 
+DEAL:BDM2-Transform3::
+DEAL:BDM3-Transform0::value    0       0.000 0.000     1.527   0       -0.814  0       0.401   0       -0.114  0       0       0       0       0       0       0       0       0       0       1.527   0       -0.814  0       0.401   0       -0.114  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform0::gradient 0       0.000 0.000     -4.266  -8.546  0       0.371   -2.793  13.807  0       -0.940  -2.012  -7.417  0       0.940   0.070   2.156   0       -0.371  0.527   0       0       -0.371  -1.159  0       0       0.940   2.051   0       0       -0.940  1.582   0       0       0.371   0.371   0       -8.546  -4.266  -0.940  0       13.807  -2.793  0.940   0       -7.417  -2.012  -0.371  0       2.156   0.070   -0.371  0       0       0.527   0.940   0       0       -1.159  -0.940  0       0       2.051   0.371   0       0       1.582   54.000  0       0       0       -60.000 0       0       0       -36.000 0       0       0       0       0       0       54.000  0       0       0       -36.000 0       0       0       -60.000
+DEAL:BDM3-Transform0::value    1       0.500 0.000     0.296   0       -0.901  0       0.205   0       0.150   0       0.296   0       -0.901  0       0.205   0       0.150   0       -0.023  -0.092  0.059   0.592   -0.059  0.592   0.023   -0.092  0.023   0       -0.059  0       0.059   0       -0.023  0       6.000   0       0       0       -9.000  0       0       0       0       0       0       0
+DEAL:BDM3-Transform0::gradient 1       0.500 0.000     -1.092  -3.599  0       0.371   1.629   7.402   0       -0.940  0.414   -4.207  0       0.940   0.549   0.404   0       -0.371  1.092   -3.599  0       -0.371  -1.629  7.402   0       0.940   -0.414  -4.207  0       -0.940  -0.549  0.404   0       0.371   0       0       0.214   -1.299  0       0       -3.484  -3.201  0       0       3.484   -3.201  0       0       -0.214  -1.299  0       0       0       0.256   0       0       0       1.244   0       0       0       1.244   0       0       0       0.256   -15.000 -9.000  0       0       30.000  0       0       0       0       18.000  0       0       0       0       0       36.000  0       0       0       0       0       0       0       -60.000
+DEAL:BDM3-Transform0::value    2       1.000 0.000     0       0       0       0       0       0       0       0       1.527   0       -0.814  0       0.401   0       -0.114  0       0       -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform0::gradient 2       1.000 0.000     -0.527  0       0       0.371   1.159   0       0       -0.940  -2.051  0       0       0.940   -1.582  0       0       -0.371  4.266   -8.546  0       -0.371  2.793   13.807  0       0.940   2.012   -7.417  0       -0.940  -0.070  2.156   0       0.371   -0.371  0       -2.156  0.070   0.940   0       7.417   -2.012  -0.940  0       -13.807 -2.793  0.371   0       8.546   -4.266  0.371   0       0       1.582   -0.940  0       0       2.051   0.940   0       0       -1.159  -0.371  0       0       0.527   6.000   0       0       0       -60.000 0       0       0       36.000  0       0       0       0       0       0       18.000  0       0       0       36.000  0       0       0       -60.000
+DEAL:BDM3-Transform0::value    
+DEAL:BDM3-Transform0::gradient 
+DEAL:BDM3-Transform0::value    3       0.000 0.500     -0.092  -0.023  0.592   0.059   0.592   -0.059  -0.092  0.023   0       0.023   0       -0.059  0       0.059   0       -0.023  0       0.296   0       -0.901  0       0.205   0       0.150   0       0.296   0       -0.901  0       0.205   0       0.150   0       0       0       0       0       0       0       6.000   0       -9.000  0       0
+DEAL:BDM3-Transform0::gradient 3       0.000 0.500     -1.299  0.214   0       0       -3.201  -3.484  0       0       -3.201  3.484   0       0       -1.299  -0.214  0       0       0.256   0       0       0       1.244   0       0       0       1.244   0       0       0       0.256   0       0       0       0.371   0       -3.599  -1.092  -0.940  0       7.402   1.629   0.940   0       -4.207  0.414   -0.371  0       0.404   0.549   -0.371  0       -3.599  1.092   0.940   0       7.402   -1.629  -0.940  0       -4.207  -0.414  0.371   0       0.404   -0.549  36.000  0       0       0       -60.000 0       0       0       0       0       0       0       0       0       -9.000  -15.000 0       0       18.000  0       0       0       0       30.000
+DEAL:BDM3-Transform0::value    4       0.500 0.500     -0.177  -0.023  0.052   0.059   0.052   -0.059  -0.177  0.023   -0.177  0.023   0.052   -0.059  0.052   0.059   -0.177  -0.023  -0.023  -0.177  0.059   0.052   -0.059  0.052   0.023   -0.177  0.023   -0.177  -0.059  0.052   0.059   0.052   -0.023  -0.177  1.500   0       0       0       0       0       0       1.500   0       0       0       0
+DEAL:BDM3-Transform0::gradient 4       0.500 0.500     0.527   0.781   0       0       0.223   -1.243  0       0       0.223   1.243   0       0       0.527   -0.781  0       0       -0.527  0.781   0       0       -0.223  -1.243  0       0       -0.223  1.243   0       0       -0.527  -0.781  0       0       0       0       0.781   0.527   0       0       -1.243  0.223   0       0       1.243   0.223   0       0       -0.781  0.527   0       0       0.781   -0.527  0       0       -1.243  -0.223  0       0       1.243   -0.223  0       0       -0.781  -0.527  -15.000 -9.000  0       0       30.000  0       0       0       0       18.000  0       0       0       0       -9.000  -15.000 0       0       18.000  0       0       0       0       30.000
+DEAL:BDM3-Transform0::value    5       1.000 0.500     0       -0.023  0       0.059   0       -0.059  0       0.023   -0.092  0.023   0.592   -0.059  0.592   0.059   -0.092  -0.023  0       0.150   0       0.205   0       -0.901  0       0.296   0       0.150   0       0.205   0       -0.901  0       0.296   0       0       0       0       0       0       0       -3.000  0       9.000   0       0
+DEAL:BDM3-Transform0::gradient 5       1.000 0.500     -0.256  0       0       0       -1.244  0       0       0       -1.244  0       0       0       -0.256  0       0       0       1.299   0.214   0       0       3.201   -3.484  0       0       3.201   3.484   0       0       1.299   -0.214  0       0       -0.371  0       -0.404  0.549   0.940   0       4.207   0.414   -0.940  0       -7.402  1.629   0.371   0       3.599   -1.092  0.371   0       -0.404  -0.549  -0.940  0       4.207   -0.414  0.940   0       -7.402  -1.629  -0.371  0       3.599   1.092   24.000  0       0       0       -60.000 0       0       0       0       0       0       0       0       0       -9.000  -15.000 0       0       18.000  0       0       0       0       30.000
+DEAL:BDM3-Transform0::value    
+DEAL:BDM3-Transform0::gradient 
+DEAL:BDM3-Transform0::value    6       0.000 1.000     -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1.527   0       -0.814  0       0.401   0       -0.114  0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform0::gradient 6       0.000 1.000     0.070   -2.156  0       -0.371  -2.012  7.417   0       0.940   -2.793  -13.807 0       -0.940  -4.266  8.546   0       0.371   1.582   0       0       0.371   2.051   0       0       -0.940  -1.159  0       0       0.940   0.527   0       0       -0.371  0.371   0       0       -0.527  -0.940  0       0       1.159   0.940   0       0       -2.051  -0.371  0       0       -1.582  -0.371  0       -8.546  4.266   0.940   0       13.807  2.793   -0.940  0       -7.417  2.012   0.371   0       2.156   -0.070  18.000  0       0       0       -60.000 0       0       0       36.000  0       0       0       0       0       0       6.000   0       0       0       36.000  0       0       0       -60.000
+DEAL:BDM3-Transform0::value    7       0.500 1.000     0.150   0       0.205   0       -0.901  0       0.296   0       0.150   0       0.205   0       -0.901  0       0.296   0       -0.023  0       0.059   0       -0.059  0       0.023   0       0.023   -0.092  -0.059  0.592   0.059   0.592   -0.023  -0.092  -3.000  0       0       0       9.000   0       0       0       0       0       0       0
+DEAL:BDM3-Transform0::gradient 7       0.500 1.000     0.549   -0.404  0       -0.371  0.414   4.207   0       0.940   1.629   -7.402  0       -0.940  -1.092  3.599   0       0.371   -0.549  -0.404  0       0.371   -0.414  4.207   0       -0.940  -1.629  -7.402  0       0.940   1.092   3.599   0       -0.371  0       0       0       -0.256  0       0       0       -1.244  0       0       0       -1.244  0       0       0       -0.256  0       0       0.214   1.299   0       0       -3.484  3.201   0       0       3.484   3.201   0       0       -0.214  1.299   -15.000 -9.000  0       0       30.000  0       0       0       0       18.000  0       0       0       0       0       24.000  0       0       0       0       0       0       0       -60.000
+DEAL:BDM3-Transform0::value    8       1.000 1.000     0       0       0       0       0       0       0       0       -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform0::gradient 8       1.000 1.000     -1.582  0       0       -0.371  -2.051  0       0       0.940   1.159   0       0       -0.940  -0.527  0       0       0.371   -0.070  -2.156  0       0.371   2.012   7.417   0       -0.940  2.793   -13.807 0       0.940   4.266   8.546   0       -0.371  -0.371  0       0       -1.582  0.940   0       0       -2.051  -0.940  0       0       1.159   0.371   0       0       -0.527  0.371   0       -2.156  -0.070  -0.940  0       7.417   2.012   0.940   0       -13.807 2.793   -0.371  0       8.546   4.266   42.000  0       0       0       -60.000 0       0       0       -36.000 0       0       0       0       0       0       42.000  0       0       0       -36.000 0       0       0       -60.000
+DEAL:BDM3-Transform0::value    
+DEAL:BDM3-Transform0::gradient 
+DEAL:BDM3-Transform0::
+DEAL:BDM3-Transform1::value    0       0.000 0.000     0       1.527   0       -0.814  0       0.401   0       -0.114  0       0       0       0       0       0       0       0       -1.527  0       0.814   0       -0.401  0       0.114   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 0       0.000 0.000     0.371   0       8.546   -4.266  -0.940  0       -13.807 -2.793  0.940   0       7.417   -2.012  -0.371  0       -2.156  0.070   -0.371  0       0       0.527   0.940   0       0       -1.159  -0.940  0       0       2.051   0.371   0       0       1.582   -4.266  8.546   0       0.371   -2.793  -13.807 0       -0.940  -2.012  7.417   0       0.940   0.070   -2.156  0       -0.371  0.527   0       0       -0.371  -1.159  0       0       0.940   2.051   0       0       -0.940  1.582   0       0       0.371   0       0.000   0.000   54.000  0       0.000   0.000   -60.000 0       0.000   0.000   -36.000 54.000  0.000   0.000   0       -36.000 0.000   0.000   0       -60.000 0.000   0.000   0
+DEAL:BDM3-Transform1::value    1       0.000 0.500     0       0.296   0       -0.901  0       0.205   0       0.150   0       0.296   0       -0.901  0       0.205   0       0.150   0.092   -0.023  -0.592  0.059   -0.592  -0.059  0.092   0.023   0       0.023   0       -0.059  0       0.059   0       -0.023  0       6.000   0       0       0       -9.000  0       0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 1       0.000 0.500     0.371   0       3.599   -1.092  -0.940  0       -7.402  1.629   0.940   0       4.207   0.414   -0.371  0       -0.404  0.549   -0.371  0       3.599   1.092   0.940   0       -7.402  -1.629  -0.940  0       4.207   -0.414  0.371   0       -0.404  -0.549  -1.299  -0.214  0       0       -3.201  3.484   0       0       -3.201  -3.484  0       0       -1.299  0.214   0       0       0.256   0       0       0       1.244   0       0       0       1.244   0       0       0       0.256   0       0       0       0       0       9.000   -15.000 0       0.000   0.000   30.000  0       0       -18.000 0       36.000  0.000   0.000   0       0       0       0       0       -60.000 0.000   0.000   0
+DEAL:BDM3-Transform1::value    2       0.000 1.000     0       0       0       0       0       0       0       0       0       1.527   0       -0.814  0       0.401   0       -0.114  0.114   0       -0.401  0       0.814   0       -1.527  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 2       0.000 1.000     0.371   0       0       -0.527  -0.940  0       0       1.159   0.940   0       0       -2.051  -0.371  0       0       -1.582  -0.371  0       8.546   4.266   0.940   0       -13.807 2.793   -0.940  0       7.417   2.012   0.371   0       -2.156  -0.070  0.070   2.156   0       -0.371  -2.012  -7.417  0       0.940   -2.793  13.807  0       -0.940  -4.266  -8.546  0       0.371   1.582   0       0       0.371   2.051   0       0       -0.940  -1.159  0       0       0.940   0.527   0       0       -0.371  0       0       0       6.000   0       0.000   0.000   -60.000 0       0.000   0.000   36.000  18.000  0       0       0       36.000  0.000   0.000   0       -60.000 0.000   0.000   0
+DEAL:BDM3-Transform1::value    
+DEAL:BDM3-Transform1::gradient 
+DEAL:BDM3-Transform1::value    3       -0.500 0.000    0.023   -0.092  -0.059  0.592   0.059   0.592   -0.023  -0.092  -0.023  0       0.059   0       -0.059  0       0.023   0       -0.296  0       0.901   0       -0.205  0       -0.150  0       -0.296  0       0.901   0       -0.205  0       -0.150  0       0       0       0       0       0       0       -6.000  0       9.000   0       0       0
+DEAL:BDM3-Transform1::gradient 3       -0.500 0.000    0       0       -0.214  -1.299  0       0       3.484   -3.201  0       0       -3.484  -3.201  0       0       0.214   -1.299  0       0       0       0.256   0       0       0       1.244   0       0       0       1.244   0       0       0       0.256   -1.092  3.599   0       0.371   1.629   -7.402  0       -0.940  0.414   4.207   0       0.940   0.549   -0.404  0       -0.371  1.092   3.599   0       -0.371  -1.629  -7.402  0       0.940   -0.414  4.207   0       -0.940  -0.549  -0.404  0       0.371   0       0.000   0.000   36.000  0       0.000   0.000   -60.000 0       0       0       0       -15.000 9.000   0       0       0       -18.000 0       0       30.000  0.000   0.000   0
+DEAL:BDM3-Transform1::value    4       -0.500 0.500    0.023   -0.177  -0.059  0.052   0.059   0.052   -0.023  -0.177  -0.023  -0.177  0.059   0.052   -0.059  0.052   0.023   -0.177  0.177   -0.023  -0.052  0.059   -0.052  -0.059  0.177   0.023   0.177   0.023   -0.052  -0.059  -0.052  0.059   0.177   -0.023  0       1.500   0       0       0       0       -1.500  0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 4       -0.500 0.500    0       0       -0.781  0.527   0       0       1.243   0.223   0       0       -1.243  0.223   0       0       0.781   0.527   0       0       -0.781  -0.527  0       0       1.243   -0.223  0       0       -1.243  -0.223  0       0       0.781   -0.527  0.527   -0.781  0       0       0.223   1.243   0       0       0.223   -1.243  0       0       0.527   0.781   0       0       -0.527  -0.781  0       0       -0.223  1.243   0       0       -0.223  -1.243  0       0       -0.527  0.781   0       0       0       0       9.000   -15.000 0       0.000   0.000   30.000  0       0       -18.000 0       -15.000 9.000   0       0       0       -18.000 0       0       30.000  0.000   0.000   0
+DEAL:BDM3-Transform1::value    5       -0.500 1.000    0.023   0       -0.059  0       0.059   0       -0.023  0       -0.023  -0.092  0.059   0.592   -0.059  0.592   0.023   -0.092  -0.150  0       -0.205  0       0.901   0       -0.296  0       -0.150  0       -0.205  0       0.901   0       -0.296  0       0       0       0       0       0       0       3.000   0       -9.000  0       0       0
+DEAL:BDM3-Transform1::gradient 5       -0.500 1.000    0       0       0       -0.256  0       0       0       -1.244  0       0       0       -1.244  0       0       0       -0.256  0       0       -0.214  1.299   0       0       3.484   3.201   0       0       -3.484  3.201   0       0       0.214   1.299   0.549   0.404   0       -0.371  0.414   -4.207  0       0.940   1.629   7.402   0       -0.940  -1.092  -3.599  0       0.371   -0.549  0.404   0       0.371   -0.414  -4.207  0       -0.940  -1.629  7.402   0       0.940   1.092   -3.599  0       -0.371  0       0.000   0.000   24.000  0       0.000   0.000   -60.000 0       0       0       0       -15.000 9.000   0       0       0       -18.000 0       0       30.000  0.000   0.000   0
+DEAL:BDM3-Transform1::value    
+DEAL:BDM3-Transform1::gradient 
+DEAL:BDM3-Transform1::value    6       -1.000 0.000    0       -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -1.527  0       0.814   0       -0.401  0       0.114   0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 6       -1.000 0.000    -0.371  0       2.156   0.070   0.940   0       -7.417  -2.012  -0.940  0       13.807  -2.793  0.371   0       -8.546  -4.266  0.371   0       0       1.582   -0.940  0       0       2.051   0.940   0       0       -1.159  -0.371  0       0       0.527   -0.527  0       0       0.371   1.159   0       0       -0.940  -2.051  0       0       0.940   -1.582  0       0       -0.371  4.266   8.546   0       -0.371  2.793   -13.807 0       0.940   2.012   7.417   0       -0.940  -0.070  -2.156  0       0.371   0       0       0       18.000  0       0.000   0.000   -60.000 0       0.000   0.000   36.000  6.000   0       0       0       36.000  0.000   0.000   0       -60.000 0.000   0.000   0
+DEAL:BDM3-Transform1::value    7       -1.000 0.500    0       0.150   0       0.205   0       -0.901  0       0.296   0       0.150   0       0.205   0       -0.901  0       0.296   0       -0.023  0       0.059   0       -0.059  0       0.023   0.092   0.023   -0.592  -0.059  -0.592  0.059   0.092   -0.023  0       -3.000  0       0       0       9.000   0       0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 7       -1.000 0.500    -0.371  0       0.404   0.549   0.940   0       -4.207  0.414   -0.940  0       7.402   1.629   0.371   0       -3.599  -1.092  0.371   0       0.404   -0.549  -0.940  0       -4.207  -0.414  0.940   0       7.402   -1.629  -0.371  0       -3.599  1.092   -0.256  0       0       0       -1.244  0       0       0       -1.244  0       0       0       -0.256  0       0       0       1.299   -0.214  0       0       3.201   3.484   0       0       3.201   -3.484  0       0       1.299   0.214   0       0       0       0       9.000   -15.000 0       0.000   0.000   30.000  0       0       -18.000 0       24.000  0.000   0.000   0       0       0       0       0       -60.000 0.000   0.000   0
+DEAL:BDM3-Transform1::value    8       -1.000 1.000    0       0       0       0       0       0       0       0       0       -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0.114   0       -0.401  0       0.814   0       -1.527  0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform1::gradient 8       -1.000 1.000    -0.371  0       0       -1.582  0.940   0       0       -2.051  -0.940  0       0       1.159   0.371   0       0       -0.527  0.371   0       2.156   -0.070  -0.940  0       -7.417  2.012   0.940   0       13.807  2.793   -0.371  0       -8.546  4.266   -1.582  0       0       -0.371  -2.051  0       0       0.940   1.159   0       0       -0.940  -0.527  0       0       0.371   -0.070  2.156   0       0.371   2.012   -7.417  0       -0.940  2.793   13.807  0       0.940   4.266   -8.546  0       -0.371  0       0.000   0.000   42.000  0       0.000   0.000   -60.000 0       0.000   0.000   -36.000 42.000  0.000   0.000   0       -36.000 0.000   0.000   0       -60.000 0.000   0.000   0
+DEAL:BDM3-Transform1::value    
+DEAL:BDM3-Transform1::gradient 
+DEAL:BDM3-Transform1::
+DEAL:BDM3-Transform2::value    0       0.000 0.000     0       0.763   0       -0.407  0       0.200   0       -0.057  0       0       0       0       0       0       0       0       -0.763  0       0.407   0       -0.200  0       0.057   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 0       0.000 0.000     0.093   0       2.137   -1.067  -0.235  0       -3.452  -0.698  0.235   0       1.854   -0.503  -0.093  0       -0.539  0.018   -0.093  0       0       0.132   0.235   0       0       -0.290  -0.235  0       0       0.513   0.093   0       0       0.395   -1.067  2.137   0       0.093   -0.698  -3.452  0       -0.235  -0.503  1.854   0       0.235   0.018   -0.539  0       -0.093  0.132   0       0       -0.093  -0.290  0       0       0.235   0.513   0       0       -0.235  0.395   0       0       0.093   0       0       0       13.500  0       0       0       -15.000 0       0       0       -9.000  13.500  0       0       0       -9.000  0       0       0       -15.000 0       0       0
+DEAL:BDM3-Transform2::value    1       0.000 1.000     0       0.148   0       -0.450  0       0.103   0       0.075   0       0.148   0       -0.450  0       0.103   0       0.075   0.046   -0.012  -0.296  0.029   -0.296  -0.029  0.046   0.012   0       0.012   0       -0.029  0       0.029   0       -0.012  0       3.000   0       0       0       -4.500  0       0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 1       0.000 1.000     0.093   0       0.900   -0.273  -0.235  0       -1.851  0.407   0.235   0       1.052   0.104   -0.093  0       -0.101  0.137   -0.093  0       0.900   0.273   0.235   0       -1.851  -0.407  -0.235  0       1.052   -0.104  0.093   0       -0.101  -0.137  -0.325  -0.054  0       0       -0.800  0.871   0       0       -0.800  -0.871  0       0       -0.325  0.054   0       0       0.064   0       0       0       0.311   0       0       0       0.311   0       0       0       0.064   0       0       0       0       0       2.250   -3.750  0       0       0       7.500   0       0       -4.500  0       9.000   0       0       0       0       0       0       0       -15.000 0       0       0
+DEAL:BDM3-Transform2::value    2       0.000 2.000     0       0       0       0       0       0       0       0       0       0.763   0       -0.407  0       0.200   0       -0.057  0.057   0       -0.200  0       0.407   0       -0.763  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 2       0.000 2.000     0.093   0       0       -0.132  -0.235  0       0       0.290   0.235   0       0       -0.513  -0.093  0       0       -0.395  -0.093  0       2.137   1.067   0.235   0       -3.452  0.698   -0.235  0       1.854   0.503   0.093   0       -0.539  -0.018  0.018   0.539   0       -0.093  -0.503  -1.854  0       0.235   -0.698  3.452   0       -0.235  -1.067  -2.137  0       0.093   0.395   0       0       0.093   0.513   0       0       -0.235  -0.290  0       0       0.235   0.132   0       0       -0.093  0       0       0       1.500   0       0       0       -15.000 0       0       0       9.000   4.500   0       0       0       9.000   0       0       0       -15.000 0       0       0
+DEAL:BDM3-Transform2::value    
+DEAL:BDM3-Transform2::gradient 
+DEAL:BDM3-Transform2::value    3       -1.000 0.000    0.012   -0.046  -0.029  0.296   0.029   0.296   -0.012  -0.046  -0.012  0       0.029   0       -0.029  0       0.012   0       -0.148  0       0.450   0       -0.103  0       -0.075  0       -0.148  0       0.450   0       -0.103  0       -0.075  0       0       0       0       0       0       0       -3.000  0       4.500   0       0       0
+DEAL:BDM3-Transform2::gradient 3       -1.000 0.000    0       0       -0.054  -0.325  0       0       0.871   -0.800  0       0       -0.871  -0.800  0       0       0.054   -0.325  0       0       0       0.064   0       0       0       0.311   0       0       0       0.311   0       0       0       0.064   -0.273  0.900   0       0.093   0.407   -1.851  0       -0.235  0.104   1.052   0       0.235   0.137   -0.101  0       -0.093  0.273   0.900   0       -0.093  -0.407  -1.851  0       0.235   -0.104  1.052   0       -0.235  -0.137  -0.101  0       0.093   0       0       0       9.000   0       0       0       -15.000 0       0       0       0       -3.750  2.250   0       0       0       -4.500  0       0       7.500   0       0       0
+DEAL:BDM3-Transform2::value    4       -1.000 1.000    0.012   -0.088  -0.029  0.026   0.029   0.026   -0.012  -0.088  -0.012  -0.088  0.029   0.026   -0.029  0.026   0.012   -0.088  0.088   -0.012  -0.026  0.029   -0.026  -0.029  0.088   0.012   0.088   0.012   -0.026  -0.029  -0.026  0.029   0.088   -0.012  0       0.750   0       0       0       0       -0.750  0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 4       -1.000 1.000    0       0       -0.195  0.132   0       0       0.311   0.056   0       0       -0.311  0.056   0       0       0.195   0.132   0       0       -0.195  -0.132  0       0       0.311   -0.056  0       0       -0.311  -0.056  0       0       0.195   -0.132  0.132   -0.195  0       0       0.056   0.311   0       0       0.056   -0.311  0       0       0.132   0.195   0       0       -0.132  -0.195  0       0       -0.056  0.311   0       0       -0.056  -0.311  0       0       -0.132  0.195   0       0       0       0       2.250   -3.750  0       0       0       7.500   0       0       -4.500  0       -3.750  2.250   0       0       0       -4.500  0       0       7.500   0       0       0
+DEAL:BDM3-Transform2::value    5       -1.000 2.000    0.012   0       -0.029  0       0.029   0       -0.012  0       -0.012  -0.046  0.029   0.296   -0.029  0.296   0.012   -0.046  -0.075  0       -0.103  0       0.450   0       -0.148  0       -0.075  0       -0.103  0       0.450   0       -0.148  0       0       0       0       0       0       0       1.500   0       -4.500  0       0       0
+DEAL:BDM3-Transform2::gradient 5       -1.000 2.000    0       0       0       -0.064  0       0       0       -0.311  0       0       0       -0.311  0       0       0       -0.064  0       0       -0.054  0.325   0       0       0.871   0.800   0       0       -0.871  0.800   0       0       0.054   0.325   0.137   0.101   0       -0.093  0.104   -1.052  0       0.235   0.407   1.851   0       -0.235  -0.273  -0.900  0       0.093   -0.137  0.101   0       0.093   -0.104  -1.052  0       -0.235  -0.407  1.851   0       0.235   0.273   -0.900  0       -0.093  0       0       0       6.000   0       0       0       -15.000 0       0       0       0       -3.750  2.250   0       0       0       -4.500  0       0       7.500   0       0       0
+DEAL:BDM3-Transform2::value    
+DEAL:BDM3-Transform2::gradient 
+DEAL:BDM3-Transform2::value    6       -2.000 0.000    0       -0.057  0       0.200   0       -0.407  0       0.763   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       -0.763  0       0.407   0       -0.200  0       0.057   0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 6       -2.000 0.000    -0.093  0       0.539   0.018   0.235   0       -1.854  -0.503  -0.235  0       3.452   -0.698  0.093   0       -2.137  -1.067  0.093   0       0       0.395   -0.235  0       0       0.513   0.235   0       0       -0.290  -0.093  0       0       0.132   -0.132  0       0       0.093   0.290   0       0       -0.235  -0.513  0       0       0.235   -0.395  0       0       -0.093  1.067   2.137   0       -0.093  0.698   -3.452  0       0.235   0.503   1.854   0       -0.235  -0.018  -0.539  0       0.093   0       0       0       4.500   0       0       0       -15.000 0       0       0       9.000   1.500   0       0       0       9.000   0       0       0       -15.000 0       0       0
+DEAL:BDM3-Transform2::value    7       -2.000 1.000    0       0.075   0       0.103   0       -0.450  0       0.148   0       0.075   0       0.103   0       -0.450  0       0.148   0       -0.012  0       0.029   0       -0.029  0       0.012   0.046   0.012   -0.296  -0.029  -0.296  0.029   0.046   -0.012  0       -1.500  0       0       0       4.500   0       0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 7       -2.000 1.000    -0.093  0       0.101   0.137   0.235   0       -1.052  0.104   -0.235  0       1.851   0.407   0.093   0       -0.900  -0.273  0.093   0       0.101   -0.137  -0.235  0       -1.052  -0.104  0.235   0       1.851   -0.407  -0.093  0       -0.900  0.273   -0.064  0       0       0       -0.311  0       0       0       -0.311  0       0       0       -0.064  0       0       0       0.325   -0.054  0       0       0.800   0.871   0       0       0.800   -0.871  0       0       0.325   0.054   0       0       0       0       2.250   -3.750  0       0       0       7.500   0       0       -4.500  0       6.000   0       0       0       0       0       0       0       -15.000 0       0       0
+DEAL:BDM3-Transform2::value    8       -2.000 2.000    0       0       0       0       0       0       0       0       0       -0.057  0       0.200   0       -0.407  0       0.763   0       0       0       0       0       0       0       0       0.057   0       -0.200  0       0.407   0       -0.763  0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform2::gradient 8       -2.000 2.000    -0.093  0       0       -0.395  0.235   0       0       -0.513  -0.235  0       0       0.290   0.093   0       0       -0.132  0.093   0       0.539   -0.018  -0.235  0       -1.854  0.503   0.235   0       3.452   0.698   -0.093  0       -2.137  1.067   -0.395  0       0       -0.093  -0.513  0       0       0.235   0.290   0       0       -0.235  -0.132  0       0       0.093   -0.018  0.539   0       0.093   0.503   -1.854  0       -0.235  0.698   3.452   0       0.235   1.067   -2.137  0       -0.093  0       0       0       10.500  0       0       0       -15.000 0       0       0       -9.000  10.500  0       0       0       -9.000  0       0       0       -15.000 0       0       0
+DEAL:BDM3-Transform2::value    
+DEAL:BDM3-Transform2::gradient 
+DEAL:BDM3-Transform2::
+DEAL:BDM3-Transform3::value    0       0.000 0.000     1.527   0       -0.814  0       0.401   0       -0.114  0       0       0       0       0       0       0       0       0       0       0.763   0       -0.407  0       0.200   0       -0.057  0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform3::gradient 0       0.000 0.000     -2.133  -8.546  0       0.186   -1.396  13.807  0       -0.470  -1.006  -7.417  0       0.470   0.035   2.156   0       -0.186  0.263   0       0       -0.186  -0.580  0       0       0.470   1.025   0       0       -0.470  0.791   0       0       0.186   0.186   0       -2.137  -2.133  -0.470  0       3.452   -1.396  0.470   0       -1.854  -1.006  -0.186  0       0.539   0.035   -0.186  0       0       0.263   0.470   0       0       -0.580  -0.470  0       0       1.025   0.186   0       0       0.791   27.000  0       0       0       -30.000 0       0       0       -18.000 0       0       0       0       0       0       27.000  0       0       0       -18.000 0       0       0       -30.000
+DEAL:BDM3-Transform3::value    1       1.000 0.000     0.296   0       -0.901  0       0.205   0       0.150   0       0.296   0       -0.901  0       0.205   0       0.150   0       -0.023  -0.046  0.059   0.296   -0.059  0.296   0.023   -0.046  0.023   0       -0.059  0       0.059   0       -0.023  0       6.000   0       0       0       -9.000  0       0       0       0       0       0       0
+DEAL:BDM3-Transform3::gradient 1       1.000 0.000     -0.546  -3.599  0       0.186   0.814   7.402   0       -0.470  0.207   -4.207  0       0.470   0.274   0.404   0       -0.186  0.546   -3.599  0       -0.186  -0.814  7.402   0       0.470   -0.207  -4.207  0       -0.470  -0.274  0.404   0       0.186   0       0       0.054   -0.650  0       0       -0.871  -1.600  0       0       0.871   -1.600  0       0       -0.054  -0.650  0       0       0       0.128   0       0       0       0.622   0       0       0       0.622   0       0       0       0.128   -7.500  -9.000  0       0       15.000  0       0       0       0       18.000  0       0       0       0       0       18.000  0       0       0       0       0       0       0       -30.000
+DEAL:BDM3-Transform3::value    2       2.000 0.000     0       0       0       0       0       0       0       0       1.527   0       -0.814  0       0.401   0       -0.114  0       0       -0.057  0       0.200   0       -0.407  0       0.763   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform3::gradient 2       2.000 0.000     -0.263  0       0       0.186   0.580   0       0       -0.470  -1.025  0       0       0.470   -0.791  0       0       -0.186  2.133   -8.546  0       -0.186  1.396   13.807  0       0.470   1.006   -7.417  0       -0.470  -0.035  2.156   0       0.186   -0.186  0       -0.539  0.035   0.470   0       1.854   -1.006  -0.470  0       -3.452  -1.396  0.186   0       2.137   -2.133  0.186   0       0       0.791   -0.470  0       0       1.025   0.470   0       0       -0.580  -0.186  0       0       0.263   3.000   0       0       0       -30.000 0       0       0       18.000  0       0       0       0       0       0       9.000   0       0       0       18.000  0       0       0       -30.000
+DEAL:BDM3-Transform3::value    
+DEAL:BDM3-Transform3::gradient 
+DEAL:BDM3-Transform3::value    3       0.000 0.500     -0.092  -0.012  0.592   0.029   0.592   -0.029  -0.092  0.012   0       0.012   0       -0.029  0       0.029   0       -0.012  0       0.148   0       -0.450  0       0.103   0       0.075   0       0.148   0       -0.450  0       0.103   0       0.075   0       0       0       0       0       0       0       3.000   0       -4.500  0       0
+DEAL:BDM3-Transform3::gradient 3       0.000 0.500     -0.650  0.214   0       0       -1.600  -3.484  0       0       -1.600  3.484   0       0       -0.650  -0.214  0       0       0.128   0       0       0       0.622   0       0       0       0.622   0       0       0       0.128   0       0       0       0.186   0       -0.900  -0.546  -0.470  0       1.851   0.814   0.470   0       -1.052  0.207   -0.186  0       0.101   0.274   -0.186  0       -0.900  0.546   0.470   0       1.851   -0.814  -0.470  0       -1.052  -0.207  0.186   0       0.101   -0.274  18.000  0       0       0       -30.000 0       0       0       0       0       0       0       0       0       -2.250  -7.500  0       0       4.500   0       0       0       0       15.000
+DEAL:BDM3-Transform3::value    4       1.000 0.500     -0.177  -0.012  0.052   0.029   0.052   -0.029  -0.177  0.012   -0.177  0.012   0.052   -0.029  0.052   0.029   -0.177  -0.012  -0.023  -0.088  0.059   0.026   -0.059  0.026   0.023   -0.088  0.023   -0.088  -0.059  0.026   0.059   0.026   -0.023  -0.088  1.500   0       0       0       0       0       0       0.750   0       0       0       0
+DEAL:BDM3-Transform3::gradient 4       1.000 0.500     0.264   0.781   0       0       0.111   -1.243  0       0       0.111   1.243   0       0       0.264   -0.781  0       0       -0.264  0.781   0       0       -0.111  -1.243  0       0       -0.111  1.243   0       0       -0.264  -0.781  0       0       0       0       0.195   0.264   0       0       -0.311  0.111   0       0       0.311   0.111   0       0       -0.195  0.264   0       0       0.195   -0.264  0       0       -0.311  -0.111  0       0       0.311   -0.111  0       0       -0.195  -0.264  -7.500  -9.000  0       0       15.000  0       0       0       0       18.000  0       0       0       0       -2.250  -7.500  0       0       4.500   0       0       0       0       15.000
+DEAL:BDM3-Transform3::value    5       2.000 0.500     0       -0.012  0       0.029   0       -0.029  0       0.012   -0.092  0.012   0.592   -0.029  0.592   0.029   -0.092  -0.012  0       0.075   0       0.103   0       -0.450  0       0.148   0       0.075   0       0.103   0       -0.450  0       0.148   0       0       0       0       0       0       0       -1.500  0       4.500   0       0
+DEAL:BDM3-Transform3::gradient 5       2.000 0.500     -0.128  0       0       0       -0.622  0       0       0       -0.622  0       0       0       -0.128  0       0       0       0.650   0.214   0       0       1.600   -3.484  0       0       1.600   3.484   0       0       0.650   -0.214  0       0       -0.186  0       -0.101  0.274   0.470   0       1.052   0.207   -0.470  0       -1.851  0.814   0.186   0       0.900   -0.546  0.186   0       -0.101  -0.274  -0.470  0       1.052   -0.207  0.470   0       -1.851  -0.814  -0.186  0       0.900   0.546   12.000  0       0       0       -30.000 0       0       0       0       0       0       0       0       0       -2.250  -7.500  0       0       4.500   0       0       0       0       15.000
+DEAL:BDM3-Transform3::value    
+DEAL:BDM3-Transform3::gradient 
+DEAL:BDM3-Transform3::value    6       0.000 1.000     -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0.763   0       -0.407  0       0.200   0       -0.057  0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform3::gradient 6       0.000 1.000     0.035   -2.156  0       -0.186  -1.006  7.417   0       0.470   -1.396  -13.807 0       -0.470  -2.133  8.546   0       0.186   0.791   0       0       0.186   1.025   0       0       -0.470  -0.580  0       0       0.470   0.263   0       0       -0.186  0.186   0       0       -0.263  -0.470  0       0       0.580   0.470   0       0       -1.025  -0.186  0       0       -0.791  -0.186  0       -2.137  2.133   0.470   0       3.452   1.396   -0.470  0       -1.854  1.006   0.186   0       0.539   -0.035  9.000   0       0       0       -30.000 0       0       0       18.000  0       0       0       0       0       0       3.000   0       0       0       18.000  0       0       0       -30.000
+DEAL:BDM3-Transform3::value    7       1.000 1.000     0.150   0       0.205   0       -0.901  0       0.296   0       0.150   0       0.205   0       -0.901  0       0.296   0       -0.023  0       0.059   0       -0.059  0       0.023   0       0.023   -0.046  -0.059  0.296   0.059   0.296   -0.023  -0.046  -3.000  0       0       0       9.000   0       0       0       0       0       0       0
+DEAL:BDM3-Transform3::gradient 7       1.000 1.000     0.274   -0.404  0       -0.186  0.207   4.207   0       0.470   0.814   -7.402  0       -0.470  -0.546  3.599   0       0.186   -0.274  -0.404  0       0.186   -0.207  4.207   0       -0.470  -0.814  -7.402  0       0.470   0.546   3.599   0       -0.186  0       0       0       -0.128  0       0       0       -0.622  0       0       0       -0.622  0       0       0       -0.128  0       0       0.054   0.650   0       0       -0.871  1.600   0       0       0.871   1.600   0       0       -0.054  0.650   -7.500  -9.000  0       0       15.000  0       0       0       0       18.000  0       0       0       0       0       12.000  0       0       0       0       0       0       0       -30.000
+DEAL:BDM3-Transform3::value    8       2.000 1.000     0       0       0       0       0       0       0       0       -0.114  0       0.401   0       -0.814  0       1.527   0       0       0       0       0       0       0       0       0       0       -0.057  0       0.200   0       -0.407  0       0.763   0       0       0       0       0       0       0       0       0       0       0       0
+DEAL:BDM3-Transform3::gradient 8       2.000 1.000     -0.791  0       0       -0.186  -1.025  0       0       0.470   0.580   0       0       -0.470  -0.263  0       0       0.186   -0.035  -2.156  0       0.186   1.006   7.417   0       -0.470  1.396   -13.807 0       0.470   2.133   8.546   0       -0.186  -0.186  0       0       -0.791  0.470   0       0       -1.025  -0.470  0       0       0.580   0.186   0       0       -0.263  0.186   0       -0.539  -0.035  -0.470  0       1.854   1.006   0.470   0       -3.452  1.396   -0.186  0       2.137   2.133   21.000  0       0       0       -30.000 0       0       0       -18.000 0       0       0       0       0       0       21.000  0       0       0       -18.000 0       0       0       -30.000
+DEAL:BDM3-Transform3::value    
+DEAL:BDM3-Transform3::gradient 
+DEAL:BDM3-Transform3::
diff --git a/tests/fe/bdm_3.cc b/tests/fe/bdm_3.cc
new file mode 100644 (file)
index 0000000..3618106
--- /dev/null
@@ -0,0 +1,70 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// Just output the constraint matrices of the RT element
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/fe/fe_bdm.h>
+
+#include <fstream>
+#include <string>
+
+#define PRECISION 4
+
+
+
+template<int dim>
+void
+test(const unsigned int degree)
+{
+  deallog << "FE_BDM<" << dim << "> (" << degree << ")"
+          << std::endl;
+
+  FE_BDM<dim> fe_rt(degree);
+  const FullMatrix<double> &constraints = fe_rt.constraints();
+
+  for (unsigned int i=0; i<constraints.m(); ++i)
+    {
+      for (unsigned int j=0; j<constraints.n(); ++j)
+        deallog << constraints(i,j) << ' ';
+      deallog << std::endl;
+    }
+
+  deallog << std::endl;
+}
+
+
+int
+main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int degree=1; degree<4; ++degree)
+    test<2>(degree);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_3.output b/tests/fe/bdm_3.output
new file mode 100644 (file)
index 0000000..427bd2f
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL::FE_BDM<2> (1)
+DEAL::0.5915 -0.0915 
+DEAL::0.3415 0.1585 
+DEAL::0.1585 0.3415 
+DEAL::-0.0915 0.5915 
+DEAL::
+DEAL::FE_BDM<2> (2)
+DEAL::0.6144 -0.1561 0.0417 
+DEAL::0.2655 0.2917 -0.0572 
+DEAL::0.0417 0.4894 -0.0311 
+DEAL::-0.0311 0.4894 0.0417 
+DEAL::-0.0572 0.2917 0.2655 
+DEAL::0.0417 -0.1561 0.6144 
+DEAL::
+DEAL::FE_BDM<2> (3)
+DEAL::0.6235 -0.1857 0.0863 -0.0242 
+DEAL::0.2367 0.3472 -0.1135 0.0295 
+DEAL::-0.0037 0.4979 0.0074 -0.0016 
+DEAL::-0.0478 0.3543 0.2341 -0.0407 
+DEAL::-0.0407 0.2341 0.3543 -0.0478 
+DEAL::-0.0016 0.0074 0.4979 -0.0037 
+DEAL::0.0295 -0.1135 0.3472 0.2367 
+DEAL::-0.0242 0.0863 -0.1857 0.6235 
+DEAL::
diff --git a/tests/fe/bdm_5.cc b/tests/fe/bdm_5.cc
new file mode 100644 (file)
index 0000000..17dceb8
--- /dev/null
@@ -0,0 +1,74 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// Just output the restriction matrices of the BDM element
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/fe/fe_bdm.h>
+
+#include <fstream>
+#include <string>
+
+#define PRECISION 8
+
+
+
+template<int dim>
+void
+test(const unsigned int degree)
+{
+  deallog << "FE_BDM<" << dim << "> (" << degree << ")"
+          << std::endl;
+
+  FE_BDM<dim> fe_rt(degree);
+
+  for (unsigned int c=0; c<GeometryInfo<dim>::max_children_per_cell; ++c)
+    {
+      const FullMatrix<double> &m = fe_rt.get_restriction_matrix(c);
+
+      for (unsigned int i=0; i<m.m(); ++i)
+        {
+          for (unsigned int j=0; j<m.n(); ++j)
+            deallog << m(i,j) << ' ';
+          deallog << std::endl;
+        }
+
+      deallog << std::endl;
+    }
+}
+
+
+int
+main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int degree=1; degree<4; ++degree)
+    {
+      test<2>(degree);
+//      test<3>(degree);
+    }
+
+  return 0;
+}
diff --git a/tests/fe/bdm_5.output b/tests/fe/bdm_5.output
new file mode 100644 (file)
index 0000000..7d2e46c
--- /dev/null
@@ -0,0 +1,192 @@
+
+DEAL::FE_BDM<2> (1)
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::FE_BDM<2> (2)
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::FE_BDM<2> (3)
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
diff --git a/tests/fe/bdm_8.cc b/tests/fe/bdm_8.cc
new file mode 100644 (file)
index 0000000..f2d7e23
--- /dev/null
@@ -0,0 +1,116 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// build a mass matrix for the RT element and try to invert it. we had trouble
+// with this at one time
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 5
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, 0., 1.);
+
+  DoFHandler<dim> dof(tr);
+  typename DoFHandler<dim>::cell_iterator c = dof.begin();
+  dof.distribute_dofs(fe_rt);
+
+  QTrapez<1> q_trapez;
+  const unsigned int div=4;
+  QIterated<dim> q(q_trapez, div);
+  FEValues<dim> fe(fe_rt, q, update_values|update_JxW_values);
+  fe.reinit(c);
+
+  const unsigned int dofs_per_cell = fe_rt.dofs_per_cell;
+  FullMatrix<double> mass_matrix (dofs_per_cell, dofs_per_cell);
+
+  Assert (fe.get_fe().n_components() == dim, ExcInternalError());
+
+
+  for (unsigned int q_point=0; q_point<q.size(); ++q_point)
+    for (unsigned int i=0; i<dofs_per_cell; ++i)
+      for (unsigned int j=0; j<dofs_per_cell; ++j)
+        for (unsigned int d=0; d<dim; ++d)
+          mass_matrix(i,j)
+          += (fe.shape_value_component(i,q_point,d) *
+              fe.shape_value_component(j,q_point,d) *
+              fe.JxW(q_point));
+  for (unsigned int i=0; i<dofs_per_cell; ++i)
+    for (unsigned int j=0; j<dofs_per_cell; ++j)
+      if (std::fabs(mass_matrix(i,j)) < 1e-14)
+        mass_matrix(i,j) = 0;
+  mass_matrix.print_formatted (logfile, 3, false, 0, " ", 1);
+
+  SolverControl           solver_control (dofs_per_cell,
+                                          1e-8);
+  PrimitiveVectorMemory<> vector_memory;
+  SolverCG<>              cg (solver_control, vector_memory);
+
+  Vector<double> tmp1(dofs_per_cell), tmp2(dofs_per_cell);
+  for (unsigned int i=0; i<dofs_per_cell; ++i)
+    tmp1(i) = 1.*Testing::rand()/RAND_MAX;
+  cg.solve (mass_matrix, tmp2, tmp1, PreconditionIdentity());
+
+  deallog << "Degree=" << degree
+          << ": " << solver_control.last_step()
+          << " iterations to obtain convergence."
+          << std::endl;
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_8.output b/tests/fe/bdm_8.output
new file mode 100644 (file)
index 0000000..6e89414
--- /dev/null
@@ -0,0 +1,54 @@
+
+0.208 -0.036 0.058 0.020 0.068             0.068 
+-0.036 0.208 0.020 0.058       -0.068 -0.068       
+0.058 0.020 0.208 -0.036       -0.068 -0.068       
+0.020 0.058 -0.036 0.208 0.068             0.068 
+0.068             0.068 0.208 -0.036 0.058 0.020 
+      -0.068 -0.068       -0.036 0.208 0.020 0.058 
+      -0.068 -0.068       0.058 0.020 0.208 -0.036 
+0.068             0.068 0.020 0.058 -0.036 0.208 
+DEAL:cg::Starting value 1.91960
+DEAL:cg::Convergence step 4 value 0
+DEAL::Degree=1: 4 iterations to obtain convergence.
+0.105 -0.050 -0.003 0.036 -0.030 -0.013 0.004 -0.002 0.004 -0.004 0.002 -0.004 -0.020       
+-0.050 0.169 -0.050 -0.030 0.058 -0.030 -0.002 -0.010 -0.002 0.002 0.010 0.002 -0.090       
+-0.003 -0.050 0.105 -0.013 -0.030 0.036 0.004 -0.002 0.004 -0.004 0.002 -0.004 -0.020       
+0.036 -0.030 -0.013 0.105 -0.050 -0.003 -0.004 0.002 -0.004 0.004 -0.002 0.004 -0.020       
+-0.030 0.058 -0.030 -0.050 0.169 -0.050 0.002 0.010 0.002 -0.002 -0.010 -0.002 -0.090       
+-0.013 -0.030 0.036 -0.003 -0.050 0.105 -0.004 0.002 -0.004 0.004 -0.002 0.004 -0.020       
+0.004 -0.002 0.004 -0.004 0.002 -0.004 0.105 -0.050 -0.003 0.036 -0.030 -0.013       -0.020 
+-0.002 -0.010 -0.002 0.002 0.010 0.002 -0.050 0.169 -0.050 -0.030 0.058 -0.030       -0.090 
+0.004 -0.002 0.004 -0.004 0.002 -0.004 -0.003 -0.050 0.105 -0.013 -0.030 0.036       -0.020 
+-0.004 0.002 -0.004 0.004 -0.002 0.004 0.036 -0.030 -0.013 0.105 -0.050 -0.003       -0.020 
+0.002 0.010 0.002 -0.002 -0.010 -0.002 -0.030 0.058 -0.030 -0.050 0.169 -0.050       -0.090 
+-0.004 0.002 -0.004 0.004 -0.002 0.004 -0.013 -0.030 0.036 -0.003 -0.050 0.105       -0.020 
+-0.020 -0.090 -0.020 -0.020 -0.090 -0.020                                     1.195       
+                                    -0.020 -0.090 -0.020 -0.020 -0.090 -0.020       1.195 
+DEAL:cg::Starting value 2.12523
+DEAL:cg::Convergence step 9 value 0.00000
+DEAL::Degree=2: 9 iterations to obtain convergence.
+0.072 -0.058 0.015 0.002 0.016 -0.031 0.001 0.011 0.000 0.000 0.001             0.001 0.000 0.000 -0.040 0.084 -0.016 -0.006             
+-0.058 0.151 -0.056 0.015 -0.031 0.067 -0.039 0.001 0.000 -0.002       -0.001 -0.001       -0.002 0.000 -0.404 0.224 0.468 0.016             
+0.015 -0.056 0.151 -0.058 0.001 -0.039 0.067 -0.031 0.001       0.002 0.000 0.000 0.002       0.001 0.064 0.224 -0.468 -0.016             
+0.002 0.015 -0.058 0.072 0.011 0.001 -0.031 0.016       -0.001 0.000 0.000 0.000 0.000 -0.001       -0.057 0.084 0.016 0.006             
+0.016 -0.031 0.001 0.011 0.072 -0.058 0.015 0.002       -0.001 0.000 0.000 0.000 0.000 -0.001       0.043 -0.084 -0.016 0.006             
+-0.031 0.067 -0.039 0.001 -0.058 0.151 -0.056 0.015 0.001       0.002 0.000 0.000 0.002       0.001 -0.180 -0.224 0.468 -0.016             
+0.001 -0.039 0.067 -0.031 0.015 -0.056 0.151 -0.058 0.000 -0.002       -0.001 -0.001       -0.002 0.000 0.288 -0.224 -0.468 0.016             
+0.011 0.001 -0.031 0.016 0.002 0.015 -0.058 0.072 0.000 0.000 0.001             0.001 0.000 0.000 0.027 -0.084 0.016 -0.006             
+0.000 0.000 0.001             0.001 0.000 0.000 0.072 -0.058 0.015 0.002 0.016 -0.031 0.001 0.011 -0.006             -0.040 -0.016 0.084 
+0.000 -0.002       -0.001 -0.001       -0.002 0.000 -0.058 0.151 -0.056 0.015 -0.031 0.067 -0.039 0.001 0.016             -0.404 0.468 0.224 
+0.001       0.002 0.000 0.000 0.002       0.001 0.015 -0.056 0.151 -0.058 0.001 -0.039 0.067 -0.031 -0.016             0.064 -0.468 0.224 
+      -0.001 0.000 0.000 0.000 0.000 -0.001       0.002 0.015 -0.058 0.072 0.011 0.001 -0.031 0.016 0.006             -0.057 0.016 0.084 
+      -0.001 0.000 0.000 0.000 0.000 -0.001       0.016 -0.031 0.001 0.011 0.072 -0.058 0.015 0.002 0.006             0.043 -0.016 -0.084 
+0.001       0.002 0.000 0.000 0.002       0.001 -0.031 0.067 -0.039 0.001 -0.058 0.151 -0.056 0.015 -0.016             -0.180 0.468 -0.224 
+0.000 -0.002       -0.001 -0.001       -0.002 0.000 0.001 -0.039 0.067 -0.031 0.015 -0.056 0.151 -0.058 0.016             0.288 -0.468 -0.224 
+0.000 0.000 0.001             0.001 0.000 0.000 0.011 0.001 -0.031 0.016 0.002 0.015 -0.058 0.072 -0.006             0.027 0.016 -0.084 
+-0.040 -0.404 0.064 -0.057 0.043 -0.180 0.288 0.027 -0.006 0.016 -0.016 0.006 0.006 -0.016 0.016 -0.006 9.185 -7.910 -8.068                   
+0.084 0.224 0.224 0.084 -0.084 -0.224 -0.224 -0.084                                                 -7.910 15.820                         
+-0.016 0.468 -0.468 0.016 -0.016 0.468 -0.468 0.016                                                 -8.068       16.137                   
+-0.006 0.016 -0.016 0.006 0.006 -0.016 0.016 -0.006 -0.040 -0.404 0.064 -0.057 0.043 -0.180 0.288 0.027                   9.185 -8.068 -7.910 
+                                                -0.016 0.468 -0.468 0.016 -0.016 0.468 -0.468 0.016                   -8.068 16.137       
+                                                0.084 0.224 0.224 0.084 -0.084 -0.224 -0.224 -0.084                   -7.910       15.820 
+DEAL:cg::Starting value 2.78069
+DEAL:cg::Convergence step 14 value 0.00000
+DEAL::Degree=3: 14 iterations to obtain convergence.
diff --git a/tests/fe/bdm_9.cc b/tests/fe/bdm_9.cc
new file mode 100644 (file)
index 0000000..e9558cc
--- /dev/null
@@ -0,0 +1,107 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// build a mass matrix for the RT element and try to invert it. like the rt_8
+// test, except that we use a library function to build the mass matrix
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/vector_memory.h>
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/fe/fe_bdm.h>
+#include <deal.II/numerics/matrix_tools.h>
+
+#include <vector>
+#include <fstream>
+#include <string>
+
+#define PRECISION 2
+
+
+std::ofstream logfile ("output");
+
+template<int dim>
+void
+test (const unsigned int degree)
+{
+  FE_BDM<dim> fe_rt(degree);
+  Triangulation<dim> tr;
+  GridGenerator::hyper_cube(tr, 0., 1.);
+
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe_rt);
+
+  QTrapez<1> q_trapez;
+  const unsigned int div=4;
+  QIterated<dim> q(q_trapez, div);
+
+  const unsigned int dofs_per_cell = fe_rt.dofs_per_cell;
+  SparsityPattern sp (dofs_per_cell, dofs_per_cell, dofs_per_cell);
+  for (unsigned int i=0; i<dofs_per_cell; ++i)
+    for (unsigned int j=0; j<dofs_per_cell; ++j)
+      sp.add(i,j);
+  sp.compress ();
+  SparseMatrix<double> mass_matrix (sp);
+
+  MatrixTools::create_mass_matrix (dof, q, mass_matrix);
+
+  mass_matrix.print_formatted (logfile, 3, false, 0, " ", 1);
+
+  SolverControl           solver_control (dofs_per_cell,
+                                          1e-8);
+  PrimitiveVectorMemory<> vector_memory;
+  SolverCG<>              cg (solver_control, vector_memory);
+
+  Vector<double> tmp1(dofs_per_cell), tmp2(dofs_per_cell);
+  for (unsigned int i=0; i<dofs_per_cell; ++i)
+    tmp1(i) = 1.*Testing::rand()/RAND_MAX;
+  cg.solve (mass_matrix, tmp2, tmp1, PreconditionIdentity());
+
+  deallog << "Degree=" << degree
+          << ": " << solver_control.last_step()
+          << " iterations to obtain convergence."
+          << std::endl;
+}
+
+
+int
+main()
+{
+  deallog << std::setprecision(PRECISION);
+  deallog << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  for (unsigned int i=1; i<4; ++i)
+    test<2>(i);
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/bdm_9.output b/tests/fe/bdm_9.output
new file mode 100644 (file)
index 0000000..f84f547
--- /dev/null
@@ -0,0 +1,54 @@
+
+0.208 -0.036 0.058 0.020 0.068 0.000 0.000 0.068 
+-0.036 0.208 0.020 0.058 0.000 -0.068 -0.068 0.000 
+0.058 0.020 0.208 -0.036 0.000 -0.068 -0.068 0.000 
+0.020 0.058 -0.036 0.208 0.068 0.000 0.000 0.068 
+0.068 0.000 0.000 0.068 0.208 -0.036 0.058 0.020 
+0.000 -0.068 -0.068 0.000 -0.036 0.208 0.020 0.058 
+0.000 -0.068 -0.068 0.000 0.058 0.020 0.208 -0.036 
+0.068 0.000 0.000 0.068 0.020 0.058 -0.036 0.208 
+DEAL:cg::Starting value 1.92
+DEAL:cg::Convergence step 4 value 0
+DEAL::Degree=1: 4 iterations to obtain convergence.
+0.105 -0.050 -0.003 0.036 -0.030 -0.013 0.004 -0.002 0.004 -0.004 0.002 -0.004 -0.020 0.000 
+-0.050 0.169 -0.050 -0.030 0.058 -0.030 -0.002 -0.010 -0.002 0.002 0.010 0.002 -0.090 0.000 
+-0.003 -0.050 0.105 -0.013 -0.030 0.036 0.004 -0.002 0.004 -0.004 0.002 -0.004 -0.020 0.000 
+0.036 -0.030 -0.013 0.105 -0.050 -0.003 -0.004 0.002 -0.004 0.004 -0.002 0.004 -0.020 0.000 
+-0.030 0.058 -0.030 -0.050 0.169 -0.050 0.002 0.010 0.002 -0.002 -0.010 -0.002 -0.090 0.000 
+-0.013 -0.030 0.036 -0.003 -0.050 0.105 -0.004 0.002 -0.004 0.004 -0.002 0.004 -0.020 0.000 
+0.004 -0.002 0.004 -0.004 0.002 -0.004 0.105 -0.050 -0.003 0.036 -0.030 -0.013 0.000 -0.020 
+-0.002 -0.010 -0.002 0.002 0.010 0.002 -0.050 0.169 -0.050 -0.030 0.058 -0.030 0.000 -0.090 
+0.004 -0.002 0.004 -0.004 0.002 -0.004 -0.003 -0.050 0.105 -0.013 -0.030 0.036 0.000 -0.020 
+-0.004 0.002 -0.004 0.004 -0.002 0.004 0.036 -0.030 -0.013 0.105 -0.050 -0.003 0.000 -0.020 
+0.002 0.010 0.002 -0.002 -0.010 -0.002 -0.030 0.058 -0.030 -0.050 0.169 -0.050 0.000 -0.090 
+-0.004 0.002 -0.004 0.004 -0.002 0.004 -0.013 -0.030 0.036 -0.003 -0.050 0.105 0.000 -0.020 
+-0.020 -0.090 -0.020 -0.020 -0.090 -0.020 0.000 0.000 0.000 0.000 0.000 0.000 1.195 0.000 
+0.000 0.000 0.000 0.000 0.000 0.000 -0.020 -0.090 -0.020 -0.020 -0.090 -0.020 0.000 1.195 
+DEAL:cg::Starting value 2.13
+DEAL:cg::Convergence step 9 value 0.00
+DEAL::Degree=2: 9 iterations to obtain convergence.
+0.072 -0.058 0.015 0.002 0.016 -0.031 0.001 0.011 0.000 0.000 0.001 0.000 0.000 0.001 0.000 0.000 -0.040 0.084 -0.016 -0.006 0.000 0.000 
+-0.058 0.151 -0.056 0.015 -0.031 0.067 -0.039 0.001 0.000 -0.002 0.000 -0.001 -0.001 0.000 -0.002 0.000 -0.404 0.224 0.468 0.016 0.000 0.000 
+0.015 -0.056 0.151 -0.058 0.001 -0.039 0.067 -0.031 0.001 0.000 0.002 0.000 0.000 0.002 0.000 0.001 0.064 0.224 -0.468 -0.016 0.000 0.000 
+0.002 0.015 -0.058 0.072 0.011 0.001 -0.031 0.016 0.000 -0.001 0.000 0.000 0.000 0.000 -0.001 0.000 -0.057 0.084 0.016 0.006 0.000 0.000 
+0.016 -0.031 0.001 0.011 0.072 -0.058 0.015 0.002 0.000 -0.001 0.000 0.000 0.000 0.000 -0.001 0.000 0.043 -0.084 -0.016 0.006 0.000 0.000 
+-0.031 0.067 -0.039 0.001 -0.058 0.151 -0.056 0.015 0.001 0.000 0.002 0.000 0.000 0.002 0.000 0.001 -0.180 -0.224 0.468 -0.016 0.000 0.000 
+0.001 -0.039 0.067 -0.031 0.015 -0.056 0.151 -0.058 0.000 -0.002 0.000 -0.001 -0.001 0.000 -0.002 0.000 0.288 -0.224 -0.468 0.016 0.000 0.000 
+0.011 0.001 -0.031 0.016 0.002 0.015 -0.058 0.072 0.000 0.000 0.001 0.000 0.000 0.001 0.000 0.000 0.027 -0.084 0.016 -0.006 0.000 0.000 
+0.000 0.000 0.001 0.000 0.000 0.001 0.000 0.000 0.072 -0.058 0.015 0.002 0.016 -0.031 0.001 0.011 -0.006 0.000 0.000 -0.040 -0.016 0.084 
+0.000 -0.002 0.000 -0.001 -0.001 0.000 -0.002 0.000 -0.058 0.151 -0.056 0.015 -0.031 0.067 -0.039 0.001 0.016 0.000 0.000 -0.404 0.468 0.224 
+0.001 0.000 0.002 0.000 0.000 0.002 0.000 0.001 0.015 -0.056 0.151 -0.058 0.001 -0.039 0.067 -0.031 -0.016 0.000 0.000 0.064 -0.468 0.224 
+0.000 -0.001 0.000 0.000 0.000 0.000 -0.001 0.000 0.002 0.015 -0.058 0.072 0.011 0.001 -0.031 0.016 0.006 0.000 0.000 -0.057 0.016 0.084 
+0.000 -0.001 0.000 0.000 0.000 0.000 -0.001 0.000 0.016 -0.031 0.001 0.011 0.072 -0.058 0.015 0.002 0.006 0.000 0.000 0.043 -0.016 -0.084 
+0.001 0.000 0.002 0.000 0.000 0.002 0.000 0.001 -0.031 0.067 -0.039 0.001 -0.058 0.151 -0.056 0.015 -0.016 0.000 0.000 -0.180 0.468 -0.224 
+0.000 -0.002 0.000 -0.001 -0.001 0.000 -0.002 0.000 0.001 -0.039 0.067 -0.031 0.015 -0.056 0.151 -0.058 0.016 0.000 0.000 0.288 -0.468 -0.224 
+0.000 0.000 0.001 0.000 0.000 0.001 0.000 0.000 0.011 0.001 -0.031 0.016 0.002 0.015 -0.058 0.072 -0.006 0.000 0.000 0.027 0.016 -0.084 
+-0.040 -0.404 0.064 -0.057 0.043 -0.180 0.288 0.027 -0.006 0.016 -0.016 0.006 0.006 -0.016 0.016 -0.006 9.185 -7.910 -8.068 0.000 0.000 0.000 
+0.084 0.224 0.224 0.084 -0.084 -0.224 -0.224 -0.084 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 -7.910 15.820 0.000 0.000 0.000 0.000 
+-0.016 0.468 -0.468 0.016 -0.016 0.468 -0.468 0.016 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 -8.068 0.000 16.137 0.000 0.000 0.000 
+-0.006 0.016 -0.016 0.006 0.006 -0.016 0.016 -0.006 -0.040 -0.404 0.064 -0.057 0.043 -0.180 0.288 0.027 0.000 0.000 0.000 9.185 -8.068 -7.910 
+0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 -0.016 0.468 -0.468 0.016 -0.016 0.468 -0.468 0.016 0.000 0.000 0.000 -8.068 16.137 0.000 
+0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.084 0.224 0.224 0.084 -0.084 -0.224 -0.224 -0.084 0.000 0.000 0.000 -7.910 0.000 15.820 
+DEAL:cg::Starting value 2.78
+DEAL:cg::Convergence step 14 value 0.00
+DEAL::Degree=3: 14 iterations to obtain convergence.
index 4ae2eab1fa8898590da15a23c3a6ac4814711195..54e7d407c3ea2b502882455e7ecc665319ce80ff 100644 (file)
@@ -21,6 +21,7 @@
 #include <deal.II/fe/fe_dgq.h>
 #include <deal.II/fe/fe_dgp.h>
 #include <deal.II/fe/fe_face.h>
+#include <deal.II/fe/fe_q_dg0.h>
 #include <deal.II/fe/fe_q_hierarchical.h>
 #include <deal.II/fe/fe_system.h>
 #include <fstream>
@@ -30,9 +31,9 @@
 template<int dim>
 void print_constant_modes(const FiniteElement<dim> &fe)
 {
-  Table<2,bool> constant_modes = fe.get_constant_modes();
   deallog << "Testing " << fe.get_name() << std::endl;
 
+  Table<2,bool> constant_modes = fe.get_constant_modes().first;
   for (unsigned int r=0; r<constant_modes.n_rows(); ++r)
     {
       for (unsigned int c=0; c<constant_modes.n_cols(); ++c)
@@ -56,6 +57,9 @@ void test()
   print_constant_modes(FE_FaceP<dim>(1));
   print_constant_modes(FESystem<dim>(FE_Q<dim>(1), 2, FE_Q<dim>(2), 1));
   print_constant_modes(FESystem<dim>(FE_DGP<dim>(1), 1, FE_Q_iso_Q1<dim>(2), 1));
+  print_constant_modes(FE_Q_DG0<dim>(1));
+  print_constant_modes(FESystem<dim>(FE_Q_DG0<dim>(2), 1, FE_Q<dim>(1), 2));
+  print_constant_modes(FESystem<dim>(FE_Q<dim>(1), 2, FE_Q_DG0<dim>(1), 2));
 }
 
 template <>
index 428dbf5c6e48fbbea700df81afc2b9048c0d922c..076019878b56462d6adc5d5605d22b5e56877cfe 100644 (file)
@@ -44,6 +44,24 @@ DEAL::Testing FESystem<2>[FE_DGP<2>(1)-FE_Q_iso_Q1<2>(2)]
 DEAL::0 0 0 0 0 0 0 0 1 0 0 0 
 DEAL::1 1 1 1 1 1 1 1 0 0 0 1 
 DEAL::
+DEAL::Testing FE_Q_DG0<2>(1)
+DEAL::1 1 1 1 0 
+DEAL::0 0 0 0 1 
+DEAL::
+DEAL::Testing FESystem<2>[FE_Q_DG0<2>(2)-FE_Q<2>(1)^2]
+DEAL::1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
+DEAL::0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 
+DEAL::0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 
+DEAL::
+DEAL::Testing FESystem<2>[FE_Q<2>(1)^2-FE_Q_DG0<2>(1)^2]
+DEAL::1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 
+DEAL::0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 
+DEAL::0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 
+DEAL::0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
+DEAL::
 DEAL::Testing FE_Q<3>(1)
 DEAL::1 1 1 1 1 1 1 1 
 DEAL::
@@ -77,3 +95,21 @@ DEAL::Testing FESystem<3>[FE_DGP<3>(1)-FE_Q_iso_Q1<3>(2)]
 DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 
 DEAL::1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 
 DEAL::
+DEAL::Testing FE_Q_DG0<3>(1)
+DEAL::1 1 1 1 1 1 1 1 0 
+DEAL::0 0 0 0 0 0 0 0 1 
+DEAL::
+DEAL::Testing FESystem<3>[FE_Q_DG0<3>(2)-FE_Q<3>(1)^2]
+DEAL::1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
+DEAL::0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::Testing FESystem<3>[FE_Q<3>(1)^2-FE_Q_DG0<3>(1)^2]
+DEAL::1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 
+DEAL::0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 
+DEAL::0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 
+DEAL::0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 
+DEAL::0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 
+DEAL::
diff --git a/tests/fe/get_name_01.cc b/tests/fe/get_name_01.cc
new file mode 100644 (file)
index 0000000..c541977
--- /dev/null
@@ -0,0 +1,77 @@
+// ---------------------------------------------------------------------
+// $Id: system_01.cc 31349 2013-10-20 19:07:06Z maier $
+//
+// Copyright (C) 2003 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// test get_name()
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_tools.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <fstream>
+#include <string>
+
+
+template <int dim>
+void test(const FiniteElement<dim> &fe)
+{
+  deallog << fe.get_name() << std::endl;
+  
+}
+
+
+int
+main()
+{
+  initlog();
+
+  {
+    FE_Q<2> fe(1);
+    test(fe);
+  }
+  {
+    FE_Q<2> fe(QGaussLobatto<1>(4));
+    test(fe);
+  }
+  {
+    QGauss<1> quadrature_g(5);
+    FE_DGQArbitraryNodes<2> fe(quadrature_g);
+    test(fe);
+  }
+  {
+    QGaussLobatto<1> quadrature_gl(5);
+    FE_DGQArbitraryNodes<2> fe(quadrature_gl);
+    test(fe);
+  }
+  {
+    QGaussLog<1> quadrature(3);
+    FE_DGQArbitraryNodes<2> fe(quadrature);
+    test(fe);
+  }
+
+  
+
+  return 0;
+}
+
+
+
diff --git a/tests/fe/get_name_01.output b/tests/fe/get_name_01.output
new file mode 100644 (file)
index 0000000..63e96d9
--- /dev/null
@@ -0,0 +1,6 @@
+
+DEAL::FE_Q<2>(1)
+DEAL::FE_Q<2>(QGaussLobatto(4))
+DEAL::FE_DGQArbitraryNodes<2>(QUnknownNodes(4))
+DEAL::FE_DGQArbitraryNodes<2>(QGaussLobatto(5))
+DEAL::FE_DGQArbitraryNodes<2>(QUnknownNodes(2))
diff --git a/tests/grid/ordering_01.cc b/tests/grid/ordering_01.cc
deleted file mode 100644 (file)
index 593b2e2..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-// ---------------------------------------------------------------------
-// $Id$
-//
-// Copyright (C) 2013 by the deal.II authors
-//
-// This file is part of the deal.II library.
-//
-// The deal.II library is free software; you can use it, redistribute
-// it, and/or modify it under the terms of the GNU Lesser General
-// Public License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-// The full text of the license can be found in the file LICENSE at
-// the top level of the deal.II distribution.
-//
-// ---------------------------------------------------------------------
-
-#include "../tests.h"
-
-#include <deal.II/grid/tria.h>
-#include <deal.II/grid/tria_accessor.h>
-#include <deal.II/grid/tria_iterator.h>
-#include <deal.II/grid/grid_generator.h>
-#include <deal.II/grid/tria_boundary_lib.h>
-#include <deal.II/grid/grid_out.h>
-
-#include <fstream>
-#include <cmath>
-
-using namespace dealii;
-
-
-template <int dim>
-void
-show_ordering(const Triangulation<dim> &tr)
-{
-  for (typename Triangulation<dim>::cell_iterator cell = tr.begin(); cell != tr.end(); ++cell)
-    for (typename Triangulation<dim>::cell_iterator other = tr.begin(); other != tr.end(); ++other)
-      {
-        deallog << (cell < other ? "less " : "not  ");
-        deallog << cell->level_subdomain_id() << ':' << other->level_subdomain_id() << ' ';
-        if (cell->active())
-          deallog << cell->subdomain_id();
-        else
-          deallog << 'X';
-        deallog << ':';
-        if (other->active())
-          deallog << other->subdomain_id();
-        else
-          deallog << 'X';
-        deallog << ' ';
-        deallog << cell->level() << ':' << other->level() << ' ';
-        deallog << cell->index() << ':' << other->index() << ' ';
-        deallog << std::endl;
-      }
-}
-
-template <int dim>
-void test1()
-{
-  Triangulation<dim> tr;
-  GridGenerator::hyper_ball(tr);
-
-  typename Triangulation<dim>::active_cell_iterator cell = tr.begin_active();
-  cell->set_subdomain_id(4);
-  cell->set_level_subdomain_id(4);
-  ++cell;
-  cell->set_subdomain_id(3);
-  cell->set_level_subdomain_id(5);
-
-  tr.refine_global(1);
-  cell = tr.begin_active();
-  cell->set_level_subdomain_id(3);
-  (++cell)->set_level_subdomain_id(4);
-  (++cell)->set_level_subdomain_id(5);
-  ++cell;
-  (++cell)->set_level_subdomain_id(3);
-  (++cell)->set_level_subdomain_id(4);
-  (++cell)->set_level_subdomain_id(5);
-
-  show_ordering(tr);
-}
-
-int main()
-{
-  initlog();
-
-  test1<2>();
-  return 0;
-}
diff --git a/tests/grid/ordering_01.output b/tests/grid/ordering_01.output
deleted file mode 100644 (file)
index d80597d..0000000
+++ /dev/null
@@ -1,626 +0,0 @@
-
-DEAL::not  4:4 X:X 0:0 0:0 
-DEAL::less 4:5 X:X 0:0 0:1 
-DEAL::not  4:0 X:X 0:0 0:2 
-DEAL::not  4:0 X:X 0:0 0:3 
-DEAL::not  4:0 X:X 0:0 0:4 
-DEAL::not  4:3 X:4 0:1 0:0 
-DEAL::less 4:4 X:4 0:1 0:1 
-DEAL::less 4:5 X:4 0:1 0:2 
-DEAL::not  4:0 X:4 0:1 0:3 
-DEAL::not  4:3 X:3 0:1 0:4 
-DEAL::less 4:4 X:3 0:1 0:5 
-DEAL::less 4:5 X:3 0:1 0:6 
-DEAL::not  4:0 X:3 0:1 0:7 
-DEAL::not  4:0 X:0 0:1 0:8 
-DEAL::not  4:0 X:0 0:1 0:9 
-DEAL::not  4:0 X:0 0:1 0:10 
-DEAL::not  4:0 X:0 0:1 0:11 
-DEAL::not  4:0 X:0 0:1 0:12 
-DEAL::not  4:0 X:0 0:1 0:13 
-DEAL::not  4:0 X:0 0:1 0:14 
-DEAL::not  4:0 X:0 0:1 0:15 
-DEAL::not  4:0 X:0 0:1 0:16 
-DEAL::not  4:0 X:0 0:1 0:17 
-DEAL::not  4:0 X:0 0:1 0:18 
-DEAL::not  4:0 X:0 0:1 0:19 
-DEAL::not  5:4 X:X 0:0 1:0 
-DEAL::not  5:5 X:X 0:0 1:1 
-DEAL::not  5:0 X:X 0:0 1:2 
-DEAL::not  5:0 X:X 0:0 1:3 
-DEAL::not  5:0 X:X 0:0 1:4 
-DEAL::not  5:3 X:4 0:1 1:0 
-DEAL::not  5:4 X:4 0:1 1:1 
-DEAL::less 5:5 X:4 0:1 1:2 
-DEAL::not  5:0 X:4 0:1 1:3 
-DEAL::not  5:3 X:3 0:1 1:4 
-DEAL::not  5:4 X:3 0:1 1:5 
-DEAL::less 5:5 X:3 0:1 1:6 
-DEAL::not  5:0 X:3 0:1 1:7 
-DEAL::not  5:0 X:0 0:1 1:8 
-DEAL::not  5:0 X:0 0:1 1:9 
-DEAL::not  5:0 X:0 0:1 1:10 
-DEAL::not  5:0 X:0 0:1 1:11 
-DEAL::not  5:0 X:0 0:1 1:12 
-DEAL::not  5:0 X:0 0:1 1:13 
-DEAL::not  5:0 X:0 0:1 1:14 
-DEAL::not  5:0 X:0 0:1 1:15 
-DEAL::not  5:0 X:0 0:1 1:16 
-DEAL::not  5:0 X:0 0:1 1:17 
-DEAL::not  5:0 X:0 0:1 1:18 
-DEAL::not  5:0 X:0 0:1 1:19 
-DEAL::less 0:4 X:X 0:0 2:0 
-DEAL::less 0:5 X:X 0:0 2:1 
-DEAL::not  0:0 X:X 0:0 2:2 
-DEAL::less 0:0 X:X 0:0 2:3 
-DEAL::less 0:0 X:X 0:0 2:4 
-DEAL::less 0:3 X:4 0:1 2:0 
-DEAL::less 0:4 X:4 0:1 2:1 
-DEAL::less 0:5 X:4 0:1 2:2 
-DEAL::less 0:0 X:4 0:1 2:3 
-DEAL::less 0:3 X:3 0:1 2:4 
-DEAL::less 0:4 X:3 0:1 2:5 
-DEAL::less 0:5 X:3 0:1 2:6 
-DEAL::less 0:0 X:3 0:1 2:7 
-DEAL::less 0:0 X:0 0:1 2:8 
-DEAL::less 0:0 X:0 0:1 2:9 
-DEAL::less 0:0 X:0 0:1 2:10 
-DEAL::less 0:0 X:0 0:1 2:11 
-DEAL::less 0:0 X:0 0:1 2:12 
-DEAL::less 0:0 X:0 0:1 2:13 
-DEAL::less 0:0 X:0 0:1 2:14 
-DEAL::less 0:0 X:0 0:1 2:15 
-DEAL::less 0:0 X:0 0:1 2:16 
-DEAL::less 0:0 X:0 0:1 2:17 
-DEAL::less 0:0 X:0 0:1 2:18 
-DEAL::less 0:0 X:0 0:1 2:19 
-DEAL::less 0:4 X:X 0:0 3:0 
-DEAL::less 0:5 X:X 0:0 3:1 
-DEAL::not  0:0 X:X 0:0 3:2 
-DEAL::not  0:0 X:X 0:0 3:3 
-DEAL::less 0:0 X:X 0:0 3:4 
-DEAL::less 0:3 X:4 0:1 3:0 
-DEAL::less 0:4 X:4 0:1 3:1 
-DEAL::less 0:5 X:4 0:1 3:2 
-DEAL::less 0:0 X:4 0:1 3:3 
-DEAL::less 0:3 X:3 0:1 3:4 
-DEAL::less 0:4 X:3 0:1 3:5 
-DEAL::less 0:5 X:3 0:1 3:6 
-DEAL::less 0:0 X:3 0:1 3:7 
-DEAL::less 0:0 X:0 0:1 3:8 
-DEAL::less 0:0 X:0 0:1 3:9 
-DEAL::less 0:0 X:0 0:1 3:10 
-DEAL::less 0:0 X:0 0:1 3:11 
-DEAL::less 0:0 X:0 0:1 3:12 
-DEAL::less 0:0 X:0 0:1 3:13 
-DEAL::less 0:0 X:0 0:1 3:14 
-DEAL::less 0:0 X:0 0:1 3:15 
-DEAL::less 0:0 X:0 0:1 3:16 
-DEAL::less 0:0 X:0 0:1 3:17 
-DEAL::less 0:0 X:0 0:1 3:18 
-DEAL::less 0:0 X:0 0:1 3:19 
-DEAL::less 0:4 X:X 0:0 4:0 
-DEAL::less 0:5 X:X 0:0 4:1 
-DEAL::not  0:0 X:X 0:0 4:2 
-DEAL::not  0:0 X:X 0:0 4:3 
-DEAL::not  0:0 X:X 0:0 4:4 
-DEAL::less 0:3 X:4 0:1 4:0 
-DEAL::less 0:4 X:4 0:1 4:1 
-DEAL::less 0:5 X:4 0:1 4:2 
-DEAL::less 0:0 X:4 0:1 4:3 
-DEAL::less 0:3 X:3 0:1 4:4 
-DEAL::less 0:4 X:3 0:1 4:5 
-DEAL::less 0:5 X:3 0:1 4:6 
-DEAL::less 0:0 X:3 0:1 4:7 
-DEAL::less 0:0 X:0 0:1 4:8 
-DEAL::less 0:0 X:0 0:1 4:9 
-DEAL::less 0:0 X:0 0:1 4:10 
-DEAL::less 0:0 X:0 0:1 4:11 
-DEAL::less 0:0 X:0 0:1 4:12 
-DEAL::less 0:0 X:0 0:1 4:13 
-DEAL::less 0:0 X:0 0:1 4:14 
-DEAL::less 0:0 X:0 0:1 4:15 
-DEAL::less 0:0 X:0 0:1 4:16 
-DEAL::less 0:0 X:0 0:1 4:17 
-DEAL::less 0:0 X:0 0:1 4:18 
-DEAL::less 0:0 X:0 0:1 4:19 
-DEAL::less 3:4 4:X 1:0 0:0 
-DEAL::less 3:5 4:X 1:0 0:1 
-DEAL::not  3:0 4:X 1:0 0:2 
-DEAL::not  3:0 4:X 1:0 0:3 
-DEAL::not  3:0 4:X 1:0 0:4 
-DEAL::not  3:3 4:4 1:1 0:0 
-DEAL::less 3:4 4:4 1:1 0:1 
-DEAL::less 3:5 4:4 1:1 0:2 
-DEAL::not  3:0 4:4 1:1 0:3 
-DEAL::not  3:3 4:3 1:1 0:4 
-DEAL::less 3:4 4:3 1:1 0:5 
-DEAL::less 3:5 4:3 1:1 0:6 
-DEAL::not  3:0 4:3 1:1 0:7 
-DEAL::not  3:0 4:0 1:1 0:8 
-DEAL::not  3:0 4:0 1:1 0:9 
-DEAL::not  3:0 4:0 1:1 0:10 
-DEAL::not  3:0 4:0 1:1 0:11 
-DEAL::not  3:0 4:0 1:1 0:12 
-DEAL::not  3:0 4:0 1:1 0:13 
-DEAL::not  3:0 4:0 1:1 0:14 
-DEAL::not  3:0 4:0 1:1 0:15 
-DEAL::not  3:0 4:0 1:1 0:16 
-DEAL::not  3:0 4:0 1:1 0:17 
-DEAL::not  3:0 4:0 1:1 0:18 
-DEAL::not  3:0 4:0 1:1 0:19 
-DEAL::not  4:4 4:X 1:0 1:0 
-DEAL::less 4:5 4:X 1:0 1:1 
-DEAL::not  4:0 4:X 1:0 1:2 
-DEAL::not  4:0 4:X 1:0 1:3 
-DEAL::not  4:0 4:X 1:0 1:4 
-DEAL::not  4:3 4:4 1:1 1:0 
-DEAL::not  4:4 4:4 1:1 1:1 
-DEAL::less 4:5 4:4 1:1 1:2 
-DEAL::not  4:0 4:4 1:1 1:3 
-DEAL::not  4:3 4:3 1:1 1:4 
-DEAL::not  4:4 4:3 1:1 1:5 
-DEAL::less 4:5 4:3 1:1 1:6 
-DEAL::not  4:0 4:3 1:1 1:7 
-DEAL::not  4:0 4:0 1:1 1:8 
-DEAL::not  4:0 4:0 1:1 1:9 
-DEAL::not  4:0 4:0 1:1 1:10 
-DEAL::not  4:0 4:0 1:1 1:11 
-DEAL::not  4:0 4:0 1:1 1:12 
-DEAL::not  4:0 4:0 1:1 1:13 
-DEAL::not  4:0 4:0 1:1 1:14 
-DEAL::not  4:0 4:0 1:1 1:15 
-DEAL::not  4:0 4:0 1:1 1:16 
-DEAL::not  4:0 4:0 1:1 1:17 
-DEAL::not  4:0 4:0 1:1 1:18 
-DEAL::not  4:0 4:0 1:1 1:19 
-DEAL::not  5:4 4:X 1:0 2:0 
-DEAL::not  5:5 4:X 1:0 2:1 
-DEAL::not  5:0 4:X 1:0 2:2 
-DEAL::not  5:0 4:X 1:0 2:3 
-DEAL::not  5:0 4:X 1:0 2:4 
-DEAL::not  5:3 4:4 1:1 2:0 
-DEAL::not  5:4 4:4 1:1 2:1 
-DEAL::not  5:5 4:4 1:1 2:2 
-DEAL::not  5:0 4:4 1:1 2:3 
-DEAL::not  5:3 4:3 1:1 2:4 
-DEAL::not  5:4 4:3 1:1 2:5 
-DEAL::not  5:5 4:3 1:1 2:6 
-DEAL::not  5:0 4:3 1:1 2:7 
-DEAL::not  5:0 4:0 1:1 2:8 
-DEAL::not  5:0 4:0 1:1 2:9 
-DEAL::not  5:0 4:0 1:1 2:10 
-DEAL::not  5:0 4:0 1:1 2:11 
-DEAL::not  5:0 4:0 1:1 2:12 
-DEAL::not  5:0 4:0 1:1 2:13 
-DEAL::not  5:0 4:0 1:1 2:14 
-DEAL::not  5:0 4:0 1:1 2:15 
-DEAL::not  5:0 4:0 1:1 2:16 
-DEAL::not  5:0 4:0 1:1 2:17 
-DEAL::not  5:0 4:0 1:1 2:18 
-DEAL::not  5:0 4:0 1:1 2:19 
-DEAL::less 0:4 4:X 1:0 3:0 
-DEAL::less 0:5 4:X 1:0 3:1 
-DEAL::not  0:0 4:X 1:0 3:2 
-DEAL::not  0:0 4:X 1:0 3:3 
-DEAL::not  0:0 4:X 1:0 3:4 
-DEAL::less 0:3 4:4 1:1 3:0 
-DEAL::less 0:4 4:4 1:1 3:1 
-DEAL::less 0:5 4:4 1:1 3:2 
-DEAL::not  0:0 4:4 1:1 3:3 
-DEAL::less 0:3 4:3 1:1 3:4 
-DEAL::less 0:4 4:3 1:1 3:5 
-DEAL::less 0:5 4:3 1:1 3:6 
-DEAL::not  0:0 4:3 1:1 3:7 
-DEAL::not  0:0 4:0 1:1 3:8 
-DEAL::not  0:0 4:0 1:1 3:9 
-DEAL::not  0:0 4:0 1:1 3:10 
-DEAL::not  0:0 4:0 1:1 3:11 
-DEAL::not  0:0 4:0 1:1 3:12 
-DEAL::not  0:0 4:0 1:1 3:13 
-DEAL::not  0:0 4:0 1:1 3:14 
-DEAL::not  0:0 4:0 1:1 3:15 
-DEAL::not  0:0 4:0 1:1 3:16 
-DEAL::not  0:0 4:0 1:1 3:17 
-DEAL::not  0:0 4:0 1:1 3:18 
-DEAL::not  0:0 4:0 1:1 3:19 
-DEAL::less 3:4 3:X 1:0 4:0 
-DEAL::less 3:5 3:X 1:0 4:1 
-DEAL::not  3:0 3:X 1:0 4:2 
-DEAL::not  3:0 3:X 1:0 4:3 
-DEAL::not  3:0 3:X 1:0 4:4 
-DEAL::less 3:3 3:4 1:1 4:0 
-DEAL::less 3:4 3:4 1:1 4:1 
-DEAL::less 3:5 3:4 1:1 4:2 
-DEAL::not  3:0 3:4 1:1 4:3 
-DEAL::not  3:3 3:3 1:1 4:4 
-DEAL::less 3:4 3:3 1:1 4:5 
-DEAL::less 3:5 3:3 1:1 4:6 
-DEAL::not  3:0 3:3 1:1 4:7 
-DEAL::not  3:0 3:0 1:1 4:8 
-DEAL::not  3:0 3:0 1:1 4:9 
-DEAL::not  3:0 3:0 1:1 4:10 
-DEAL::not  3:0 3:0 1:1 4:11 
-DEAL::not  3:0 3:0 1:1 4:12 
-DEAL::not  3:0 3:0 1:1 4:13 
-DEAL::not  3:0 3:0 1:1 4:14 
-DEAL::not  3:0 3:0 1:1 4:15 
-DEAL::not  3:0 3:0 1:1 4:16 
-DEAL::not  3:0 3:0 1:1 4:17 
-DEAL::not  3:0 3:0 1:1 4:18 
-DEAL::not  3:0 3:0 1:1 4:19 
-DEAL::not  4:4 3:X 1:0 5:0 
-DEAL::less 4:5 3:X 1:0 5:1 
-DEAL::not  4:0 3:X 1:0 5:2 
-DEAL::not  4:0 3:X 1:0 5:3 
-DEAL::not  4:0 3:X 1:0 5:4 
-DEAL::not  4:3 3:4 1:1 5:0 
-DEAL::less 4:4 3:4 1:1 5:1 
-DEAL::less 4:5 3:4 1:1 5:2 
-DEAL::not  4:0 3:4 1:1 5:3 
-DEAL::not  4:3 3:3 1:1 5:4 
-DEAL::not  4:4 3:3 1:1 5:5 
-DEAL::less 4:5 3:3 1:1 5:6 
-DEAL::not  4:0 3:3 1:1 5:7 
-DEAL::not  4:0 3:0 1:1 5:8 
-DEAL::not  4:0 3:0 1:1 5:9 
-DEAL::not  4:0 3:0 1:1 5:10 
-DEAL::not  4:0 3:0 1:1 5:11 
-DEAL::not  4:0 3:0 1:1 5:12 
-DEAL::not  4:0 3:0 1:1 5:13 
-DEAL::not  4:0 3:0 1:1 5:14 
-DEAL::not  4:0 3:0 1:1 5:15 
-DEAL::not  4:0 3:0 1:1 5:16 
-DEAL::not  4:0 3:0 1:1 5:17 
-DEAL::not  4:0 3:0 1:1 5:18 
-DEAL::not  4:0 3:0 1:1 5:19 
-DEAL::not  5:4 3:X 1:0 6:0 
-DEAL::not  5:5 3:X 1:0 6:1 
-DEAL::not  5:0 3:X 1:0 6:2 
-DEAL::not  5:0 3:X 1:0 6:3 
-DEAL::not  5:0 3:X 1:0 6:4 
-DEAL::not  5:3 3:4 1:1 6:0 
-DEAL::not  5:4 3:4 1:1 6:1 
-DEAL::less 5:5 3:4 1:1 6:2 
-DEAL::not  5:0 3:4 1:1 6:3 
-DEAL::not  5:3 3:3 1:1 6:4 
-DEAL::not  5:4 3:3 1:1 6:5 
-DEAL::not  5:5 3:3 1:1 6:6 
-DEAL::not  5:0 3:3 1:1 6:7 
-DEAL::not  5:0 3:0 1:1 6:8 
-DEAL::not  5:0 3:0 1:1 6:9 
-DEAL::not  5:0 3:0 1:1 6:10 
-DEAL::not  5:0 3:0 1:1 6:11 
-DEAL::not  5:0 3:0 1:1 6:12 
-DEAL::not  5:0 3:0 1:1 6:13 
-DEAL::not  5:0 3:0 1:1 6:14 
-DEAL::not  5:0 3:0 1:1 6:15 
-DEAL::not  5:0 3:0 1:1 6:16 
-DEAL::not  5:0 3:0 1:1 6:17 
-DEAL::not  5:0 3:0 1:1 6:18 
-DEAL::not  5:0 3:0 1:1 6:19 
-DEAL::less 0:4 3:X 1:0 7:0 
-DEAL::less 0:5 3:X 1:0 7:1 
-DEAL::not  0:0 3:X 1:0 7:2 
-DEAL::not  0:0 3:X 1:0 7:3 
-DEAL::not  0:0 3:X 1:0 7:4 
-DEAL::less 0:3 3:4 1:1 7:0 
-DEAL::less 0:4 3:4 1:1 7:1 
-DEAL::less 0:5 3:4 1:1 7:2 
-DEAL::less 0:0 3:4 1:1 7:3 
-DEAL::less 0:3 3:3 1:1 7:4 
-DEAL::less 0:4 3:3 1:1 7:5 
-DEAL::less 0:5 3:3 1:1 7:6 
-DEAL::not  0:0 3:3 1:1 7:7 
-DEAL::not  0:0 3:0 1:1 7:8 
-DEAL::not  0:0 3:0 1:1 7:9 
-DEAL::not  0:0 3:0 1:1 7:10 
-DEAL::not  0:0 3:0 1:1 7:11 
-DEAL::not  0:0 3:0 1:1 7:12 
-DEAL::not  0:0 3:0 1:1 7:13 
-DEAL::not  0:0 3:0 1:1 7:14 
-DEAL::not  0:0 3:0 1:1 7:15 
-DEAL::not  0:0 3:0 1:1 7:16 
-DEAL::not  0:0 3:0 1:1 7:17 
-DEAL::not  0:0 3:0 1:1 7:18 
-DEAL::not  0:0 3:0 1:1 7:19 
-DEAL::less 0:4 0:X 1:0 8:0 
-DEAL::less 0:5 0:X 1:0 8:1 
-DEAL::not  0:0 0:X 1:0 8:2 
-DEAL::not  0:0 0:X 1:0 8:3 
-DEAL::not  0:0 0:X 1:0 8:4 
-DEAL::less 0:3 0:4 1:1 8:0 
-DEAL::less 0:4 0:4 1:1 8:1 
-DEAL::less 0:5 0:4 1:1 8:2 
-DEAL::less 0:0 0:4 1:1 8:3 
-DEAL::less 0:3 0:3 1:1 8:4 
-DEAL::less 0:4 0:3 1:1 8:5 
-DEAL::less 0:5 0:3 1:1 8:6 
-DEAL::less 0:0 0:3 1:1 8:7 
-DEAL::not  0:0 0:0 1:1 8:8 
-DEAL::less 0:0 0:0 1:1 8:9 
-DEAL::less 0:0 0:0 1:1 8:10 
-DEAL::less 0:0 0:0 1:1 8:11 
-DEAL::less 0:0 0:0 1:1 8:12 
-DEAL::less 0:0 0:0 1:1 8:13 
-DEAL::less 0:0 0:0 1:1 8:14 
-DEAL::less 0:0 0:0 1:1 8:15 
-DEAL::less 0:0 0:0 1:1 8:16 
-DEAL::less 0:0 0:0 1:1 8:17 
-DEAL::less 0:0 0:0 1:1 8:18 
-DEAL::less 0:0 0:0 1:1 8:19 
-DEAL::less 0:4 0:X 1:0 9:0 
-DEAL::less 0:5 0:X 1:0 9:1 
-DEAL::not  0:0 0:X 1:0 9:2 
-DEAL::not  0:0 0:X 1:0 9:3 
-DEAL::not  0:0 0:X 1:0 9:4 
-DEAL::less 0:3 0:4 1:1 9:0 
-DEAL::less 0:4 0:4 1:1 9:1 
-DEAL::less 0:5 0:4 1:1 9:2 
-DEAL::less 0:0 0:4 1:1 9:3 
-DEAL::less 0:3 0:3 1:1 9:4 
-DEAL::less 0:4 0:3 1:1 9:5 
-DEAL::less 0:5 0:3 1:1 9:6 
-DEAL::less 0:0 0:3 1:1 9:7 
-DEAL::not  0:0 0:0 1:1 9:8 
-DEAL::not  0:0 0:0 1:1 9:9 
-DEAL::less 0:0 0:0 1:1 9:10 
-DEAL::less 0:0 0:0 1:1 9:11 
-DEAL::less 0:0 0:0 1:1 9:12 
-DEAL::less 0:0 0:0 1:1 9:13 
-DEAL::less 0:0 0:0 1:1 9:14 
-DEAL::less 0:0 0:0 1:1 9:15 
-DEAL::less 0:0 0:0 1:1 9:16 
-DEAL::less 0:0 0:0 1:1 9:17 
-DEAL::less 0:0 0:0 1:1 9:18 
-DEAL::less 0:0 0:0 1:1 9:19 
-DEAL::less 0:4 0:X 1:0 10:0 
-DEAL::less 0:5 0:X 1:0 10:1 
-DEAL::not  0:0 0:X 1:0 10:2 
-DEAL::not  0:0 0:X 1:0 10:3 
-DEAL::not  0:0 0:X 1:0 10:4 
-DEAL::less 0:3 0:4 1:1 10:0 
-DEAL::less 0:4 0:4 1:1 10:1 
-DEAL::less 0:5 0:4 1:1 10:2 
-DEAL::less 0:0 0:4 1:1 10:3 
-DEAL::less 0:3 0:3 1:1 10:4 
-DEAL::less 0:4 0:3 1:1 10:5 
-DEAL::less 0:5 0:3 1:1 10:6 
-DEAL::less 0:0 0:3 1:1 10:7 
-DEAL::not  0:0 0:0 1:1 10:8 
-DEAL::not  0:0 0:0 1:1 10:9 
-DEAL::not  0:0 0:0 1:1 10:10 
-DEAL::less 0:0 0:0 1:1 10:11 
-DEAL::less 0:0 0:0 1:1 10:12 
-DEAL::less 0:0 0:0 1:1 10:13 
-DEAL::less 0:0 0:0 1:1 10:14 
-DEAL::less 0:0 0:0 1:1 10:15 
-DEAL::less 0:0 0:0 1:1 10:16 
-DEAL::less 0:0 0:0 1:1 10:17 
-DEAL::less 0:0 0:0 1:1 10:18 
-DEAL::less 0:0 0:0 1:1 10:19 
-DEAL::less 0:4 0:X 1:0 11:0 
-DEAL::less 0:5 0:X 1:0 11:1 
-DEAL::not  0:0 0:X 1:0 11:2 
-DEAL::not  0:0 0:X 1:0 11:3 
-DEAL::not  0:0 0:X 1:0 11:4 
-DEAL::less 0:3 0:4 1:1 11:0 
-DEAL::less 0:4 0:4 1:1 11:1 
-DEAL::less 0:5 0:4 1:1 11:2 
-DEAL::less 0:0 0:4 1:1 11:3 
-DEAL::less 0:3 0:3 1:1 11:4 
-DEAL::less 0:4 0:3 1:1 11:5 
-DEAL::less 0:5 0:3 1:1 11:6 
-DEAL::less 0:0 0:3 1:1 11:7 
-DEAL::not  0:0 0:0 1:1 11:8 
-DEAL::not  0:0 0:0 1:1 11:9 
-DEAL::not  0:0 0:0 1:1 11:10 
-DEAL::not  0:0 0:0 1:1 11:11 
-DEAL::less 0:0 0:0 1:1 11:12 
-DEAL::less 0:0 0:0 1:1 11:13 
-DEAL::less 0:0 0:0 1:1 11:14 
-DEAL::less 0:0 0:0 1:1 11:15 
-DEAL::less 0:0 0:0 1:1 11:16 
-DEAL::less 0:0 0:0 1:1 11:17 
-DEAL::less 0:0 0:0 1:1 11:18 
-DEAL::less 0:0 0:0 1:1 11:19 
-DEAL::less 0:4 0:X 1:0 12:0 
-DEAL::less 0:5 0:X 1:0 12:1 
-DEAL::not  0:0 0:X 1:0 12:2 
-DEAL::not  0:0 0:X 1:0 12:3 
-DEAL::not  0:0 0:X 1:0 12:4 
-DEAL::less 0:3 0:4 1:1 12:0 
-DEAL::less 0:4 0:4 1:1 12:1 
-DEAL::less 0:5 0:4 1:1 12:2 
-DEAL::less 0:0 0:4 1:1 12:3 
-DEAL::less 0:3 0:3 1:1 12:4 
-DEAL::less 0:4 0:3 1:1 12:5 
-DEAL::less 0:5 0:3 1:1 12:6 
-DEAL::less 0:0 0:3 1:1 12:7 
-DEAL::not  0:0 0:0 1:1 12:8 
-DEAL::not  0:0 0:0 1:1 12:9 
-DEAL::not  0:0 0:0 1:1 12:10 
-DEAL::not  0:0 0:0 1:1 12:11 
-DEAL::not  0:0 0:0 1:1 12:12 
-DEAL::less 0:0 0:0 1:1 12:13 
-DEAL::less 0:0 0:0 1:1 12:14 
-DEAL::less 0:0 0:0 1:1 12:15 
-DEAL::less 0:0 0:0 1:1 12:16 
-DEAL::less 0:0 0:0 1:1 12:17 
-DEAL::less 0:0 0:0 1:1 12:18 
-DEAL::less 0:0 0:0 1:1 12:19 
-DEAL::less 0:4 0:X 1:0 13:0 
-DEAL::less 0:5 0:X 1:0 13:1 
-DEAL::not  0:0 0:X 1:0 13:2 
-DEAL::not  0:0 0:X 1:0 13:3 
-DEAL::not  0:0 0:X 1:0 13:4 
-DEAL::less 0:3 0:4 1:1 13:0 
-DEAL::less 0:4 0:4 1:1 13:1 
-DEAL::less 0:5 0:4 1:1 13:2 
-DEAL::less 0:0 0:4 1:1 13:3 
-DEAL::less 0:3 0:3 1:1 13:4 
-DEAL::less 0:4 0:3 1:1 13:5 
-DEAL::less 0:5 0:3 1:1 13:6 
-DEAL::less 0:0 0:3 1:1 13:7 
-DEAL::not  0:0 0:0 1:1 13:8 
-DEAL::not  0:0 0:0 1:1 13:9 
-DEAL::not  0:0 0:0 1:1 13:10 
-DEAL::not  0:0 0:0 1:1 13:11 
-DEAL::not  0:0 0:0 1:1 13:12 
-DEAL::not  0:0 0:0 1:1 13:13 
-DEAL::less 0:0 0:0 1:1 13:14 
-DEAL::less 0:0 0:0 1:1 13:15 
-DEAL::less 0:0 0:0 1:1 13:16 
-DEAL::less 0:0 0:0 1:1 13:17 
-DEAL::less 0:0 0:0 1:1 13:18 
-DEAL::less 0:0 0:0 1:1 13:19 
-DEAL::less 0:4 0:X 1:0 14:0 
-DEAL::less 0:5 0:X 1:0 14:1 
-DEAL::not  0:0 0:X 1:0 14:2 
-DEAL::not  0:0 0:X 1:0 14:3 
-DEAL::not  0:0 0:X 1:0 14:4 
-DEAL::less 0:3 0:4 1:1 14:0 
-DEAL::less 0:4 0:4 1:1 14:1 
-DEAL::less 0:5 0:4 1:1 14:2 
-DEAL::less 0:0 0:4 1:1 14:3 
-DEAL::less 0:3 0:3 1:1 14:4 
-DEAL::less 0:4 0:3 1:1 14:5 
-DEAL::less 0:5 0:3 1:1 14:6 
-DEAL::less 0:0 0:3 1:1 14:7 
-DEAL::not  0:0 0:0 1:1 14:8 
-DEAL::not  0:0 0:0 1:1 14:9 
-DEAL::not  0:0 0:0 1:1 14:10 
-DEAL::not  0:0 0:0 1:1 14:11 
-DEAL::not  0:0 0:0 1:1 14:12 
-DEAL::not  0:0 0:0 1:1 14:13 
-DEAL::not  0:0 0:0 1:1 14:14 
-DEAL::less 0:0 0:0 1:1 14:15 
-DEAL::less 0:0 0:0 1:1 14:16 
-DEAL::less 0:0 0:0 1:1 14:17 
-DEAL::less 0:0 0:0 1:1 14:18 
-DEAL::less 0:0 0:0 1:1 14:19 
-DEAL::less 0:4 0:X 1:0 15:0 
-DEAL::less 0:5 0:X 1:0 15:1 
-DEAL::not  0:0 0:X 1:0 15:2 
-DEAL::not  0:0 0:X 1:0 15:3 
-DEAL::not  0:0 0:X 1:0 15:4 
-DEAL::less 0:3 0:4 1:1 15:0 
-DEAL::less 0:4 0:4 1:1 15:1 
-DEAL::less 0:5 0:4 1:1 15:2 
-DEAL::less 0:0 0:4 1:1 15:3 
-DEAL::less 0:3 0:3 1:1 15:4 
-DEAL::less 0:4 0:3 1:1 15:5 
-DEAL::less 0:5 0:3 1:1 15:6 
-DEAL::less 0:0 0:3 1:1 15:7 
-DEAL::not  0:0 0:0 1:1 15:8 
-DEAL::not  0:0 0:0 1:1 15:9 
-DEAL::not  0:0 0:0 1:1 15:10 
-DEAL::not  0:0 0:0 1:1 15:11 
-DEAL::not  0:0 0:0 1:1 15:12 
-DEAL::not  0:0 0:0 1:1 15:13 
-DEAL::not  0:0 0:0 1:1 15:14 
-DEAL::not  0:0 0:0 1:1 15:15 
-DEAL::less 0:0 0:0 1:1 15:16 
-DEAL::less 0:0 0:0 1:1 15:17 
-DEAL::less 0:0 0:0 1:1 15:18 
-DEAL::less 0:0 0:0 1:1 15:19 
-DEAL::less 0:4 0:X 1:0 16:0 
-DEAL::less 0:5 0:X 1:0 16:1 
-DEAL::not  0:0 0:X 1:0 16:2 
-DEAL::not  0:0 0:X 1:0 16:3 
-DEAL::not  0:0 0:X 1:0 16:4 
-DEAL::less 0:3 0:4 1:1 16:0 
-DEAL::less 0:4 0:4 1:1 16:1 
-DEAL::less 0:5 0:4 1:1 16:2 
-DEAL::less 0:0 0:4 1:1 16:3 
-DEAL::less 0:3 0:3 1:1 16:4 
-DEAL::less 0:4 0:3 1:1 16:5 
-DEAL::less 0:5 0:3 1:1 16:6 
-DEAL::less 0:0 0:3 1:1 16:7 
-DEAL::not  0:0 0:0 1:1 16:8 
-DEAL::not  0:0 0:0 1:1 16:9 
-DEAL::not  0:0 0:0 1:1 16:10 
-DEAL::not  0:0 0:0 1:1 16:11 
-DEAL::not  0:0 0:0 1:1 16:12 
-DEAL::not  0:0 0:0 1:1 16:13 
-DEAL::not  0:0 0:0 1:1 16:14 
-DEAL::not  0:0 0:0 1:1 16:15 
-DEAL::not  0:0 0:0 1:1 16:16 
-DEAL::less 0:0 0:0 1:1 16:17 
-DEAL::less 0:0 0:0 1:1 16:18 
-DEAL::less 0:0 0:0 1:1 16:19 
-DEAL::less 0:4 0:X 1:0 17:0 
-DEAL::less 0:5 0:X 1:0 17:1 
-DEAL::not  0:0 0:X 1:0 17:2 
-DEAL::not  0:0 0:X 1:0 17:3 
-DEAL::not  0:0 0:X 1:0 17:4 
-DEAL::less 0:3 0:4 1:1 17:0 
-DEAL::less 0:4 0:4 1:1 17:1 
-DEAL::less 0:5 0:4 1:1 17:2 
-DEAL::less 0:0 0:4 1:1 17:3 
-DEAL::less 0:3 0:3 1:1 17:4 
-DEAL::less 0:4 0:3 1:1 17:5 
-DEAL::less 0:5 0:3 1:1 17:6 
-DEAL::less 0:0 0:3 1:1 17:7 
-DEAL::not  0:0 0:0 1:1 17:8 
-DEAL::not  0:0 0:0 1:1 17:9 
-DEAL::not  0:0 0:0 1:1 17:10 
-DEAL::not  0:0 0:0 1:1 17:11 
-DEAL::not  0:0 0:0 1:1 17:12 
-DEAL::not  0:0 0:0 1:1 17:13 
-DEAL::not  0:0 0:0 1:1 17:14 
-DEAL::not  0:0 0:0 1:1 17:15 
-DEAL::not  0:0 0:0 1:1 17:16 
-DEAL::not  0:0 0:0 1:1 17:17 
-DEAL::less 0:0 0:0 1:1 17:18 
-DEAL::less 0:0 0:0 1:1 17:19 
-DEAL::less 0:4 0:X 1:0 18:0 
-DEAL::less 0:5 0:X 1:0 18:1 
-DEAL::not  0:0 0:X 1:0 18:2 
-DEAL::not  0:0 0:X 1:0 18:3 
-DEAL::not  0:0 0:X 1:0 18:4 
-DEAL::less 0:3 0:4 1:1 18:0 
-DEAL::less 0:4 0:4 1:1 18:1 
-DEAL::less 0:5 0:4 1:1 18:2 
-DEAL::less 0:0 0:4 1:1 18:3 
-DEAL::less 0:3 0:3 1:1 18:4 
-DEAL::less 0:4 0:3 1:1 18:5 
-DEAL::less 0:5 0:3 1:1 18:6 
-DEAL::less 0:0 0:3 1:1 18:7 
-DEAL::not  0:0 0:0 1:1 18:8 
-DEAL::not  0:0 0:0 1:1 18:9 
-DEAL::not  0:0 0:0 1:1 18:10 
-DEAL::not  0:0 0:0 1:1 18:11 
-DEAL::not  0:0 0:0 1:1 18:12 
-DEAL::not  0:0 0:0 1:1 18:13 
-DEAL::not  0:0 0:0 1:1 18:14 
-DEAL::not  0:0 0:0 1:1 18:15 
-DEAL::not  0:0 0:0 1:1 18:16 
-DEAL::not  0:0 0:0 1:1 18:17 
-DEAL::not  0:0 0:0 1:1 18:18 
-DEAL::less 0:0 0:0 1:1 18:19 
-DEAL::less 0:4 0:X 1:0 19:0 
-DEAL::less 0:5 0:X 1:0 19:1 
-DEAL::not  0:0 0:X 1:0 19:2 
-DEAL::not  0:0 0:X 1:0 19:3 
-DEAL::not  0:0 0:X 1:0 19:4 
-DEAL::less 0:3 0:4 1:1 19:0 
-DEAL::less 0:4 0:4 1:1 19:1 
-DEAL::less 0:5 0:4 1:1 19:2 
-DEAL::less 0:0 0:4 1:1 19:3 
-DEAL::less 0:3 0:3 1:1 19:4 
-DEAL::less 0:4 0:3 1:1 19:5 
-DEAL::less 0:5 0:3 1:1 19:6 
-DEAL::less 0:0 0:3 1:1 19:7 
-DEAL::not  0:0 0:0 1:1 19:8 
-DEAL::not  0:0 0:0 1:1 19:9 
-DEAL::not  0:0 0:0 1:1 19:10 
-DEAL::not  0:0 0:0 1:1 19:11 
-DEAL::not  0:0 0:0 1:1 19:12 
-DEAL::not  0:0 0:0 1:1 19:13 
-DEAL::not  0:0 0:0 1:1 19:14 
-DEAL::not  0:0 0:0 1:1 19:15 
-DEAL::not  0:0 0:0 1:1 19:16 
-DEAL::not  0:0 0:0 1:1 19:17 
-DEAL::not  0:0 0:0 1:1 19:18 
-DEAL::not  0:0 0:0 1:1 19:19 
diff --git a/tests/lac/pointer_matrix_01.cc b/tests/lac/pointer_matrix_01.cc
new file mode 100644 (file)
index 0000000..dc4a1bb
--- /dev/null
@@ -0,0 +1,46 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkConstructor1
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkConstructor1()
+  {
+    deallog << "Init with empty matrix" << std::endl;
+    PointerMatrix<FullMatrix<number>, Vector<number> > P;
+    deallog << "Is matrix empty:" << P.empty() << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  checkConstructor1<double>();
+}
diff --git a/tests/lac/pointer_matrix_01.output b/tests/lac/pointer_matrix_01.output
new file mode 100644 (file)
index 0000000..29ff7b7
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL::Init with empty matrix
+DEAL::Is matrix empty:1
diff --git a/tests/lac/pointer_matrix_02.cc b/tests/lac/pointer_matrix_02.cc
new file mode 100644 (file)
index 0000000..2fd9975
--- /dev/null
@@ -0,0 +1,52 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkConstructor2
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkConstructor2(FullMatrix<number> &A)
+  {
+    deallog << "Init with matrix A" << std::endl;
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A);
+    deallog << "Is matrix empty:" << P.empty() << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  checkConstructor2<double>(A);
+}
diff --git a/tests/lac/pointer_matrix_02.output b/tests/lac/pointer_matrix_02.output
new file mode 100644 (file)
index 0000000..4b02719
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL::Init with matrix A
+DEAL::Is matrix empty:0
diff --git a/tests/lac/pointer_matrix_03.cc b/tests/lac/pointer_matrix_03.cc
new file mode 100644 (file)
index 0000000..0d66472
--- /dev/null
@@ -0,0 +1,49 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkConstructor3
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkConstructor3(char *name)
+  {
+    deallog << "Init with matrix name" << std::endl;
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(name);
+    deallog << "Is matrix empty:" << P.empty() << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  char *name = "Matrix A";
+
+  checkConstructor3<double>(name);
+
+}
diff --git a/tests/lac/pointer_matrix_03.output b/tests/lac/pointer_matrix_03.output
new file mode 100644 (file)
index 0000000..b90ebcb
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL::Init with matrix name
+DEAL::Is matrix empty:1
diff --git a/tests/lac/pointer_matrix_04.cc b/tests/lac/pointer_matrix_04.cc
new file mode 100644 (file)
index 0000000..2e8a5af
--- /dev/null
@@ -0,0 +1,54 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkConstructor4
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkConstructor4(const FullMatrix<number> &A, char *name)
+  {
+    deallog << "Init with matrix name and matrix" << std::endl;
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A, name);
+    deallog << "Is matrix empty:" << P.empty() << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  char *name = "Matrix A";
+
+  checkConstructor4<double>(A, name);
+}
diff --git a/tests/lac/pointer_matrix_04.output b/tests/lac/pointer_matrix_04.output
new file mode 100644 (file)
index 0000000..eebc2cc
--- /dev/null
@@ -0,0 +1,3 @@
+
+DEAL::Init with matrix name and matrix
+DEAL::Is matrix empty:0
diff --git a/tests/lac/pointer_matrix_05.cc b/tests/lac/pointer_matrix_05.cc
new file mode 100644 (file)
index 0000000..32f667e
--- /dev/null
@@ -0,0 +1,74 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkVmult
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkVmult(FullMatrix<number> &A, Vector<number> &V, char *name =
+      "Test Matrix")
+  {
+    deallog << "vmult" << std::endl;
+
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A, name);
+    Vector<number> O(A.m());
+    P.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=A*V  
+    Vector<number> O_(A.m());
+    A.vmult(O_, V);
+
+    Assert(O == O_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  Vector<double> V(2);
+  V(0) = 1;
+  V(1) = 2;
+
+  checkVmult<double>(A, V);
+}
diff --git a/tests/lac/pointer_matrix_05.output b/tests/lac/pointer_matrix_05.output
new file mode 100644 (file)
index 0000000..a867192
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL::vmult
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::8.0000   14.0000 
diff --git a/tests/lac/pointer_matrix_06.cc b/tests/lac/pointer_matrix_06.cc
new file mode 100644 (file)
index 0000000..af35fd9
--- /dev/null
@@ -0,0 +1,74 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkTvmult
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkTvmult(FullMatrix<number> &A, Vector<number> &V, char *name =
+      "Test Matrix")
+  {
+    deallog << "Tvmult" << std::endl;
+
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A, name);
+    Vector<number> O(A.m());
+    P.Tvmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=A Transpose*V        
+    Vector<number> O_(A.m());
+    A.Tvmult(O_, V);
+
+    Assert(O == O_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  Vector<double> V(2);
+  V(0) = 1;
+  V(1) = 2;
+
+  checkTvmult<double>(A, V);
+}
diff --git a/tests/lac/pointer_matrix_06.output b/tests/lac/pointer_matrix_06.output
new file mode 100644 (file)
index 0000000..510a561
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL::Tvmult
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::10.0000  13.0000 
diff --git a/tests/lac/pointer_matrix_07.cc b/tests/lac/pointer_matrix_07.cc
new file mode 100644 (file)
index 0000000..98d8174
--- /dev/null
@@ -0,0 +1,83 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkTvmult_add
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkTvmult_add(FullMatrix<number> &A, Vector<number> &V, char *name =
+      "Test Matrix")
+  {
+    deallog << "Tvmult_add" << std::endl;
+
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A, name);
+
+    deallog << "Result vector set to all ones and to be added with result"
+        << std::endl;
+    Vector<number> O(V.size());
+    for (unsigned int i = 0; i < O.size(); ++i)
+      O(i) = 1;
+
+    P.Tvmult_add(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=O+A Transpose*V      
+    Vector<number> O_(V.size());
+    for (unsigned int i = 0; i < O_.size(); ++i)
+      O_(i) = 1;
+
+    A.Tvmult_add(O_, V);
+
+    Assert(O == O_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  Vector<double> V(2);
+  V(0) = 1;
+  V(1) = 2;
+
+  checkTvmult_add<double>(A, V);
+}
diff --git a/tests/lac/pointer_matrix_07.output b/tests/lac/pointer_matrix_07.output
new file mode 100644 (file)
index 0000000..71e06a0
--- /dev/null
@@ -0,0 +1,6 @@
+
+DEAL::Tvmult_add
+DEAL::Result vector set to all ones and to be added with result
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::11.0000  14.0000 
diff --git a/tests/lac/pointer_matrix_08.cc b/tests/lac/pointer_matrix_08.cc
new file mode 100644 (file)
index 0000000..ad3d1b1
--- /dev/null
@@ -0,0 +1,83 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkVmult_add
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkVmult_add(FullMatrix<number> &A, Vector<number> &V, char *name =
+      "Test Matrix")
+  {
+    deallog << "vmult_add" << std::endl;
+
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A, name);
+
+    deallog << "Result vector set to all ones and to be added with result"
+        << std::endl;
+    Vector<number> O(V.size());
+    for (unsigned int i = 0; i < O.size(); ++i)
+      O(i) = 1;
+
+    P.vmult_add(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=O+A*V        
+    Vector<number> O_(V.size());
+    for (unsigned int i = 0; i < O_.size(); ++i)
+      O_(i) = 1;
+
+    A.vmult_add(O_, V);
+
+    Assert(O == O_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  Vector<double> V(2);
+  V(0) = 1;
+  V(1) = 2;
+
+  checkVmult_add<double>(A, V);
+}
diff --git a/tests/lac/pointer_matrix_08.output b/tests/lac/pointer_matrix_08.output
new file mode 100644 (file)
index 0000000..654ff7f
--- /dev/null
@@ -0,0 +1,6 @@
+
+DEAL::vmult_add
+DEAL::Result vector set to all ones and to be added with result
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::9.0000   15.0000 
diff --git a/tests/lac/pointer_matrix_09.cc b/tests/lac/pointer_matrix_09.cc
new file mode 100644 (file)
index 0000000..5a27c25
--- /dev/null
@@ -0,0 +1,81 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkClear
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkClear(FullMatrix<number> &A)
+  {
+    deallog << "clear" << std::endl;
+    deallog << "Init with matrix 1" << std::endl;
+
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    Vector<number> V(A.n());
+    for (unsigned int i = 0; i < V.size(); ++i)
+      V(i) = 1;
+
+    Vector<number> O(A.m());
+    P.vmult(O, V);
+
+    // Check the dimensions of the result vector
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=A*V
+    Vector<number> O_(A.m());
+    A.vmult(O_, V);
+
+    Assert(O == O_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Clearing pointer matrix" << std::endl;
+    P.clear();
+
+    deallog << "Is matrix empty:" << P.empty() << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+
+  checkClear(A);
+}
diff --git a/tests/lac/pointer_matrix_09.output b/tests/lac/pointer_matrix_09.output
new file mode 100644 (file)
index 0000000..0455e79
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL::clear
+DEAL::Init with matrix 1
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::5.0000   9.0000  
+DEAL::Clearing pointer matrix
+DEAL::Is matrix empty:1
diff --git a/tests/lac/pointer_matrix_10.cc b/tests/lac/pointer_matrix_10.cc
new file mode 100644 (file)
index 0000000..b4489cd
--- /dev/null
@@ -0,0 +1,113 @@
+// ---------------------------------------------------------------------
+// $Id: pointer_matrix_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 2006 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check PointerMatrix:checkAssign
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/pointer_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+template<typename number>
+  void
+  checkAssign(FullMatrix<number> &A, FullMatrix<number> &B)
+  {
+    deallog << "=" << std::endl;
+    deallog << "Init with matrix 1" << std::endl;
+
+    PointerMatrix<FullMatrix<number>, Vector<number> > P(&A);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    Vector<number> V(A.n());
+    for (unsigned int i = 0; i < V.size(); ++i)
+      V(i) = 1;
+
+    Vector<number> O(A.m());
+    P.vmult(O, V);
+
+    // Check the dimensions of the result vector
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=A*V
+    Vector<number> O_(A.m());
+    A.vmult(O_, V);
+
+    Assert(O == O_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Clearing pointer matrix" << std::endl;
+    P.clear();
+
+    deallog << "Is matrix empty:" << P.empty() << std::endl;
+
+    deallog << "Assigning pointer matrix to matrix 2" << std::endl;
+
+    P = &B;
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    Vector<number> V_(B.n());
+    for (unsigned int i = 0; i < V_.size(); ++i)
+      V_(i) = 1;
+
+    Vector<number> OU(B.m());
+    P.vmult(OU, V_);
+
+    // Check the dimensions of the result vector
+    Assert(B.m() == OU.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    // Verifying results with Method 2: O=B*V
+    Vector<number> OU_(B.m());
+    B.vmult(OU_, V_);
+
+    Assert(OU == OU_, ExcInternalError());
+    deallog << "Result vector data verified" << std::endl;
+
+    for (unsigned int i = 0; i < OU.size(); ++i)
+      deallog << OU(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  const double Bdata[] =
+    { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+
+  FullMatrix<double> A(2, 2);
+  A.fill(Adata);
+  FullMatrix<double> B(3, 3);
+  B.fill(Bdata);
+
+  checkAssign(A, B);
+}
diff --git a/tests/lac/pointer_matrix_10.output b/tests/lac/pointer_matrix_10.output
new file mode 100644 (file)
index 0000000..6b39ca3
--- /dev/null
@@ -0,0 +1,14 @@
+
+DEAL::=
+DEAL::Init with matrix 1
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::5.0000   9.0000  
+DEAL::Clearing pointer matrix
+DEAL::Is matrix empty:1
+DEAL::Assigning pointer matrix to matrix 2
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::Result vector data verified
+DEAL::6.0000   15.0000 24.0000 
diff --git a/tests/lac/shifted_matrix_01.cc b/tests/lac/shifted_matrix_01.cc
new file mode 100644 (file)
index 0000000..2d414c4
--- /dev/null
@@ -0,0 +1,73 @@
+// ---------------------------------------------------------------------
+// $Id: shifted_matrix.cc 32491 2014-03-13 dilangov $
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check ShiftedMatrix::checkConstructor
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/shifted_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+#include <fstream>
+#include <iomanip>
+#include <cmath>
+
+template<typename number>
+  void
+  checkConstructor(FullMatrix<number> &A, double sigma)
+  {
+    deallog << "constructor" << std::endl;
+
+    ShiftedMatrix < FullMatrix<number> > S(A, sigma);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    Vector<number> V(A.n());
+    for (unsigned int i = 0; i < V.size(); ++i)
+      V(i) = 1;
+
+    Vector<number> O(A.m());
+
+    S.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+
+  A.fill(Adata);
+
+  checkConstructor<double>(A, 2);
+}
diff --git a/tests/lac/shifted_matrix_01.output b/tests/lac/shifted_matrix_01.output
new file mode 100644 (file)
index 0000000..b900772
--- /dev/null
@@ -0,0 +1,5 @@
+
+DEAL::constructor
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::7.0000   11.0000 
diff --git a/tests/lac/shifted_matrix_02.cc b/tests/lac/shifted_matrix_02.cc
new file mode 100644 (file)
index 0000000..1d7c296
--- /dev/null
@@ -0,0 +1,71 @@
+// ---------------------------------------------------------------------
+// $Id: shifted_matrix.cc 32491 2014-03-13 dilangov $
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check ShiftedMatrix::checkVmult
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/shifted_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+#include <fstream>
+#include <iomanip>
+#include <cmath>
+
+template<typename number>
+  void
+  checkVmult(FullMatrix<number> &A, double sigma, Vector<number> &V)
+  {
+    deallog << "vmult" << std::endl;
+
+    ShiftedMatrix < FullMatrix<number> > S(A, sigma);
+    Vector<number> O(A.m());
+
+    S.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+
+  A.fill(Adata);
+
+  Vector<double> V(2);
+  V(0) = 1;
+  V(1) = 2;
+
+  checkVmult<double>(A, 2, V);
+}
diff --git a/tests/lac/shifted_matrix_02.output b/tests/lac/shifted_matrix_02.output
new file mode 100644 (file)
index 0000000..5c9d5fc
--- /dev/null
@@ -0,0 +1,4 @@
+
+DEAL::vmult
+DEAL::Dimensions of result vector verified
+DEAL::10.0000  18.0000 
diff --git a/tests/lac/shifted_matrix_03.cc b/tests/lac/shifted_matrix_03.cc
new file mode 100644 (file)
index 0000000..fc4c1da
--- /dev/null
@@ -0,0 +1,81 @@
+// ---------------------------------------------------------------------
+// $Id: shifted_matrix.cc 32491 2014-03-13 dilangov $
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check ShiftedMatrix::checkResidual
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/shifted_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+#include <fstream>
+#include <iomanip>
+#include <cmath>
+
+template<typename number>
+  void
+  checkResidual(FullMatrix<number> &A, double sigma, Vector<number> &V,
+      Vector<number> &R)
+  {
+    deallog << "residual" << std::endl;
+
+    ShiftedMatrix < FullMatrix<number> > S(A, sigma);
+    Vector<number> O(A.m());
+    double residual;
+
+    residual = S.residual(O, V, R);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    deallog << "Residual vector" << std::endl;
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Residual value" << std::endl;
+    deallog << residual << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+
+  A.fill(Adata);
+
+  Vector<double> V(2);
+  V(0) = 1;
+  V(1) = 2;
+
+  Vector<double> R(2);
+  R(0) = 1;
+  R(1) = 1;
+
+  checkResidual<double>(A, 2, V, R);
+}
diff --git a/tests/lac/shifted_matrix_03.output b/tests/lac/shifted_matrix_03.output
new file mode 100644 (file)
index 0000000..64cf220
--- /dev/null
@@ -0,0 +1,7 @@
+
+DEAL::residual
+DEAL::Dimensions of result vector verified
+DEAL::Residual vector
+DEAL::-9.0000  -17.0000        
+DEAL::Residual value
+DEAL::19.2354
diff --git a/tests/lac/shifted_matrix_04.cc b/tests/lac/shifted_matrix_04.cc
new file mode 100644 (file)
index 0000000..32355a0
--- /dev/null
@@ -0,0 +1,88 @@
+// ---------------------------------------------------------------------
+// $Id: shifted_matrix.cc 32491 2014-03-13 dilangov $
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check ShiftedMatrix::checkSetSigma
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/shifted_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+#include <fstream>
+#include <iomanip>
+#include <cmath>
+
+template<typename number>
+  void
+  checkSetSigma(FullMatrix<number> &A, double sigma)
+  {
+    deallog << "shift(sigma)" << std::endl;
+
+    deallog << "Init ShiftedMatrix with sigma=0" << std::endl;
+    ShiftedMatrix < FullMatrix<number> > S(A, 0);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    Vector<number> V(A.n());
+    for (unsigned int i = 0; i < V.size(); ++i)
+      V(i) = 1;
+
+    Vector<number> O(A.m());
+
+    S.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Setting new sigma value" << std::endl;
+    S.shift(sigma);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    S.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+
+  A.fill(Adata);
+
+  checkSetSigma<double>(A, 2);
+}
diff --git a/tests/lac/shifted_matrix_04.output b/tests/lac/shifted_matrix_04.output
new file mode 100644 (file)
index 0000000..822d2dd
--- /dev/null
@@ -0,0 +1,10 @@
+
+DEAL::shift(sigma)
+DEAL::Init ShiftedMatrix with sigma=0
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::5.0000   9.0000  
+DEAL::Setting new sigma value
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::7.0000   11.0000 
diff --git a/tests/lac/shifted_matrix_05.cc b/tests/lac/shifted_matrix_05.cc
new file mode 100644 (file)
index 0000000..8af92c3
--- /dev/null
@@ -0,0 +1,97 @@
+// ---------------------------------------------------------------------
+// $Id: shifted_matrix.cc 32491 2014-03-13 dilangov $
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check ShiftedMatrix::checkGetSigma
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/shifted_matrix.h>
+#include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/vector.h>
+
+#include <fstream>
+#include <iomanip>
+#include <cmath>
+
+template<typename number>
+  void
+  checkGetSigma(FullMatrix<number> &A)
+  {
+    deallog << "shift()" << std::endl;
+
+    deallog << "Init ShiftedMatrix with sigma=0" << std::endl;
+    ShiftedMatrix < FullMatrix<number> > S(A, 0);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    Vector<number> V(A.n());
+    for (unsigned int i = 0; i < V.size(); ++i)
+      V(i) = 1;
+
+    Vector<number> O(A.m());
+
+    S.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Setting new sigma value by incrementing old value by 1"
+        << std::endl;
+
+    deallog << "Old sigma value" << std::endl;
+    double sigma = S.shift();
+    deallog << sigma << std::endl;
+    sigma = sigma + 1;
+    deallog << "New sigma value" << std::endl;
+    deallog << sigma << std::endl;
+
+    S.shift(sigma);
+
+    deallog << "Multiplying with all ones vector" << std::endl;
+    S.vmult(O, V);
+
+    // Check the dimensions of the result matrix
+    Assert(A.m() == O.size(), ExcInternalError());
+    deallog << "Dimensions of result vector verified" << std::endl;
+
+    for (unsigned int i = 0; i < O.size(); ++i)
+      deallog << O(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(4);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  const double Adata[] =
+    { 2, 3, 4, 5 };
+
+  FullMatrix<double> A(2, 2);
+
+  A.fill(Adata);
+
+  checkGetSigma<double>(A);
+}
diff --git a/tests/lac/shifted_matrix_05.output b/tests/lac/shifted_matrix_05.output
new file mode 100644 (file)
index 0000000..27f92db
--- /dev/null
@@ -0,0 +1,14 @@
+
+DEAL::shift()
+DEAL::Init ShiftedMatrix with sigma=0
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::5.0000   9.0000  
+DEAL::Setting new sigma value by incrementing old value by 1
+DEAL::Old sigma value
+DEAL::0
+DEAL::New sigma value
+DEAL::1.0000
+DEAL::Multiplying with all ones vector
+DEAL::Dimensions of result vector verified
+DEAL::6.0000   10.0000 
diff --git a/tests/lac/vector_view_01.cc b/tests/lac/vector_view_01.cc
new file mode 100644 (file)
index 0000000..7e8e80b
--- /dev/null
@@ -0,0 +1,72 @@
+// ---------------------------------------------------------------------
+// $Id: vector_view_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check VectorView::checkReadOnlyConstructor
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/vector_view.h>
+#include <cmath>
+#include <fstream>
+#include <iomanip>
+
+template<typename number>
+  void
+  checkReadOnlyConstructor(const Vector<number> &V)
+  {
+    deallog << "Read-only constructor" << std::endl;
+    VectorView<number> VV(V.size(), V.begin());
+
+    deallog << "Printing Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    /* deallog << "Incrementing Vector<number> elements using Read-only handle of VectorView<number>" << std::endl;
+     deallog << "Function fails beyond this point" << std::endl;
+     for (unsigned int i=0; i<VV.size(); ++i)
+     VV(i)=VV(i)+1; */
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Vector<double> V1(5);
+  V1(0) = 1;
+  V1(1) = 2;
+  V1(2) = 3;
+  V1(3) = 4;
+  V1(4) = 5;
+
+  const Vector<double> V2(V1);
+
+  checkReadOnlyConstructor<double>(V2);
+}
+
diff --git a/tests/lac/vector_view_01.output b/tests/lac/vector_view_01.output
new file mode 100644 (file)
index 0000000..7ab6f1a
--- /dev/null
@@ -0,0 +1,6 @@
+
+DEAL::Read-only constructor
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    
+DEAL::Printing VectorView<number> pointing to Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    
diff --git a/tests/lac/vector_view_02.cc b/tests/lac/vector_view_02.cc
new file mode 100644 (file)
index 0000000..c980ab7
--- /dev/null
@@ -0,0 +1,86 @@
+// ---------------------------------------------------------------------
+// $Id: vector_view_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check VectorView::checkReinit1
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/vector_view.h>
+#include <cmath>
+#include <fstream>
+#include <iomanip>
+
+template<typename number, typename size_type>
+  void
+  checkReinit1(const size_type N, const bool fast = false)
+  {
+    deallog << "Reinit with const size and fast" << std::endl;
+
+    deallog
+        << "Creating Vector<number> of size N+10 and filling with values 1 to N+10"
+        << std::endl;
+
+    Vector < number > V(N + 10);
+    for (unsigned int i = 0; i < V.size(); i++)
+      V(i) = i + 1;
+
+    deallog
+        << "Creating VectorView<number> of size N+10 pointing to Vector<number>"
+        << std::endl;
+    VectorView<number> VV(V.size(), V.begin());
+
+    deallog << "Printing Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Reinit VectorView<number> to size N from N+10 with fast="
+        << fast << std::endl;
+    VV.reinit(N, fast);
+
+    deallog << "Printing Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  checkReinit1<double, int>(10, false);
+  checkReinit1<double, int>(10, true);
+}
+
diff --git a/tests/lac/vector_view_02.output b/tests/lac/vector_view_02.output
new file mode 100644 (file)
index 0000000..46a5169
--- /dev/null
@@ -0,0 +1,25 @@
+
+DEAL::Reinit with const size and fast
+DEAL::Creating Vector<number> of size N+10 and filling with values 1 to N+10
+DEAL::Creating VectorView<number> of size N+10 pointing to Vector<number>
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.00   11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00   20.00   
+DEAL::Printing VectorView<number> pointing to Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.00   11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00   20.00   
+DEAL::Reinit VectorView<number> to size N from N+10 with fast=0
+DEAL::Printing Vector<number>
+DEAL::0        0       0       0       0       0       0       0       0       0       11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00   20.00   
+DEAL::Printing VectorView<number> pointing to Vector<number>
+DEAL::0        0       0       0       0       0       0       0       0       0       
+DEAL::Reinit with const size and fast
+DEAL::Creating Vector<number> of size N+10 and filling with values 1 to N+10
+DEAL::Creating VectorView<number> of size N+10 pointing to Vector<number>
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.00   11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00   20.00   
+DEAL::Printing VectorView<number> pointing to Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.00   11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00   20.00   
+DEAL::Reinit VectorView<number> to size N from N+10 with fast=1
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.00   11.00   12.00   13.00   14.00   15.00   16.00   17.00   18.00   19.00   20.00   
+DEAL::Printing VectorView<number> pointing to Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    6.00    7.00    8.00    9.00    10.00   
diff --git a/tests/lac/vector_view_03.cc b/tests/lac/vector_view_03.cc
new file mode 100644 (file)
index 0000000..758e01e
--- /dev/null
@@ -0,0 +1,100 @@
+// ---------------------------------------------------------------------
+// $Id: vector_view_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check VectorView::checkReinit3
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/vector_view.h>
+#include <cmath>
+#include <fstream>
+#include <iomanip>
+
+template<typename number>
+  void
+  checkReinit3(const Vector<number> &V)
+  {
+    deallog
+        << "Reinit a ReadOnly VectorView<number> with const Vector<number> and const size"
+        << std::endl;
+
+    deallog
+        << "Creating dummy Vector<number> of size V.size() and filling with zeros"
+        << std::endl;
+
+    Vector<number> _V(V.size());
+    for (unsigned int i = 0; i < _V.size(); i++)
+      _V(i) = 0;
+
+    deallog << "Creating VectorView<number> pointing to dummy Vector<number>"
+        << std::endl;
+    VectorView<number> VV(_V.size(), _V.begin());
+
+    deallog << "Printing dummy Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < _V.size(); ++i)
+      deallog << _V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to dummy Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Reinit VectorView<number> to half of Vector<number>"
+        << std::endl;
+    VV.reinit(V.size() / 2, V.begin());
+
+    deallog << "Printing Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to half of Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    /* deallog << "Incrementing Vector<number> elements using Read-only handle of VectorView<number>" << std::endl;
+     deallog << "Function fails beyond this point" << std::endl;
+     for (unsigned int i=0; i<VV.size(); ++i)
+     VV(i)=VV(i)+1; */
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Vector<double> V1(5);
+  V1(0) = 1;
+  V1(1) = 2;
+  V1(2) = 3;
+  V1(3) = 4;
+  V1(4) = 5;
+
+  const Vector<double> V2(V1);
+
+  checkReinit3<double>(V2);
+}
+
diff --git a/tests/lac/vector_view_03.output b/tests/lac/vector_view_03.output
new file mode 100644 (file)
index 0000000..cfac6a7
--- /dev/null
@@ -0,0 +1,13 @@
+
+DEAL::Reinit a ReadOnly VectorView<number> with const Vector<number> and const size
+DEAL::Creating dummy Vector<number> of size V.size() and filling with zeros
+DEAL::Creating VectorView<number> pointing to dummy Vector<number>
+DEAL::Printing dummy Vector<number>
+DEAL::0        0       0       0       0       
+DEAL::Printing VectorView<number> pointing to dummy Vector<number>
+DEAL::0        0       0       0       0       
+DEAL::Reinit VectorView<number> to half of Vector<number>
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    
+DEAL::Printing VectorView<number> pointing to half of Vector<number>
+DEAL::1.00     2.00    
diff --git a/tests/lac/vector_view_04.cc b/tests/lac/vector_view_04.cc
new file mode 100644 (file)
index 0000000..7ffdf13
--- /dev/null
@@ -0,0 +1,104 @@
+// ---------------------------------------------------------------------
+// $Id: vector_view_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check VectorView::checkReinit2
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/vector_view.h>
+#include <cmath>
+#include <fstream>
+#include <iomanip>
+
+template<typename number>
+  void
+  checkReinit2(Vector<number> &V)
+  {
+    deallog
+        << "Reinit a ReadWrite VectorView<number> with Vector<number> and const size"
+        << std::endl;
+
+    deallog
+        << "Creating dummy Vector<number> of size V.size() and filling with zeros"
+        << std::endl;
+
+    Vector<number> _V(V.size());
+    for (unsigned int i = 0; i < _V.size(); i++)
+      _V(i) = 0;
+
+    deallog << "Creating VectorView<number> pointing to dummy Vector<number>"
+        << std::endl;
+    VectorView<number> VV(_V.size(), _V.begin());
+
+    deallog << "Printing dummy Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < _V.size(); ++i)
+      deallog << _V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to dummy Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Reinit VectorView<number> to half of Vector<number>"
+        << std::endl;
+    VV.reinit(V.size() / 2, V.begin());
+
+    deallog << "Printing Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to half of Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    deallog
+        << "Incrementing Vector<number> elements using Read-write handle of VectorView<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      VV(i) = VV(i) + 1;
+
+    deallog << "Printing modified Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Vector<double> V1(5);
+  V1(0) = 1;
+  V1(1) = 2;
+  V1(2) = 3;
+  V1(3) = 4;
+  V1(4) = 5;
+
+  checkReinit2<double>(V1);
+}
+
diff --git a/tests/lac/vector_view_04.output b/tests/lac/vector_view_04.output
new file mode 100644 (file)
index 0000000..19d52f0
--- /dev/null
@@ -0,0 +1,16 @@
+
+DEAL::Reinit a ReadWrite VectorView<number> with Vector<number> and const size
+DEAL::Creating dummy Vector<number> of size V.size() and filling with zeros
+DEAL::Creating VectorView<number> pointing to dummy Vector<number>
+DEAL::Printing dummy Vector<number>
+DEAL::0        0       0       0       0       
+DEAL::Printing VectorView<number> pointing to dummy Vector<number>
+DEAL::0        0       0       0       0       
+DEAL::Reinit VectorView<number> to half of Vector<number>
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    
+DEAL::Printing VectorView<number> pointing to half of Vector<number>
+DEAL::1.00     2.00    
+DEAL::Incrementing Vector<number> elements using Read-write handle of VectorView<number>
+DEAL::Printing modified Vector<number>
+DEAL::2.00     3.00    3.00    4.00    5.00    
diff --git a/tests/lac/vector_view_05.cc b/tests/lac/vector_view_05.cc
new file mode 100644 (file)
index 0000000..7ff1b97
--- /dev/null
@@ -0,0 +1,76 @@
+// ---------------------------------------------------------------------
+// $Id: vector_view_01.cc 2014-03-14 dilangov $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// check VectorView::checkReadWriteConstructor
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/vector_view.h>
+#include <cmath>
+#include <fstream>
+#include <iomanip>
+
+template<typename number>
+  void
+  checkReadWriteConstructor(Vector<number> &V)
+  {
+    deallog << "Read-write constructor" << std::endl;
+    VectorView<number> VV(V.size(), V.begin());
+
+    deallog << "Printing Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+
+    deallog << "Printing VectorView<number> pointing to Vector<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      deallog << VV(i) << '\t';
+    deallog << std::endl;
+
+    deallog
+        << "Incrementing Vector<number> elements using Read-write handle of VectorView<number>"
+        << std::endl;
+    for (unsigned int i = 0; i < VV.size(); ++i)
+      VV(i) = VV(i) + 1;
+
+    deallog << "Printing modified Vector<number>" << std::endl;
+    for (unsigned int i = 0; i < V.size(); ++i)
+      deallog << V(i) << '\t';
+    deallog << std::endl;
+  }
+
+int
+main()
+{
+  std::ofstream logfile("output");
+  deallog << std::fixed;
+  deallog << std::setprecision(2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  Vector<double> V1(5);
+  V1(0) = 1;
+  V1(1) = 2;
+  V1(2) = 3;
+  V1(3) = 4;
+  V1(4) = 5;
+
+  checkReadWriteConstructor<double>(V1);
+}
+
diff --git a/tests/lac/vector_view_05.output b/tests/lac/vector_view_05.output
new file mode 100644 (file)
index 0000000..e3fa623
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL::Read-write constructor
+DEAL::Printing Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    
+DEAL::Printing VectorView<number> pointing to Vector<number>
+DEAL::1.00     2.00    3.00    4.00    5.00    
+DEAL::Incrementing Vector<number> elements using Read-write handle of VectorView<number>
+DEAL::Printing modified Vector<number>
+DEAL::2.00     3.00    4.00    5.00    6.00    
diff --git a/tests/lapack/full_matrix_00.cc b/tests/lapack/full_matrix_00.cc
new file mode 100644 (file)
index 0000000..ed28930
--- /dev/null
@@ -0,0 +1,113 @@
+// ---------------------------------------------------------------------
+// $Id: full_matrix_00.cc $
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Tests reinitialisation of square and rectangle LAPACKFullMatrix
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/lapack_full_matrix.h>
+
+#include <fstream>
+#include <iostream>
+
+
+void test (const unsigned int size,
+          const bool         reinit_square)
+{
+  // this test can not currently work with matrices smaller than
+  // 1\times2.
+  Assert (size>2, ExcInternalError());
+
+  // initialise a first matrix with the standard constructor and fill
+  // it with some numbers
+  LAPACKFullMatrix<double> M (size, size);
+  
+  for (unsigned int i=0; i<size; ++i)
+    for (unsigned int j=0; j<size; ++j)
+      M(i,j) = i+2.*j;
+
+  // initialise a second matrix with the standard constructor and fill
+  // it with some numbers
+  LAPACKFullMatrix<double> N (size+2, size-2);
+
+  for (unsigned int i=0; i<N.m(); ++i)
+    for (unsigned int j=0; j<N.n (); ++j)
+      N(i,j) = i+2.*j;
+  
+  // clearly, this should be the case
+  Assert (N.m () != M.m (), ExcInternalError());
+  Assert (N.n () != M.n (), ExcInternalError());
+
+  // if reinit_square is true, reinitialise the rectangle matrix to a
+  // square matrix (use reinit (const unsigned int))
+  if (reinit_square)
+    {
+      // reinitialise the matrix and fill it with some numbers
+      N.reinit (size);
+      
+      for (unsigned int i=0; i<N.m (); ++i)
+       for (unsigned int j=0; j<N.n (); ++j)
+         N(i,j) = i+2.*j;
+    }
+
+  // otherwise reinitialise the rectangle matrix to a square one (use
+  // reinit (const unsigned int, const unsigned int))
+  else
+    {
+      // reinitialise the matrix and fill it with some numbers
+      M.reinit (size+2, size-2);
+      
+      for (unsigned int i=0; i<M.m (); ++i)
+       for (unsigned int j=0; j<M.n (); ++j)
+         M(i,j) = i+2.*j;
+    }
+
+  // and now this should be true
+  Assert (N.m () == M.m (), ExcInternalError());
+  Assert (N.n () == M.n (), ExcInternalError());
+
+  // in fact, this should be true too, so check 
+  for (unsigned int i=0; i<M.m (); ++i)
+    for (unsigned int j=0; j<M.n (); ++j)
+      Assert (M(i,j) == N(i,j), ExcInternalError());
+
+  deallog << "OK" << std::endl;
+}
+
+
+int main()
+{
+  const std::string logname = "output";
+  std::ofstream logfile(logname.c_str());
+
+  logfile.precision(3);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  // Test square matrix initialisation
+  test (4, true);
+  test (5, true);
+  test (6, true);
+
+  // Test rectangle matrix initialisation
+  test (4, false);
+  test (5, false);
+  test (6, false);
+
+
+}
diff --git a/tests/lapack/full_matrix_00.output b/tests/lapack/full_matrix_00.output
new file mode 100644 (file)
index 0000000..0aa61ff
--- /dev/null
@@ -0,0 +1,7 @@
+
+DEAL::OK
+DEAL::OK
+DEAL::OK
+DEAL::OK
+DEAL::OK
+DEAL::OK
diff --git a/tests/mpi/extract_constant_modes_02.cc b/tests/mpi/extract_constant_modes_02.cc
new file mode 100644 (file)
index 0000000..d03cd60
--- /dev/null
@@ -0,0 +1,104 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2009 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// test DoFTools::extract_constant_modes with FE_Q_DG0
+
+#include "../tests.h"
+#include "coarse_grid_common.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/tensor.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/dofs/dof_renumbering.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/dofs/dof_accessor.h>
+
+#include <deal.II/fe/fe_q_dg0.h>
+
+#include <fstream>
+
+
+template<int dim>
+void test()
+{
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+  parallel::distributed::Triangulation<dim> tr(MPI_COMM_WORLD);
+
+  std::vector<unsigned int> sub(2);
+  sub[0] = Utilities::MPI::n_mpi_processes (MPI_COMM_WORLD);
+  sub[1] = 1;
+  GridGenerator::subdivided_hyper_rectangle(static_cast<Triangulation<dim>&>(tr),
+                                            sub, Point<2>(0,0), Point<2>(1,1));
+
+  FE_Q_DG0<dim> fe(1);
+  DoFHandler<dim> dofh(tr);
+  dofh.distribute_dofs (fe);
+
+  if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+    deallog << "Total dofs=" << dofh.n_dofs() << std::endl;
+
+  // extract constant modes and print
+  if (myid == 0)
+    {
+      std::vector<bool> mask(fe.n_components(), true);
+
+      std::vector<std::vector<bool> > constant_modes;
+      DoFTools::extract_constant_modes (dofh, mask, constant_modes);
+
+      for (unsigned int i=0; i<constant_modes.size(); ++i)
+        {
+          for (unsigned int j=0; j<constant_modes[i].size(); ++j)
+            deallog << (constant_modes[i][j] ? '1' : '0') << ' ';
+          deallog << std::endl;
+        }
+    }
+}
+
+
+int main(int argc, char *argv[])
+{
+  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1);
+
+  unsigned int myid = Utilities::MPI::this_mpi_process (MPI_COMM_WORLD);
+
+  deallog.push(Utilities::int_to_string(myid));
+
+  if (myid == 0)
+    {
+      std::ofstream logfile("output");
+      deallog.attach(logfile);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+
+      deallog.push("2d");
+      test<2>();
+      deallog.pop();
+    }
+  else
+    {
+      deallog.push("2d");
+      test<2>();
+      deallog.pop();
+    }
+}
diff --git a/tests/mpi/extract_constant_modes_02.mpirun=4.output b/tests/mpi/extract_constant_modes_02.mpirun=4.output
new file mode 100644 (file)
index 0000000..63cce8e
--- /dev/null
@@ -0,0 +1,4 @@
+
+DEAL:0:2d::Total dofs=14
+DEAL:0:2d::1 1 1 1 0 
+DEAL:0:2d::0 0 0 0 1 
diff --git a/tests/mpi/mesh_worker_05.cc b/tests/mpi/mesh_worker_05.cc
new file mode 100644 (file)
index 0000000..3387e1a
--- /dev/null
@@ -0,0 +1,230 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2000 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// test meshworker LoopControl
+// variation of mesh_worker_01 with more cpus and cells
+
+#include "../tests.h"
+#include <deal.II/meshworker/loop.h>
+#include <deal.II/meshworker/assembler.h>
+
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/filtered_iterator.h>
+
+#include <fstream>
+#include <iomanip>
+
+using namespace dealii;
+
+
+template <int dim>
+class myIntegrator: public dealii::MeshWorker::LocalIntegrator<dim>
+{
+public:
+  typedef MeshWorker::IntegrationInfo<dim> CellInfo;
+
+  void cell(MeshWorker::DoFInfo<dim> &dinfo, CellInfo &info) const;
+  void boundary(MeshWorker::DoFInfo<dim> &dinfo, CellInfo &info) const;
+  void face(MeshWorker::DoFInfo<dim> &dinfo1, MeshWorker::DoFInfo<dim> &dinfo2,
+            CellInfo &info1, CellInfo &info2) const;
+
+
+};
+
+template <int dim>
+void
+myIntegrator<dim>::cell(MeshWorker::DoFInfo<dim> &info, CellInfo &) const
+{
+  deallog << "C " << info.cell->id() << std::endl;
+}
+
+
+template <int dim>
+void
+myIntegrator<dim>::boundary(MeshWorker::DoFInfo<dim> &info, CellInfo &) const
+{
+  //deallog << "B cell = " << info.cell->id() << " face = " << info.face_number << std::endl;
+}
+
+
+template <int dim>
+void
+myIntegrator<dim>::face(MeshWorker::DoFInfo<dim> &info1, MeshWorker::DoFInfo<dim> &info2,
+                 CellInfo &, CellInfo &) const
+{
+  deallog << "F cell1 = " << info1.cell->id()
+      << " face = " << info1.face_number
+      << " cell2 = " << info2.cell->id()
+      << " face2 = " << info2.face_number
+      << std::endl;
+}
+
+
+class DoNothingAssembler
+{
+  public:
+    template <class DOFINFO>
+    void initialize_info(DOFINFO &info, bool face) const {}
+    template<class DOFINFO>
+    void assemble(const DOFINFO &info){}
+    template<class DOFINFO>
+    void assemble(const DOFINFO &info1,
+                  const DOFINFO &info2) {}
+
+
+    };
+
+template <int dim>
+void
+test_simple(DoFHandler<dim> &dofs, MeshWorker::LoopControl &lctrl)
+{
+  myIntegrator<dim> local;
+  DoNothingAssembler assembler;
+  MeshWorker::IntegrationInfoBox<dim> info_box;
+
+  MeshWorker::DoFInfo<dim> dof_info(dofs.block_info());
+
+//  integration_loop(ITERATOR begin,
+//                typename identity<ITERATOR>::type end,
+//                DOFINFO &dinfo,
+//                INFOBOX &info,
+//                const std_cxx1x::function<void (DOFINFO &, typename INFOBOX::CellInfo &)> &cell_worker,
+//                const std_cxx1x::function<void (DOFINFO &, typename INFOBOX::CellInfo &)> &boundary_worker,
+//                const std_cxx1x::function<void (DOFINFO &, DOFINFO &,
+//                                                typename INFOBOX::CellInfo &,
+//                                                typename INFOBOX::CellInfo &)> &face_worker,
+//                ASSEMBLER &assembler,
+//                const LoopControl &lctrl)
+//
+
+
+  MeshWorker::integration_loop<dim, dim, typename DoFHandler<dim>::active_cell_iterator, DoNothingAssembler>
+    (dofs.begin_active(), dofs.end(),
+        dof_info, info_box,
+        local,
+        assembler,
+        lctrl);
+
+//  MeshWorker::loop<dim, dim, MeshWorker::DoFInfo<dim>, MeshWorker::IntegrationInfoBox<dim> >
+//    (dofs.begin_active(), dofs.end(),
+//   dof_info, info_box,
+//       std_cxx1x::bind (&Integrator<dim>::cell, local, std_cxx1x::_1, std_cxx1x::_2),
+//   std_cxx1x::bind (&Integrator<dim>::bdry, local, std_cxx1x::_1, std_cxx1x::_2),
+//   std_cxx1x::bind (&Integrator<dim>::face, local, std_cxx1x::_1, std_cxx1x::_2, std_cxx1x::_3, std_cxx1x::_4),
+//     local,
+//     lctrl);
+}
+
+std::string id_to_string(const CellId &id)
+{
+  std::ostringstream ss;
+  ss << id;
+  return ss.str();
+}
+
+template<int dim>
+void test_loop(DoFHandler<dim> &dofs, MeshWorker::LoopControl &lctrl)
+{
+  deallog << "* own_cells=" << lctrl.own_cells
+      << " ghost_cells=" << lctrl.ghost_cells
+      << " own_faces=" << lctrl.own_faces
+      << " faces_to_ghost=" << lctrl.faces_to_ghost
+      << std::endl;
+  test_simple(dofs, lctrl);
+}
+
+template<int dim>
+void
+test()
+{
+  parallel::distributed::Triangulation<dim> tr(MPI_COMM_WORLD,
+                                               Triangulation<dim>::none/*,
+                   parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy*/);
+  GridGenerator::hyper_cube(tr);
+  tr.refine_global(2);
+  
+  FE_DGP<dim> fe(0);
+  
+  DoFHandler<dim> dofs(tr);
+  dofs.distribute_dofs(fe);
+
+  dofs.initialize_local_block_info();
+  deallog << "DoFHandler ndofs=" << dofs.n_dofs() << std::endl;
+
+  MeshWorker::LoopControl lctrl;
+
+  deallog << "*** 1. CELLS ***" << std::endl;
+  /*
+  lctrl.own_faces = MeshWorker::LoopControl::never;
+  lctrl.faces_to_ghost = MeshWorker::LoopControl::never;
+
+  lctrl.own_cells = false; lctrl.ghost_cells = false;
+  test_loop(dofs, lctrl);
+
+  lctrl.own_cells = true; lctrl.ghost_cells = false;
+  test_loop(dofs, lctrl);
+
+  lctrl.own_cells = false; lctrl.ghost_cells = true;
+  test_loop(dofs, lctrl);
+
+  lctrl.own_cells = true; lctrl.ghost_cells = true;
+  test_loop(dofs, lctrl);
+  */
+  deallog << "*** 2. FACES ***" << std::endl;
+
+  lctrl.own_cells = false; lctrl.ghost_cells = false;
+
+  lctrl.own_faces = MeshWorker::LoopControl::one;
+  lctrl.faces_to_ghost = MeshWorker::LoopControl::never;
+  test_loop(dofs, lctrl);
+
+  lctrl.own_faces = MeshWorker::LoopControl::both;
+  lctrl.faces_to_ghost = MeshWorker::LoopControl::never;
+  test_loop(dofs, lctrl);
+
+  lctrl.own_faces = MeshWorker::LoopControl::never;
+  lctrl.faces_to_ghost = MeshWorker::LoopControl::one;
+  test_loop(dofs, lctrl);
+
+  lctrl.own_faces = MeshWorker::LoopControl::never;
+  lctrl.faces_to_ghost = MeshWorker::LoopControl::both;
+  test_loop(dofs, lctrl);
+
+//
+//
+//  for (int gc=0;gc<2;gc++)
+//  for (int oc=0;oc<2;oc++)
+//  for (int of=0;of<3;of++)
+//    {
+//      lctrl.own_cells = !!oc;
+//      lctrl.ghost_cells = !!gc;
+//
+//      lctrl.own_faces = (MeshWorker::LoopControl::FaceOption)of;
+//      test_loop(dofs, lctrl);
+//    }
+}
+
+
+int main (int argc, char **argv)
+{
+  Utilities::MPI::MPI_InitFinalize mpi_initialization (argc, argv);
+  MPILogInitAll log;
+
+  test<2>();
+}
diff --git a/tests/mpi/mesh_worker_05.mpirun=3.output b/tests/mpi/mesh_worker_05.mpirun=3.output
new file mode 100644 (file)
index 0000000..3a873e7
--- /dev/null
@@ -0,0 +1,98 @@
+
+DEAL:0::DoFHandler ndofs=16
+DEAL:0::*** 1. CELLS ***
+DEAL:0::*** 2. FACES ***
+DEAL:0::* own_cells=0 ghost_cells=0 own_faces=1 faces_to_ghost=0
+DEAL:0::F cell1 = 0_2:00 face = 1 cell2 = 0_2:01 face2 = 0
+DEAL:0::F cell1 = 0_2:00 face = 3 cell2 = 0_2:02 face2 = 2
+DEAL:0::F cell1 = 0_2:01 face = 3 cell2 = 0_2:03 face2 = 2
+DEAL:0::F cell1 = 0_2:02 face = 1 cell2 = 0_2:03 face2 = 0
+DEAL:0::* own_cells=0 ghost_cells=0 own_faces=2 faces_to_ghost=0
+DEAL:0::F cell1 = 0_2:00 face = 1 cell2 = 0_2:01 face2 = 0
+DEAL:0::F cell1 = 0_2:00 face = 3 cell2 = 0_2:02 face2 = 2
+DEAL:0::F cell1 = 0_2:01 face = 0 cell2 = 0_2:00 face2 = 1
+DEAL:0::F cell1 = 0_2:01 face = 3 cell2 = 0_2:03 face2 = 2
+DEAL:0::F cell1 = 0_2:02 face = 1 cell2 = 0_2:03 face2 = 0
+DEAL:0::F cell1 = 0_2:02 face = 2 cell2 = 0_2:00 face2 = 3
+DEAL:0::F cell1 = 0_2:03 face = 0 cell2 = 0_2:02 face2 = 1
+DEAL:0::F cell1 = 0_2:03 face = 2 cell2 = 0_2:01 face2 = 3
+DEAL:0::* own_cells=0 ghost_cells=0 own_faces=0 faces_to_ghost=1
+DEAL:0::F cell1 = 0_2:01 face = 1 cell2 = 0_2:10 face2 = 0
+DEAL:0::F cell1 = 0_2:02 face = 3 cell2 = 0_2:20 face2 = 2
+DEAL:0::F cell1 = 0_2:03 face = 1 cell2 = 0_2:12 face2 = 0
+DEAL:0::F cell1 = 0_2:03 face = 3 cell2 = 0_2:21 face2 = 2
+DEAL:0::* own_cells=0 ghost_cells=0 own_faces=0 faces_to_ghost=2
+DEAL:0::F cell1 = 0_2:01 face = 1 cell2 = 0_2:10 face2 = 0
+DEAL:0::F cell1 = 0_2:02 face = 3 cell2 = 0_2:20 face2 = 2
+DEAL:0::F cell1 = 0_2:03 face = 1 cell2 = 0_2:12 face2 = 0
+DEAL:0::F cell1 = 0_2:03 face = 3 cell2 = 0_2:21 face2 = 2
+
+DEAL:1::DoFHandler ndofs=16
+DEAL:1::*** 1. CELLS ***
+DEAL:1::*** 2. FACES ***
+DEAL:1::* own_cells=0 ghost_cells=0 own_faces=1 faces_to_ghost=0
+DEAL:1::F cell1 = 0_2:10 face = 1 cell2 = 0_2:11 face2 = 0
+DEAL:1::F cell1 = 0_2:10 face = 3 cell2 = 0_2:12 face2 = 2
+DEAL:1::F cell1 = 0_2:11 face = 3 cell2 = 0_2:13 face2 = 2
+DEAL:1::F cell1 = 0_2:12 face = 1 cell2 = 0_2:13 face2 = 0
+DEAL:1::F cell1 = 0_2:20 face = 1 cell2 = 0_2:21 face2 = 0
+DEAL:1::F cell1 = 0_2:20 face = 3 cell2 = 0_2:22 face2 = 2
+DEAL:1::F cell1 = 0_2:21 face = 3 cell2 = 0_2:23 face2 = 2
+DEAL:1::F cell1 = 0_2:22 face = 1 cell2 = 0_2:23 face2 = 0
+DEAL:1::* own_cells=0 ghost_cells=0 own_faces=2 faces_to_ghost=0
+DEAL:1::F cell1 = 0_2:10 face = 1 cell2 = 0_2:11 face2 = 0
+DEAL:1::F cell1 = 0_2:10 face = 3 cell2 = 0_2:12 face2 = 2
+DEAL:1::F cell1 = 0_2:11 face = 0 cell2 = 0_2:10 face2 = 1
+DEAL:1::F cell1 = 0_2:11 face = 3 cell2 = 0_2:13 face2 = 2
+DEAL:1::F cell1 = 0_2:12 face = 1 cell2 = 0_2:13 face2 = 0
+DEAL:1::F cell1 = 0_2:12 face = 2 cell2 = 0_2:10 face2 = 3
+DEAL:1::F cell1 = 0_2:13 face = 0 cell2 = 0_2:12 face2 = 1
+DEAL:1::F cell1 = 0_2:13 face = 2 cell2 = 0_2:11 face2 = 3
+DEAL:1::F cell1 = 0_2:20 face = 1 cell2 = 0_2:21 face2 = 0
+DEAL:1::F cell1 = 0_2:20 face = 3 cell2 = 0_2:22 face2 = 2
+DEAL:1::F cell1 = 0_2:21 face = 0 cell2 = 0_2:20 face2 = 1
+DEAL:1::F cell1 = 0_2:21 face = 3 cell2 = 0_2:23 face2 = 2
+DEAL:1::F cell1 = 0_2:22 face = 1 cell2 = 0_2:23 face2 = 0
+DEAL:1::F cell1 = 0_2:22 face = 2 cell2 = 0_2:20 face2 = 3
+DEAL:1::F cell1 = 0_2:23 face = 0 cell2 = 0_2:22 face2 = 1
+DEAL:1::F cell1 = 0_2:23 face = 2 cell2 = 0_2:21 face2 = 3
+DEAL:1::* own_cells=0 ghost_cells=0 own_faces=0 faces_to_ghost=1
+DEAL:1::F cell1 = 0_2:12 face = 3 cell2 = 0_2:30 face2 = 2
+DEAL:1::F cell1 = 0_2:13 face = 3 cell2 = 0_2:31 face2 = 2
+DEAL:1::F cell1 = 0_2:21 face = 1 cell2 = 0_2:30 face2 = 0
+DEAL:1::F cell1 = 0_2:23 face = 1 cell2 = 0_2:32 face2 = 0
+DEAL:1::* own_cells=0 ghost_cells=0 own_faces=0 faces_to_ghost=2
+DEAL:1::F cell1 = 0_2:10 face = 0 cell2 = 0_2:01 face2 = 1
+DEAL:1::F cell1 = 0_2:12 face = 0 cell2 = 0_2:03 face2 = 1
+DEAL:1::F cell1 = 0_2:12 face = 3 cell2 = 0_2:30 face2 = 2
+DEAL:1::F cell1 = 0_2:13 face = 3 cell2 = 0_2:31 face2 = 2
+DEAL:1::F cell1 = 0_2:20 face = 2 cell2 = 0_2:02 face2 = 3
+DEAL:1::F cell1 = 0_2:21 face = 1 cell2 = 0_2:30 face2 = 0
+DEAL:1::F cell1 = 0_2:21 face = 2 cell2 = 0_2:03 face2 = 3
+DEAL:1::F cell1 = 0_2:23 face = 1 cell2 = 0_2:32 face2 = 0
+
+
+DEAL:2::DoFHandler ndofs=16
+DEAL:2::*** 1. CELLS ***
+DEAL:2::*** 2. FACES ***
+DEAL:2::* own_cells=0 ghost_cells=0 own_faces=1 faces_to_ghost=0
+DEAL:2::F cell1 = 0_2:30 face = 1 cell2 = 0_2:31 face2 = 0
+DEAL:2::F cell1 = 0_2:30 face = 3 cell2 = 0_2:32 face2 = 2
+DEAL:2::F cell1 = 0_2:31 face = 3 cell2 = 0_2:33 face2 = 2
+DEAL:2::F cell1 = 0_2:32 face = 1 cell2 = 0_2:33 face2 = 0
+DEAL:2::* own_cells=0 ghost_cells=0 own_faces=2 faces_to_ghost=0
+DEAL:2::F cell1 = 0_2:30 face = 1 cell2 = 0_2:31 face2 = 0
+DEAL:2::F cell1 = 0_2:30 face = 3 cell2 = 0_2:32 face2 = 2
+DEAL:2::F cell1 = 0_2:31 face = 0 cell2 = 0_2:30 face2 = 1
+DEAL:2::F cell1 = 0_2:31 face = 3 cell2 = 0_2:33 face2 = 2
+DEAL:2::F cell1 = 0_2:32 face = 1 cell2 = 0_2:33 face2 = 0
+DEAL:2::F cell1 = 0_2:32 face = 2 cell2 = 0_2:30 face2 = 3
+DEAL:2::F cell1 = 0_2:33 face = 0 cell2 = 0_2:32 face2 = 1
+DEAL:2::F cell1 = 0_2:33 face = 2 cell2 = 0_2:31 face2 = 3
+DEAL:2::* own_cells=0 ghost_cells=0 own_faces=0 faces_to_ghost=1
+DEAL:2::* own_cells=0 ghost_cells=0 own_faces=0 faces_to_ghost=2
+DEAL:2::F cell1 = 0_2:30 face = 0 cell2 = 0_2:21 face2 = 1
+DEAL:2::F cell1 = 0_2:30 face = 2 cell2 = 0_2:12 face2 = 3
+DEAL:2::F cell1 = 0_2:31 face = 2 cell2 = 0_2:13 face2 = 3
+DEAL:2::F cell1 = 0_2:32 face = 0 cell2 = 0_2:23 face2 = 1
+
diff --git a/tests/mpi/torus.cc b/tests/mpi/torus.cc
new file mode 100644 (file)
index 0000000..e61edf5
--- /dev/null
@@ -0,0 +1,118 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+/*
+ * Author: Guido Kanschat, Texas A&M University, 2009
+ */
+
+#include "../tests.h"
+#include <deal.II/lac/sparse_matrix.h>
+#include <deal.II/lac/compressed_sparsity_pattern.h>
+#include <deal.II/lac/solver_cg.h>
+#include <deal.II/lac/precondition.h>
+#include <deal.II/lac/precondition_block.h>
+#include <deal.II/lac/block_vector.h>
+#include <deal.II/lac/trilinos_sparse_matrix.h>
+#include <deal.II/lac/trilinos_precondition.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/distributed/grid_refinement.h>
+#include <deal.II/grid/filtered_iterator.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/multigrid/mg_dof_handler.h>
+
+#include <deal.II/meshworker/dof_info.h>
+#include <deal.II/meshworker/integration_info.h>
+#include <deal.II/meshworker/assembler.h>
+#include <deal.II/meshworker/loop.h>
+
+#include <deal.II/integrators/laplace.h>
+
+#include <deal.II/multigrid/mg_tools.h>
+#include <deal.II/multigrid/multigrid.h>
+#include <deal.II/multigrid/mg_matrix.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_coarse.h>
+#include <deal.II/multigrid/mg_smoother.h>
+
+#include <deal.II/base/function_lib.h>
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/data_out.h>
+
+#include <iostream>
+#include <fstream>
+
+
+typedef parallel::distributed::Triangulation<2,3>::cell_iterator cell_iterator;
+DeclException1(ExcMissingCell,
+              cell_iterator,
+              << "Trying to find cell " << arg1 << " but it doesn't appear to be in the list");
+
+int main(int argc, char *argv[])
+{
+  dealii::Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv);
+  MPILogInitAll log;
+  
+  if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+    {
+      static std::ofstream logfile("output");
+      deallog.attach(logfile);
+      deallog.depth_console(0);
+      deallog.threshold_double(1.e-10);
+    }
+      
+  parallel::distributed::Triangulation<2,3> triangulation(MPI_COMM_WORLD,
+                                                         typename Triangulation<2,3>::MeshSmoothing
+                                                         (Triangulation<2,3>::smoothing_on_refinement |
+                                                          Triangulation<2,3 >::smoothing_on_coarsening));
+  GridGenerator::torus(triangulation, 1, 0.2);
+
+  // create a set of all cells, and insert all cells into it
+  std::set<parallel::distributed::Triangulation<2,3>::cell_iterator> cells;
+  for (parallel::distributed::Triangulation<2,3>::cell_iterator cell= triangulation.begin(0);
+       cell!=triangulation.end(0);
+       ++cell)
+    {
+      cells.insert (cell);
+      if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+       deallog << "Adding cell " << cell << std::endl;
+    }
+  if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+    deallog << "List contains " << cells.size() << " items" << std::endl;
+
+  // verify that every cell is in there
+  for(parallel::distributed::Triangulation<2,3>::cell_iterator cell= triangulation.begin(0);
+      cell!=triangulation.end(0);
+      ++cell)
+    Assert (cells.find(cell)!=cells.end(),
+           ExcMissingCell(cell));
+
+  // refine triangulation and verify that every coarse mesh cell is in there
+  triangulation.refine_global(2);
+
+  if (Utilities::MPI::this_mpi_process (MPI_COMM_WORLD) == 0)
+    deallog << "List contains " << cells.size() << " items" << std::endl;
+  for(parallel::distributed::Triangulation<2,3>::cell_iterator cell= triangulation.begin(0);
+      cell!=triangulation.end(0);
+      ++cell)
+    Assert (cells.find(cell)!=cells.end(),
+           ExcMissingCell(cell));
+}
diff --git a/tests/mpi/torus.mpirun=2.output b/tests/mpi/torus.mpirun=2.output
new file mode 100644 (file)
index 0000000..8a55e82
--- /dev/null
@@ -0,0 +1,21 @@
+
+DEAL:0::Adding cell 0.0
+DEAL:0::Adding cell 0.1
+DEAL:0::Adding cell 0.2
+DEAL:0::Adding cell 0.3
+DEAL:0::Adding cell 0.4
+DEAL:0::Adding cell 0.5
+DEAL:0::Adding cell 0.6
+DEAL:0::Adding cell 0.7
+DEAL:0::Adding cell 0.8
+DEAL:0::Adding cell 0.9
+DEAL:0::Adding cell 0.10
+DEAL:0::Adding cell 0.11
+DEAL:0::Adding cell 0.12
+DEAL:0::Adding cell 0.13
+DEAL:0::Adding cell 0.14
+DEAL:0::Adding cell 0.15
+DEAL:0::List contains 16 items
+DEAL:0::List contains 16 items
+
+

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.