]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Also implement Jacobians for MappingFEField. 1319/head
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Mon, 10 Aug 2015 09:23:14 +0000 (11:23 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Mon, 10 Aug 2015 13:54:14 +0000 (15:54 +0200)
include/deal.II/fe/mapping_fe_field.h
source/fe/mapping_fe_field.cc
tests/fe/jacobians.cc
tests/fe/jacobians.output
tests/fe/jacobians_face_fe_field.cc [new file with mode: 0644]
tests/fe/jacobians_face_fe_field.output [new file with mode: 0644]

index bc9e474b50da3b23454169e9407bc4e796cb2b05..2086daf122fb5107870322c6315b62d1414d2e09 100644 (file)
@@ -395,35 +395,6 @@ public:
                                         const Point<dim> &initial_p_unit,
                                         InternalData &mdata) const;
 
-  /**
-   * Do the computation for the <tt>fill_*</tt> functions.
-   */
-  void compute_fill (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                     const unsigned int      npts,
-                     const typename QProjector<dim>::DataSetDescriptor data_set,
-                     const CellSimilarity::Similarity cell_similarity,
-                     const InternalData           &data,
-                     std::vector<Point<spacedim> > &quadrature_points) const;
-
-
-  /**
-   * Do the computation for the <tt>fill_*</tt> functions.
-   */
-  void compute_fill_face (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-                          const unsigned int      face_no,
-                          const unsigned int      subface_no,
-                          const unsigned int      npts,
-                          const typename QProjector<dim>::DataSetDescriptor data_set,
-                          const std::vector<double>   &weights,
-                          const InternalData           &mapping_data,
-                          std::vector<Point<spacedim> >    &quadrature_points,
-                          std::vector<double>         &JxW_values,
-                          std::vector<Tensor<1,spacedim> > &boundary_form,
-                          std::vector<Point<spacedim> > &normal_vectors,
-                          std::vector<DerivativeForm<1,dim,spacedim> > &jacobians,
-                          std::vector<DerivativeForm<1,spacedim,dim> > &inverse_jacobians) const;
-
-
   /**
    * Always returns @p false.
    */
index 6b5ab6bac03b0e9b4823fc64d3f80a5526448afa..47e2a6065c8dcebfe4318fd66831030ac8787be0 100644 (file)
@@ -370,6 +370,352 @@ MappingFEField<dim,spacedim,VECTOR,DH>::get_subface_data (const UpdateFlags upda
 }
 
 
+
+namespace internal
+{
+  namespace
+  {
+    /**
+     * Compute the locations of quadrature points on the object described by
+     * the first argument (and the cell for which the mapping support points
+     * have already been set), but only if the update_flags of the @p data
+     * argument indicate so.
+     */
+    template <int dim, int spacedim>
+    void
+    maybe_compute_q_points (const typename dealii::QProjector<dim>::DataSetDescriptor data_set,
+                            const typename dealii::MappingFEField<dim,spacedim>::InternalData &data,
+                            const FiniteElement<dim, spacedim>   &fe,
+                            const ComponentMask                  &fe_mask,
+                            const std::vector<unsigned int>      &fe_to_real,
+                            std::vector<Point<spacedim> >        &quadrature_points)
+    {
+      const UpdateFlags update_flags(data.current_update_flags());
+
+      if (update_flags & update_quadrature_points)
+        {
+          for (unsigned int point=0; point<quadrature_points.size(); ++point)
+            {
+              Point<spacedim> result;
+              const double *shape = &data.shape(point+data_set,0);
+
+              for (unsigned int k=0; k<data.n_shape_functions; ++k)
+                {
+                  unsigned int comp_k = fe.system_to_component_index(k).first;
+                  if (fe_mask[comp_k])
+                    result[fe_to_real[comp_k]] += data.local_dof_values[k] * shape[k];
+                }
+
+              quadrature_points[point] = result;
+            }
+        }
+    }
+
+    /**
+     * Update the co- and contravariant matrices as well as their determinant,
+     * for the cell described stored in the data object, but only if the
+     * update_flags of the @p data argument indicate so.
+     *
+     * Skip the computation if possible as indicated by the first argument.
+     */
+    template <int dim, int spacedim>
+    void
+    maybe_update_Jacobians (const CellSimilarity::Similarity    cell_similarity,
+                            const typename dealii::QProjector<dim>::DataSetDescriptor  data_set,
+                            const typename dealii::MappingFEField<dim,spacedim>::InternalData &data,
+                            const FiniteElement<dim, spacedim> &fe,
+                            const ComponentMask                &fe_mask,
+                            const std::vector<unsigned int>    &fe_to_real)
+    {
+      const UpdateFlags update_flags(data.current_update_flags());
+
+      // then Jacobians
+      if (update_flags & update_contravariant_transformation)
+        {
+
+          // if the current cell is just a translation of the previous one, no
+          // need to recompute jacobians...
+          if (cell_similarity != CellSimilarity::translation)
+            {
+              const unsigned int n_q_points = data.contravariant.size();
+
+              Assert (data.n_shape_functions > 0, ExcInternalError());
+
+              for (unsigned int point=0; point<n_q_points; ++point)
+                {
+                  const Tensor<1,dim> *data_derv =
+                    &data.derivative(point+data_set, 0);
+
+                  Tensor<1, dim> result[spacedim];
+
+                  for (unsigned int k=0; k<data.n_shape_functions; ++k)
+                    {
+                      unsigned int comp_k = fe.system_to_component_index(k).first;
+                      if (fe_mask[comp_k])
+                        result[fe_to_real[comp_k]] += data.local_dof_values[k] * data_derv[k];
+                    }
+
+                  // write result into contravariant data
+                  for (unsigned int i=0; i<spacedim; ++i)
+                    {
+                      data.contravariant[point][i] = result[i];
+                    }
+                }
+            }
+        }
+
+      if (update_flags & update_covariant_transformation)
+        {
+          AssertDimension(data.covariant.size(), data.contravariant.size());
+          if (cell_similarity != CellSimilarity::translation)
+            for (unsigned int point=0; point<data.contravariant.size(); ++point)
+              data.covariant[point] = (data.contravariant[point]).covariant_form();
+        }
+
+      if (update_flags & update_volume_elements)
+        {
+          AssertDimension(data.covariant.size(), data.volume_elements.size());
+          if (cell_similarity != CellSimilarity::translation)
+            for (unsigned int point=0; point<data.contravariant.size(); ++point)
+              data.volume_elements[point] = data.contravariant[point].determinant();
+        }
+    }
+
+    /**
+     * Update the Hessian of the transformation from unit to real cell, the
+     * Jacobian gradients.
+     *
+     * Skip the computation if possible as indicated by the first argument.
+     */
+    template <int dim, int spacedim>
+    void
+    maybe_update_jacobian_grads (const CellSimilarity::Similarity              cell_similarity,
+                                 const typename dealii::QProjector<dim>::DataSetDescriptor data_set,
+                                 const typename dealii::MappingFEField<dim,spacedim>::InternalData &data,
+                                 const FiniteElement<dim, spacedim>           &fe,
+                                 const ComponentMask                          &fe_mask,
+                                 const std::vector<unsigned int>              &fe_to_real,
+                                 std::vector<DerivativeForm<2,dim,spacedim> > &jacobian_grads)
+    {
+      const UpdateFlags update_flags(data.current_update_flags());
+      if (update_flags & update_jacobian_grads)
+        {
+          const unsigned int n_q_points = jacobian_grads.size();
+
+          if (cell_similarity != CellSimilarity::translation)
+            {
+              for (unsigned int point=0; point<n_q_points; ++point)
+                {
+                  const Tensor<2,dim> *second =
+                    &data.second_derivative(point+data_set, 0);
+
+                  DerivativeForm<2,dim,spacedim> result;
+
+                  for (unsigned int k=0; k<data.n_shape_functions; ++k)
+                    {
+                      unsigned int comp_k = fe.system_to_component_index(k).first;
+                      if (fe_mask[comp_k])
+                        for (unsigned int j=0; j<dim; ++j)
+                          for (unsigned int l=0; l<dim; ++l)
+                            result[fe_to_real[comp_k]][j][l] += (second[k][j][l]
+                                                                 * data.local_dof_values[k]);
+                    }
+
+                  // never touch any data for j=dim in case dim<spacedim, so
+                  // it will always be zero as it was initialized
+                  for (unsigned int i=0; i<spacedim; ++i)
+                    for (unsigned int j=0; j<dim; ++j)
+                      for (unsigned int l=0; l<dim; ++l)
+                        jacobian_grads[point][i][j][l] = result[i][j][l];
+                }
+            }
+        }
+    }
+
+    /**
+     * Depending on what information is called for in the update flags of the
+     * @p data object, compute the various pieces of information that is
+     * required by the fill_fe_face_values() and fill_fe_subface_values()
+     * functions.  This function simply unifies the work that would be done by
+     * those two functions.
+     *
+     * The resulting data is put into the @p output_data argument.
+     */
+    template <int dim, int spacedim>
+    void
+    maybe_compute_face_data (const dealii::MappingFEField<dim,spacedim> &mapping,
+                             const typename dealii::Triangulation<dim,spacedim>::cell_iterator &cell,
+                             const unsigned int               face_no,
+                             const unsigned int               subface_no,
+                             const unsigned int               n_q_points,
+                             const std::vector<double>        &weights,
+                             const typename dealii::MappingFEField<dim,spacedim>::InternalData &data,
+                             internal::FEValues::MappingRelatedData<dim,spacedim>         &output_data)
+    {
+      const UpdateFlags update_flags(data.current_update_flags());
+
+      if (update_flags & update_boundary_forms)
+        {
+          const unsigned int n_q_points = output_data.boundary_forms.size();
+          if (update_flags & update_normal_vectors)
+            AssertDimension (output_data.normal_vectors.size(), n_q_points);
+          if (update_flags & update_JxW_values)
+            AssertDimension (output_data.JxW_values.size(), n_q_points);
+
+          // map the unit tangentials to the real cell. checking for d!=dim-1
+          // eliminates compiler warnings regarding unsigned int expressions <
+          // 0.
+          for (unsigned int d=0; d!=dim-1; ++d)
+            {
+              Assert (face_no+GeometryInfo<dim>::faces_per_cell*d <
+                      data.unit_tangentials.size(),
+                      ExcInternalError());
+              Assert (data.aux[d].size() <=
+                      data.unit_tangentials[face_no+GeometryInfo<dim>::faces_per_cell*d].size(),
+                      ExcInternalError());
+
+              mapping.transform (data.unit_tangentials[face_no+GeometryInfo<dim>::faces_per_cell*d],
+                                 data.aux[d],
+                                 data,
+                                 mapping_contravariant);
+            }
+
+          // if dim==spacedim, we can use the unit tangentials to compute the
+          // boundary form by simply taking the cross product
+          if (dim == spacedim)
+            {
+              for (unsigned int i=0; i<n_q_points; ++i)
+                switch (dim)
+                  {
+                  case 1:
+                    // in 1d, we don't have access to any of the data.aux
+                    // fields (because it has only dim-1 components), but we
+                    // can still compute the boundary form by simply looking
+                    // at the number of the face
+                    output_data.boundary_forms[i][0] = (face_no == 0 ?
+                                                        -1 : +1);
+                    break;
+                  case 2:
+                    cross_product (output_data.boundary_forms[i], data.aux[0][i]);
+                    break;
+                  case 3:
+                    cross_product (output_data.boundary_forms[i], data.aux[0][i], data.aux[1][i]);
+                    break;
+                  default:
+                    Assert(false, ExcNotImplemented());
+                  }
+            }
+          else //(dim < spacedim)
+            {
+              // in the codim-one case, the boundary form results from the
+              // cross product of all the face tangential vectors and the cell
+              // normal vector
+              //
+              // to compute the cell normal, use the same method used in
+              // fill_fe_values for cells above
+              AssertDimension (data.contravariant.size(), n_q_points);
+
+              for (unsigned int point=0; point<n_q_points; ++point)
+                {
+                  if (dim==1)
+                    {
+                      // J is a tangent vector
+                      output_data.boundary_forms[point] = data.contravariant[point].transpose()[0];
+                      output_data.boundary_forms[point] /=
+                        (face_no == 0 ? -1. : +1.) * output_data.boundary_forms[point].norm();
+
+                    }
+
+                  if (dim==2)
+                    {
+                      Tensor<1,spacedim> cell_normal;
+                      const DerivativeForm<1,spacedim,dim> DX_t =
+                        data.contravariant[point].transpose();
+                      cross_product(cell_normal,DX_t[0],DX_t[1]);
+                      cell_normal /= cell_normal.norm();
+
+                      // then compute the face normal from the face tangent
+                      // and the cell normal:
+                      cross_product (output_data.boundary_forms[point],
+                                     data.aux[0][point], cell_normal);
+
+                    }
+
+                }
+            }
+
+          if (update_flags & (update_normal_vectors | update_JxW_values))
+            for (unsigned int i=0; i<output_data.boundary_forms.size(); ++i)
+              {
+                if (update_flags & update_JxW_values)
+                  {
+                    output_data.JxW_values[i] = output_data.boundary_forms[i].norm() * weights[i];
+
+                    if (subface_no != numbers::invalid_unsigned_int)
+                      {
+                        const double area_ratio=GeometryInfo<dim>::subface_ratio(
+                                                  cell->subface_case(face_no), subface_no);
+                        output_data.JxW_values[i] *= area_ratio;
+                      }
+                  }
+
+                if (update_flags & update_normal_vectors)
+                  output_data.normal_vectors[i] = Point<spacedim>(output_data.boundary_forms[i] / output_data.boundary_forms[i].norm());
+              }
+
+          if (update_flags & update_jacobians)
+            for (unsigned int point=0; point<n_q_points; ++point)
+              output_data.jacobians[point] = data.contravariant[point];
+
+          if (update_flags & update_inverse_jacobians)
+            for (unsigned int point=0; point<n_q_points; ++point)
+              output_data.inverse_jacobians[point] = data.covariant[point].transpose();
+        }
+    }
+
+    /**
+     * Do the work of MappingFEField::fill_fe_face_values() and
+     * MappingFEField::fill_fe_subface_values() in a generic way, using the
+     * 'data_set' to differentiate whether we will work on a face (and if so,
+     * which one) or subface.
+     */
+    template<int dim, int spacedim>
+    void
+    do_fill_fe_face_values (const dealii::MappingFEField<dim,spacedim>                        &mapping,
+                            const typename dealii::Triangulation<dim,spacedim>::cell_iterator &cell,
+                            const unsigned int                                                 face_no,
+                            const unsigned int                                                 subface_no,
+                            const typename dealii::QProjector<dim>::DataSetDescriptor          data_set,
+                            const Quadrature<dim-1>                                           &quadrature,
+                            const typename dealii::MappingFEField<dim,spacedim>::InternalData &data,
+                            const FiniteElement<dim, spacedim>                                &fe,
+                            const ComponentMask                                               &fe_mask,
+                            const std::vector<unsigned int>                                   &fe_to_real,
+                            internal::FEValues::MappingRelatedData<dim,spacedim>              &output_data)
+    {
+      maybe_compute_q_points<dim,spacedim> (data_set,
+                                            data,
+                                            fe, fe_mask, fe_to_real,
+                                            output_data.quadrature_points);
+      maybe_update_Jacobians<dim,spacedim> (CellSimilarity::none,
+                                            data_set,
+                                            data,
+                                            fe, fe_mask, fe_to_real);
+      maybe_update_jacobian_grads<dim,spacedim> (CellSimilarity::none,
+                                                 data_set,
+                                                 data,
+                                                 fe, fe_mask, fe_to_real,
+                                                 output_data.jacobian_grads);
+      maybe_compute_face_data (mapping,
+                               cell, face_no, subface_no, quadrature.size(),
+                               quadrature.get_weights(), data,
+                               output_data);
+    }
+  }
+}
+
+
+
 // Note that the CellSimilarity flag is modifiable, since MappingFEField can need to
 // recalculate data even when cells are similar.
 template<int dim, int spacedim, class VECTOR, class DH>
@@ -394,10 +740,15 @@ fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
        :
        CellSimilarity::invalid_next_cell);
 
-  compute_fill (cell, n_q_points, QProjector<dim>::DataSetDescriptor::cell (),
-                updated_cell_similarity,
-                data,
-                output_data.quadrature_points);
+  update_internal_dofs(cell, data);
+
+  internal::maybe_compute_q_points(QProjector<dim>::DataSetDescriptor::cell (),
+                                   data, *fe, fe_mask, fe_to_real,
+                                   output_data.quadrature_points);
+
+  internal::maybe_update_Jacobians(cell_similarity,
+                                   QProjector<dim>::DataSetDescriptor::cell (),
+                                   data, *fe, fe_mask, fe_to_real);
 
   const UpdateFlags update_flags(data.current_update_flags());
   const std::vector<double> &weights=quadrature.get_weights();
@@ -474,11 +825,9 @@ fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
 
                   }
               } //codim>0 case
-
           }
     }
 
-
   // copy values from InternalData to vector given by reference
   if (update_flags & update_jacobians)
     {
@@ -488,49 +837,6 @@ fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
           output_data.jacobians[point] = data.contravariant[point];
     }
 
-
-  // calculate values of the derivatives of the Jacobians. do it here, since
-  // we only do it for cells, not faces.
-  if (update_flags & update_jacobian_grads)
-    {
-      AssertDimension (output_data.jacobian_grads.size(), n_q_points);
-
-      if (cell_similarity != CellSimilarity::translation)
-        {
-          std::fill(output_data.jacobian_grads.begin(),
-                    output_data.jacobian_grads.end(),
-                    DerivativeForm<2,dim,spacedim>());
-
-          const unsigned int data_set = QProjector<dim>::DataSetDescriptor::cell();
-
-          for (unsigned int point=0; point<n_q_points; ++point)
-            {
-              const Tensor<2,dim> *second =
-                &data.second_derivative(point+data_set, 0);
-
-              DerivativeForm<2,dim,spacedim> result;
-
-              for (unsigned int k=0; k<data.n_shape_functions; ++k)
-                {
-                  unsigned int comp_k = fe->system_to_component_index(k).first;
-                  if (fe_mask[comp_k])
-                    for (unsigned int j=0; j<dim; ++j)
-                      for (unsigned int l=0; l<dim; ++l)
-                        result[fe_to_real[comp_k]][j][l] += (second[k][j][l]
-                                                             * data.local_dof_values[k]);
-                }
-
-              // never touch any data for j=dim in case dim<spacedim, so it
-              // will always be zero as it was initialized
-              for (unsigned int i=0; i<spacedim; ++i)
-                for (unsigned int j=0; j<dim; ++j)
-                  for (unsigned int l=0; l<dim; ++l)
-                    output_data.jacobian_grads[point][i][j][l] = result[i][j][l];
-            }
-        }
-    }
-
-
   // copy values from InternalData to vector given by reference
   if (update_flags & update_inverse_jacobians)
     {
@@ -540,6 +846,12 @@ fill_fe_values (const typename Triangulation<dim,spacedim>::cell_iterator &cell,
           output_data.inverse_jacobians[point] = data.covariant[point].transpose();
     }
 
+  // calculate derivatives of the Jacobians
+  internal::maybe_update_jacobian_grads(cell_similarity,
+                                        QProjector<dim>::DataSetDescriptor::cell(),
+                                        data, *fe, fe_mask, fe_to_real,
+                                        output_data.jacobian_grads);
+
   return updated_cell_similarity;
 }
 
@@ -560,23 +872,20 @@ fill_fe_face_values (const typename Triangulation<dim,spacedim>::cell_iterator &
           ExcInternalError());
   const InternalData &data = static_cast<const InternalData &> (internal_data);
 
-  const unsigned int n_q_points=quadrature.size();
-  this->compute_fill_face (cell, face_no, numbers::invalid_unsigned_int,
-                           n_q_points,
-                           QProjector<dim>::DataSetDescriptor::
-                           face (face_no,
-                                 cell->face_orientation(face_no),
-                                 cell->face_flip(face_no),
-                                 cell->face_rotation(face_no),
-                                 n_q_points),
-                           quadrature.get_weights(),
-                           data,
-                           output_data.quadrature_points,
-                           output_data.JxW_values,
-                           output_data.boundary_forms,
-                           output_data.normal_vectors,
-                           output_data.jacobians,
-                           output_data.inverse_jacobians);
+  update_internal_dofs(cell, data);
+
+  internal::do_fill_fe_face_values (*this,
+                                    cell, face_no, numbers::invalid_unsigned_int,
+                                    QProjector<dim>::DataSetDescriptor::
+                                    face (face_no,
+                                          cell->face_orientation(face_no),
+                                          cell->face_flip(face_no),
+                                          cell->face_rotation(face_no),
+                                          quadrature.size()),
+                                    quadrature,
+                                    data,
+                                    *fe, fe_mask, fe_to_real,
+                                    output_data);
 }
 
 
@@ -596,24 +905,21 @@ fill_fe_subface_values (const typename Triangulation<dim,spacedim>::cell_iterato
           ExcInternalError());
   const InternalData &data = static_cast<const InternalData &> (internal_data);
 
-  const unsigned int n_q_points=quadrature.size();
-  this->compute_fill_face (cell, face_no, subface_no,
-                           n_q_points,
-                           QProjector<dim>::DataSetDescriptor::
-                           subface (face_no, subface_no,
-                                    cell->face_orientation(face_no),
-                                    cell->face_flip(face_no),
-                                    cell->face_rotation(face_no),
-                                    n_q_points,
-                                    cell->subface_case(face_no)),
-                           quadrature.get_weights(),
-                           data,
-                           output_data.quadrature_points,
-                           output_data.JxW_values,
-                           output_data.boundary_forms,
-                           output_data.normal_vectors,
-                           output_data.jacobians,
-                           output_data.inverse_jacobians);
+  update_internal_dofs(cell, data);
+
+  internal::do_fill_fe_face_values (*this,
+                                    cell, face_no, numbers::invalid_unsigned_int,
+                                    QProjector<dim>::DataSetDescriptor::
+                                    subface (face_no, subface_no,
+                                             cell->face_orientation(face_no),
+                                             cell->face_flip(face_no),
+                                             cell->face_rotation(face_no),
+                                             quadrature.size(),
+                                             cell->subface_case(face_no)),
+                                    quadrature,
+                                    data,
+                                    *fe, fe_mask, fe_to_real,
+                                    output_data);
 }
 
 
@@ -954,239 +1260,6 @@ failure:
 }
 
 
-template<int dim, int spacedim, class VECTOR, class DH>
-void
-MappingFEField<dim,spacedim,VECTOR,DH>::compute_fill (
-  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-  const unsigned int  n_q_points,
-  const typename QProjector<dim>::DataSetDescriptor  data_set,
-  const CellSimilarity::Similarity cell_similarity,
-  const InternalData  &data,
-  std::vector<Point<spacedim> > &quadrature_points) const
-{
-  const UpdateFlags update_flags(data.current_update_flags());
-  update_internal_dofs(cell, data);
-
-  // first compute quadrature points
-  if (update_flags & update_quadrature_points)
-    {
-      AssertDimension (quadrature_points.size(), n_q_points);
-
-      for (unsigned int point=0; point<n_q_points; ++point)
-        {
-          Point<spacedim> result;
-          const double *shape = &data.shape(point+data_set,0);
-
-          for (unsigned int k=0; k<data.n_shape_functions; ++k)
-            {
-              unsigned int comp_k = fe->system_to_component_index(k).first;
-              if (fe_mask[comp_k])
-                result[fe_to_real[comp_k]] += data.local_dof_values[k] * shape[k];
-            }
-
-          quadrature_points[point] = result;
-        }
-    }
-
-
-  // then Jacobians
-  if (update_flags & update_contravariant_transformation)
-    {
-      AssertDimension (data.contravariant.size(), n_q_points);
-
-      // if the current cell is just a
-      // translation of the previous one, no
-      // need to recompute jacobians...
-      if (cell_similarity != CellSimilarity::translation)
-        {
-          std::fill(data.contravariant.begin(), data.contravariant.end(),
-                    DerivativeForm<1,dim,spacedim>());
-
-          Assert (data.n_shape_functions > 0, ExcInternalError());
-
-          for (unsigned int point=0; point<n_q_points; ++point)
-            {
-              const Tensor<1,dim> *data_derv =
-                &data.derivative(point+data_set, 0);
-
-              Tensor<1, dim> result[spacedim];
-
-              for (unsigned int k=0; k<data.n_shape_functions; ++k)
-                {
-                  unsigned int comp_k = fe->system_to_component_index(k).first;
-                  if (fe_mask[comp_k])
-                    result[fe_to_real[comp_k]] += data.local_dof_values[k] * data_derv[k];
-                }
-
-              // write result into contravariant data. for
-              // j=dim in the case dim<spacedim, there will
-              // never be any nonzero data that arrives in
-              // here, so it is ok anyway because it was
-              // initialized to zero at the initialization
-              for (unsigned int i=0; i<spacedim; ++i)
-                {
-                  data.contravariant[point][i] = result[i];
-                }
-
-            }
-        }
-    }
-
-
-  if (update_flags & update_covariant_transformation)
-    {
-      AssertDimension (data.covariant.size(), n_q_points);
-      if (cell_similarity != CellSimilarity::translation)
-        for (unsigned int point=0; point<n_q_points; ++point)
-          data.covariant[point] = (data.contravariant[point]).covariant_form();
-    }
-
-  if (update_flags & update_volume_elements)
-    if (cell_similarity != CellSimilarity::translation)
-      for (unsigned int point=0; point<n_q_points; ++point)
-        data.volume_elements[point] = data.contravariant[point].determinant();
-
-}
-
-
-template<int dim, int spacedim, class VECTOR, class DH>
-void
-MappingFEField<dim,spacedim,VECTOR,DH>::compute_fill_face (
-  const typename Triangulation<dim,spacedim>::cell_iterator &cell,
-  const unsigned int      face_no,
-  const unsigned int      subface_no,
-  const unsigned int      n_q_points,//npts
-  const typename QProjector<dim>::DataSetDescriptor data_set,
-  const std::vector<double>   &weights,
-  const InternalData           &data,
-  std::vector<Point<spacedim> >    &quadrature_points,
-  std::vector<double>         &JxW_values,
-  std::vector<Tensor<1,spacedim> > &boundary_forms,
-  std::vector<Point<spacedim> > &normal_vectors,
-  std::vector<DerivativeForm<1,dim,spacedim> > &/*jacobians*/,
-  std::vector<DerivativeForm<1,spacedim,dim> > &/*inverse_jacobians*/) const
-{
-  compute_fill (cell, n_q_points, data_set, CellSimilarity::none,
-                data, quadrature_points);
-
-
-  const UpdateFlags update_flags(data.current_update_flags());
-
-  if (update_flags & update_boundary_forms)
-    {
-      AssertDimension (boundary_forms.size(), n_q_points);
-      if (update_flags & update_normal_vectors)
-        AssertDimension (normal_vectors.size(), n_q_points);
-      if (update_flags & update_JxW_values)
-        AssertDimension (JxW_values.size(), n_q_points);
-
-      // map the unit tangentials to the real cell. checking for d!=dim-1
-      // eliminates compiler warnings regarding unsigned int expressions <
-      // 0.
-      for (unsigned int d=0; d!=dim-1; ++d)
-        {
-          Assert (face_no+GeometryInfo<dim>::faces_per_cell*d <
-                  data.unit_tangentials.size(),
-                  ExcInternalError());
-          Assert (data.aux[d].size() <=
-                  data.unit_tangentials[face_no+GeometryInfo<dim>::faces_per_cell*d].size(),
-                  ExcInternalError());
-
-          transform (data.unit_tangentials[face_no+GeometryInfo<dim>::faces_per_cell*d],
-                     data.aux[d],
-                     data,
-                     mapping_contravariant);
-        }
-
-      // if dim==spacedim, we can use the unit tangentials to compute the
-      // boundary form by simply taking the cross product
-      if (dim == spacedim)
-        {
-          for (unsigned int i=0; i<n_q_points; ++i)
-            switch (dim)
-              {
-              case 1:
-                // in 1d, we don't have access to any of the data.aux
-                // fields (because it has only dim-1 components), but we
-                // can still compute the boundary form by simply
-                // looking at the number of the face
-                boundary_forms[i][0] = (face_no == 0 ?
-                                        -1 : +1);
-                break;
-              case 2:
-                cross_product (boundary_forms[i], data.aux[0][i]);
-                break;
-              case 3:
-                cross_product (boundary_forms[i], data.aux[0][i], data.aux[1][i]);
-                break;
-              default:
-                Assert(false, ExcNotImplemented());
-              }
-        }
-      else //(dim < spacedim)
-        {
-          // in the codim-one case, the boundary form results from the
-          // cross product of all the face tangential vectors and the cell
-          // normal vector
-          //
-          // to compute the cell normal, use the same method used in
-          // fill_fe_values for cells above
-          AssertDimension (data.contravariant.size(), n_q_points);
-
-          for (unsigned int point=0; point<n_q_points; ++point)
-            {
-              if (dim==1)
-                {
-                  // J is a tangent vector
-                  boundary_forms[point] = data.contravariant[point].transpose()[0];
-                  boundary_forms[point] /=
-                    (face_no == 0 ? -1. : +1.) * boundary_forms[point].norm();
-
-                }
-
-              if (dim==2)
-                {
-                  Tensor<1,spacedim> cell_normal;
-                  const DerivativeForm<1,spacedim,dim> DX_t =
-                    data.contravariant[point].transpose();
-                  cross_product(cell_normal,DX_t[0],DX_t[1]);
-                  cell_normal /= cell_normal.norm();
-
-                  // then compute the face normal from the face tangent
-                  // and the cell normal:
-                  cross_product (boundary_forms[point],
-                                 data.aux[0][point], cell_normal);
-
-                }
-
-            }
-        }
-
-
-
-      if (update_flags & (update_normal_vectors
-                          | update_JxW_values))
-        for (unsigned int i=0; i<boundary_forms.size(); ++i)
-          {
-            if (update_flags & update_JxW_values)
-              {
-                JxW_values[i] = boundary_forms[i].norm() * weights[i];
-
-                if (subface_no != numbers::invalid_unsigned_int)
-                  {
-                    const double area_ratio=GeometryInfo<dim>::subface_ratio(
-                                              cell->subface_case(face_no), subface_no);
-                    JxW_values[i] *= area_ratio;
-                  }
-              }
-
-            if (update_flags & update_normal_vectors)
-              normal_vectors[i] = Point<spacedim>(boundary_forms[i] / boundary_forms[i].norm());
-          }
-    }
-
-}
-
 
 template<int dim, int spacedim, class VECTOR, class DH>
 unsigned int
index 696de2341218887a3e93f057673b43c7d0c4e8e1..da90b03c3744940307b8c8d59f4de02349b7adb8 100644 (file)
 
 
 // Show the Jacobians, inverse Jacobians, and Jacobian gradients on hyperball
-// with one quadrature point
+// with one quadrature point for MappingQ and MappingFEField
 
 #include "../tests.h"
 #include <deal.II/base/quadrature_lib.h>
 #include <deal.II/fe/fe_nothing.h>
 #include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
 #include <deal.II/fe/mapping_q.h>
+#include <deal.II/fe/mapping_fe_field.h>
 #include <deal.II/grid/tria.h>
 #include <deal.II/grid/grid_generator.h>
 #include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/numerics/vector_tools.h>
 
-template<int dim>
-void test()
-{
-  Triangulation<dim> tria;
-  GridGenerator::hyper_ball (tria);
-  static const HyperBallBoundary<dim> boundary;
-  tria.set_boundary (0, boundary);
 
-  MappingQ<dim> mapping(3);
+template <int dim>
+void do_test(const Triangulation<dim> &tria,
+             const Mapping<dim>       &mapping)
+{
   FE_Nothing<dim> dummy;
   // choose a point that is not right in the
   // middle of the cell so that the Jacobian
@@ -91,6 +91,36 @@ void test()
 }
 
 
+
+template<int dim>
+void test()
+{
+  Triangulation<dim> tria;
+  GridGenerator::hyper_ball (tria);
+  static const HyperBallBoundary<dim> boundary;
+  tria.set_boundary (0, boundary);
+
+  {
+    deallog << "========== MappingQ ==========" << std::endl;
+    MappingQ<dim> mapping(3);
+    do_test(tria, mapping);
+  }
+
+  {
+    deallog << "========== MappingFEField ==========" << std::endl;
+    FESystem<dim>   fe_euler(FE_Q<dim> (QGaussLobatto<1>(4)), dim);
+    DoFHandler<dim> map_dh(tria);
+    map_dh.distribute_dofs (fe_euler);
+
+    Vector<double> euler_vec(map_dh.n_dofs());
+    VectorTools::get_position_vector(map_dh, euler_vec);
+
+    MappingFEField<dim> mapping(map_dh, euler_vec);
+    do_test(tria, mapping);
+  }
+}
+
+
 int
 main()
 {
index a29f3a7cd38d862f2b8fc9eae8ed01dd48784210..a34d5b101767b3c8ed47a31df25d8aa987e14289 100644 (file)
@@ -1,4 +1,5 @@
 
+DEAL::========== MappingQ ==========
 DEAL::2d Jacobians:
 DEAL::0.97416533 0.06643545 -0.03128628 0.58141017 
 DEAL::0.67100687 0.01733694 -0.02724953 1.06933838 
@@ -20,6 +21,57 @@ DEAL::0 0 0 0 0 0 0 0
 DEAL::-0.39107846 -0.10981715 -0.10981715 0.63752903 -0.00204199 -0.83033717 -0.83033717 -0.04134342 
 DEAL::0.02659837 -0.90774034 -0.90774034 -0.00223032 0.90847214 0.06185307 0.06185307 -0.57789806 
 DEAL::
+DEAL::========== MappingFEField ==========
+DEAL::2d Jacobians:
+DEAL::0.97416533 0.06643545 -0.03128628 0.58141017 
+DEAL::0.67100687 0.01733694 -0.02724953 1.06933838 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::0.03128628 -0.58141017 0.97416533 0.06643545 
+DEAL::-0.02724953 1.06933838 -0.67100687 -0.01733694 
+DEAL::
+DEAL::2d inverse Jacobians:
+DEAL::1.02276649 -0.11686749 0.05503611 1.71366741 
+DEAL::1.48931714 -0.02414596 0.03795168 0.93454238 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::0.11686749 1.02276649 -1.71366741 0.05503611 
+DEAL::-0.02414596 -1.48931714 0.93454238 -0.03795168 
+DEAL::
+DEAL::2d Jacobian gradients:
+DEAL::-0.00204199 -0.83033717 -0.83033717 -0.04134342 0.39107846 0.10981715 0.10981715 -0.63752903 
+DEAL::-0.90847214 -0.06185307 -0.06185307 0.57789806 0.02659837 -0.90774034 -0.90774034 -0.00223032 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::-0.39107846 -0.10981715 -0.10981715 0.63752903 -0.00204199 -0.83033717 -0.83033717 -0.04134342 
+DEAL::0.02659837 -0.90774034 -0.90774034 -0.00223032 0.90847214 0.06185307 0.06185307 -0.57789806 
+DEAL::
+DEAL::========== MappingQ ==========
+DEAL::3d Jacobians:
+DEAL::0.42264973 0 0 0 0.42264973 0 0 0 0.42264973 
+DEAL::0.71650265 0.00057392 0.06336402 0.00057925 0.71615833 -0.02222757 -0.01407354 0.00523990 0.48019279 
+DEAL::0.02009773 -0.55557232 -0.03579057 0.80181573 0.06854119 0.00343503 0.00375449 -0.12266862 0.80741050 
+DEAL::0.80181573 0.06854119 0.00343503 0.00375449 -0.12266862 0.80741050 0.02009773 -0.55557232 -0.03579057 
+DEAL::0.68594812 0.01191353 0.05718759 -0.03037115 0.90754836 -0.00214412 -0.15238827 -0.00211580 0.91136026 
+DEAL::0.80181573 0.06854119 0.00343503 -0.02009773 0.55557232 0.03579057 0.00375449 -0.12266862 0.80741050 
+DEAL::-0.03037115 0.90754836 -0.00214412 -0.68594812 -0.01191353 -0.05718759 -0.15238827 -0.00211580 0.91136026 
+DEAL::
+DEAL::3d inverse Jacobians:
+DEAL::2.36602540 0 0 0 2.36602540 0 0 0 2.36602540 
+DEAL::1.39206023 0.00022835 -0.18367925 0.00014028 1.39586654 0.06459453 0.04079711 -0.01522512 2.07640876 
+DEAL::0.15305951 1.24332587 0.00149519 -1.77697103 0.04490999 -0.07895994 -0.27068418 0.00104160 1.22652416 
+DEAL::1.24332587 0.00149519 0.15305951 0.04490999 -0.07895994 -1.77697103 0.00104160 1.22652416 -0.27068418 
+DEAL::1.43695022 -0.01907339 -0.09021307 0.04865553 1.10122987 -0.00046230 0.24038497 -0.00063265 1.08217535 
+DEAL::1.24332587 -0.15305951 0.00149519 0.04490999 1.77697103 -0.07895994 0.00104160 0.27068418 1.22652416 
+DEAL::-0.01907339 -1.43695022 -0.09021307 1.10122987 -0.04865553 -0.00046230 -0.00063265 -0.24038497 1.08217535 
+DEAL::
+DEAL::3d Jacobian gradients:
+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 
+DEAL::0.00137395 -0.00717231 -0.79419777 -0.00717231 0.01913055 -0.00149076 -0.79419777 -0.00149076 -0.04004959 -0.00724068 0.01930659 -0.00052463 0.01930659 -0.00070680 -0.74156764 -0.00052463 -0.74156764 0.01902151 0.17591921 0.00109594 0.04186023 0.00109594 0.17466345 -0.01561922 0.04186023 -0.01561922 -0.55167180 
+DEAL::-0.25122164 -0.07828991 -0.00750963 -0.07828991 0.93587546 0.13995856 -0.00750963 0.13995856 -0.25564696 -0.01036284 -0.85760495 -0.04324137 -0.85760495 -0.12000055 -0.01202929 -0.04324137 -0.01202929 0.02453591 -0.04693108 -0.01316991 0.02699113 -0.01316991 0.14532022 -0.87698852 0.02699113 -0.87698852 0.00740082 
+DEAL::-0.01036284 -0.85760495 -0.04324137 -0.85760495 -0.12000055 -0.01202929 -0.04324137 -0.01202929 0.02453591 -0.04693108 -0.01316991 0.02699113 -0.01316991 0.14532022 -0.87698852 0.02699113 -0.87698852 0.00740082 -0.25122164 -0.07828991 -0.00750963 -0.07828991 0.93587546 0.13995856 -0.00750963 0.13995856 -0.25564696 
+DEAL::-1.37058893 -0.05160788 -0.24996159 -0.05160788 0.39711769 -0.00510516 -0.24996159 -0.00510516 0.40848276 0.04774078 -1.01187322 0.00879803 -1.01187322 -0.00078284 -0.07147435 0.00879803 -0.07147435 -0.01531514 0.34545125 0.01080303 -1.06671725 0.01080303 -0.07052681 -0.01516606 -1.06671725 -0.01516606 -0.00035074 
+DEAL::-0.01036284 -0.85760495 -0.04324137 -0.85760495 -0.12000055 -0.01202929 -0.04324137 -0.01202929 0.02453591 0.25122164 0.07828991 0.00750963 0.07828991 -0.93587546 -0.13995856 0.00750963 -0.13995856 0.25564696 -0.04693108 -0.01316991 0.02699113 -0.01316991 0.14532022 -0.87698852 0.02699113 -0.87698852 0.00740082 
+DEAL::0.04774078 -1.01187322 0.00879803 -1.01187322 -0.00078284 -0.07147435 0.00879803 -0.07147435 -0.01531514 1.37058893 0.05160788 0.24996159 0.05160788 -0.39711769 0.00510516 0.24996159 0.00510516 -0.40848276 0.34545125 0.01080303 -1.06671725 0.01080303 -0.07052681 -0.01516606 -1.06671725 -0.01516606 -0.00035074 
+DEAL::
+DEAL::========== MappingFEField ==========
 DEAL::3d Jacobians:
 DEAL::0.42264973 0 0 0 0.42264973 0 0 0 0.42264973 
 DEAL::0.71650265 0.00057392 0.06336402 0.00057925 0.71615833 -0.02222757 -0.01407354 0.00523990 0.48019279 
diff --git a/tests/fe/jacobians_face_fe_field.cc b/tests/fe/jacobians_face_fe_field.cc
new file mode 100644 (file)
index 0000000..e5ae456
--- /dev/null
@@ -0,0 +1,171 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2012 - 2015 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 Jacobians and inverse Jacobians of FEFaceValues and
+// FESubfaceValues on a hyperball mesh with one quadrature point for
+// MappingFEField. Note that the output needs to be identical to the test
+// jacobian_face that uses an underlying MappingQ.
+
+#include "../tests.h"
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/mapping_q.h>
+#include <deal.II/fe/mapping_fe_field.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/numerics/vector_tools.h>
+
+template<int dim>
+void test()
+{
+  Triangulation<dim> tria;
+  GridGenerator::hyper_ball (tria);
+  static const HyperBallBoundary<dim> boundary;
+  tria.set_boundary (0, boundary);
+  tria.begin_active()->set_refine_flag();
+  tria.execute_coarsening_and_refinement();
+
+  // create Euler vector field and MappingFEField
+  FESystem<dim>   fe_euler(FE_Q<dim> (QGaussLobatto<1>(4)), dim);
+  DoFHandler<dim> map_dh(tria);
+  map_dh.distribute_dofs (fe_euler);
+
+  Vector<double> euler_vec(map_dh.n_dofs());
+  VectorTools::get_position_vector(map_dh, euler_vec);
+
+  MappingFEField<dim> mapping(map_dh, euler_vec);
+
+  FE_Nothing<dim> dummy;
+  // choose a point that is not right in the middle of the cell so that the
+  // Jacobian contains many nonzero entries
+  Point<dim-1> quad_p;
+  for (int d=0; d<dim-1; ++d)
+    quad_p(d) = 0.42 + 0.11 * d;
+  Quadrature<dim-1> quad(quad_p);
+  FEFaceValues<dim> fe_val (mapping, dummy, quad,
+                            update_jacobians | update_inverse_jacobians |
+                            update_jacobian_grads);
+  FESubfaceValues<dim> fe_sub_val (mapping, dummy, quad,
+                                   update_jacobians | update_inverse_jacobians |
+                                   update_jacobian_grads);
+  deallog << dim << "d Jacobians:" << std::endl;
+  typename Triangulation<dim>::active_cell_iterator
+  cell = tria.begin_active(), endc = tria.end();
+  for ( ; cell != endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      {
+        fe_val.reinit (cell, f);
+
+        for (unsigned int d=0; d<dim; ++d)
+          for (unsigned int e=0; e<dim; ++e)
+            deallog << fe_val.jacobian(0)[d][e] << " ";
+        deallog << std::endl;
+
+        // Also check the Jacobian with FESubfaceValues
+        if (cell->at_boundary(f) == false &&
+            cell->neighbor(f)->level() < cell->level())
+          {
+            fe_sub_val.reinit(cell->neighbor(f), cell->neighbor_face_no(f),
+                              cell->neighbor_of_coarser_neighbor(f).second);
+
+            for (unsigned int d=0; d<dim; ++d)
+              for (unsigned int e=0; e<dim; ++e)
+                deallog << fe_sub_val.jacobian(0)[d][e] << " ";
+            deallog << std::endl;
+          }
+      }
+  deallog << std::endl;
+
+  deallog << dim << "d inverse Jacobians:" << std::endl;
+  cell = tria.begin_active();
+  endc = tria.end();
+  for ( ; cell != endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      {
+        fe_val.reinit (cell, f);
+
+        for (unsigned int d=0; d<dim; ++d)
+          for (unsigned int e=0; e<dim; ++e)
+            deallog << fe_val.inverse_jacobian(0)[d][e] << " ";
+        deallog << std::endl;
+
+        // Also check the inverse Jacobian with FESubfaceValues
+        if (cell->at_boundary(f) == false &&
+            cell->neighbor(f)->level() < cell->level())
+          {
+            fe_sub_val.reinit(cell->neighbor(f), cell->neighbor_face_no(f),
+                              cell->neighbor_of_coarser_neighbor(f).second);
+
+            for (unsigned int d=0; d<dim; ++d)
+              for (unsigned int e=0; e<dim; ++e)
+                deallog << fe_sub_val.inverse_jacobian(0)[d][e] << " ";
+            deallog << std::endl;
+          }
+
+    }
+  deallog << std::endl;
+
+  deallog << dim << "d Jacobian gradients:" << std::endl;
+  cell = tria.begin_active();
+  endc = tria.end();
+  for ( ; cell != endc; ++cell)
+    for (unsigned int f=0; f<GeometryInfo<dim>::faces_per_cell; ++f)
+      {
+        fe_val.reinit (cell, f);
+
+        for (unsigned int d=0; d<dim; ++d)
+          for (unsigned int e=0; e<dim; ++e)
+            for (unsigned int f=0; f<dim; ++f)
+              deallog << fe_val.jacobian_grad(0)[d][e][f] << " ";
+        deallog << std::endl;
+
+        // Also check the Jacobian with FESubfaceValues
+        if (cell->at_boundary(f) == false &&
+            cell->neighbor(f)->level() < cell->level())
+          {
+            fe_sub_val.reinit(cell->neighbor(f), cell->neighbor_face_no(f),
+                              cell->neighbor_of_coarser_neighbor(f).second);
+
+            for (unsigned int d=0; d<dim; ++d)
+              for (unsigned int e=0; e<dim; ++e)
+                for (unsigned int f=0; f<dim; ++f)
+                  deallog << fe_sub_val.jacobian_grad(0)[d][e][f] << " ";
+            deallog << std::endl;
+          }
+      }
+  deallog << std::endl;
+}
+
+
+
+int
+main()
+{
+  std::ofstream logfile ("output");
+  deallog << std::setprecision(8) << std::fixed;
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  test<2>();
+  test<3>();
+
+  return 0;
+}
diff --git a/tests/fe/jacobians_face_fe_field.output b/tests/fe/jacobians_face_fe_field.output
new file mode 100644 (file)
index 0000000..6846c5b
--- /dev/null
@@ -0,0 +1,451 @@
+
+DEAL::2d Jacobians:
+DEAL::1.23963445 -0.18547181 0.12412324 1.55786718 
+DEAL::0.53368238 0 0.07513814 0.58578644 
+DEAL::0.41421356 -0.28894903 0.41421356 1.06007883 
+DEAL::0.41421356 0.28894903 -0.41421356 1.06007883 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::0.28894903 -0.41421356 1.06007883 0.41421356 
+DEAL::-0.28894903 -0.41421356 1.06007883 -0.41421356 
+DEAL::0.18547181 -1.23963445 1.55786718 0.12412324 
+DEAL::0 -0.53368238 0.58578644 0.07513814 
+DEAL::0.12412324 1.55786718 -1.23963445 0.18547181 
+DEAL::0.07513814 0.58578644 -0.53368238 0 
+DEAL::0.41421356 1.06007883 -0.41421356 0.28894903 
+DEAL::-0.41421356 1.06007883 -0.41421356 -0.28894903 
+DEAL::0.59041686 0.20710678 -0.30101918 0.20710678 
+DEAL::0.41421356 -0.60030292 0.41421356 1.15104508 
+DEAL::0.64835562 0 -0.16114263 0.35355339 
+DEAL::0.70557057 0.20974632 -0.34485147 0.46555678 
+DEAL::0.50000000 0.13315220 -0.14644661 0.29709503 
+DEAL::0.64835562 0 0.16114263 0.35355339 
+DEAL::0.59041686 -0.20710678 0.30101918 0.20710678 
+DEAL::0.60030292 -0.41421356 1.15104508 0.41421356 
+DEAL::0.74276054 -0.16287016 0.25506692 0.49467915 
+DEAL::0.50000000 -0.09790993 0.14644661 0.32139848 
+DEAL::0.41301515 0.20710678 -0.08493903 0.20710678 
+DEAL::0.41421356 -0.10529159 0.41421356 0.81807057 
+DEAL::0.41301515 0 -0.08493903 0.35355339 
+DEAL::0.50000000 0.12012193 -0.14644661 0.26861436 
+DEAL::0.29289322 0.12012193 0 0.26861436 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::0.41301515 0 0.08493903 0.35355339 
+DEAL::0.41301515 -0.20710678 0.08493903 0.20710678 
+DEAL::0.10529159 -0.41421356 0.81807057 0.41421356 
+DEAL::0.50000000 -0.08698485 0.14644661 0.29204581 
+DEAL::0.29289322 -0.08698485 0 0.29204581 
+DEAL::0.58578644 0 0 0.58578644 
+DEAL::
+DEAL::2d inverse Jacobians:
+DEAL::0.79718629 0.09490898 -0.06351591 0.63434136 
+DEAL::1.87377370 0 -0.24034676 1.70710678 
+DEAL::1.89711181 0.51710175 -0.74127453 0.74127453 
+DEAL::1.89711181 -0.51710175 0.74127453 0.74127453 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::0.74127453 0.74127453 -1.89711181 0.51710175 
+DEAL::-0.74127453 0.74127453 -1.89711181 -0.51710175 
+DEAL::0.06351591 0.63434136 -0.79718629 0.09490898 
+DEAL::0.24034676 1.70710678 -1.87377370 0 
+DEAL::0.09490898 -0.79718629 0.63434136 0.06351591 
+DEAL::0 -1.87377370 1.70710678 0.24034676 
+DEAL::0.51710175 -1.89711181 0.74127453 0.74127453 
+DEAL::-0.51710175 -1.89711181 0.74127453 -0.74127453 
+DEAL::1.12178547 -1.12178547 1.63045818 3.19796894 
+DEAL::1.58670272 0.82751084 -0.57098875 0.57098875 
+DEAL::1.54236343 0 0.70297871 2.82842712 
+DEAL::1.16152683 -0.52330025 0.86037676 1.76034199 
+DEAL::1.76792606 -0.79235000 0.87146116 2.97535453 
+DEAL::1.54236343 0 -0.70297871 2.82842712 
+DEAL::1.12178547 1.12178547 -1.63045818 3.19796894 
+DEAL::0.57098875 0.57098875 -1.58670272 0.82751084 
+DEAL::1.20957041 0.39824384 -0.62367982 1.81616949 
+DEAL::1.83616594 0.55936445 -0.83665697 2.85652558 
+DEAL::2.00821688 -2.00821688 0.82361379 4.00481334 
+DEAL::2.13891922 0.27529435 -1.08299868 1.08299868 
+DEAL::2.42121868 0 0.58168294 2.82842712 
+DEAL::1.76837908 -0.79080328 0.96410752 3.29166896 
+DEAL::3.41421356 -1.52680571 0 3.72280920 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::2.42121868 0 -0.58168294 2.82842712 
+DEAL::2.00821688 2.00821688 -0.82361379 4.00481334 
+DEAL::1.08299868 1.08299868 -2.13891922 0.27529435 
+DEAL::1.83952492 0.54789621 -0.92243125 3.14937729 
+DEAL::3.41421356 1.01691184 0 3.42412029 
+DEAL::1.70710678 0 0 1.70710678 
+DEAL::
+DEAL::2d Jacobian gradients:
+DEAL::-1.84633620 0.54214837 0.54214837 2.31839763 -0.17634636 -1.51354439 -1.51354439 0.29875970 
+DEAL::0.43443205 0.07846884 0.07846884 0 0.07837616 -0.93340477 -0.93340477 0 
+DEAL::0 1.03088442 1.03088442 0.57789806 0 -0.66806882 -0.66806882 0.03717203 
+DEAL::0 -1.03088442 -1.03088442 0.57789806 0 -0.66806882 -0.66806882 -0.03717203 
+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.57789806 -1.03088442 -1.03088442 0 0.03717203 -0.66806882 -0.66806882 0 
+DEAL::-0.57789806 1.03088442 1.03088442 0 -0.03717203 -0.66806882 -0.66806882 0 
+DEAL::-2.31839763 -0.54214837 -0.54214837 1.84633620 0.29875970 -1.51354439 -1.51354439 -0.17634636 
+DEAL::0 -0.07846884 -0.07846884 -0.43443205 0 -0.93340477 -0.93340477 0.07837616 
+DEAL::-0.17634636 -1.51354439 -1.51354439 0.29875970 1.84633620 -0.54214837 -0.54214837 -2.31839763 
+DEAL::0.07837616 -0.93340477 -0.93340477 0 -0.43443205 -0.07846884 -0.07846884 0 
+DEAL::0 -0.66806882 -0.66806882 0.03717203 0 -1.03088442 -1.03088442 -0.57789806 
+DEAL::0 -0.66806882 -0.66806882 -0.03717203 0 1.03088442 1.03088442 -0.57789806 
+DEAL::0.06235292 -0.08471018 -0.08471018 0 0.13804815 0.38807799 0.38807799 0 
+DEAL::0 2.00320701 2.00320701 1.20060584 0 -0.15024142 -0.15024142 0.53519273 
+DEAL::0.05352461 -0.29141850 -0.29141850 0 0.14170495 -0.11096004 -0.11096004 0 
+DEAL::0.26791486 -0.23410942 -0.23410942 -0.20605054 0.54645813 0.31136944 0.31136944 -0.43821988 
+DEAL::0 -0.21170570 -0.21170570 0.05286230 0 0.17060309 0.17060309 0.10129638 
+DEAL::-0.05352461 -0.29141850 -0.29141850 0 0.14170495 0.11096004 0.11096004 0 
+DEAL::-0.06235292 -0.08471018 -0.08471018 0 0.13804815 -0.38807799 -0.38807799 0 
+DEAL::-1.20060584 -2.00320701 -2.00320701 0 0.53519273 -0.15024142 -0.15024142 0 
+DEAL::-0.19695983 -0.34281858 -0.34281858 0.16416851 0.57584866 -0.04892231 -0.04892231 -0.45556798 
+DEAL::0 -0.22743992 -0.22743992 -0.03424807 0 -0.13261732 -0.13261732 0.10900665 
+DEAL::0 -0.20710678 -0.20710678 0 0 0.14644661 0.14644661 0 
+DEAL::0 0.36695330 0.36695330 0.21058318 0 -0.90934959 -0.90934959 0.04775839 
+DEAL::0 -0.20710678 -0.20710678 0 0 0.14644661 0.14644661 0 
+DEAL::0 -0.20710678 -0.20710678 0 0 0.14644661 0.14644661 0 
+DEAL::0 -0.20710678 -0.20710678 0 0 0.14644661 0.14644661 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::0 -0.20710678 -0.20710678 0 0 -0.14644661 -0.14644661 0 
+DEAL::0 -0.20710678 -0.20710678 0 0 -0.14644661 -0.14644661 0 
+DEAL::-0.21058318 -0.36695330 -0.36695330 0 0.04775839 -0.90934959 -0.90934959 0 
+DEAL::0 -0.20710678 -0.20710678 0 0 -0.14644661 -0.14644661 0 
+DEAL::0 -0.20710678 -0.20710678 0 0 -0.14644661 -0.14644661 0 
+DEAL::0 0 0 0 0 0 0 0 
+DEAL::
+DEAL::3d Jacobians:
+DEAL::0.81350031 -0.01391837 0.44040642 -0.01226796 0.76623426 0.05864280 -0.12782348 -0.01391837 0.44040642 
+DEAL::0.81350031 0.01391837 -0.44040642 0.01226796 0.76623426 0.05864280 0.12782348 -0.01391837 0.44040642 
+DEAL::0.84873518 0.00765757 -0.02313163 0.00771271 0.91107165 0.48026545 0.00771271 -0.20424138 0.48026545 
+DEAL::0.84873518 -0.00765757 -0.02313163 -0.00771271 0.91107165 -0.48026545 0.00771271 0.20424138 0.48026545 
+DEAL::1.54975902 0.00633378 0.17578641 0.00928390 1.69941646 -0.08802805 -0.17567935 0.06510834 1.64714337 
+DEAL::0.42264973 0 0.07640727 0 0.42264973 -0.03234765 0 0 0.53910786 
+DEAL::0.20424138 -0.48026545 -0.00771271 0.91107165 0.48026545 0.00771271 0.00765757 -0.02313163 0.84873518 
+DEAL::-0.20424138 -0.48026545 -0.00771271 0.91107165 -0.48026545 -0.00771271 -0.00765757 -0.02313163 0.84873518 
+DEAL::-0.06510834 -1.64714337 0.17567935 1.69941646 -0.08802805 0.00928390 0.00633378 0.17578641 1.54975902 
+DEAL::0 -0.53910786 0 0.42264973 0.08635470 0 0 -0.02861737 0.42264973 
+DEAL::0.01391837 -0.44040642 0.12782348 0.76623426 0.05864280 -0.01226796 -0.01391837 0.44040642 0.81350031 
+DEAL::0.01391837 -0.44040642 -0.12782348 0.76623426 0.05864280 0.01226796 0.01391837 -0.44040642 0.81350031 
+DEAL::0.91107165 0.48026545 0.00771271 0.00765757 -0.02313163 0.84873518 0.20424138 -0.48026545 -0.00771271 
+DEAL::0.82044863 -0.44040642 0.01391837 0.01337969 0.05864280 0.76623426 -0.12782348 -0.44040642 0.01391837 
+DEAL::1.69941646 -0.08802805 0.00928390 0.00633378 0.17578641 1.54975902 -0.06510834 -1.64714337 0.17567935 
+DEAL::0.42264973 0.08635470 0 0 -0.02861737 0.42264973 0 -0.53910786 0 
+DEAL::0.76623426 0.05864280 -0.01226796 -0.01391837 0.44040642 0.81350031 0.01391837 -0.44040642 0.12782348 
+DEAL::0.76623426 0.05864280 0.01226796 0.01391837 -0.44040642 0.81350031 0.01391837 -0.44040642 -0.12782348 
+DEAL::1.64714337 -0.17567935 0.06510834 0.17578641 1.54975902 0.00633378 -0.08802805 0.00928390 1.69941646 
+DEAL::0.53910786 0 0 0.07640727 0.42264973 0 -0.03234765 0 0.42264973 
+DEAL::0.44040642 -0.12782348 -0.01391837 0.44040642 0.81350031 -0.01391837 0.05864280 -0.01226796 0.76623426 
+DEAL::0.44040642 0.12782348 -0.01391837 -0.44040642 0.81350031 0.01391837 0.05864280 0.01226796 0.76623426 
+DEAL::0.44040642 -0.01391837 -0.12782348 0.05864280 0.76623426 -0.01337969 0.44040642 -0.01391837 0.82044863 
+DEAL::0.48026545 0.00771271 0.20424138 -0.02313163 0.84873518 -0.00765757 -0.48026545 -0.00771271 0.91107165 
+DEAL::0.82044863 0.44040642 -0.01391837 -0.12782348 0.44040642 -0.01391837 -0.01337969 0.05864280 0.76623426 
+DEAL::0.91107165 -0.48026545 -0.00771271 0.20424138 0.48026545 0.00771271 -0.00765757 -0.02313163 0.84873518 
+DEAL::1.69941646 -0.08802805 0.00928390 0.06510834 1.64714337 -0.17567935 0.00633378 0.17578641 1.54975902 
+DEAL::0.42264973 -0.03234765 0 0 0.53910786 0 0 0.07640727 0.42264973 
+DEAL::0.84873518 -0.02313163 0.00754376 0.00771271 0.48026545 -0.20424138 0.00771271 0.48026545 0.90917487 
+DEAL::0.76623426 0.05864280 0.01226796 -0.01391837 0.44040642 0.12782348 0.01391837 -0.44040642 0.81350031 
+DEAL::0.17578641 1.54975902 0.00633378 -1.64714337 0.17567935 -0.06510834 -0.08802805 0.00928390 1.69941646 
+DEAL::-0.02861737 0.42264973 0 -0.53910786 0 0 0.08635470 0 0.42264973 
+DEAL::0.44040642 0.81350031 -0.01391837 -0.44040642 0.12782348 0.01391837 0.05864280 -0.01226796 0.76623426 
+DEAL::-0.48026545 0.90917487 -0.00771271 -0.48026545 -0.20424138 -0.00771271 -0.02313163 -0.00754376 0.84873518 
+DEAL::-0.02313163 0.84873518 0.00765757 -0.48026545 -0.00771271 0.20424138 0.48026545 0.00771271 0.91107165 
+DEAL::0.05864280 0.76623426 0.01337969 -0.44040642 0.01391837 -0.12782348 -0.44040642 0.01391837 0.82044863 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.47964215 0 0 0.25693002 0.42264973 0 0.22230805 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0.22230805 0 0 0.47964215 0 0 0.25693002 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0 0.25693002 0 0.42264973 0.22230805 0 0 0.47964215 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0 -0.47964215 0 0.42264973 0.27613207 0 0 0.20674777 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 -0.24779904 0 0 0.47367981 0 0 0.25431533 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0 -0.18954257 0 0.42264973 0.23197941 0 0 0.49679008 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.49679008 0 0 -0.18954257 0.42264973 0 0.23197941 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.20674777 0.42264973 0 -0.47964215 0 0 0.27613207 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0 0.25431533 0 0.42264973 -0.24779904 0 0 0.47367981 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0 -0.49679008 0 0.42264973 -0.20680010 0 0 0.21266741 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::-0.23160365 0.42264973 0 -0.47367981 0 0 0.27203859 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0 -0.18752406 0 0.42264973 -0.25822136 0 0 0.49017924 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.47367981 0 0 0.25431533 0.42264973 0 -0.24779904 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0.23197941 0 0 0.49679008 0 0 -0.18954257 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0.27613207 0 0 0.20674777 0.42264973 0 -0.47964215 0 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0 -0.47367981 0 0.42264973 0.27203859 0 0 -0.23160365 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 -0.25822136 0 0 0.49017924 0 0 -0.18752406 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 -0.20680010 0 0 0.21266741 0.42264973 0 -0.49679008 0 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.49017924 0 0 -0.18752406 0.42264973 0 -0.25822136 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21266741 0.42264973 0 -0.49679008 0 0 -0.20680010 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 0.27203859 0 0 -0.23160365 0.42264973 0 -0.47367981 0 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0 -0.49017924 0 0.42264973 -0.20345256 0 0 -0.23812112 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::-0.23812112 0.42264973 0 -0.49017924 0 0 -0.20345256 0 0.42264973 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.21132487 0 0 0 0.21132487 0 0 0 0.21132487 
+DEAL::0.42264973 -0.20345256 0 0 -0.23812112 0.42264973 0 -0.49017924 0 
+DEAL::
+DEAL::3d inverse Jacobians:
+DEAL::1.06233372 0 -1.06233372 -0.00657316 1.30193488 -0.16678741 0.30812381 0.04114567 1.95702733 
+DEAL::1.06233372 0 1.06233372 0.00657316 1.30193488 -0.16678741 -0.30812381 0.04114567 1.95702733 
+DEAL::1.17770835 0.00230150 0.05442195 0 0.89660927 -0.89660927 -0.01891314 0.38126200 1.70000893 
+DEAL::1.17770835 -0.00230150 0.05442195 0 0.89660927 0.89660927 -0.01891314 -0.38126200 1.70000893 
+DEAL::0.63754862 0.00023014 -0.06802816 0.00003928 0.58723492 0.03137932 0.06799746 -0.02318770 0.59861565 
+DEAL::2.36602540 0 -0.33533464 0 2.36602540 0.14196671 0 0 1.85491639 
+DEAL::0.89660927 0.89660927 0 -1.70000893 0.38126200 -0.01891314 -0.05442195 0.00230150 1.17770835 
+DEAL::-0.89660927 0.89660927 0 -1.70000893 -0.38126200 -0.01891314 -0.05442195 -0.00230150 1.17770835 
+DEAL::-0.03137932 0.58723492 0.00003928 -0.59861565 -0.02318770 0.06799746 0.06802816 0.00023014 0.63754862 
+DEAL::0.37899171 2.36602540 0 -1.85491639 0 0 -0.12559531 0 2.36602540 
+DEAL::0.16678741 1.30193488 -0.00657316 -1.95702733 0.04114567 0.30812381 1.06233372 0 1.06233372 
+DEAL::0.16678741 1.30193488 0.00657316 -1.95702733 0.04114567 -0.30812381 -1.06233372 0 1.06233372 
+DEAL::0.89660927 0 0.89660927 0.38126200 -0.01891314 -1.70000893 0.00230150 1.17770835 -0.05442195 
+DEAL::1.05454962 0 -1.05454962 -0.30591432 0.04114567 -1.95923683 0.00499864 1.30193488 0.16836194 
+DEAL::0.58723492 0.00003928 -0.03137932 -0.02318770 0.06799746 -0.59861565 0.00023014 0.63754862 0.06802816 
+DEAL::2.36602540 0 0.37899171 0 0 -1.85491639 0 2.36602540 -0.12559531 
+DEAL::1.30193488 -0.00657316 0.16678741 0.04114567 0.30812381 -1.95702733 0 1.06233372 1.06233372 
+DEAL::1.30193488 0.00657316 0.16678741 0.04114567 -0.30812381 -1.95702733 0 1.06233372 -1.06233372 
+DEAL::0.59861565 0.06799746 -0.02318770 -0.06802816 0.63754862 0.00023014 0.03137932 0.00003928 0.58723492 
+DEAL::1.85491639 0 0 -0.33533464 2.36602540 0 0.14196671 0 2.36602540 
+DEAL::1.95702733 0.30812381 0.04114567 -1.06233372 1.06233372 0 -0.16678741 -0.00657316 1.30193488 
+DEAL::1.95702733 -0.30812381 0.04114567 1.06233372 1.06233372 0 -0.16678741 0.00657316 1.30193488 
+DEAL::1.95923683 0.04114567 0.30591432 -0.16836194 1.30193488 -0.00499864 -1.05454962 0 1.05454962 
+DEAL::1.70000893 -0.01891314 -0.38126200 0.05442195 1.17770835 -0.00230150 0.89660927 0 0.89660927 
+DEAL::1.05454962 -1.05454962 0 0.30591432 1.95923683 0.04114567 -0.00499864 -0.16836194 1.30193488 
+DEAL::0.89660927 0.89660927 0 -0.38126200 1.70000893 -0.01891314 -0.00230150 0.05442195 1.17770835 
+DEAL::0.58723492 0.03137932 0.00003928 -0.02318770 0.59861565 0.06799746 0.00023014 -0.06802816 0.63754862 
+DEAL::2.36602540 0.14196671 0 0 1.85491639 0 0 -0.33533464 2.36602540 
+DEAL::1.17770835 0.05429765 0.00242580 -0.01891314 1.69936136 0.38190957 0 -0.89813671 0.89813671 
+DEAL::1.30193488 -0.16678741 0.00657316 0.04114567 1.95702733 -0.30812381 0 1.06233372 1.06233372 
+DEAL::0.06799746 -0.59861565 -0.02318770 0.63754862 0.06802816 0.00023014 0.00003928 -0.03137932 0.58723492 
+DEAL::0 -1.85491639 0 2.36602540 -0.12559531 0 0 0.37899171 2.36602540 
+DEAL::0.30812381 -1.95702733 0.04114567 1.06233372 1.06233372 0 -0.00657316 0.16678741 1.30193488 
+DEAL::-0.38190957 -1.69936136 -0.01891314 0.89813671 -0.89813671 0 -0.00242580 -0.05429765 1.17770835 
+DEAL::-0.01891314 -1.70000893 0.38126200 1.17770835 -0.05442195 0.00230150 0 0.89660927 0.89660927 
+DEAL::0.04114567 -1.95923683 -0.30591432 1.30193488 0.16836194 0.00499864 0 -1.05454962 1.05454962 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.08488766 0 0 -1.26740939 2.36602540 0 -1.09662275 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 -1.09662275 0 0 2.08488766 0 0 -1.26740939 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 -1.26740939 0 2.36602540 -1.09662275 0 0 2.08488766 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::1.36213110 2.36602540 0 -2.08488766 0 0 1.01986550 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 1.23775345 0 0 2.11113071 0 0 -1.27030225 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 0.90272038 0 2.36602540 -1.10483122 0 0 2.01292265 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.01292265 0 0 0.90272038 2.36602540 0 -1.10483122 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::0 -2.08488766 0 2.36602540 1.01986550 0 0 1.36213110 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 -1.27030225 0 2.36602540 1.23775345 0 0 2.11113071 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::-0.98491156 2.36602540 0 -2.01292265 0 0 1.01285538 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::0 -2.11113071 0 2.36602540 -1.15685766 0 0 1.35882972 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 0.90515195 0 2.36602540 1.24639776 0 0 2.04007008 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.11113071 0 0 -1.27030225 2.36602540 0 1.23775345 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 -1.10483122 0 0 2.01292265 0 0 0.90272038 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 1.36213110 0 0 -2.08488766 0 2.36602540 1.01986550 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::1.35882972 2.36602540 0 -2.11113071 0 0 -1.15685766 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 1.24639776 0 0 2.04007008 0 0 0.90515195 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 -0.98491156 0 0 -2.01292265 0 2.36602540 1.01285538 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.04007008 0 0 0.90515195 2.36602540 0 1.24639776 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::0 -2.01292265 0 2.36602540 1.01285538 0 0 -0.98491156 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 1.35882972 0 0 -2.11113071 0 2.36602540 -1.15685766 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::-0.98203654 2.36602540 0 -2.04007008 0 0 -1.14937673 0 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::0 -2.04007008 0 2.36602540 -1.14937673 0 0 -0.98203654 2.36602540 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::4.73205081 0 0 0 4.73205081 0 0 0 4.73205081 
+DEAL::2.36602540 0 -0.98203654 0 0 -2.04007008 0 2.36602540 -1.14937673 
+DEAL::
+DEAL::3d Jacobian gradients:
+DEAL::-0.02643148 0.03004810 -0.89081368 0.03004810 0.17397969 0.04885453 -0.89081368 0.04885453 -0.28361854 0.02453591 0.15443348 0.04296177 0.15443348 -0.00099692 -0.73298331 0.04296177 -0.73298331 -0.02018433 0.25564696 -0.02682012 0.49985198 -0.02682012 0.17397969 0.04885453 0.49985198 0.04885453 -0.28361854 
+DEAL::0.02643148 0.03004810 -0.89081368 0.03004810 -0.17397969 -0.04885453 -0.89081368 -0.04885453 0.28361854 0.02453591 -0.15443348 -0.04296177 -0.15443348 -0.00099692 -0.73298331 -0.04296177 -0.73298331 -0.02018433 0.25564696 0.02682012 -0.49985198 0.02682012 0.17397969 0.04885453 -0.49985198 0.04885453 -0.28361854 
+DEAL::-0.00108887 0.25526554 -0.77077242 0.25526554 -0.01531514 -0.03142155 -0.77077242 -0.03142155 0.01298562 0.25709041 -0.01610367 -0.02751667 -0.01610367 0.00125264 -0.68284691 -0.02751667 -0.68284691 -0.40415342 0.25709041 0.01823272 -0.02751667 0.01823272 0.40848276 0.89271996 -0.02751667 0.89271996 -0.40415342 
+DEAL::-0.00108887 -0.25526554 -0.77077242 -0.25526554 -0.01531514 0.03142155 -0.77077242 0.03142155 0.01298562 -0.25709041 -0.01610367 0.02751667 -0.01610367 -0.00125264 -0.68284691 0.02751667 -0.68284691 0.40415342 0.25709041 -0.01823272 -0.02751667 -0.01823272 0.40848276 -0.89271996 -0.02751667 -0.89271996 -0.40415342 
+DEAL::0.28729173 -0.07826379 -2.15979794 -0.07826379 0.21112596 -0.02143230 -2.15979794 -0.02143230 -0.31127040 -0.11604872 0.30841953 -0.03628009 0.30841953 -0.21360499 -2.92366182 -0.03628009 -2.92366182 0.18660499 2.19599189 0.02244116 0.59482489 0.02244116 2.17027806 -0.22013128 0.59482489 -0.22013128 -3.09504876 
+DEAL::0 0 -0.94908266 0 0 -0.00325549 -0.94908266 -0.00325549 0.11251211 0 0 -0.00573181 0 0 -1.07652151 -0.00573181 -1.07652151 -0.07524420 0 0 0.07798633 0 0 -0.02888820 0.07798633 -0.02888820 0.87897774 
+DEAL::-0.40848276 -0.89271996 -0.01823272 -0.89271996 0.40415342 0.02751667 -0.01823272 0.02751667 -0.25709041 0.00125264 -0.68284691 -0.01610367 -0.68284691 -0.40415342 -0.02751667 -0.01610367 -0.02751667 0.25709041 -0.01531514 -0.03142155 0.25526554 -0.03142155 0.01298562 -0.77077242 0.25526554 -0.77077242 -0.00108887 
+DEAL::-0.40848276 0.89271996 0.01823272 0.89271996 0.40415342 0.02751667 0.01823272 0.02751667 -0.25709041 -0.00125264 -0.68284691 -0.01610367 -0.68284691 0.40415342 0.02751667 -0.01610367 0.02751667 -0.25709041 -0.01531514 0.03142155 -0.25526554 0.03142155 0.01298562 -0.77077242 -0.25526554 -0.77077242 -0.00108887 
+DEAL::-2.17027806 0.22013128 -0.02244116 0.22013128 3.09504876 -0.59482489 -0.02244116 -0.59482489 -2.19599189 -0.21360499 -2.92366182 0.30841953 -2.92366182 0.18660499 -0.03628009 0.30841953 -0.03628009 -0.11604872 0.21112596 -0.02143230 -0.07826379 -0.02143230 -0.31127040 -2.15979794 -0.07826379 -2.15979794 0.28729173 
+DEAL::0 -0.07798633 0 -0.07798633 -0.87897774 0.02888820 0 0.02888820 0 0 -1.06689191 0 -1.06689191 0.20048545 -0.00565150 0 -0.00565150 0 0 -0.00328170 0 -0.00328170 -0.04225420 -0.95307715 0 -0.95307715 0 
+DEAL::-0.17397969 -0.04885453 0.02682012 -0.04885453 0.28361854 -0.49985198 0.02682012 -0.49985198 -0.25564696 -0.00099692 -0.73298331 0.15443348 -0.73298331 -0.02018433 0.04296177 0.15443348 0.04296177 0.02453591 0.17397969 0.04885453 0.03004810 0.04885453 -0.28361854 -0.89081368 0.03004810 -0.89081368 -0.02643148 
+DEAL::-0.17397969 -0.04885453 -0.02682012 -0.04885453 0.28361854 0.49985198 -0.02682012 0.49985198 -0.25564696 -0.00099692 -0.73298331 -0.15443348 -0.73298331 -0.02018433 -0.04296177 -0.15443348 -0.04296177 0.02453591 -0.17397969 -0.04885453 0.03004810 -0.04885453 0.28361854 -0.89081368 0.03004810 -0.89081368 0.02643148 
+DEAL::0.00125264 -0.68284691 -0.01610367 -0.68284691 -0.40415342 -0.02751667 -0.01610367 -0.02751667 0.25709041 -0.01531514 -0.03142155 0.25526554 -0.03142155 0.01298562 -0.77077242 0.25526554 -0.77077242 -0.00108887 -0.40848276 -0.89271996 -0.01823272 -0.89271996 0.40415342 0.02751667 -0.01823272 0.02751667 -0.25709041 
+DEAL::0.06812144 -0.91562243 0.03461186 -0.91562243 0.28361854 -0.04885453 0.03461186 -0.04885453 -0.17397969 0.02675938 -0.04693117 -0.16759993 -0.04693117 -0.02018433 -0.73298331 -0.16759993 -0.73298331 -0.00099692 -0.25564696 0.49985198 -0.02682012 0.49985198 0.28361854 -0.04885453 -0.02682012 -0.04885453 -0.17397969 
+DEAL::-0.21360499 -2.92366182 0.30841953 -2.92366182 0.18660499 -0.03628009 0.30841953 -0.03628009 -0.11604872 0.21112596 -0.02143230 -0.07826379 -0.02143230 -0.31127040 -2.15979794 -0.07826379 -2.15979794 0.28729173 -2.17027806 0.22013128 -0.02244116 0.22013128 3.09504876 -0.59482489 -0.02244116 -0.59482489 -2.19599189 
+DEAL::0 -1.06689191 0 -1.06689191 0.20048545 -0.00565150 0 -0.00565150 0 0 -0.00328170 0 -0.00328170 -0.04225420 -0.95307715 0 -0.95307715 0 0 -0.07798633 0 -0.07798633 -0.87897774 0.02888820 0 0.02888820 0 
+DEAL::-0.00099692 -0.73298331 0.15443348 -0.73298331 -0.02018433 0.04296177 0.15443348 0.04296177 0.02453591 0.17397969 0.04885453 0.03004810 0.04885453 -0.28361854 -0.89081368 0.03004810 -0.89081368 -0.02643148 -0.17397969 -0.04885453 0.02682012 -0.04885453 0.28361854 -0.49985198 0.02682012 -0.49985198 -0.25564696 
+DEAL::-0.00099692 -0.73298331 -0.15443348 -0.73298331 -0.02018433 -0.04296177 -0.15443348 -0.04296177 0.02453591 -0.17397969 -0.04885453 0.03004810 -0.04885453 0.28361854 -0.89081368 0.03004810 -0.89081368 0.02643148 -0.17397969 -0.04885453 -0.02682012 -0.04885453 0.28361854 0.49985198 -0.02682012 0.49985198 -0.25564696 
+DEAL::-3.09504876 0.59482489 -0.22013128 0.59482489 2.19599189 0.02244116 -0.22013128 0.02244116 2.17027806 -0.31127040 -2.15979794 -0.02143230 -2.15979794 0.28729173 -0.07826379 -0.02143230 -0.07826379 0.21112596 0.18660499 -0.03628009 -2.92366182 -0.03628009 -0.11604872 0.30841953 -2.92366182 0.30841953 -0.21360499 
+DEAL::0.87897774 0.07798633 -0.02888820 0.07798633 0 0 -0.02888820 0 0 0.11251211 -0.94908266 -0.00325549 -0.94908266 0 0 -0.00325549 0 0 -0.07524420 -0.00573181 -1.07652151 -0.00573181 0 0 -1.07652151 0 0 
+DEAL::-0.28361854 0.49985198 0.04885453 0.49985198 0.25564696 -0.02682012 0.04885453 -0.02682012 0.17397969 -0.28361854 -0.89081368 0.04885453 -0.89081368 -0.02643148 0.03004810 0.04885453 0.03004810 0.17397969 -0.02018433 0.04296177 -0.73298331 0.04296177 0.02453591 0.15443348 -0.73298331 0.15443348 -0.00099692 
+DEAL::-0.28361854 -0.49985198 0.04885453 -0.49985198 0.25564696 0.02682012 0.04885453 0.02682012 0.17397969 0.28361854 -0.89081368 -0.04885453 -0.89081368 0.02643148 0.03004810 -0.04885453 0.03004810 -0.17397969 -0.02018433 -0.04296177 -0.73298331 -0.04296177 0.02453591 -0.15443348 -0.73298331 -0.15443348 -0.00099692 
+DEAL::-0.28361854 0.04885453 0.49985198 0.04885453 0.17397969 -0.02682012 0.49985198 -0.02682012 0.25564696 -0.02018433 -0.73298331 0.04693117 -0.73298331 -0.00099692 0.16759993 0.04693117 0.16759993 0.02675938 -0.28361854 0.04885453 -0.91562243 0.04885453 0.17397969 0.03461186 -0.91562243 0.03461186 -0.06812144 
+DEAL::-0.40415342 -0.02751667 -0.89271996 -0.02751667 0.25709041 -0.01823272 -0.89271996 -0.01823272 0.40848276 0.01298562 -0.77077242 0.03142155 -0.77077242 -0.00108887 -0.25526554 0.03142155 -0.25526554 -0.01531514 0.40415342 0.02751667 -0.68284691 0.02751667 -0.25709041 -0.01610367 -0.68284691 -0.01610367 -0.00125264 
+DEAL::-0.06812144 -0.91562243 0.03461186 -0.91562243 -0.28361854 0.04885453 0.03461186 0.04885453 0.17397969 0.25564696 0.49985198 -0.02682012 0.49985198 -0.28361854 0.04885453 -0.02682012 0.04885453 0.17397969 0.02675938 0.04693117 0.16759993 0.04693117 -0.02018433 -0.73298331 0.16759993 -0.73298331 -0.00099692 
+DEAL::-0.00125264 -0.68284691 -0.01610367 -0.68284691 0.40415342 0.02751667 -0.01610367 0.02751667 -0.25709041 0.40848276 -0.89271996 -0.01823272 -0.89271996 -0.40415342 -0.02751667 -0.01823272 -0.02751667 0.25709041 -0.01531514 0.03142155 -0.25526554 0.03142155 0.01298562 -0.77077242 -0.25526554 -0.77077242 -0.00108887 
+DEAL::-0.21360499 -2.92366182 0.30841953 -2.92366182 0.18660499 -0.03628009 0.30841953 -0.03628009 -0.11604872 2.17027806 -0.22013128 0.02244116 -0.22013128 -3.09504876 0.59482489 0.02244116 0.59482489 2.19599189 0.21112596 -0.02143230 -0.07826379 -0.02143230 -0.31127040 -2.15979794 -0.07826379 -2.15979794 0.28729173 
+DEAL::0 -1.07652151 0 -1.07652151 -0.07524420 -0.00573181 0 -0.00573181 0 0 -0.02888820 0 -0.02888820 0.87897774 0.07798633 0 0.07798633 0 0 -0.00325549 0 -0.00325549 0.11251211 -0.94908266 0 -0.94908266 0 
+DEAL::-0.00108887 -0.77077242 0.25149939 -0.77077242 0.01298562 -0.03948038 0.25149939 -0.03948038 -0.01508752 0.25709041 -0.02751667 0.01823272 -0.02751667 -0.40415342 0.89271996 0.01823272 0.89271996 0.40848276 0.25709041 -0.02751667 -0.01564680 -0.02751667 -0.40415342 -0.81716081 -0.01564680 -0.81716081 0.01263333 
+DEAL::-0.00099692 -0.73298331 -0.15443348 -0.73298331 -0.02018433 -0.04296177 -0.15443348 -0.04296177 0.02453591 0.17397969 0.04885453 0.02682012 0.04885453 -0.28361854 -0.49985198 0.02682012 -0.49985198 0.25564696 -0.17397969 -0.04885453 0.03004810 -0.04885453 0.28361854 -0.89081368 0.03004810 -0.89081368 0.02643148 
+DEAL::-0.31127040 -2.15979794 -0.02143230 -2.15979794 0.28729173 -0.07826379 -0.02143230 -0.07826379 0.21112596 3.09504876 -0.59482489 0.22013128 -0.59482489 -2.19599189 -0.02244116 0.22013128 -0.02244116 -2.17027806 0.18660499 -0.03628009 -2.92366182 -0.03628009 -0.11604872 0.30841953 -2.92366182 0.30841953 -0.21360499 
+DEAL::-0.04225420 -0.95307715 -0.00328170 -0.95307715 0 0 -0.00328170 0 0 -0.87897774 0.02888820 -0.07798633 0.02888820 0 0 -0.07798633 0 0 0.20048545 -0.00565150 -1.06689191 -0.00565150 0 0 -1.06689191 0 0 
+DEAL::-0.28361854 -0.89081368 0.04885453 -0.89081368 -0.02643148 0.03004810 0.04885453 0.03004810 0.17397969 0.28361854 -0.49985198 -0.04885453 -0.49985198 -0.25564696 0.02682012 -0.04885453 0.02682012 -0.17397969 -0.02018433 0.04296177 -0.73298331 0.04296177 0.02453591 0.15443348 -0.73298331 0.15443348 -0.00099692 
+DEAL::0.40415342 -0.81716081 0.02751667 -0.81716081 -0.01263333 -0.01564680 0.02751667 -0.01564680 -0.25709041 0.40415342 0.89271996 0.02751667 0.89271996 -0.40848276 0.01823272 0.02751667 0.01823272 -0.25709041 0.01298562 0.03948038 -0.77077242 0.03948038 -0.01508752 -0.25149939 -0.77077242 -0.25149939 -0.00108887 
+DEAL::0.01298562 -0.77077242 -0.03142155 -0.77077242 -0.00108887 0.25526554 -0.03142155 0.25526554 -0.01531514 0.40415342 0.02751667 -0.89271996 0.02751667 -0.25709041 -0.01823272 -0.89271996 -0.01823272 -0.40848276 -0.40415342 -0.02751667 -0.68284691 -0.02751667 0.25709041 -0.01610367 -0.68284691 -0.01610367 0.00125264 
+DEAL::-0.02018433 -0.73298331 -0.04693117 -0.73298331 -0.00099692 -0.16759993 -0.04693117 -0.16759993 0.02675938 0.28361854 -0.04885453 0.49985198 -0.04885453 -0.17397969 -0.02682012 0.49985198 -0.02682012 -0.25564696 0.28361854 -0.04885453 -0.91562243 -0.04885453 -0.17397969 0.03461186 -0.91562243 0.03461186 0.06812144 
+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 
+DEAL::0.54605963 0.24864496 0.18681987 0.24864496 0 0 0.18681987 0 0 0.26637736 -0.81608670 0.08192707 -0.81608670 0 0 0.08192707 0 0 0.35602618 0.14023479 -0.86572412 0.14023479 0 0 -0.86572412 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 
+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 
+DEAL::0 -0.86572412 0 -0.86572412 0.35602618 0.14023479 0 0.14023479 0 0 0.18681987 0 0.18681987 0.54605963 0.24864496 0 0.24864496 0 0 0.08192707 0 0.08192707 0.26637736 -0.81608670 0 -0.81608670 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 
+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 
+DEAL::0 0 -0.81608670 0 0 0.08192707 -0.81608670 0.08192707 0.26637736 0 0 0.14023479 0 0 -0.86572412 0.14023479 -0.86572412 0.35602618 0 0 0.24864496 0 0 0.18681987 0.24864496 0.18681987 0.54605963 
+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 
+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 
+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 
+DEAL::0 -0.24864496 0 -0.24864496 -0.54605963 -0.18681987 0 -0.18681987 0 0 -0.81516872 0 -0.81516872 0.43619691 0.12826238 0 0.12826238 0 0 0.08583479 0 0.08583479 0.21841379 -0.83705776 0 -0.83705776 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 
+DEAL::0 -0.83302117 0 -0.83302117 -0.37593015 -0.15112370 0 -0.15112370 0 0 -0.21066921 0 -0.21066921 0.51414291 0.23924169 0 0.23924169 0 0 -0.09238584 0 -0.09238584 0.25313802 -0.80957560 0 -0.80957560 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 
+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 
+DEAL::0 0 -0.86594085 0 0 -0.06324646 -0.86594085 -0.06324646 -0.22375384 0 0 -0.10154933 0 0 -0.89343917 -0.10154933 -0.89343917 0.42019831 0 0 -0.18005325 0 0 0.20713957 -0.18005325 0.20713957 0.64046101 
+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 
+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 
+DEAL::0.64046101 -0.18005325 0.20713957 -0.18005325 0 0 0.20713957 0 0 -0.22375384 -0.86594085 -0.06324646 -0.86594085 0 0 -0.06324646 0 0 0.42019831 -0.10154933 -0.89343917 -0.10154933 0 0 -0.89343917 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 
+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 
+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 
+DEAL::0.21841379 -0.83705776 0.08583479 -0.83705776 0 0 0.08583479 0 0 -0.54605963 -0.18681987 -0.24864496 -0.18681987 0 0 -0.24864496 0 0 0.43619691 0.12826238 -0.81516872 0.12826238 0 0 -0.81516872 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 
+DEAL::0 0 -0.80957560 0 0 -0.09238584 -0.80957560 -0.09238584 0.25313802 0 0 -0.15112370 0 0 -0.83302117 -0.15112370 -0.83302117 -0.37593015 0 0 0.23924169 0 0 -0.21066921 0.23924169 -0.21066921 0.51414291 
+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 
+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 
+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 
+DEAL::0 0.18005325 0 0.18005325 -0.64046101 -0.20713957 0 -0.20713957 0 0 -0.91291723 0 -0.91291723 -0.37637647 -0.10488959 0 -0.10488959 0 0 -0.06215622 0 -0.06215622 0.24940632 -0.85786109 0 -0.85786109 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 
+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 
+DEAL::-0.23270093 -0.81965260 -0.09450329 -0.81965260 0 0 -0.09450329 0 0 -0.51414291 0.21066921 -0.23924169 0.21066921 0 0 -0.23924169 0 0 0.40987944 -0.14463630 -0.80872832 -0.14463630 0 0 -0.80872832 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 
+DEAL::0 0 -0.85764253 0 0 0.07132048 -0.85764253 0.07132048 -0.21306033 0 0 0.10943440 0 0 -0.85526057 0.10943440 -0.85526057 -0.44401686 0 0 -0.17324398 0 0 -0.23358292 -0.17324398 -0.23358292 0.60371825 
+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 
+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 
+DEAL::0.51414291 0.23924169 -0.21066921 0.23924169 0 0 -0.21066921 0 0 0.25313802 -0.80957560 -0.09238584 -0.80957560 0 0 -0.09238584 0 0 -0.37593015 -0.15112370 -0.83302117 -0.15112370 0 0 -0.83302117 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 
+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 
+DEAL::0 -0.89343917 0 -0.89343917 0.42019831 -0.10154933 0 -0.10154933 0 0 0.20713957 0 0.20713957 0.64046101 -0.18005325 0 -0.18005325 0 0 -0.06324646 0 -0.06324646 -0.22375384 -0.86594085 0 -0.86594085 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 
+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 
+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 
+DEAL::0 -0.81516872 0 -0.81516872 0.43619691 0.12826238 0 0.12826238 0 0 0.08583479 0 0.08583479 0.21841379 -0.83705776 0 -0.83705776 0 0 -0.24864496 0 -0.24864496 -0.54605963 -0.18681987 0 -0.18681987 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 
+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 
+DEAL::0 -0.23924169 0 -0.23924169 -0.51414291 0.21066921 0 0.21066921 0 0 -0.80872832 0 -0.80872832 0.40987944 -0.14463630 0 -0.14463630 0 0 -0.09450329 0 -0.09450329 -0.23270093 -0.81965260 0 -0.81965260 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 
+DEAL::0 -0.85526057 0 -0.85526057 -0.44401686 0.10943440 0 0.10943440 0 0 -0.23358292 0 -0.23358292 0.60371825 -0.17324398 0 -0.17324398 0 0 0.07132048 0 0.07132048 -0.21306033 -0.85764253 0 -0.85764253 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 
+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 
+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 
+DEAL::0 -0.91291723 0 -0.91291723 -0.37637647 -0.10488959 0 -0.10488959 0 0 -0.06215622 0 -0.06215622 0.24940632 -0.85786109 0 -0.85786109 0 0 0.18005325 0 0.18005325 -0.64046101 -0.20713957 0 -0.20713957 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 
+DEAL::0.60371825 -0.17324398 -0.23358292 -0.17324398 0 0 -0.23358292 0 0 -0.21306033 -0.85764253 0.07132048 -0.85764253 0 0 0.07132048 0 0 -0.44401686 0.10943440 -0.85526057 0.10943440 0 0 -0.85526057 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 
+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 
+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 
+DEAL::0.24940632 -0.85786109 -0.06215622 -0.85786109 0 0 -0.06215622 0 0 -0.64046101 -0.20713957 0.18005325 -0.20713957 0 0 0.18005325 0 0 -0.37637647 -0.10488959 -0.91291723 -0.10488959 0 0 -0.91291723 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 
+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 
+DEAL::0 -0.80872832 0 -0.80872832 0.40987944 -0.14463630 0 -0.14463630 0 0 -0.09450329 0 -0.09450329 -0.23270093 -0.81965260 0 -0.81965260 0 0 -0.23924169 0 -0.23924169 -0.51414291 0.21066921 0 0.21066921 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 
+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 
+DEAL::0 0.17324398 0 0.17324398 -0.60371825 0.23358292 0 0.23358292 0 0 -0.90100117 0 -0.90100117 -0.35392919 0.11827975 0 0.11827975 0 0 0.06843342 0 0.06843342 -0.26625377 -0.83866871 0 -0.83866871 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 
+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 
+DEAL::-0.26625377 -0.83866871 0.06843342 -0.83866871 0 0 0.06843342 0 0 -0.60371825 0.23358292 0.17324398 0.23358292 0 0 0.17324398 0 0 -0.35392919 0.11827975 -0.90100117 0.11827975 0 0 -0.90100117 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 
+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 
+DEAL::0 -0.90100117 0 -0.90100117 -0.35392919 0.11827975 0 0.11827975 0 0 0.06843342 0 0.06843342 -0.26625377 -0.83866871 0 -0.83866871 0 0 0.17324398 0 0.17324398 -0.60371825 0.23358292 0 0.23358292 0 
+DEAL::

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.