]> https://gitweb.dealii.org/ - dealii.git/commitdiff
add interpolate signatures to FE_RannacherTurek 1614/head
authorPatrick Esser <Patrick.Esser@gmx.net>
Tue, 15 Sep 2015 15:49:45 +0000 (17:49 +0200)
committerPatrick Esser <Patrick.Esser@gmx.net>
Wed, 16 Sep 2015 09:45:41 +0000 (11:45 +0200)
Implemented signatures of interpolate functions which allow
interpolation from set of vector values.

include/deal.II/fe/fe_rannacher_turek.h
source/fe/fe_rannacher_turek.cc
tests/fe/fe_rannacher_turek_03.cc [new file with mode: 0644]
tests/fe/fe_rannacher_turek_03.output [new file with mode: 0644]

index 52dc09eed93489c1e433ddf03dc937362753d89f..2f0c942df4fdaa2e412bbcca64d9cef52e3baa3a 100644 (file)
@@ -71,6 +71,13 @@ public:
   virtual void interpolate(
     std::vector<double> &local_dofs,
     const std::vector<double> &values) const;
+  virtual void interpolate(
+    std::vector<double> &local_dofs,
+    const std::vector<Vector<double> > &values,
+    unsigned int offset) const;
+  virtual void interpolate(
+    std::vector<double> &local_dofs,
+    const VectorSlice<const std::vector<std::vector<double> > > &values) const;
 private:
   /**
    * Degree of this element.
index 4f901e52d0415522fd7af6000787b4ab6270daa1..17802be592cfb37ad842c05791393b3b61e45e4e 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <deal.II/fe/fe_rannacher_turek.h>
 #include <deal.II/base/quadrature_lib.h>
+#include <deal.II/lac/vector.h>
 #include <algorithm>
 
 #include <sstream>
@@ -62,7 +63,7 @@ std::string FE_RannacherTurek<dim>::get_name() const
   std::ostringstream namebuf;
   namebuf << "FE_RannacherTurek"
           << "<" << dim << ">"
-          << "(" << this->degree << ", " << this-n_face_support_points << ")";
+          << "(" << this->degree << ", " << this->n_face_support_points << ")";
   return namebuf.str();
 }
 
@@ -128,6 +129,46 @@ void FE_RannacherTurek<dim>::interpolate(
 
 
 
+template <int dim>
+void FE_RannacherTurek<dim>::interpolate(
+  std::vector<double> &local_dofs,
+  const std::vector<Vector<double> > &values,
+  unsigned int offset) const
+{
+  AssertDimension(values.size(), this->generalized_support_points.size());
+  AssertDimension(local_dofs.size(), this->dofs_per_cell);
+
+  // extract component at offset and call scalar version of this function
+  std::vector<double> scalar_values(values.size());
+  for (unsigned int q = 0; q < values.size(); ++q)
+    {
+      scalar_values[q] = values[q][offset];
+    }
+  this->interpolate(local_dofs, scalar_values);
+}
+
+
+
+template <int dim>
+void FE_RannacherTurek<dim>::interpolate(
+  std::vector<double> &local_dofs,
+  const VectorSlice<const std::vector<std::vector<double> > > &values) const
+{
+  AssertDimension(values.size(), 1);
+  AssertDimension(values[0].size(), this->generalized_support_points.size());
+  AssertDimension(local_dofs.size(), this->dofs_per_cell);
+
+  // convert data structure to use scalar version of this function
+  std::vector<double> scalar_values(values[0].size());
+  for (unsigned int q = 0; q < values[0].size(); ++q)
+    {
+      scalar_values[q] = values[0][q];
+    }
+  this->interpolate(local_dofs, scalar_values);
+}
+
+
+
 // explicit instantiations
 #include "fe_rannacher_turek.inst"
 
diff --git a/tests/fe/fe_rannacher_turek_03.cc b/tests/fe/fe_rannacher_turek_03.cc
new file mode 100644 (file)
index 0000000..4e3dd4c
--- /dev/null
@@ -0,0 +1,109 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 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.
+//
+// ---------------------------------------------------------------------
+
+
+// Interfaces being tested
+#include <deal.II/fe/fe_rannacher_turek.h>
+// Interfaces needed for testing
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include "../tests.h"
+
+// Same as interpolation test in fe_rannacher_turek_01.cc but for different
+// signatures of the interpolate function that were added later
+
+void test_interpolation()
+{
+  Triangulation<2> tr;
+  GridGenerator::hyper_cube(tr, -1, 1);
+  tr.refine_global(2);
+
+  FE_RannacherTurek<2> fe;
+  const unsigned int n_dofs = fe.dofs_per_cell;
+
+  DoFHandler<2> dofh;
+  dofh.initialize(tr, fe);
+
+  Vector<double> input_vector(dofh.n_dofs());
+  for (unsigned int i = 0; i < input_vector.size(); ++i)
+    {
+      input_vector[i] = double(i);
+    }
+
+  Quadrature<2> quadrature(fe.get_generalized_support_points());
+  FEValues<2> fev(fe, quadrature, update_values | update_JxW_values);
+
+  typedef DoFHandler<2>::cell_iterator cell_it;
+  cell_it cell = dofh.begin_active();
+  for (; cell != dofh.end(); ++cell)
+    {
+      fev.reinit(cell);
+
+      std::vector<double> values(quadrature.size());
+      fev.get_function_values(input_vector, values);
+
+      // original dofs
+      Vector<double> local_dofs(n_dofs);
+      cell->get_dof_values(input_vector, local_dofs);
+
+      const unsigned int n_components = 5;
+      for (unsigned int offset = 0; offset < n_components; ++offset)
+        {
+          // vector<Vector> interpolate function
+          std::vector<double> interpolated_local_dofs2(n_dofs);
+          std::vector<Vector<double> > offset_values(quadrature.size(),
+                                                     Vector<double>(n_components));
+          for (unsigned int q = 0; q < quadrature.size(); ++q)
+            {
+              offset_values[q][offset] = values[q];
+            }
+          fe.interpolate(interpolated_local_dofs2,
+                         offset_values,
+                         offset);
+
+          // VectorSlice interpolate function
+          std::vector<double> interpolated_local_dofs3(n_dofs);
+          std::vector<std::vector<double> > vv_values(
+            n_components,
+            values);
+          VectorSlice<const std::vector<std::vector<double> > > sliced_values(
+            vv_values, offset, 1);
+          fe.interpolate(interpolated_local_dofs3,
+                         sliced_values);
+
+          for (unsigned int j = 0; j < n_dofs; ++j)
+            {
+              deallog << "vector<Vector>@" << offset << ": "
+                      << local_dofs[j] - interpolated_local_dofs2[j] << " ";
+              deallog << "VectorSlice@" << offset << ": "
+                      << local_dofs[j] - interpolated_local_dofs3[j] << " ";
+            }
+        }
+      deallog << std::endl;
+    }
+}
+
+int main()
+{
+  initlog();
+
+  test_interpolation();
+
+  return 0;
+}
diff --git a/tests/fe/fe_rannacher_turek_03.output b/tests/fe/fe_rannacher_turek_03.output
new file mode 100644 (file)
index 0000000..aafd6f6
--- /dev/null
@@ -0,0 +1,17 @@
+
+DEAL::vector<Vector>@0: -5.55112e-17 VectorSlice@0: -5.55112e-17 vector<Vector>@0: -6.66134e-16 VectorSlice@0: -6.66134e-16 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 8.88178e-16 VectorSlice@0: 8.88178e-16 vector<Vector>@1: -5.55112e-17 VectorSlice@1: -5.55112e-17 vector<Vector>@1: -6.66134e-16 VectorSlice@1: -6.66134e-16 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 8.88178e-16 VectorSlice@1: 8.88178e-16 vector<Vector>@2: -5.55112e-17 VectorSlice@2: -5.55112e-17 vector<Vector>@2: -6.66134e-16 VectorSlice@2: -6.66134e-16 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 8.88178e-16 VectorSlice@2: 8.88178e-16 vector<Vector>@3: -5.55112e-17 VectorSlice@3: -5.55112e-17 vector<Vector>@3: -6.66134e-16 VectorSlice@3: -6.66134e-16 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 8.88178e-16 VectorSlice@3: 8.88178e-16 vector<Vector>@4: -5.55112e-17 VectorSlice@4: -5.55112e-17 vector<Vector>@4: -6.66134e-16 VectorSlice@4: -6.66134e-16 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 8.88178e-16 VectorSlice@4: 8.88178e-16 
+DEAL::vector<Vector>@0: 1.11022e-16 VectorSlice@0: 1.11022e-16 vector<Vector>@0: -8.88178e-16 VectorSlice@0: -8.88178e-16 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 1.77636e-15 VectorSlice@0: 1.77636e-15 vector<Vector>@1: 1.11022e-16 VectorSlice@1: 1.11022e-16 vector<Vector>@1: -8.88178e-16 VectorSlice@1: -8.88178e-16 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 1.77636e-15 VectorSlice@1: 1.77636e-15 vector<Vector>@2: 1.11022e-16 VectorSlice@2: 1.11022e-16 vector<Vector>@2: -8.88178e-16 VectorSlice@2: -8.88178e-16 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 1.77636e-15 VectorSlice@2: 1.77636e-15 vector<Vector>@3: 1.11022e-16 VectorSlice@3: 1.11022e-16 vector<Vector>@3: -8.88178e-16 VectorSlice@3: -8.88178e-16 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 1.77636e-15 VectorSlice@3: 1.77636e-15 vector<Vector>@4: 1.11022e-16 VectorSlice@4: 1.11022e-16 vector<Vector>@4: -8.88178e-16 VectorSlice@4: -8.88178e-16 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 1.77636e-15 VectorSlice@4: 1.77636e-15 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 8.88178e-16 VectorSlice@0: 8.88178e-16 vector<Vector>@0: 4.44089e-16 VectorSlice@0: 4.44089e-16 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 8.88178e-16 VectorSlice@1: 8.88178e-16 vector<Vector>@1: 4.44089e-16 VectorSlice@1: 4.44089e-16 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 8.88178e-16 VectorSlice@2: 8.88178e-16 vector<Vector>@2: 4.44089e-16 VectorSlice@2: 4.44089e-16 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 8.88178e-16 VectorSlice@3: 8.88178e-16 vector<Vector>@3: 4.44089e-16 VectorSlice@3: 4.44089e-16 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 8.88178e-16 VectorSlice@4: 8.88178e-16 vector<Vector>@4: 4.44089e-16 VectorSlice@4: 4.44089e-16 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 8.88178e-16 VectorSlice@0: 8.88178e-16 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 8.88178e-16 VectorSlice@1: 8.88178e-16 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 8.88178e-16 VectorSlice@2: 8.88178e-16 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 8.88178e-16 VectorSlice@3: 8.88178e-16 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 8.88178e-16 VectorSlice@4: 8.88178e-16 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 4.44089e-16 VectorSlice@0: 4.44089e-16 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 1.77636e-15 VectorSlice@0: 1.77636e-15 vector<Vector>@1: 4.44089e-16 VectorSlice@1: 4.44089e-16 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 1.77636e-15 VectorSlice@1: 1.77636e-15 vector<Vector>@2: 4.44089e-16 VectorSlice@2: 4.44089e-16 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 1.77636e-15 VectorSlice@2: 1.77636e-15 vector<Vector>@3: 4.44089e-16 VectorSlice@3: 4.44089e-16 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 1.77636e-15 VectorSlice@3: 1.77636e-15 vector<Vector>@4: 4.44089e-16 VectorSlice@4: 4.44089e-16 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 1.77636e-15 VectorSlice@4: 1.77636e-15 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 3.55271e-15 VectorSlice@0: 3.55271e-15 vector<Vector>@0: 3.55271e-15 VectorSlice@0: 3.55271e-15 vector<Vector>@0: 1.77636e-15 VectorSlice@0: 1.77636e-15 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 3.55271e-15 VectorSlice@1: 3.55271e-15 vector<Vector>@1: 3.55271e-15 VectorSlice@1: 3.55271e-15 vector<Vector>@1: 1.77636e-15 VectorSlice@1: 1.77636e-15 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 3.55271e-15 VectorSlice@2: 3.55271e-15 vector<Vector>@2: 3.55271e-15 VectorSlice@2: 3.55271e-15 vector<Vector>@2: 1.77636e-15 VectorSlice@2: 1.77636e-15 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 3.55271e-15 VectorSlice@3: 3.55271e-15 vector<Vector>@3: 3.55271e-15 VectorSlice@3: 3.55271e-15 vector<Vector>@3: 1.77636e-15 VectorSlice@3: 1.77636e-15 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 3.55271e-15 VectorSlice@4: 3.55271e-15 vector<Vector>@4: 3.55271e-15 VectorSlice@4: 3.55271e-15 vector<Vector>@4: 1.77636e-15 VectorSlice@4: 1.77636e-15 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 3.55271e-15 VectorSlice@0: 3.55271e-15 vector<Vector>@0: 3.55271e-15 VectorSlice@0: 3.55271e-15 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 3.55271e-15 VectorSlice@1: 3.55271e-15 vector<Vector>@1: 3.55271e-15 VectorSlice@1: 3.55271e-15 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 3.55271e-15 VectorSlice@2: 3.55271e-15 vector<Vector>@2: 3.55271e-15 VectorSlice@2: 3.55271e-15 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 3.55271e-15 VectorSlice@3: 3.55271e-15 vector<Vector>@3: 3.55271e-15 VectorSlice@3: 3.55271e-15 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 3.55271e-15 VectorSlice@4: 3.55271e-15 vector<Vector>@4: 3.55271e-15 VectorSlice@4: 3.55271e-15 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 
+DEAL::vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@0: 0.00000 VectorSlice@0: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@1: 0.00000 VectorSlice@1: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@2: 0.00000 VectorSlice@2: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@3: 0.00000 VectorSlice@3: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 vector<Vector>@4: 0.00000 VectorSlice@4: 0.00000 

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.