]> https://gitweb.dealii.org/ - dealii.git/commitdiff
FEInterface extractors 12047/head
authorTimo Heister <timo.heister@gmail.com>
Wed, 7 Apr 2021 14:43:56 +0000 (10:43 -0400)
committerJiaqi Zhang <jiaqi2@clemson.edu>
Mon, 3 May 2021 11:58:32 +0000 (07:58 -0400)
doc/news/changes/minor/20210415JiaqiZhang [new file with mode: 0644]
include/deal.II/fe/fe_interface_values.h
tests/feinterface/fe_interface_view_01.cc [new file with mode: 0644]
tests/feinterface/fe_interface_view_01.output [new file with mode: 0644]
tests/feinterface/fe_interface_view_02.cc [new file with mode: 0644]
tests/feinterface/fe_interface_view_02.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20210415JiaqiZhang b/doc/news/changes/minor/20210415JiaqiZhang
new file mode 100644 (file)
index 0000000..1f30c2e
--- /dev/null
@@ -0,0 +1,4 @@
+New: FEInterfaceValues now can use FEValuesExtractors to extract scalar or
+vector components like FEValues does.
+<br>
+(Jiaqi Zhang, 2021/04/15)
index a07364df971bd6a95d7a207b901759169f42e3bf..f245c55d5e059b140621175de3a2f890110991f0 100644 (file)
 
 DEAL_II_NAMESPACE_OPEN
 
+#ifndef DOXYGEN
+template <int dim, int spacedim>
+class FEInterfaceValues;
+#endif
+
+/**
+ * Namespace for views you get from accessing FEInterfaceValues using an
+ * extractor.
+ */
+namespace FEInterfaceViews
+{
+  /**
+   * The base class for the views.
+   */
+  template <int dim, int spacedim = dim>
+  class Base
+  {
+  public:
+    /**
+     * The constructor.
+     **/
+    Base(const FEInterfaceValues<dim, spacedim> &fe_interface);
+
+  protected:
+    /**
+     * Store a pointer to the FEInterfaceValues instance.
+     */
+    const FEInterfaceValues<dim, spacedim> *fe_interface;
+  };
+
+
+
+  /**
+   * The view of a scalar variable for FEInterfaceValues.
+   */
+  template <int dim, int spacedim = dim>
+  class Scalar : public Base<dim, spacedim>
+  {
+  public:
+    /**
+     * This is the type returned for values.
+     */
+    using value_type = double;
+
+    /**
+     * This is the type returned for gradients, for example from
+     * average_gradient().
+     */
+    using gradient_type =
+      typename FEValuesViews::Scalar<dim, spacedim>::gradient_type;
+
+    /**
+     * This is the type returned for hessians, for example from jump_hessian().
+     */
+    using hessian_type =
+      typename FEValuesViews::Scalar<dim, spacedim>::hessian_type;
+
+    /**
+     * This is the type returned for third derivatives, for example from
+     * jump_hessian().
+     */
+    using third_derivative_type =
+      typename FEValuesViews::Scalar<dim, spacedim>::third_derivative_type;
+
+    /**
+     * Constructor for an object that represents a single scalar component
+     */
+    Scalar(const FEInterfaceValues<dim, spacedim> &fe_interface,
+           const unsigned int                      component);
+
+    /**
+     * Return the value of the shape function
+     * with interface dof index @p interface_dof_index in
+     * quadrature point @p q_point of the component selected by this view.
+     *
+     * The argument @p here_or_there selects between the upstream value and
+     * the downstream value as defined by the direction of the normal vector
+     * in this quadrature point. If @p here_or_there is true, the shape
+     * functions from the first cell of the interface is used.
+     *
+     * In other words, this function returns the limit of the value of the shape
+     * function in the given quadrature point when approaching it from one of
+     * the two cells of the interface.
+     *
+     * @note This function is typically used to pick the upstream or downstream
+     * value based on a direction. This can be achieved by using
+     * <code>(direction * normal)>0</code> as the first argument of this
+     * function.
+     */
+    value_type
+    value(const bool         here_or_there,
+          const unsigned int interface_dof_index,
+          const unsigned int q_point) const;
+
+    /**
+     * Return the jump $\jump{u}=u_1 - u_2$ on the interface for the shape
+     * function
+     * @p interface_dof_index in the quadrature point @p q_point
+     * of the component selected by this view.
+     */
+    value_type
+    jump(const unsigned int interface_dof_index,
+         const unsigned int q_point) const;
+
+    /**
+     * Return the average value $\average{u}=\frac{1}{2}(u_1 + u_2)$ on the
+     * interface for the shape
+     * function @p interface_dof_index in the quadrature point @p q_point
+     * of the component selected by this view.
+     */
+    value_type
+    average(const unsigned int interface_dof_index,
+            const unsigned int q_point) const;
+
+    /**
+     * Return the average of the gradient $\average{\nabla u}$ on the interface
+     * for the shape
+     * function @p interface_dof_index in the quadrature point @p q_point
+     * of the component selected by this view.
+     */
+    gradient_type
+    average_gradient(const unsigned int interface_dof_index,
+                     const unsigned int q_point) const;
+
+    /**
+     * Return the jump of the gradient $\jump{nabla u}$ on the interface for
+     * the shape
+     * function @p interface_dof_index in the quadrature point @p q_point
+     * of the component selected by this view.
+     */
+    gradient_type
+    jump_gradient(const unsigned int interface_dof_index,
+                  const unsigned int q_point) const;
+
+    /**
+     * Return the average of the Hessian $\average{\nabla^2 u} =
+     * \frac{1}{2}\nabla^2 u_{\text{cell0}} + \frac{1}{2} \nabla^2
+     * u_{\text{cell1}}$ on the interface
+     * for the shape function @p interface_dof_index at the quadrature point @p
+     * q_point of the component selected by this view.
+     */
+    hessian_type
+    average_hessian(const unsigned int interface_dof_index,
+                    const unsigned int q_point) const;
+
+    /**
+     * Return the jump in the gradient $\jump{\nabla u}=\nabla u_{\text{cell0}}
+     * - \nabla u_{\text{cell1}}$ on the interface for the shape function @p
+     * interface_dof_index at the quadrature point @p q_point of
+     * the component selected by this view.
+     */
+    hessian_type
+    jump_hessian(const unsigned int interface_dof_index,
+                 const unsigned int q_point) const;
+
+    /**
+     * Return the jump in the third derivative $\jump{\nabla^3 u} = \nabla^3
+     * u_{\text{cell0}} - \nabla^3 u_{\text{cell1}}$ on the interface for the
+     * shape function @p interface_dof_index at the quadrature point @p q_point of
+     * the component selected by this view.
+     */
+    third_derivative_type
+    jump_3rd_derivative(const unsigned int interface_dof_index,
+                        const unsigned int q_point) const;
+
+  private:
+    /**
+     * The extractor for this view.
+     */
+    const FEValuesExtractors::Scalar extractor;
+  };
+
+
+
+  /**
+   * The view of a vector-valued variable for FEInterfaceValues.
+   */
+  template <int dim, int spacedim = dim>
+  class Vector : public Base<dim, spacedim>
+  {
+  public:
+    /**
+     * This is the type returned for values.
+     */
+    using value_type =
+      typename FEValuesViews::Vector<dim, spacedim>::value_type;
+
+    /**
+     * This is the type returned for gradients, for example from
+     * average_gradient().
+     */
+    using gradient_type =
+      typename FEValuesViews::Vector<dim, spacedim>::gradient_type;
+
+    /**
+     * An alias for the type of second derivatives of the view this class
+     * represents. Here, for a set of <code>dim</code> components of the
+     * finite element, the Hessian is a <code>Tensor@<3,dim@></code>.
+     */
+    using hessian_type =
+      typename FEValuesViews::Vector<dim, spacedim>::hessian_type;
+
+    /**
+     * An alias for the type of third derivatives of the view this class
+     * represents. Here, for a set of <code>dim</code> components of the
+     * finite element, the third derivative is a <code>Tensor@<4,dim@></code>.
+     */
+    using third_derivative_type =
+      typename FEValuesViews::Vector<dim, spacedim>::third_derivative_type;
+
+    /**
+     * Constructor for an object that represents a vector component
+     */
+    Vector(const FEInterfaceValues<dim, spacedim> &fe_interface,
+           const unsigned int                      first_vector_component);
+
+    /**
+     * Return the value of the vector components selected by this view
+     * with interface dof index @p interface_dof_index in
+     * quadrature point @p q_point.
+     *
+     * The argument @p here_or_there selects between the upstream value and
+     * the downstream value as defined by the direction of the normal vector
+     * in this quadrature point. If @p here_or_there is true, the shape
+     * functions from the first cell of the interface is used.
+     *
+     * In other words, this function returns the limit of the value of the shape
+     * function in the given quadrature point when approaching it from one of
+     * the two cells of the interface.
+     *
+     * @note This function is typically used to pick the upstream or downstream
+     * value based on a direction. This can be achieved by using
+     * <code>(direction * normal)>0</code> as the first argument of this
+     * function.
+     */
+    value_type
+    value(const bool         here_or_there,
+          const unsigned int interface_dof_index,
+          const unsigned int q_point) const;
+
+    /**
+     * Return the jump vector $[\mathbf{u}]=\mathbf{u_1} - \mathbf{u_2}$ on the
+     * interface for the shape function
+     * @p interface_dof_index in the quadrature point @p q_point.
+     */
+    value_type
+    jump(const unsigned int interface_dof_index,
+         const unsigned int q_point) const;
+
+    /**
+     * Return the average vector $\average{\mathbf{u}}=\frac{1}{2}(\matbf{u_1} +
+     * \mathbf{u_2})$ on the interface for the shape
+     * function @p interface_dof_index in the quadrature point @p q_point.
+     */
+    value_type
+    average(const unsigned int interface_dof_index,
+            const unsigned int q_point) const;
+
+    /**
+     * Return the average of the gradient (a tensor of rank 2) $\average{\nabla
+     * \mathbf{u}}$ on the interface for the shape
+     * function @p interface_dof_index in the quadrature point @p q_point.
+     */
+    gradient_type
+    average_gradient(const unsigned int interface_dof_index,
+                     const unsigned int q_point) const;
+
+    /**
+     * Return the jump of the gradient (a tensor of rank 2) $\jump{\nabla
+     * \mathbf{u}}$ on the interface for the shape
+     * function @p interface_dof_index in the quadrature point @p q_point.
+     */
+    gradient_type
+    jump_gradient(const unsigned int interface_dof_index,
+                  const unsigned int q_point) const;
+
+    /**
+     * Return the average of the Hessian $\average{\nabla^2 u} =
+     * \frac{1}{2}\nabla^2 u_{\text{cell0}} + \frac{1}{2} \nabla^2
+     * u_{\text{cell1}}$ on the interface
+     * for the shape function @p interface_dof_index at the quadrature point @p
+     * q_point of the component selected by this view.
+     */
+    hessian_type
+    average_hessian(const unsigned int interface_dof_index,
+                    const unsigned int q_point) const;
+
+    /**
+     * Return the jump in the gradient $\jump{\nabla u}=\nabla u_{\text{cell0}}
+     * - \nabla u_{\text{cell1}}$ on the interface for the shape function @p
+     * interface_dof_index at the quadrature point @p q_point of
+     * the component selected by this view.
+     */
+    hessian_type
+    jump_hessian(const unsigned int interface_dof_index,
+                 const unsigned int q_point) const;
+
+    /**
+     * Return the jump in the third derivative $\jump{\nabla^3 u} = \nabla^3
+     * u_{\text{cell0}} - \nabla^3 u_{\text{cell1}}$ on the interface for the
+     * shape function @p interface_dof_index at the quadrature point @p q_point of
+     * the component selected by this view.
+     */
+    third_derivative_type
+    jump_3rd_derivative(const unsigned int interface_dof_index,
+                        const unsigned int q_point) const;
+
+  private:
+    /**
+     * The extractor for this view.
+     */
+    const FEValuesExtractors::Vector extractor;
+  };
+} // namespace FEInterfaceViews
+
+
+
 /**
  * FEInterfaceValues is a data structure to access and assemble finite element
  * data on interfaces between two cells of a mesh.
@@ -58,7 +375,6 @@ public:
    */
   const unsigned int n_quadrature_points;
 
-
   /**
    * Construct the FEInterfaceValues with a single FiniteElement (same on both
    * sides of the facet). The FEFaceValues objects will be initialized with
@@ -99,8 +415,8 @@ public:
    * sub_face_no_neighbor to indicate that you want to work on the entire face,
    * not a sub-face.
    *
-   * The arguments (including their order) are identical to the @p face_worker arguments
-   * in MeshWorker::mesh_loop().
+   * The arguments (including their order) are identical to the @p face_worker
+   * arguments in MeshWorker::mesh_loop().
    *
    * @param[in] cell An iterator to the first cell adjacent to the interface.
    * @param[in] face_no An integer identifying which face of the first cell the
@@ -234,7 +550,6 @@ public:
   const std::vector<Point<spacedim>> &
   get_quadrature_points() const;
 
-
   /**
    * Return the number of DoFs (or shape functions) on the current interface.
    *
@@ -255,8 +570,8 @@ public:
    * in case of level cell (that is, if is_level_cell() return true )
    * the mg dof indices are returned.
    *
-   * @note This function is only available after a call to reinit() and can change
-   * from one call to reinit() to the next.
+   * @note This function is only available after a call to reinit() and can
+   * change from one call to reinit() to the next.
    */
   std::vector<types::global_dof_index>
   get_interface_dof_indices() const;
@@ -269,8 +584,8 @@ public:
    * For discontinuous finite elements each interface dof will correspond to
    * exactly one DoF index.
    *
-   * @note This function is only available after a call to reinit() and can change
-   * from one call to reinit() to the next.
+   * @note This function is only available after a call to reinit() and can
+   * change from one call to reinit() to the next.
    */
   std::array<unsigned int, 2>
   interface_dof_to_dof_indices(const unsigned int interface_dof_index) const;
@@ -427,6 +742,24 @@ public:
                       const unsigned int q_point,
                       const unsigned int component = 0) const;
 
+  /**
+   * Create a view of the current FEInterfaceValues object that represents a
+   * particular scalar component of the possibly vector-valued finite element.
+   * The concept of views is explained in the documentation of the namespace
+   * FEValuesViews.
+   */
+  const FEInterfaceViews::Scalar<dim, spacedim>
+  operator[](const FEValuesExtractors::Scalar &scalar) const;
+
+  /**
+   * Create a view of the current FEInterfaceValues object that represents a set
+   * of <code>dim</code> scalar components (i.e. a vector) of the vector-valued
+   * finite element. The concept of views is explained in the documentation of
+   * the namespace FEValuesViews.
+   */
+  const FEInterfaceViews::Vector<dim, spacedim>
+  operator[](const FEValuesExtractors::Vector &vector) const;
+
   /**
    * @}
    */
@@ -499,6 +832,8 @@ FEInterfaceValues<dim, spacedim>::FEInterfaceValues(
   , fe_face_values_neighbor(nullptr)
 {}
 
+
+
 template <int dim, int spacedim>
 FEInterfaceValues<dim, spacedim>::FEInterfaceValues(
   const Mapping<dim, spacedim> &      mapping,
@@ -601,8 +936,6 @@ FEInterfaceValues<dim, spacedim>::reinit(
       fe_face_values_neighbor->get_fe().n_dofs_per_cell());
     cell_neighbor->get_active_or_mg_dof_indices(v2);
 
-
-
     // Fill a map from the global dof index to the left and right
     // local index.
     std::map<types::global_dof_index, std::pair<unsigned int, unsigned int>>
@@ -652,7 +985,6 @@ FEInterfaceValues<dim, spacedim>::reinit(const CellIteratorType &cell,
   interface_dof_indices.resize(fe_face_values->get_fe().n_dofs_per_cell());
   cell->get_active_or_mg_dof_indices(interface_dof_indices);
 
-
   dofmap.resize(interface_dof_indices.size());
 
   for (unsigned int i = 0; i < interface_dof_indices.size(); ++i)
@@ -1006,6 +1338,7 @@ FEInterfaceValues<dim, spacedim>::jump_hessian(
 }
 
 
+
 template <int dim, int spacedim>
 Tensor<3, spacedim>
 FEInterfaceValues<dim, spacedim>::jump_3rd_derivative(
@@ -1037,6 +1370,299 @@ FEInterfaceValues<dim, spacedim>::jump_3rd_derivative(
 }
 
 
+
+/*------------ Inline functions: FEInterfaceValues------------*/
+template <int dim, int spacedim>
+inline const FEInterfaceViews::Scalar<dim, spacedim>
+  FEInterfaceValues<dim, spacedim>::
+  operator[](const FEValuesExtractors::Scalar &scalar) const
+{
+  AssertIndexRange(scalar.component, this->get_fe().n_components());
+  return FEInterfaceViews::Scalar<dim, spacedim>(*this, scalar.component);
+}
+
+
+
+template <int dim, int spacedim>
+inline const FEInterfaceViews::Vector<dim, spacedim>
+  FEInterfaceValues<dim, spacedim>::
+  operator[](const FEValuesExtractors::Vector &vector) const
+{
+  const FiniteElement<dim, spacedim> &fe = this->get_fe();
+  const unsigned int                  n_vectors =
+    (fe.n_components() >= Tensor<1, spacedim>::n_independent_components ?
+       fe.n_components() - Tensor<1, spacedim>::n_independent_components + 1 :
+       0);
+  AssertIndexRange(vector.first_vector_component, n_vectors);
+  return FEInterfaceViews::Vector<dim, spacedim>(*this,
+                                                 vector.first_vector_component);
+}
+
+
+
+namespace FEInterfaceViews
+{
+  template <int dim, int spacedim>
+  Base<dim, spacedim>::Base(
+    const FEInterfaceValues<dim, spacedim> &fe_interface)
+    : fe_interface(&fe_interface)
+  {}
+
+
+
+  template <int dim, int spacedim>
+  Scalar<dim, spacedim>::Scalar(
+    const FEInterfaceValues<dim, spacedim> &fe_interface,
+    const unsigned int                      component)
+    : Base<dim, spacedim>(fe_interface)
+    , extractor(component)
+  {}
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::value_type
+  Scalar<dim, spacedim>::value(const bool         here_or_there,
+                               const unsigned int interface_dof_index,
+                               const unsigned int q_point) const
+  {
+    return this->fe_interface->shape_value(here_or_there,
+                                           interface_dof_index,
+                                           q_point,
+                                           extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::value_type
+  Scalar<dim, spacedim>::jump(const unsigned int interface_dof_index,
+                              const unsigned int q_point) const
+  {
+    return this->fe_interface->jump(interface_dof_index,
+                                    q_point,
+                                    extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::value_type
+  Scalar<dim, spacedim>::average(const unsigned int interface_dof_index,
+                                 const unsigned int q_point) const
+  {
+    return this->fe_interface->average(interface_dof_index,
+                                       q_point,
+                                       extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::gradient_type
+  Scalar<dim, spacedim>::average_gradient(
+    const unsigned int interface_dof_index,
+    const unsigned int q_point) const
+  {
+    return this->fe_interface->average_gradient(interface_dof_index,
+                                                q_point,
+                                                extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::gradient_type
+  Scalar<dim, spacedim>::jump_gradient(const unsigned int interface_dof_index,
+                                       const unsigned int q_point) const
+  {
+    return this->fe_interface->jump_gradient(interface_dof_index,
+                                             q_point,
+                                             extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::hessian_type
+  Scalar<dim, spacedim>::average_hessian(const unsigned int interface_dof_index,
+                                         const unsigned int q_point) const
+  {
+    return this->fe_interface->average_hessian(interface_dof_index,
+                                               q_point,
+                                               extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::third_derivative_type
+  Scalar<dim, spacedim>::jump_3rd_derivative(
+    const unsigned int interface_dof_index,
+    const unsigned int q_point) const
+  {
+    return this->fe_interface->jump_3rd_derivative(interface_dof_index,
+                                                   q_point,
+                                                   extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Scalar<dim, spacedim>::hessian_type
+  Scalar<dim, spacedim>::jump_hessian(const unsigned int interface_dof_index,
+                                      const unsigned int q_point) const
+  {
+    return this->fe_interface->jump_hessian(interface_dof_index,
+                                            q_point,
+                                            extractor.component);
+  }
+
+
+
+  template <int dim, int spacedim>
+  Vector<dim, spacedim>::Vector(
+    const FEInterfaceValues<dim, spacedim> &fe_interface,
+    const unsigned int                      first_vector_component)
+    : Base<dim, spacedim>(fe_interface)
+    , extractor(first_vector_component)
+  {}
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::value_type
+  Vector<dim, spacedim>::value(const bool         here_or_there,
+                               const unsigned int interface_dof_index,
+                               const unsigned int q_point) const
+  {
+    value_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] =
+        this->fe_interface->shape_value(here_or_there,
+                                        interface_dof_index,
+                                        q_point,
+                                        d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::value_type
+  Vector<dim, spacedim>::jump(const unsigned int interface_dof_index,
+                              const unsigned int q_point) const
+  {
+    value_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] =
+        this->fe_interface->jump(interface_dof_index,
+                                 q_point,
+                                 d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::value_type
+  Vector<dim, spacedim>::average(const unsigned int interface_dof_index,
+                                 const unsigned int q_point) const
+  {
+    value_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] =
+        this->fe_interface->average(interface_dof_index,
+                                    q_point,
+                                    d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::gradient_type
+  Vector<dim, spacedim>::average_gradient(
+    const unsigned int interface_dof_index,
+    const unsigned int q_point) const
+  {
+    gradient_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] = this->fe_interface->average_gradient(
+        interface_dof_index, q_point, d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::gradient_type
+  Vector<dim, spacedim>::jump_gradient(const unsigned int interface_dof_index,
+                                       const unsigned int q_point) const
+  {
+    gradient_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] =
+        this->fe_interface->jump_gradient(interface_dof_index,
+                                          q_point,
+                                          d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::hessian_type
+  Vector<dim, spacedim>::average_hessian(const unsigned int interface_dof_index,
+                                         const unsigned int q_point) const
+  {
+    hessian_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] = this->fe_interface->average_hessian(
+        interface_dof_index, q_point, d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::hessian_type
+  Vector<dim, spacedim>::jump_hessian(const unsigned int interface_dof_index,
+                                      const unsigned int q_point) const
+  {
+    hessian_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] =
+        this->fe_interface->jump_hessian(interface_dof_index,
+                                         q_point,
+                                         d + extractor.first_vector_component);
+
+    return result;
+  }
+
+
+
+  template <int dim, int spacedim>
+  typename Vector<dim, spacedim>::third_derivative_type
+  Vector<dim, spacedim>::jump_3rd_derivative(
+    const unsigned int interface_dof_index,
+    const unsigned int q_point) const
+  {
+    third_derivative_type result;
+    for (int d = 0; d < dim; ++d)
+      result[d] = this->fe_interface->jump_3rd_derivative(
+        interface_dof_index, q_point, d + extractor.first_vector_component);
+
+    return result;
+  }
+} // namespace FEInterfaceViews
+
 #endif // DOXYGEN
 
 DEAL_II_NAMESPACE_CLOSE
diff --git a/tests/feinterface/fe_interface_view_01.cc b/tests/feinterface/fe_interface_view_01.cc
new file mode 100644 (file)
index 0000000..d06ab0a
--- /dev/null
@@ -0,0 +1,154 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2007 - 2020 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+// test FEInterfaceViews and extractor classes. these tests use a primitive
+// finite element and scalar extractors. To simplify the output, we skip writing
+// results of high-order tensors and zeros.
+
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/dofs/dof_handler.h>
+
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_interface_values.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_q1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/manifold_lib.h>
+
+#include <deal.II/lac/vector.h>
+
+#include "../tests.h"
+
+
+template <int dim>
+void
+test(const Triangulation<dim> &tr, const FiniteElement<dim> &fe)
+{
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  deallog << "FE=" << fe.get_name() << std::endl;
+
+  const QGauss<dim - 1>  face_quadrature(2);
+  FEInterfaceValues<dim> fe_iv(fe,
+                               face_quadrature,
+                               update_values | update_gradients |
+                                 update_quadrature_points |
+                                 update_3rd_derivatives);
+  auto                   cell = dof.begin_active();
+
+  for (const auto f : GeometryInfo<dim>::face_indices())
+    if (!cell->face(f)->at_boundary())
+      {
+        fe_iv.reinit(cell,
+                     f,
+                     numbers::invalid_unsigned_int,
+                     cell->neighbor(f),
+                     cell->neighbor_of_neighbor(f),
+                     numbers::invalid_unsigned_int);
+        const auto &       q_points    = fe_iv.get_quadrature_points();
+        const unsigned int n_q_points  = q_points.size();
+        const unsigned int n_dofs_face = fe_iv.n_current_interface_dofs();
+
+        for (unsigned int c = 0; c < fe.n_components(); ++c)
+          {
+            FEValuesExtractors::Scalar single_component(c);
+            for (unsigned int i = 0; i < n_dofs_face; ++i)
+              for (unsigned int q = 0; q < n_q_points; ++q)
+                {
+                  if (fe_iv[single_component].value(true, i, q) != 0)
+                    deallog << fe_iv[single_component].value(true, i, q)
+                            << "  ";
+                  if (fe_iv[single_component].value(false, i, q) != 0)
+                    deallog << fe_iv[single_component].value(false, i, q)
+                            << "  ";
+                  if (fe_iv[single_component].jump(i, q) != 0)
+                    deallog << fe_iv[single_component].jump(i, q) << "  ";
+                  if (fe_iv[single_component].average(i, q) != 0)
+                    deallog << fe_iv[single_component].average(i, q) << "  ";
+                  if (fe_iv[single_component].jump_gradient(i, q).norm() != 0)
+                    deallog << fe_iv[single_component].jump_gradient(i, q)
+                            << "  ";
+                  if (fe_iv[single_component].average_gradient(i, q).norm() !=
+                      0)
+                    deallog << fe_iv[single_component].average_gradient(i, q)
+                            << std::endl;
+
+
+                  Assert(fe_iv[single_component].value(true, i, q) ==
+                           fe_iv.shape_value(true, i, q, c),
+                         ExcInternalError());
+                  Assert(fe_iv[single_component].value(false, i, q) ==
+                           fe_iv.shape_value(false, i, q, c),
+                         ExcInternalError());
+                  Assert(fe_iv[single_component].jump(i, q) ==
+                           fe_iv.jump(i, q, c),
+                         ExcInternalError());
+                  Assert(fe_iv[single_component].average(i, q) ==
+                           fe_iv.average(i, q, c),
+                         ExcInternalError());
+                  Assert(fe_iv[single_component].average_hessian(i, q) ==
+                           fe_iv.average_hessian(i, q, c),
+                         ExcInternalError());
+                  Assert(fe_iv[single_component].jump_hessian(i, q) ==
+                           fe_iv.jump_hessian(i, q, c),
+                         ExcInternalError());
+
+                  Assert(fe_iv[single_component].jump_3rd_derivative(i, q) ==
+                           fe_iv.jump_3rd_derivative(i, q, c),
+                         ExcInternalError());
+
+
+
+                } // q loop
+
+          } // component loop
+        return;
+
+      } // at_boundary
+}
+
+template <int dim>
+void
+test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const SphericalManifold<dim> boundary;
+  tr.set_manifold(0, boundary);
+
+  FESystem<dim> fe(FE_Q<dim>(1),
+                   1,
+                   FE_DGQArbitraryNodes<dim>(QGauss<1>(2)),
+                   dim);
+  test(tr, fe);
+}
+
+
+int
+main()
+{
+  initlog();
+  deallog << std::setprecision(2);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/feinterface/fe_interface_view_01.output b/tests/feinterface/fe_interface_view_01.output
new file mode 100644 (file)
index 0000000..3cd2839
--- /dev/null
@@ -0,0 +1,239 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_DGQArbitraryNodes<2>(QGauss(2))^2]
+DEAL::0.79  0.79  0.79  1.1 -1.1  -1.2 -1.2
+DEAL::0.21  0.21  0.21  1.9 -1.9  -1.2 -1.2
+DEAL::0.64 -0.64  0.32 -0.32
+DEAL::0.28 -0.28  0.14 -0.14
+DEAL::0.21  0.21  0.21  -2.8 2.8  1.2 1.2
+DEAL::0.79  0.79  0.79  -4.5 4.5  1.2 1.2
+DEAL::0.17 -0.17  0.085 -0.085
+DEAL::1.0 -1.0  0.52 -0.52
+DEAL::0.64 -0.64  -0.32 0.32
+DEAL::0.28 -0.28  -0.14 0.14
+DEAL::0.17 -0.17  -0.085 0.085
+DEAL::1.0 -1.0  -0.52 0.52
+DEAL::1.4  1.4  0.68  -1.4 -4.3  -0.70 -2.2
+DEAL::0.0 -5.7  0.0 -2.9
+DEAL::-0.37  -0.37  -0.18  1.4 0.13  0.70 0.066
+DEAL::0.0 1.5  0.0 0.77
+DEAL::0.0 5.7  0.0 2.9
+DEAL::1.4  1.4  0.68  -2.3 8.0  -1.1 4.0
+DEAL::0.0 -1.5  0.0 -0.77
+DEAL::-0.37  -0.37  -0.18  2.3 -3.8  1.1 -1.9
+DEAL::1.4  -1.4  0.68  4.3 1.4  -2.2 -0.70
+DEAL::5.7 2.1e-16  -2.9 -1.0e-16
+DEAL::-5.7 -3.2e-17  2.9 1.6e-17
+DEAL::1.4  -1.4  0.68  -8.0 2.3  4.0 -1.1
+DEAL::-0.37  0.37  -0.18  -0.13 -1.4  0.066 0.70
+DEAL::-1.5 -5.6e-17  0.77 2.8e-17
+DEAL::1.5 8.6e-18  -0.77 -4.3e-18
+DEAL::-0.37  0.37  -0.18  3.8 -2.3  -1.9 1.1
+DEAL::1.4  1.4  0.68  -1.4 -4.3  -0.70 -2.2
+DEAL::0.0 -5.7  0.0 -2.9
+DEAL::-0.37  -0.37  -0.18  1.4 0.13  0.70 0.066
+DEAL::0.0 1.5  0.0 0.77
+DEAL::0.0 5.7  0.0 2.9
+DEAL::1.4  1.4  0.68  -2.3 8.0  -1.1 4.0
+DEAL::0.0 -1.5  0.0 -0.77
+DEAL::-0.37  -0.37  -0.18  2.3 -3.8  1.1 -1.9
+DEAL::1.4  -1.4  0.68  4.3 1.4  -2.2 -0.70
+DEAL::5.7 2.1e-16  -2.9 -1.0e-16
+DEAL::-5.7 -3.2e-17  2.9 1.6e-17
+DEAL::1.4  -1.4  0.68  -8.0 2.3  4.0 -1.1
+DEAL::-0.37  0.37  -0.18  -0.13 -1.4  0.066 0.70
+DEAL::-1.5 -5.6e-17  0.77 2.8e-17
+DEAL::1.5 8.6e-18  -0.77 -4.3e-18
+DEAL::-0.37  0.37  -0.18  3.8 -2.3  -1.9 1.1
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_DGQArbitraryNodes<3>(QGauss(2))^3]
+DEAL::0.62  0.62  0.62  -5.3 0.0 0.0  1.2 -1.9 -1.9
+DEAL::0.17  0.17  0.17  -0.061 -4.4e-16 -1.1e-16  -0.36 -1.9 -0.50
+DEAL::0.17  0.17  0.17  -0.061 1.1e-16 0.0  -0.36 -0.50 -1.9
+DEAL::0.045  0.045  0.045  0.35 0.0 0.0  -0.28 -0.50 -0.50
+DEAL::1.5 0.0 2.4e-17  0.74 0.0 1.2e-17
+DEAL::0.39 0.0 0.0  0.20 0.0 0.0
+DEAL::0.39 0.0 6.5e-18  0.20 0.0 3.2e-18
+DEAL::0.11 0.0 0.0  0.053 0.0 0.0
+DEAL::0.17  0.17  0.17  -0.061 0.0 0.0  -0.36 1.9 -0.50
+DEAL::0.62  0.62  0.62  -5.3 4.4e-16 -4.4e-16  1.2 1.9 -1.9
+DEAL::0.045  0.045  0.045  0.35 -1.1e-16 0.0  -0.28 0.50 -0.50
+DEAL::0.17  0.17  0.17  -0.061 0.0 0.0  -0.36 0.50 -1.9
+DEAL::0.39 0.0 6.5e-18  0.20 0.0 3.2e-18
+DEAL::1.5 0.0 0.0  0.74 0.0 0.0
+DEAL::0.11 0.0 1.7e-18  0.053 0.0 8.7e-19
+DEAL::0.39 0.0 0.0  0.20 0.0 0.0
+DEAL::0.17  0.17  0.17  -0.061 0.0 0.0  -0.36 -0.50 1.9
+DEAL::0.045  0.045  0.045  0.35 -1.1e-16 1.1e-16  -0.28 -0.50 0.50
+DEAL::0.62  0.62  0.62  -5.3 2.2e-16 0.0  1.2 -1.9 1.9
+DEAL::0.17  0.17  0.17  -0.061 0.0 0.0  -0.36 -1.9 0.50
+DEAL::0.39 0.0 6.5e-18  0.20 0.0 3.2e-18
+DEAL::0.11 0.0 0.0  0.053 0.0 0.0
+DEAL::1.5 0.0 2.4e-17  0.74 0.0 1.2e-17
+DEAL::0.39 0.0 0.0  0.20 0.0 0.0
+DEAL::0.045  0.045  0.045  0.35 0.0 0.0  -0.28 0.50 0.50
+DEAL::0.17  0.17  0.17  -0.061 1.1e-16 4.4e-16  -0.36 0.50 1.9
+DEAL::0.17  0.17  0.17  -0.061 -2.2e-16 0.0  -0.36 1.9 0.50
+DEAL::0.62  0.62  0.62  -5.3 0.0 0.0  1.2 1.9 1.9
+DEAL::0.11 0.0 1.7e-18  0.053 0.0 8.7e-19
+DEAL::0.39 0.0 0.0  0.20 0.0 0.0
+DEAL::0.39 0.0 6.5e-18  0.20 0.0 3.2e-18
+DEAL::1.5 0.0 0.0  0.74 0.0 0.0
+DEAL::1.7 0.0 2.8e-17  -0.85 0.0 -1.4e-17
+DEAL::0.46 0.0 0.0  -0.23 0.0 0.0
+DEAL::0.46 0.0 7.5e-18  -0.23 0.0 -3.7e-18
+DEAL::0.12 0.0 0.0  -0.061 0.0 0.0
+DEAL::0.46 0.0 7.5e-18  -0.23 0.0 -3.7e-18
+DEAL::1.7 0.0 0.0  -0.85 0.0 0.0
+DEAL::0.12 0.0 2.0e-18  -0.061 0.0 -1.0e-18
+DEAL::0.46 0.0 0.0  -0.23 0.0 0.0
+DEAL::0.46 0.0 7.5e-18  -0.23 0.0 -3.7e-18
+DEAL::0.12 0.0 0.0  -0.061 0.0 0.0
+DEAL::1.7 0.0 2.8e-17  -0.85 0.0 -1.4e-17
+DEAL::0.46 0.0 0.0  -0.23 0.0 0.0
+DEAL::0.12 0.0 2.0e-18  -0.061 0.0 -1.0e-18
+DEAL::0.46 0.0 0.0  -0.23 0.0 0.0
+DEAL::0.46 0.0 7.5e-18  -0.23 0.0 -3.7e-18
+DEAL::1.7 0.0 0.0  -0.85 0.0 0.0
+DEAL::1.4  1.4  0.68  -4.1 -5.6 -5.6  -2.0 -2.8 -2.8
+DEAL::0.0 -5.6 0.0  0.0 -2.8 0.0
+DEAL::0.0 0.0 -5.6  0.0 0.0 -2.8
+DEAL::-0.37  -0.37  -0.18  4.1 1.5 1.5  2.0 0.75 0.75
+DEAL::0.0 1.5 0.0  0.0 0.75 0.0
+DEAL::0.0 0.0 1.5  0.0 0.0 0.75
+DEAL::0.0 5.6 -9.2e-17  0.0 2.8 -4.6e-17
+DEAL::1.4  1.4  0.68  -4.1 5.6 -5.6  -2.0 2.8 -2.8
+DEAL::0.0 0.0 -5.6  0.0 0.0 -2.8
+DEAL::0.0 -1.5 2.5e-17  0.0 -0.75 1.2e-17
+DEAL::-0.37  -0.37  -0.18  4.1 -1.5 1.5  2.0 -0.75 0.75
+DEAL::0.0 0.0 1.5  0.0 0.0 0.75
+DEAL::0.0 0.0 5.6  0.0 0.0 2.8
+DEAL::1.4  1.4  0.68  -4.1 -5.6 5.6  -2.0 -2.8 2.8
+DEAL::0.0 -5.6 0.0  0.0 -2.8 0.0
+DEAL::0.0 0.0 -1.5  0.0 0.0 -0.75
+DEAL::-0.37  -0.37  -0.18  4.1 1.5 -1.5  2.0 0.75 -0.75
+DEAL::0.0 1.5 0.0  0.0 0.75 0.0
+DEAL::0.0 0.0 5.6  0.0 0.0 2.8
+DEAL::0.0 5.6 -9.2e-17  0.0 2.8 -4.6e-17
+DEAL::1.4  1.4  0.68  -4.1 5.6 5.6  -2.0 2.8 2.8
+DEAL::0.0 0.0 -1.5  0.0 0.0 -0.75
+DEAL::0.0 -1.5 2.5e-17  0.0 -0.75 1.2e-17
+DEAL::-0.37  -0.37  -0.18  4.1 -1.5 -1.5  2.0 -0.75 -0.75
+DEAL::-0.37  0.37  -0.18  6.5 -1.5 -1.5  -3.2 0.75 0.75
+DEAL::-0.87 -1.5 0.0  0.43 0.75 0.0
+DEAL::-0.87 0.0 -1.5  0.43 0.0 0.75
+DEAL::1.4  -1.4  0.68  -11. 5.6 5.6  5.6 -2.8 -2.8
+DEAL::3.2 5.6 0.0  -1.6 -2.8 0.0
+DEAL::3.2 0.0 5.6  -1.6 0.0 -2.8
+DEAL::-0.87 1.5 -3.9e-17  0.43 -0.75 1.9e-17
+DEAL::-0.37  0.37  -0.18  6.5 1.5 -1.5  -3.2 -0.75 0.75
+DEAL::-0.87 0.0 -1.5  0.43 0.0 0.75
+DEAL::3.2 -5.6 1.4e-16  -1.6 2.8 -7.2e-17
+DEAL::1.4  -1.4  0.68  -11. -5.6 5.6  5.6 2.8 -2.8
+DEAL::3.2 0.0 5.6  -1.6 0.0 -2.8
+DEAL::-0.87 0.0 1.5  0.43 0.0 -0.75
+DEAL::-0.37  0.37  -0.18  6.5 -1.5 1.5  -3.2 0.75 -0.75
+DEAL::-0.87 -1.5 0.0  0.43 0.75 0.0
+DEAL::3.2 0.0 -5.6  -1.6 0.0 2.8
+DEAL::1.4  -1.4  0.68  -11. 5.6 -5.6  5.6 -2.8 2.8
+DEAL::3.2 5.6 0.0  -1.6 -2.8 0.0
+DEAL::-0.87 0.0 1.5  0.43 0.0 -0.75
+DEAL::-0.87 1.5 -3.9e-17  0.43 -0.75 1.9e-17
+DEAL::-0.37  0.37  -0.18  6.5 1.5 1.5  -3.2 -0.75 -0.75
+DEAL::3.2 0.0 -5.6  -1.6 0.0 2.8
+DEAL::3.2 -5.6 1.4e-16  -1.6 2.8 -7.2e-17
+DEAL::1.4  -1.4  0.68  -11. -5.6 -5.6  5.6 2.8 2.8
+DEAL::1.4  1.4  0.68  -4.1 -5.6 -5.6  -2.0 -2.8 -2.8
+DEAL::0.0 -5.6 0.0  0.0 -2.8 0.0
+DEAL::0.0 0.0 -5.6  0.0 0.0 -2.8
+DEAL::-0.37  -0.37  -0.18  4.1 1.5 1.5  2.0 0.75 0.75
+DEAL::0.0 1.5 0.0  0.0 0.75 0.0
+DEAL::0.0 0.0 1.5  0.0 0.0 0.75
+DEAL::0.0 5.6 -9.2e-17  0.0 2.8 -4.6e-17
+DEAL::1.4  1.4  0.68  -4.1 5.6 -5.6  -2.0 2.8 -2.8
+DEAL::0.0 0.0 -5.6  0.0 0.0 -2.8
+DEAL::0.0 -1.5 2.5e-17  0.0 -0.75 1.2e-17
+DEAL::-0.37  -0.37  -0.18  4.1 -1.5 1.5  2.0 -0.75 0.75
+DEAL::0.0 0.0 1.5  0.0 0.0 0.75
+DEAL::0.0 0.0 5.6  0.0 0.0 2.8
+DEAL::1.4  1.4  0.68  -4.1 -5.6 5.6  -2.0 -2.8 2.8
+DEAL::0.0 -5.6 0.0  0.0 -2.8 0.0
+DEAL::0.0 0.0 -1.5  0.0 0.0 -0.75
+DEAL::-0.37  -0.37  -0.18  4.1 1.5 -1.5  2.0 0.75 -0.75
+DEAL::0.0 1.5 0.0  0.0 0.75 0.0
+DEAL::0.0 0.0 5.6  0.0 0.0 2.8
+DEAL::0.0 5.6 -9.2e-17  0.0 2.8 -4.6e-17
+DEAL::1.4  1.4  0.68  -4.1 5.6 5.6  -2.0 2.8 2.8
+DEAL::0.0 0.0 -1.5  0.0 0.0 -0.75
+DEAL::0.0 -1.5 2.5e-17  0.0 -0.75 1.2e-17
+DEAL::-0.37  -0.37  -0.18  4.1 -1.5 -1.5  2.0 -0.75 -0.75
+DEAL::-0.37  0.37  -0.18  6.5 -1.5 -1.5  -3.2 0.75 0.75
+DEAL::-0.87 -1.5 0.0  0.43 0.75 0.0
+DEAL::-0.87 0.0 -1.5  0.43 0.0 0.75
+DEAL::1.4  -1.4  0.68  -11. 5.6 5.6  5.6 -2.8 -2.8
+DEAL::3.2 5.6 0.0  -1.6 -2.8 0.0
+DEAL::3.2 0.0 5.6  -1.6 0.0 -2.8
+DEAL::-0.87 1.5 -3.9e-17  0.43 -0.75 1.9e-17
+DEAL::-0.37  0.37  -0.18  6.5 1.5 -1.5  -3.2 -0.75 0.75
+DEAL::-0.87 0.0 -1.5  0.43 0.0 0.75
+DEAL::3.2 -5.6 1.4e-16  -1.6 2.8 -7.2e-17
+DEAL::1.4  -1.4  0.68  -11. -5.6 5.6  5.6 2.8 -2.8
+DEAL::3.2 0.0 5.6  -1.6 0.0 -2.8
+DEAL::-0.87 0.0 1.5  0.43 0.0 -0.75
+DEAL::-0.37  0.37  -0.18  6.5 -1.5 1.5  -3.2 0.75 -0.75
+DEAL::-0.87 -1.5 0.0  0.43 0.75 0.0
+DEAL::3.2 0.0 -5.6  -1.6 0.0 2.8
+DEAL::1.4  -1.4  0.68  -11. 5.6 -5.6  5.6 -2.8 2.8
+DEAL::3.2 5.6 0.0  -1.6 -2.8 0.0
+DEAL::-0.87 0.0 1.5  0.43 0.0 -0.75
+DEAL::-0.87 1.5 -3.9e-17  0.43 -0.75 1.9e-17
+DEAL::-0.37  0.37  -0.18  6.5 1.5 1.5  -3.2 -0.75 -0.75
+DEAL::3.2 0.0 -5.6  -1.6 0.0 2.8
+DEAL::3.2 -5.6 1.4e-16  -1.6 2.8 -7.2e-17
+DEAL::1.4  -1.4  0.68  -11. -5.6 -5.6  5.6 2.8 2.8
+DEAL::1.4  1.4  0.68  -4.1 -5.6 -5.6  -2.0 -2.8 -2.8
+DEAL::0.0 -5.6 0.0  0.0 -2.8 0.0
+DEAL::0.0 0.0 -5.6  0.0 0.0 -2.8
+DEAL::-0.37  -0.37  -0.18  4.1 1.5 1.5  2.0 0.75 0.75
+DEAL::0.0 1.5 0.0  0.0 0.75 0.0
+DEAL::0.0 0.0 1.5  0.0 0.0 0.75
+DEAL::0.0 5.6 -9.2e-17  0.0 2.8 -4.6e-17
+DEAL::1.4  1.4  0.68  -4.1 5.6 -5.6  -2.0 2.8 -2.8
+DEAL::0.0 0.0 -5.6  0.0 0.0 -2.8
+DEAL::0.0 -1.5 2.5e-17  0.0 -0.75 1.2e-17
+DEAL::-0.37  -0.37  -0.18  4.1 -1.5 1.5  2.0 -0.75 0.75
+DEAL::0.0 0.0 1.5  0.0 0.0 0.75
+DEAL::0.0 0.0 5.6  0.0 0.0 2.8
+DEAL::1.4  1.4  0.68  -4.1 -5.6 5.6  -2.0 -2.8 2.8
+DEAL::0.0 -5.6 0.0  0.0 -2.8 0.0
+DEAL::0.0 0.0 -1.5  0.0 0.0 -0.75
+DEAL::-0.37  -0.37  -0.18  4.1 1.5 -1.5  2.0 0.75 -0.75
+DEAL::0.0 1.5 0.0  0.0 0.75 0.0
+DEAL::0.0 0.0 5.6  0.0 0.0 2.8
+DEAL::0.0 5.6 -9.2e-17  0.0 2.8 -4.6e-17
+DEAL::1.4  1.4  0.68  -4.1 5.6 5.6  -2.0 2.8 2.8
+DEAL::0.0 0.0 -1.5  0.0 0.0 -0.75
+DEAL::0.0 -1.5 2.5e-17  0.0 -0.75 1.2e-17
+DEAL::-0.37  -0.37  -0.18  4.1 -1.5 -1.5  2.0 -0.75 -0.75
+DEAL::-0.37  0.37  -0.18  6.5 -1.5 -1.5  -3.2 0.75 0.75
+DEAL::-0.87 -1.5 0.0  0.43 0.75 0.0
+DEAL::-0.87 0.0 -1.5  0.43 0.0 0.75
+DEAL::1.4  -1.4  0.68  -11. 5.6 5.6  5.6 -2.8 -2.8
+DEAL::3.2 5.6 0.0  -1.6 -2.8 0.0
+DEAL::3.2 0.0 5.6  -1.6 0.0 -2.8
+DEAL::-0.87 1.5 -3.9e-17  0.43 -0.75 1.9e-17
+DEAL::-0.37  0.37  -0.18  6.5 1.5 -1.5  -3.2 -0.75 0.75
+DEAL::-0.87 0.0 -1.5  0.43 0.0 0.75
+DEAL::3.2 -5.6 1.4e-16  -1.6 2.8 -7.2e-17
+DEAL::1.4  -1.4  0.68  -11. -5.6 5.6  5.6 2.8 -2.8
+DEAL::3.2 0.0 5.6  -1.6 0.0 -2.8
+DEAL::-0.87 0.0 1.5  0.43 0.0 -0.75
+DEAL::-0.37  0.37  -0.18  6.5 -1.5 1.5  -3.2 0.75 -0.75
+DEAL::-0.87 -1.5 0.0  0.43 0.75 0.0
+DEAL::3.2 0.0 -5.6  -1.6 0.0 2.8
+DEAL::1.4  -1.4  0.68  -11. 5.6 -5.6  5.6 -2.8 2.8
+DEAL::3.2 5.6 0.0  -1.6 -2.8 0.0
+DEAL::-0.87 0.0 1.5  0.43 0.0 -0.75
+DEAL::-0.87 1.5 -3.9e-17  0.43 -0.75 1.9e-17
+DEAL::-0.37  0.37  -0.18  6.5 1.5 1.5  -3.2 -0.75 -0.75
+DEAL::3.2 0.0 -5.6  -1.6 0.0 2.8
+DEAL::3.2 -5.6 1.4e-16  -1.6 2.8 -7.2e-17
+DEAL::1.4  -1.4  0.68  -11. -5.6 -5.6  5.6 2.8 2.8
diff --git a/tests/feinterface/fe_interface_view_02.cc b/tests/feinterface/fe_interface_view_02.cc
new file mode 100644 (file)
index 0000000..1929f97
--- /dev/null
@@ -0,0 +1,166 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2007 - 2020 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+
+
+// test FEInterfaceViews and extractor classes. these tests use a primitive
+// finite element and vector extractors. To simplify the output, we skip writing
+// results of high-order tensors and zeros.
+
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/dofs/dof_handler.h>
+
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/fe/fe_interface_values.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_q1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/manifold_lib.h>
+
+#include <deal.II/lac/vector.h>
+
+#include <iostream>
+
+#include "../tests.h"
+
+template <int dim>
+void
+test(const Triangulation<dim> &tr, const FiniteElement<dim> &fe)
+{
+  DoFHandler<dim> dof(tr);
+  dof.distribute_dofs(fe);
+
+  deallog << "FE=" << fe.get_name() << std::endl;
+
+  const QGauss<dim - 1>  face_quadrature(2);
+  FEInterfaceValues<dim> fe_iv(fe,
+                               face_quadrature,
+                               update_values | update_gradients |
+                                 update_quadrature_points | update_hessians |
+                                 update_3rd_derivatives);
+  auto                   cell = dof.begin_active();
+
+
+  for (const auto f : GeometryInfo<dim>::face_indices())
+    if (!cell->face(f)->at_boundary())
+      {
+        fe_iv.reinit(cell,
+                     f,
+                     numbers::invalid_unsigned_int,
+                     cell->neighbor(f),
+                     cell->neighbor_of_neighbor(f),
+                     numbers::invalid_unsigned_int);
+        const auto &       q_points    = fe_iv.get_quadrature_points();
+        const unsigned int n_q_points  = q_points.size();
+        const unsigned int n_dofs_face = fe_iv.n_current_interface_dofs();
+
+        for (unsigned int c = 0; c < fe.n_components(); ++c)
+          {
+            // use a vector extractor if there
+            // are sufficiently many components
+            // left after the current component
+            // 'c'
+            if (c + dim <= fe.n_components())
+              {
+                FEValuesExtractors::Vector vec_components(c);
+                for (unsigned int i = 0; i < n_dofs_face; ++i)
+                  for (unsigned int q = 0; q < n_q_points; ++q)
+                    {
+                      if (fe_iv[vec_components].value(true, i, q).norm() != 0)
+                        deallog << fe_iv[vec_components].value(true, i, q)
+                                << "  ";
+                      if (fe_iv[vec_components].value(false, i, q).norm() != 0)
+                        deallog << fe_iv[vec_components].value(false, i, q)
+                                << "  ";
+                      if (fe_iv[vec_components].jump(i, q).norm() != 0)
+                        deallog << fe_iv[vec_components].jump(i, q) << "  ";
+                      if (fe_iv[vec_components].average(i, q).norm() != 0)
+                        deallog << fe_iv[vec_components].average(i, q) << "  ";
+                      if (fe_iv[vec_components].jump_gradient(i, q).norm() != 0)
+                        deallog << fe_iv[vec_components].jump_gradient(i, q)
+                                << "  ";
+                      if (fe_iv[vec_components].average_gradient(i, q).norm() !=
+                          0)
+                        deallog << fe_iv[vec_components].average_gradient(i, q)
+                                << std::endl;
+
+                      for (unsigned int d = 0; d < dim; ++d)
+                        {
+                          Assert(fe_iv[vec_components].value(true, i, q)[d] ==
+                                   fe_iv.shape_value(true, i, q, c + d),
+                                 ExcInternalError());
+                          Assert(fe_iv[vec_components].value(false, i, q)[d] ==
+                                   fe_iv.shape_value(false, i, q, c + d),
+                                 ExcInternalError());
+                          Assert(fe_iv[vec_components].jump(i, q)[d] ==
+                                   fe_iv.jump(i, q, c + d),
+                                 ExcInternalError());
+                          Assert(fe_iv[vec_components].average(i, q)[d] ==
+                                   fe_iv.average(i, q, c + d),
+                                 ExcInternalError());
+                          Assert(fe_iv[vec_components].average_hessian(i,
+                                                                       q)[d] ==
+                                   fe_iv.average_hessian(i, q, c + d),
+                                 ExcInternalError());
+                          Assert(fe_iv[vec_components].jump_hessian(i, q)[d] ==
+                                   fe_iv.jump_hessian(i, q, c + d),
+                                 ExcInternalError());
+
+                          Assert(fe_iv[vec_components].jump_3rd_derivative(
+                                   i, q)[d] ==
+                                   fe_iv.jump_3rd_derivative(i, q, c + d),
+                                 ExcInternalError());
+                        }
+                    }
+              }
+          }
+        return;
+      } // at boundary
+}
+
+
+
+template <int dim>
+void
+test_hyper_sphere()
+{
+  Triangulation<dim> tr;
+  GridGenerator::hyper_ball(tr);
+
+  static const SphericalManifold<dim> boundary;
+  tr.set_manifold(0, boundary);
+
+  FESystem<dim> fe(FE_Q<dim>(1),
+                   1,
+                   FE_DGQArbitraryNodes<dim>(QGauss<1>(2)),
+                   dim);
+  test(tr, fe);
+}
+
+
+int
+main()
+{
+  initlog();
+  deallog << std::setprecision(2);
+
+  test_hyper_sphere<2>();
+  test_hyper_sphere<3>();
+}
diff --git a/tests/feinterface/fe_interface_view_02.output b/tests/feinterface/fe_interface_view_02.output
new file mode 100644 (file)
index 0000000..22814a7
--- /dev/null
@@ -0,0 +1,351 @@
+
+DEAL::FE=FESystem<2>[FE_Q<2>(1)-FE_DGQArbitraryNodes<2>(QGauss(2))^2]
+DEAL::0.79 0.0  0.79 0.0  0.79 0.0  1.1 -1.1 0.0 0.0  -1.2 -1.2 0.0 0.0
+DEAL::0.21 0.0  0.21 0.0  0.21 0.0  1.9 -1.9 0.0 0.0  -1.2 -1.2 0.0 0.0
+DEAL::0.64 -0.64 0.0 0.0  0.32 -0.32 0.0 0.0
+DEAL::0.28 -0.28 0.0 0.0  0.14 -0.14 0.0 0.0
+DEAL::0.21 0.0  0.21 0.0  0.21 0.0  -2.8 2.8 0.0 0.0  1.2 1.2 0.0 0.0
+DEAL::0.79 0.0  0.79 0.0  0.79 0.0  -4.5 4.5 0.0 0.0  1.2 1.2 0.0 0.0
+DEAL::0.17 -0.17 0.0 0.0  0.085 -0.085 0.0 0.0
+DEAL::1.0 -1.0 0.0 0.0  0.52 -0.52 0.0 0.0
+DEAL::0.0 1.4  0.0 1.4  0.0 0.68  0.0 0.0 -1.4 -4.3  0.0 0.0 -0.70 -2.2
+DEAL::0.0 0.0 0.0 -5.7  0.0 0.0 0.0 -2.9
+DEAL::0.0 -0.37  0.0 -0.37  0.0 -0.18  0.0 0.0 1.4 0.13  0.0 0.0 0.70 0.066
+DEAL::0.0 0.0 0.0 1.5  0.0 0.0 0.0 0.77
+DEAL::0.0 0.0 0.0 5.7  0.0 0.0 0.0 2.9
+DEAL::0.0 1.4  0.0 1.4  0.0 0.68  0.0 0.0 -2.3 8.0  0.0 0.0 -1.1 4.0
+DEAL::0.0 0.0 0.0 -1.5  0.0 0.0 0.0 -0.77
+DEAL::0.0 -0.37  0.0 -0.37  0.0 -0.18  0.0 0.0 2.3 -3.8  0.0 0.0 1.1 -1.9
+DEAL::0.64 -0.64 0.0 0.0  -0.32 0.32 0.0 0.0
+DEAL::0.28 -0.28 0.0 0.0  -0.14 0.14 0.0 0.0
+DEAL::0.17 -0.17 0.0 0.0  -0.085 0.085 0.0 0.0
+DEAL::1.0 -1.0 0.0 0.0  -0.52 0.52 0.0 0.0
+DEAL::0.0 1.4  0.0 -1.4  0.0 0.68  0.0 0.0 4.3 1.4  0.0 0.0 -2.2 -0.70
+DEAL::0.0 0.0 5.7 2.1e-16  0.0 0.0 -2.9 -1.0e-16
+DEAL::0.0 0.0 -5.7 -3.2e-17  0.0 0.0 2.9 1.6e-17
+DEAL::0.0 1.4  0.0 -1.4  0.0 0.68  0.0 0.0 -8.0 2.3  0.0 0.0 4.0 -1.1
+DEAL::0.0 -0.37  0.0 0.37  0.0 -0.18  0.0 0.0 -0.13 -1.4  0.0 0.0 0.066 0.70
+DEAL::0.0 0.0 -1.5 -5.6e-17  0.0 0.0 0.77 2.8e-17
+DEAL::0.0 0.0 1.5 8.6e-18  0.0 0.0 -0.77 -4.3e-18
+DEAL::0.0 -0.37  0.0 0.37  0.0 -0.18  0.0 0.0 3.8 -2.3  0.0 0.0 -1.9 1.1
+DEAL::1.4 0.0  1.4 0.0  0.68 0.0  -1.4 -4.3 0.0 0.0  -0.70 -2.2 0.0 0.0
+DEAL::0.0 -5.7 0.0 0.0  0.0 -2.9 0.0 0.0
+DEAL::-0.37 0.0  -0.37 0.0  -0.18 0.0  1.4 0.13 0.0 0.0  0.70 0.066 0.0 0.0
+DEAL::0.0 1.5 0.0 0.0  0.0 0.77 0.0 0.0
+DEAL::0.0 5.7 0.0 0.0  0.0 2.9 0.0 0.0
+DEAL::1.4 0.0  1.4 0.0  0.68 0.0  -2.3 8.0 0.0 0.0  -1.1 4.0 0.0 0.0
+DEAL::0.0 -1.5 0.0 0.0  0.0 -0.77 0.0 0.0
+DEAL::-0.37 0.0  -0.37 0.0  -0.18 0.0  2.3 -3.8 0.0 0.0  1.1 -1.9 0.0 0.0
+DEAL::0.0 1.4  0.0 1.4  0.0 0.68  0.0 0.0 -1.4 -4.3  0.0 0.0 -0.70 -2.2
+DEAL::0.0 0.0 0.0 -5.7  0.0 0.0 0.0 -2.9
+DEAL::0.0 -0.37  0.0 -0.37  0.0 -0.18  0.0 0.0 1.4 0.13  0.0 0.0 0.70 0.066
+DEAL::0.0 0.0 0.0 1.5  0.0 0.0 0.0 0.77
+DEAL::0.0 0.0 0.0 5.7  0.0 0.0 0.0 2.9
+DEAL::0.0 1.4  0.0 1.4  0.0 0.68  0.0 0.0 -2.3 8.0  0.0 0.0 -1.1 4.0
+DEAL::0.0 0.0 0.0 -1.5  0.0 0.0 0.0 -0.77
+DEAL::0.0 -0.37  0.0 -0.37  0.0 -0.18  0.0 0.0 2.3 -3.8  0.0 0.0 1.1 -1.9
+DEAL::1.4 0.0  -1.4 0.0  0.68 0.0  4.3 1.4 0.0 0.0  -2.2 -0.70 0.0 0.0
+DEAL::5.7 2.1e-16 0.0 0.0  -2.9 -1.0e-16 0.0 0.0
+DEAL::-5.7 -3.2e-17 0.0 0.0  2.9 1.6e-17 0.0 0.0
+DEAL::1.4 0.0  -1.4 0.0  0.68 0.0  -8.0 2.3 0.0 0.0  4.0 -1.1 0.0 0.0
+DEAL::-0.37 0.0  0.37 0.0  -0.18 0.0  -0.13 -1.4 0.0 0.0  0.066 0.70 0.0 0.0
+DEAL::-1.5 -5.6e-17 0.0 0.0  0.77 2.8e-17 0.0 0.0
+DEAL::1.5 8.6e-18 0.0 0.0  -0.77 -4.3e-18 0.0 0.0
+DEAL::-0.37 0.0  0.37 0.0  -0.18 0.0  3.8 -2.3 0.0 0.0  -1.9 1.1 0.0 0.0
+DEAL::0.0 1.4  0.0 -1.4  0.0 0.68  0.0 0.0 4.3 1.4  0.0 0.0 -2.2 -0.70
+DEAL::0.0 0.0 5.7 2.1e-16  0.0 0.0 -2.9 -1.0e-16
+DEAL::0.0 0.0 -5.7 -3.2e-17  0.0 0.0 2.9 1.6e-17
+DEAL::0.0 1.4  0.0 -1.4  0.0 0.68  0.0 0.0 -8.0 2.3  0.0 0.0 4.0 -1.1
+DEAL::0.0 -0.37  0.0 0.37  0.0 -0.18  0.0 0.0 -0.13 -1.4  0.0 0.0 0.066 0.70
+DEAL::0.0 0.0 -1.5 -5.6e-17  0.0 0.0 0.77 2.8e-17
+DEAL::0.0 0.0 1.5 8.6e-18  0.0 0.0 -0.77 -4.3e-18
+DEAL::0.0 -0.37  0.0 0.37  0.0 -0.18  0.0 0.0 3.8 -2.3  0.0 0.0 -1.9 1.1
+DEAL::FE=FESystem<3>[FE_Q<3>(1)-FE_DGQArbitraryNodes<3>(QGauss(2))^3]
+DEAL::0.62 0.0 0.0  0.62 0.0 0.0  0.62 0.0 0.0  -5.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  1.2 -1.9 -1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 -4.4e-16 -1.1e-16 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 -1.9 -0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 1.1e-16 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 -0.50 -1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.045 0.0 0.0  0.045 0.0 0.0  0.045 0.0 0.0  0.35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.28 -0.50 -0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.5 0.0 2.4e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.74 0.0 1.2e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 6.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 3.2e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.053 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 1.9 -0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.62 0.0 0.0  0.62 0.0 0.0  0.62 0.0 0.0  -5.3 4.4e-16 -4.4e-16 0.0 0.0 0.0 0.0 0.0 0.0  1.2 1.9 -1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.045 0.0 0.0  0.045 0.0 0.0  0.045 0.0 0.0  0.35 -1.1e-16 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.28 0.50 -0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 0.50 -1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 6.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 3.2e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.11 0.0 1.7e-18 0.0 0.0 0.0 0.0 0.0 0.0  0.053 0.0 8.7e-19 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 -0.50 1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.045 0.0 0.0  0.045 0.0 0.0  0.045 0.0 0.0  0.35 -1.1e-16 1.1e-16 0.0 0.0 0.0 0.0 0.0 0.0  -0.28 -0.50 0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.62 0.0 0.0  0.62 0.0 0.0  0.62 0.0 0.0  -5.3 2.2e-16 0.0 0.0 0.0 0.0 0.0 0.0 0.0  1.2 -1.9 1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 -1.9 0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 6.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 3.2e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.053 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.5 0.0 2.4e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.74 0.0 1.2e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.045 0.0 0.0  0.045 0.0 0.0  0.045 0.0 0.0  0.35 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.28 0.50 0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 1.1e-16 4.4e-16 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 0.50 1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.17 0.0 0.0  0.17 0.0 0.0  0.17 0.0 0.0  -0.061 -2.2e-16 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.36 1.9 0.50 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.62 0.0 0.0  0.62 0.0 0.0  0.62 0.0 0.0  -5.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  1.2 1.9 1.9 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.11 0.0 1.7e-18 0.0 0.0 0.0 0.0 0.0 0.0  0.053 0.0 8.7e-19 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.39 0.0 6.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  0.20 0.0 3.2e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.74 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 -5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 -2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 5.6 -9.2e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 2.8 -4.6e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -1.5 2.5e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -0.75 1.2e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 -1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 -0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 -5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 -2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 5.6 -9.2e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 2.8 -4.6e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -1.5 2.5e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -0.75 1.2e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 -1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 -0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 -5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 -2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6 -9.2e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8 -4.6e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5 2.5e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75 1.2e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 -1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 -0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 -5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 -2.8 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.75 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6 -9.2e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8 -4.6e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 2.8 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5 2.5e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75 1.2e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 -1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 -0.75 -0.75
+DEAL::1.7 0.0 2.8e-17 0.0 0.0 0.0 0.0 0.0 0.0  -0.85 0.0 -1.4e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 7.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 -3.7e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.061 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 7.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 -3.7e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.12 0.0 2.0e-18 0.0 0.0 0.0 0.0 0.0 0.0  -0.061 0.0 -1.0e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 7.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 -3.7e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.061 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.7 0.0 2.8e-17 0.0 0.0 0.0 0.0 0.0 0.0  -0.85 0.0 -1.4e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.12 0.0 2.0e-18 0.0 0.0 0.0 0.0 0.0 0.0  -0.061 0.0 -1.0e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.46 0.0 7.5e-18 0.0 0.0 0.0 0.0 0.0 0.0  -0.23 0.0 -3.7e-18 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -0.85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 -1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 -1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. 5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 -2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 1.5 -3.9e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.43 -0.75 1.9e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 -0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 -5.6 1.4e-16 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 2.8 -7.2e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. -5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 -1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 -1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. 5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 -2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 1.5 -3.9e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.43 -0.75 1.9e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 -0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 -5.6 1.4e-16 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 2.8 -7.2e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. -5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 -1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 -1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 0.75
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. 5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 -2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 1.5 -3.9e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.43 -0.75 1.9e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 -0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 -5.6 1.4e-16  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 2.8 -7.2e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. -5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 -0.75
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 -1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 0.75 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 -1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 2.8
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. 5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 -2.8 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 1.5 -3.9e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.43 -0.75 1.9e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 -0.75 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 -5.6 1.4e-16  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 2.8 -7.2e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. -5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 2.8 2.8
+DEAL::1.4 0.0 0.0  1.4 0.0 0.0  0.68 0.0 0.0  -4.1 -5.6 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  -2.0 -2.8 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 -5.6 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.0 -2.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  -0.37 0.0 0.0  -0.18 0.0 0.0  4.1 1.5 1.5 0.0 0.0 0.0 0.0 0.0 0.0  2.0 0.75 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.75 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 5.6 -9.2e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.0 2.8 -4.6e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  1.4 0.0 0.0  0.68 0.0 0.0  -4.1 5.6 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  -2.0 2.8 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 -1.5 2.5e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.0 -0.75 1.2e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  -0.37 0.0 0.0  -0.18 0.0 0.0  4.1 -1.5 1.5 0.0 0.0 0.0 0.0 0.0 0.0  2.0 -0.75 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 5.6 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  1.4 0.0 0.0  0.68 0.0 0.0  -4.1 -5.6 5.6 0.0 0.0 0.0 0.0 0.0 0.0  -2.0 -2.8 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 -5.6 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.0 -2.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  -0.37 0.0 0.0  -0.18 0.0 0.0  4.1 1.5 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  2.0 0.75 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.75 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 5.6 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 5.6 -9.2e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.0 2.8 -4.6e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  1.4 0.0 0.0  0.68 0.0 0.0  -4.1 5.6 5.6 0.0 0.0 0.0 0.0 0.0 0.0  -2.0 2.8 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.0 0.0 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 -1.5 2.5e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.0 -0.75 1.2e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  -0.37 0.0 0.0  -0.18 0.0 0.0  4.1 -1.5 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  2.0 -0.75 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 -5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 -2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 5.6 -9.2e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 2.8 -4.6e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -1.5 2.5e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -0.75 1.2e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 -1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 -0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 -5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 -2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 5.6 -9.2e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 2.8 -4.6e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -4.1 5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -2.0 2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.0 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 0.0 -1.5 2.5e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.0 -0.75 1.2e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 -0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 4.1 -1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 2.0 -0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 -5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 -2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6 -9.2e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8 -4.6e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5 2.5e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75 1.2e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 -1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 -0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 -5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 -2.8 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.75 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.6 -9.2e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.8 -4.6e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -4.1 5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -2.0 2.8 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.5 2.5e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.75 1.2e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 -0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 4.1 -1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 2.0 -0.75 -0.75
+DEAL::-0.37 0.0 0.0  0.37 0.0 0.0  -0.18 0.0 0.0  6.5 -1.5 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  -3.2 0.75 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 -1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.43 0.75 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 0.0 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.43 0.0 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  -1.4 0.0 0.0  0.68 0.0 0.0  -11. 5.6 5.6 0.0 0.0 0.0 0.0 0.0 0.0  5.6 -2.8 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 5.6 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 -2.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 0.0 5.6 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 0.0 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 1.5 -3.9e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.43 -0.75 1.9e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  0.37 0.0 0.0  -0.18 0.0 0.0  6.5 1.5 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  -3.2 -0.75 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 0.0 -1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.43 0.0 0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 -5.6 1.4e-16 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 2.8 -7.2e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  -1.4 0.0 0.0  0.68 0.0 0.0  -11. -5.6 5.6 0.0 0.0 0.0 0.0 0.0 0.0  5.6 2.8 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 0.0 5.6 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 0.0 -2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.43 0.0 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  0.37 0.0 0.0  -0.18 0.0 0.0  6.5 -1.5 1.5 0.0 0.0 0.0 0.0 0.0 0.0  -3.2 0.75 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 -1.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0  0.43 0.75 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 0.0 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 0.0 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  -1.4 0.0 0.0  0.68 0.0 0.0  -11. 5.6 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  5.6 -2.8 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 5.6 0.0 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 -2.8 0.0 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 0.0 1.5 0.0 0.0 0.0 0.0 0.0 0.0  0.43 0.0 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.87 1.5 -3.9e-17 0.0 0.0 0.0 0.0 0.0 0.0  0.43 -0.75 1.9e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::-0.37 0.0 0.0  0.37 0.0 0.0  -0.18 0.0 0.0  6.5 1.5 1.5 0.0 0.0 0.0 0.0 0.0 0.0  -3.2 -0.75 -0.75 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 0.0 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 0.0 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::3.2 -5.6 1.4e-16 0.0 0.0 0.0 0.0 0.0 0.0  -1.6 2.8 -7.2e-17 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::1.4 0.0 0.0  -1.4 0.0 0.0  0.68 0.0 0.0  -11. -5.6 -5.6 0.0 0.0 0.0 0.0 0.0 0.0  5.6 2.8 2.8 0.0 0.0 0.0 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 -1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 -1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. 5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 -2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 1.5 -3.9e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.43 -0.75 1.9e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 1.5 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 -0.75 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 -1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 -5.6 1.4e-16 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 2.8 -7.2e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. -5.6 5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 2.8 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 -2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 -1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 -1.5 0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.75 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. 5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 -2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 5.6 0.0 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 -2.8 0.0 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 0.0 1.5 0.0 0.0 0.0  0.0 0.0 0.0 0.43 0.0 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 -0.87 1.5 -3.9e-17 0.0 0.0 0.0  0.0 0.0 0.0 0.43 -0.75 1.9e-17 0.0 0.0 0.0
+DEAL::0.0 -0.37 0.0  0.0 0.37 0.0  0.0 -0.18 0.0  0.0 0.0 0.0 6.5 1.5 1.5 0.0 0.0 0.0  0.0 0.0 0.0 -3.2 -0.75 -0.75 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 0.0 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 0.0 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 0.0 3.2 -5.6 1.4e-16 0.0 0.0 0.0  0.0 0.0 0.0 -1.6 2.8 -7.2e-17 0.0 0.0 0.0
+DEAL::0.0 1.4 0.0  0.0 -1.4 0.0  0.0 0.68 0.0  0.0 0.0 0.0 -11. -5.6 -5.6 0.0 0.0 0.0  0.0 0.0 0.0 5.6 2.8 2.8 0.0 0.0 0.0
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 -1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 -1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 0.75
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. 5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 -2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 1.5 -3.9e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.43 -0.75 1.9e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 1.5 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 -0.75 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 -1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 -5.6 1.4e-16  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 2.8 -7.2e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. -5.6 5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 2.8 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 -2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 -0.75
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 -1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 0.75 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 -1.5 0.0  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.75 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 2.8
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. 5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 -2.8 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 5.6 0.0  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 -2.8 0.0
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 0.0 1.5  0.0 0.0 0.0 0.0 0.0 0.0 0.43 0.0 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 -0.87 1.5 -3.9e-17  0.0 0.0 0.0 0.0 0.0 0.0 0.43 -0.75 1.9e-17
+DEAL::0.0 0.0 -0.37  0.0 0.0 0.37  0.0 0.0 -0.18  0.0 0.0 0.0 0.0 0.0 0.0 6.5 1.5 1.5  0.0 0.0 0.0 0.0 0.0 0.0 -3.2 -0.75 -0.75
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 0.0 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 0.0 2.8
+DEAL::0.0 0.0 0.0 0.0 0.0 0.0 3.2 -5.6 1.4e-16  0.0 0.0 0.0 0.0 0.0 0.0 -1.6 2.8 -7.2e-17
+DEAL::0.0 0.0 1.4  0.0 0.0 -1.4  0.0 0.0 0.68  0.0 0.0 0.0 0.0 0.0 0.0 -11. -5.6 -5.6  0.0 0.0 0.0 0.0 0.0 0.0 5.6 2.8 2.8

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.