]> https://gitweb.dealii.org/ - dealii.git/commitdiff
embedding matrices for dgp
authorGuido Kanschat <dr.guido.kanschat@gmail.com>
Tue, 12 Feb 2002 11:34:32 +0000 (11:34 +0000)
committerGuido Kanschat <dr.guido.kanschat@gmail.com>
Tue, 12 Feb 2002 11:34:32 +0000 (11:34 +0000)
git-svn-id: https://svn.dealii.org/trunk@5508 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/fe/fe_dgp.h
deal.II/deal.II/source/fe/fe_dgp.cc
deal.II/deal.II/source/fe/fe_dgp_1d.cc [new file with mode: 0644]
deal.II/deal.II/source/fe/fe_dgp_2d.cc [new file with mode: 0644]
deal.II/deal.II/source/fe/fe_dgp_3d.cc [new file with mode: 0644]

index 787ea5fb308ee2d3b5cff79471408c27ae1ebedc..42beadd368629504a3cac6b4d7b0212391281d0f 100644 (file)
@@ -1,4 +1,4 @@
-//---------------------------------------------------------------
+//----------------------------------------------------------------
 //    $Id$
 //    Version: $Name$
 //
@@ -217,7 +217,7 @@ class FE_DGP : public FiniteElement<dim>
                                          * polynomial degree starting
                                          * from constant elements
                                          */
-       static const double * const embedding[];
+       static const double * const embedding[][GeometryInfo<dim>::children_per_cell];
 
                                         /**
                                          * Number of elements (first
@@ -234,7 +234,7 @@ class FE_DGP : public FiniteElement<dim>
                                          * As @p{embedding} but for
                                          * projection matrices.
                                          */
-       static const double * const projection_matrices[];
+       static const double * const projection_matrices[][GeometryInfo<dim>::children_per_cell];
 
                                         /**
                                          * As
@@ -325,37 +325,37 @@ class FE_DGP : public FiniteElement<dim>
 // declaration of explicit specializations
 
 template <> 
-const double * const FE_DGP<1>::Matrices::embedding[];
+const double * const FE_DGP<1>::Matrices::embedding[][GeometryInfo<1>::children_per_cell];
 
 template <>
 const unsigned int FE_DGP<1>::Matrices::n_embedding_matrices;
 
 template <>
-const double * const FE_DGP<1>::Matrices::projection_matrices[];
+const double * const FE_DGP<1>::Matrices::projection_matrices[][GeometryInfo<1>::children_per_cell];
 
 template <>
 const unsigned int FE_DGP<1>::Matrices::n_projection_matrices;
 
 template <> 
-const double * const FE_DGP<2>::Matrices::embedding[];
+const double * const FE_DGP<2>::Matrices::embedding[][GeometryInfo<2>::children_per_cell];
 
 template <>
 const unsigned int FE_DGP<2>::Matrices::n_embedding_matrices;
 
 template <>
-const double * const FE_DGP<2>::Matrices::projection_matrices[];
+const double * const FE_DGP<2>::Matrices::projection_matrices[][GeometryInfo<2>::children_per_cell];
 
 template <>
 const unsigned int FE_DGP<2>::Matrices::n_projection_matrices;
 
 template <> 
-const double * const FE_DGP<3>::Matrices::embedding[];
+const double * const FE_DGP<3>::Matrices::embedding[][GeometryInfo<3>::children_per_cell];
 
 template <>
 const unsigned int FE_DGP<3>::Matrices::n_embedding_matrices;
 
 template <>
-const double * const FE_DGP<3>::Matrices::projection_matrices[];
+const double * const FE_DGP<3>::Matrices::projection_matrices[][GeometryInfo<3>::children_per_cell];
 
 template <>
 const unsigned int FE_DGP<3>::Matrices::n_projection_matrices;
index 9fa54e9f13e1da95b9f57c4b43f147fd933313f8..58aa8bf28cd3846b5714d6ed9c5d53397f3a7844 100644 (file)
@@ -41,16 +41,13 @@ FE_DGP<dim>::FE_DGP (unsigned int degree)
 
                                   // if defined, copy over matrices
                                   // from precomputed arrays
-//    if ((degree < Matrices::n_embedding_matrices) &&
-//        (Matrices::embedding[degree] != 0))
-//      {
-//        prolongation[0].fill (Matrices::embedding[degree]);
-//      }
-//    else
-//                                  // matrix undefined, set size to zero
-//      for (unsigned int i=0;i<GeometryInfo<dim>::children_per_cell;++i)
-//        prolongation[i].reinit(0);
-
+  if ((degree < Matrices::n_embedding_matrices) &&
+      (Matrices::embedding[degree][0] != 0))
+    for (unsigned int c=0; c<GeometryInfo<dim>::children_per_cell; ++c)
+      prolongation[c].fill (Matrices::embedding[degree][c]);
+  else
+    for (unsigned int i=0; i<GeometryInfo<dim>::children_per_cell;++i)
+      prolongation[i].reinit(0,0);
 //                                // same as above: copy over matrix
 //                                // from predefined values and
 //                                // generate all others by rotation
diff --git a/deal.II/deal.II/source/fe/fe_dgp_1d.cc b/deal.II/deal.II/source/fe/fe_dgp_1d.cc
new file mode 100644 (file)
index 0000000..5625315
--- /dev/null
@@ -0,0 +1,175 @@
+//----------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------
+
+
+// only compile in 1d
+#if deal_II_dimension == 1
+
+#include <fe/fe_dgp.h>
+
+// Transfer matrices for finite elements
+
+namespace FE_DGP_1d
+{
+  static const double dgp0_into_dgp0_refined_0[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_1[] =
+  {
+       1.,
+  };
+
+  static const double dgp1_into_dgp1_refined_0[] =
+  {
+       1., 0.,
+       0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_1[] =
+  {
+       1., .5,
+       0., .5,
+  };
+
+  static const double dgp2_into_dgp2_refined_0[] =
+  {
+       1., 0., -.375,
+       0., .5, 0.,
+       0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_1[] =
+  {
+       1., .5, 0.,
+       0., .5, .75,
+       0., 0., .25,
+  };
+
+  static const double dgp3_into_dgp3_refined_0[] =
+  {
+       1., 0., -.375, 0.,
+       0., .5, 0., -15.1875/27.,
+       0., 0., .25, 0.,
+       0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_1[] =
+  {
+       1., .5, 0., -.125,
+       0., .5, .75, .375,
+       0., 0., .25, 16.875/27.,
+       0., 0., 0., .125,
+  };
+
+  static const double dgp4_into_dgp4_refined_0[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27.,
+       0., .5, 0., -15.1875/27., 0.,
+       0., 0., .25, 0., -12.65625/27.,
+       0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_1[] =
+  {
+       1., .5, 0., -.125, 0.,
+       0., .5, .75, .375, -.125,
+       0., 0., .25, 16.875/27., 16.875/27.,
+       0., 0., 0., .125, 11.8125/27.,
+       0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp5_into_dgp5_refined_0[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., 0.,
+       0., .5, 0., -15.1875/27., 0., 10.44140625/27.,
+       0., 0., .25, 0., -12.65625/27., 0.,
+       0., 0., 0., .125, 0., -8.859375/27.,
+       0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0.84375/27.,
+  };
+
+  static const double dgp5_into_dgp5_refined_1[] =
+  {
+       1., .5, 0., -.125, 0., 1.6875/27.,
+       0., .5, .75, .375, -.125, -5.0625/27.,
+       0., 1.943780239e-09/27., 6.750000001/27., 16.875/27., 16.875/27., 4.21875/27.,
+       0., -1.298171318e-09/27., 0., .125, 11.8125/27., 17.71875/27.,
+       0., 0., 0., 0., 1.6875/27., 7.59375/27.,
+       0., 0., 0., 0., 0., 0.84375/27.,
+  };
+
+  static const double dgp6_into_dgp6_refined_0[] =
+  {
+       1., 0., -10.12499999/27., 7.241569395e-09/27., 3.164062498/27., -5.02411607e-09/27., 0.553710937/27.,
+       0., .5, -2.01244638e-08/27., -15.18750002/27., 5.331617674e-09/27., 10.44140626/27., 1.305959489e-09/27.,
+       0., 0., 6.750000023/27., 2.013347609e-08/27., -12.65625001/27., -1.396873349e-08/27., 13.44726562/27.,
+       0., 0., -1.701242498e-08/27., 3.374999985/27., 4.508076571e-09/27., -8.859374989/27., 1.102114197e-09/27.,
+       0., 0., 8.95263339e-09/27., 7.969774316e-09/27., 1.687499998/27., -5.529893409e-09/27., -5.695312501/27.,
+       0., 0., -3.09774831e-09/27., -2.756474137e-09/27., 0., 0.8437500019/27., 0.,
+       0., 0., 0., 0., 0., 0., 0.421875/27.,
+  };
+
+  static const double dgp6_into_dgp6_refined_1[] =
+  {
+       1., 13.50000001/27., -6.32567268e-09/27., -3.37500001/27., 9.901835418e-09/27., 1.687500006/27., 6.235854535e-09/27.,
+       0., 13.49999998/27., 20.25000002/27., 10.12500003/27., -3.375000025/27., -5.062500014/27., 1.265624985/27.,
+       0., 2.037605333e-08/27., 6.749999982/27., 16.87499997/27., 16.87500003/27., 4.218750016/27., -6.328124983/27.,
+       0., -1.534920617e-08/27., 1.32272523e-08/27., 3.375000021/27., 11.81249998/27., 17.71874999/27., 11.81249999/27.,
+       0., 8.088959335e-09/27., -6.95629168e-09/27., -1.122813704e-08/27., 1.687500011/27., 7.593750006/27., 15.18750001/27.,
+       0., -2.804903374e-09/27., 2.404689106e-09/27., 3.885094046e-09/27., -3.773966236e-09/27., 0.8437499978/27., 4.640624998/27.,
+       0., 0., 0., 0., 0., 0., 0.4218750004/27.,
+  };
+
+
+};
+
+
+template <>
+const double * const
+FE_DGP<1>::Matrices::embedding[][GeometryInfo<1>::children_per_cell] =
+{
+  {FE_DGP_1d::dgp1_into_dgp1_refined_0, FE_DGP_1d::dgp1_into_dgp1_refined_1},
+    {FE_DGP_1d::dgp2_into_dgp2_refined_0, FE_DGP_1d::dgp2_into_dgp2_refined_1},
+      {FE_DGP_1d::dgp3_into_dgp3_refined_0, FE_DGP_1d::dgp3_into_dgp3_refined_1},
+       {FE_DGP_1d::dgp4_into_dgp4_refined_0, FE_DGP_1d::dgp4_into_dgp4_refined_1},
+         {FE_DGP_1d::dgp5_into_dgp5_refined_0, FE_DGP_1d::dgp5_into_dgp5_refined_1},
+           {FE_DGP_1d::dgp6_into_dgp6_refined_0, FE_DGP_1d::dgp6_into_dgp6_refined_1}
+};
+
+template <>
+const unsigned int FE_DGP<1>::Matrices::n_embedding_matrices
+= sizeof(FE_DGP<1>::Matrices::embedding) /
+sizeof(FE_DGP<1>::Matrices::embedding[0]);
+
+
+/*
+ * These elements are not defined by interpolation, therefore there
+ * are no interpolation matrices.
+ */
+
+template <>
+const double * const FE_DGP<1>::Matrices::projection_matrices[][GeometryInfo<1>::children_per_cell];
+
+template <>
+const unsigned int FE_DGP<1>::Matrices::n_projection_matrices
+= 0;
+
+
+#else // #if deal_II_dimension
+// On gcc2.95 on Alpha OSF1, the native assembler does not like empty
+// files, so provide some dummy code
+namespace { void dummy () {}; };
+#endif // #if deal_II_dimension
diff --git a/deal.II/deal.II/source/fe/fe_dgp_2d.cc b/deal.II/deal.II/source/fe/fe_dgp_2d.cc
new file mode 100644 (file)
index 0000000..3028f1b
--- /dev/null
@@ -0,0 +1,526 @@
+//----------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------
+
+
+// only compile in 2d
+#if deal_II_dimension == 2
+
+#include <fe/fe_dgp.h>
+
+// Transfer matrices for finite elements
+
+namespace FE_DGP_2d
+{
+  static const double dgp0_into_dgp0_refined_0[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_1[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_2[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_3[] =
+  {
+       1.,
+  };
+
+  static const double dgp1_into_dgp1_refined_0[] =
+  {
+       1., 0., 0.,
+       0., .5, 0.,
+       0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_1[] =
+  {
+       1., .5, 0.,
+       0., .5, 0.,
+       0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_2[] =
+  {
+       1., .5, .5,
+       0., .5, 0.,
+       0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_3[] =
+  {
+       1., 0., .5,
+       0., .5, 0.,
+       0., 0., .5,
+  };
+  static const double dgp2_into_dgp2_refined_0[] =
+  {
+       1., 0., -.375, 0., 0., -.375,
+       0., .5, 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0.,
+       0., 0., 0., .5, 0., 0.,
+       0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_1[] =
+  {
+       1., .5, 0., 0., 0., -.375,
+       0., .5, .75, 0., 0., 0.,
+       0., 0., .25, 0., 0., 0.,
+       0., 0., 0., .5, .25, 0.,
+       0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_2[] =
+  {
+       1., .5, 0., .5, .25, 0.,
+       0., .5, .75, 0., .25, 0.,
+       0., 0., .25, 0., 0., 0.,
+       0., 0., 0., .5, .25, .75,
+       0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_3[] =
+  {
+       1., 0., -.375, .5, 0., 0.,
+       0., .5, 0., 0., .25, 0.,
+       0., 0., .25, 0., 0., 0.,
+       0., 0., 0., .5, 0., .75,
+       0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp3_into_dgp3_refined_0[] =
+  {
+       1., 0., -.375, 0., 0., 0., 0., -.375, 0., 0.,
+       0., .5, 0., -15.1875/27., 0., 0., 0., 0., -5.0625/27., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -15.1875/27.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_1[] =
+  {
+       1., .5, 0., -.125, 0., 0., 0., -.375, -5.0625/27., 0.,
+       0., .5, .75, .375, 0., 0., 0., 0., -5.0625/27., 0.,
+       0., 0., .25, 16.875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, .25, 0., 0., 0., -15.1875/27.,
+       0., 0., 0., 0., 0., .25, .375, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_2[] =
+  {
+       1., .5, 0., -.125, .5, .25, 0., 0., 0., -.125,
+       0., .5, .75, .375, 0., .25, .375, 0., 0., 0.,
+       0., 0., .25, 16.875/27., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, .25, 0., .75, .375, .375,
+       0., 0., 0., 0., 0., .25, .375, 0., .375, 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, .125, 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_3[] =
+  {
+       1., 0., -.375, 0., .5, 0., -5.0625/27., 0., 0., -.125,
+       0., .5, 0., -15.1875/27., 0., .25, 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, 0., -5.0625/27., .75, 0., .375,
+       0., 0., 0., 0., 0., .25, 0., 0., .375, 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp4_into_dgp4_refined_0[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.1640625/27.,
+       0., .5, 0., -15.1875/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -15.1875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -12.65625/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_1[] =
+  {
+       1., .5, 0., -.125, 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.1640625/27.,
+       0., .5, .75, .375, -.125, 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0.,
+       0., 0., .25, 16.875/27., 16.875/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -15.1875/27., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -12.65625/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_2[] =
+  {
+       1., .5, 0., -.125, 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -.125, -1.6875/27., 0.,
+       0., .5, .75, .375, -.125, 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -1.6875/27., 0.,
+       0., 0., .25, 16.875/27., 16.875/27., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., -.125,
+       0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .375, 15.1875/27., 0., 5.0625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 5.0625/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., 8.4375/27., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 11.8125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_3[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -.125, 0., 0.,
+       0., .5, 0., -15.1875/27., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -1.6875/27., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .75, 0., -7.59375/27., .375, 0., -.125,
+       0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .375, 0., 0., 5.0625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 5.0625/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 16.875/27., 0., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 11.8125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp5_into_dgp5_refined_0[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 0., 0., 3.1640625/27., 0., 0.,
+       0., .5, 0., -15.1875/27., 0., 10.44140625/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 5.6953125/27., 0., 0., 0., 0., 1.58203125/27., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., -8.859375/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 1.58203125/27., 0., 0., 0., 0., -15.1875/27., 0., 5.6953125/27., 0., 0., 10.44140625/27.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -6.328125/27., 0., 0., 0., 0., 0., 0., -3.796875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., 0., 0., -12.65625/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -3.796875/27., 0., 0., 0., 0., -6.328125/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -1.265625/27., 0., 0., -8.859375/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27.,
+  };
+
+  static const double dgp5_into_dgp5_refined_1[] =
+  {
+       1., .5, 0., -.125, 0., 1.6875/27., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 1.265625/27., 0., 0., 0., 3.1640625/27., 1.58203125/27., 0.,
+       0., .5, .75, .375, -3.375000001/27., -5.0625/27., 0., 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., -3.796875/27., 0., 0., 0., 0., 1.58203125/27., 0.,
+       0., 0., 6.749999999/27., 16.875/27., 16.875/27., 4.21875/27., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., -6.328125/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 17.71875/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.265625/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., 0., 10.44140625/27.,
+       0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., -1.6875/27., 0., 0., 0., 0., 0., -7.59375/27., -11.390625/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 8.4375/27., 0., 0., 0., 0., 0., 0., -3.796875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 5.90625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., -0.8437500002/27., 0., 0., 0., -12.65625/27., -6.328125/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 2.53125/27., 0., 0., 0., 0., -6.328125/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 4.21875/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., -8.859375/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 2.53125/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.84375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27.,
+  };
+
+  static const double dgp5_into_dgp5_refined_2[] =
+  {
+       1., .5, 0., -.125, 0., 1.6875/27., .5, .25, 0., -1.6875/27., 0., 0., 0., 0., 0., -.125, -1.6875/27., 0., 0., 0., 1.6875/27.,
+       0., .5, .75, .375, -3.375000001/27., -5.0625/27., 0., .25, .375, 5.0625/27., -1.6875/27., 0., 0., 0., 0., 0., -1.6875/27., -2.53125/27., 0., 0., 0.,
+       0., 0., 6.749999999/27., 16.875/27., 16.875/27., 4.21875/27., 0., 0., .125, 8.4375/27., 8.4375/27., 0., 0., 0., 0., 0., 0., -0.8437500001/27., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 17.71875/27., 0., 0., 0., 1.6875/27., 5.90625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 7.59375/27., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., .75, .375, 0., -2.53125/27., .375, 5.0625/27., 0., -3.375000001/27., -1.6875/27., -5.0625/27.,
+       0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., -1.6875/27., 0., .375, 15.1875/27., 7.59375/27., 0., 5.0625/27., 7.59375/27., 0., -1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 8.4375/27., 0., 0., 5.0625/27., 12.65625/27., 0., 0., 2.53125/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 5.90625/27., 0., 0., 0., 2.53125/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.749999999/27., .125, 0., -0.8437500001/27., 16.875/27., 8.4375/27., 0., 16.875/27., 8.4375/27., 4.21875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 2.53125/27., 0., 8.4375/27., 12.65625/27., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 4.21875/27., 0., 0., 4.21875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 11.8125/27., 5.90625/27., 17.71875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 2.53125/27., 0., 5.90625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.84375/27., 7.59375/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27.,
+  };
+
+  static const double dgp5_into_dgp5_refined_3[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., 0., .5, 0., -5.0625/27., 0., 1.58203125/27., 0., 0., 0., 0., -.125, 0., 1.265625/27., 0., 0., 1.6875/27.,
+       0., .5, 0., -15.1875/27., 0., 10.44140625/27., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., 0., .125, 0., -6.328125/27., 0., 0., 0., 0., 0., 0., -0.8437500002/27., 0., 0., 0.,
+       0., 0., 0., .125, 0., -8.859375/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 1.58203125/27., .75, 0., -7.59375/27., 0., .375, 0., -3.796875/27., -3.375000001/27., 0., -5.0625/27.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., .375, 0., -11.390625/27., 0., 5.0625/27., 0., 0., -1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -6.328125/27., 0., 0., 5.0625/27., 0., 0., 0., 2.53125/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 2.53125/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 6.749999999/27., 0., -2.53125/27., 0., 16.875/27., 0., -6.328125/27., 16.875/27., 0., 4.21875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -3.796875/27., 0., 8.4375/27., 0., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 4.21875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., -1.265625/27., 11.8125/27., 0., 17.71875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 5.90625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 7.59375/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.84375/27.,
+  };
+
+  static const double dgp6_into_dgp6_refined_0[] =
+  {
+       1., 0., -.375, 2.10204759e-09/27., 3.164062499/27., 2.685082188e-09/27., 0.5537109359/27., 0., 0., -1.07930221e-09/27., 0., 0., 0., -.375, -1.07930221e-09/27., 3.796874998/27., 2.813232665e-09/27., -1.186523438/27., 2.10204759e-09/27., 0., 2.813232665e-09/27., 3.86360663e-09/27., 3.164062499/27., 0., -1.186523438/27., 2.685082188e-09/27., 0., 0.5537109359/27.,
+       0., .5, 3.658215698e-09/27., -15.1875/27., 0., 10.44140624/27., 2.131820768e-09/27., 0., 0., 0., 0., 0., 0., 1.080949017e-09/27., -5.062499998/27., 2.6766119e-09/27., 5.695312495/27., 2.876334522e-09/27., -3.92061665e-09/27., 0., -2.725491735e-09/27., -5.665249489e-09/27., 2.375828888e-09/27., 1.58203125/27., 0., 1.082088734e-09/27., 0., 2.763894428e-09/27.,
+       0., 0., 6.749999997/27., 0., -12.65625/27., 1.066143282e-08/27., 13.44726562/27., 0., 0., 0., 0., 0., 0., 0., -2.607385005e-09/27., -2.531250003/27., 5.026738297e-09/27., 4.746093747/27., 4.740131327e-09/27., 0., 2.803981188e-09/27., 5.485742865e-09/27., -2.394091461e-09/27., 0., 0.7910156258/27., -2.833538748e-09/27., 0., -2.834398247e-09/27.,
+       0., 0., 2.045074215e-09/27., 3.374999999/27., 0., -8.859375007/27., 1.039162777e-09/27., 0., 0., 0., 0., 0., 0., 0., 1.907992874e-09/27., 2.206095257e-09/27., -1.265625004/27., 2.140530734e-09/27., -3.800114121e-09/27., 0., -2.053220084e-09/27., -3.764637076e-09/27., 1.817404218e-09/27., 0., 0., 2.774044754e-09/27., 0., 1.897638307e-09/27.,
+       0., 0., 0., 0., 1.6875/27., 3.632327668e-09/27., -5.6953125/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.158942845e-09/27., 1.930527193e-09/27., -0.6328125011/27., 2.116266852e-09/27., 0., 1.061792685e-09/27., 1.841347767e-09/27., 0., 0., 0., -1.722358007e-09/27., 0., 0.,
+       0., 0., 0., 0., 0., 0.8437499988/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 1.080949017e-09/27., -3.92061665e-09/27., 2.375828888e-09/27., 1.082088734e-09/27., 2.763894428e-09/27., .5, 0., -5.062499998/27., 0., 1.58203125/27., 0., 3.658215698e-09/27., 0., 2.6766119e-09/27., -2.725491735e-09/27., 0., -15.1875/27., 0., 5.695312495/27., -5.665249489e-09/27., 0., 0., 2.876334522e-09/27., 10.44140624/27., 0., 2.131820768e-09/27.,
+       0., 0., -4.337891854e-09/27., -2.688220646e-09/27., 0., 8.279972232e-09/27., -2.564397253e-09/27., 0., .25, 0., -7.593750002/27., 0., 5.220703125/27., -4.337891854e-09/27., 0., 0., 0., -1.2281902e-09/27., -2.688220646e-09/27., -7.593750002/27., 0., 8.542968754/27., 0., 0., -1.2281902e-09/27., 8.279972232e-09/27., 5.220703125/27., -2.564397253e-09/27.,
+       0., 0., 2.719944115e-09/27., 1.39102052e-09/27., 0., -5.27208635e-09/27., 1.193951561e-09/27., 0., 0., .125, 0., -6.328124999/27., 0., 3.083736641e-09/27., 0., 0., 0., 0., 2.268918792e-09/27., 1.107964681e-09/27., -3.796875/27., -2.934975478e-09/27., 0., 0., 0., -5.548698339e-09/27., 0., 2.28557188e-09/27.,
+       0., 0., -1.280019966e-09/27., 0., 0., 2.551306254e-09/27., 0., 0., 0., 0., 1.6875/27., 0., -4.4296875/27., -1.489851421e-09/27., 0., 0., 0., 0., -1.212054971e-09/27., 0., 0., -1.898437499/27., 0., 0., 0., 2.785884723e-09/27., 0., -1.216051235e-09/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 4.740131327e-09/27., -2.394091461e-09/27., -2.833538748e-09/27., -2.834398247e-09/27., 0., 0., -2.607385005e-09/27., 0., 0., 0., 6.749999997/27., 0., -2.531250003/27., 2.803981188e-09/27., 0.7910156258/27., 0., 0., 5.026738297e-09/27., 5.485742865e-09/27., -12.65625/27., 0., 4.746093747/27., 1.066143282e-08/27., 0., 13.44726562/27.,
+       0., 0., 3.083736641e-09/27., 2.268918792e-09/27., 0., -5.548698339e-09/27., 2.28557188e-09/27., 0., 0., 0., 1.107964681e-09/27., 0., 0., 2.719944115e-09/27., .125, 0., -3.796875/27., 0., 1.39102052e-09/27., 0., 0., -2.934975478e-09/27., 0., -6.328124999/27., 0., -5.27208635e-09/27., 0., 1.193951561e-09/27.,
+       0., 0., -1.391406917e-09/27., 0., 0., 2.370734272e-09/27., 0., 0., 0., 0., 0., 0., 0., -1.391406917e-09/27., 0., 1.6875/27., 0., -3.164062501/27., 0., 0., 0., 1.363828045e-09/27., 0., 0., -3.164062501/27., 2.370734272e-09/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499999/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., -3.800114121e-09/27., 1.817404218e-09/27., 2.774044754e-09/27., 1.897638307e-09/27., 0., 0., 1.907992874e-09/27., 0., 0., 0., 2.045074215e-09/27., 0., 2.206095257e-09/27., -2.053220084e-09/27., 0., 3.374999999/27., 0., -1.265625004/27., -3.764637076e-09/27., 0., 0., 2.140530734e-09/27., -8.859375007/27., 0., 1.039162777e-09/27.,
+       0., 0., -1.489851421e-09/27., -1.212054971e-09/27., 0., 2.785884723e-09/27., -1.216051235e-09/27., 0., 0., 0., 0., 0., 0., -1.280019966e-09/27., 0., 0., 0., 0., 0., 1.6875/27., 0., -1.898437499/27., 0., 0., 0., 2.551306254e-09/27., -4.4296875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499999/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 2.116266852e-09/27., 0., -1.722358007e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.158942845e-09/27., 1.061792685e-09/27., 0., 0., 0., 1.930527193e-09/27., 1.841347767e-09/27., 1.6875/27., 0., -0.6328125011/27., 3.632327668e-09/27., 0., -5.6953125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499988/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27.,
+  };
+
+  static const double dgp6_into_dgp6_refined_1[] =
+  {
+       1., 13.50000002/27., 4.477651047e-09/27., -3.374999997/27., 0., 1.687500007/27., 6.16353408e-09/27., 0., 1.27801857e-09/27., 1.301720728e-09/27., -2.488591681e-09/27., -1.679484885e-09/27., 0., -.375, -5.062500003/27., -3.403137136e-09/27., 1.265625/27., 0., 2.10204759e-09/27., 0., -2.48697705e-09/27., -3.134242688e-09/27., 3.164062499/27., 1.582031252/27., 1.399117932e-09/27., 2.685082188e-09/27., -1.746243791e-09/27., 0.5537109359/27.,
+       0., 13.49999996/27., .75, 10.12499999/27., -3.375000001/27., -5.062500013/27., 1.265624989/27., 0., 2.662581975e-09/27., 0., 4.93248614e-09/27., 2.486121308e-09/27., 0., 1.080949017e-09/27., -5.062499997/27., -7.593749995/27., -3.796874999/27., 1.265625001/27., -3.92061665e-09/27., 0., 2.786171066e-09/27., 6.218557924e-09/27., 2.375828888e-09/27., 1.582031249/27., 2.373046874/27., 1.082088734e-09/27., 3.013440618e-09/27., 2.763894428e-09/27.,
+       0., 4.713708628e-08/27., 6.750000005/27., 16.87500001/27., 16.875/27., 4.218750014/27., -6.328124988/27., 0., -2.511138328e-09/27., -1.219869724e-09/27., -5.105185708e-09/27., -2.65324732e-09/27., 0., 0., -2.557980145e-09/27., -2.531250005/27., -6.328125001/27., -6.328125001/27., 4.740131327e-09/27., 0., -2.117545045e-09/27., -6.206630111e-09/27., -2.394091461e-09/27., 1.155419779e-09/27., 0.7910156257/27., -2.833538748e-09/27., -1.910224451e-09/27., -2.834398247e-09/27.,
+       0., -3.35421592e-08/27., -3.842436459e-09/27., 3.374999994/27., 11.8125/27., 17.71874999/27., 11.81249999/27., 0., 1.650316554e-09/27., 1.215890943e-09/27., 3.677123151e-09/27., 1.913446388e-09/27., 0., 0., 1.915367952e-09/27., 3.350154554e-09/27., -1.265624999/27., -4.4296875/27., -3.800114121e-09/27., 0., 1.134768624e-09/27., 4.347093102e-09/27., 1.817404218e-09/27., 0., 0., 2.774044754e-09/27., 0., 1.897638307e-09/27.,
+       0., 1.672993628e-08/27., 2.110870102e-09/27., 3.044674203e-09/27., 1.687500001/27., 7.593750005/27., 15.1875/27., 0., 0., 0., -1.884920663e-09/27., 0., 0., 0., -1.037168957e-09/27., -1.685264233e-09/27., 0., -0.6328125002/27., 2.116266852e-09/27., 0., 0., -2.149191101e-09/27., 0., 0., 0., -1.722358007e-09/27., 0., 0.,
+       0., -5.494802163e-09/27., 0., -1.057399888e-09/27., 0., 0.8437499982/27., 4.640624998/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0.4218750003/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., -5.377342456e-09/27., -6.061004549e-09/27., -1.660185991e-09/27., 1.473665918e-09/27., -5.011931539e-09/27., -5.464675833e-09/27., .5, 6.749999995/27., -4.949828173e-09/27., -1.687499998/27., 2.05126778e-09/27., 0.8437500021/27., 3.658215698e-09/27., 4.015840528e-09/27., 4.798898977e-09/27., 0., 2.073730163e-09/27., -15.1875/27., -7.593749999/27., 5.394797821e-09/27., 1.898437503/27., 0., -3.619460261e-09/27., -2.732185104e-09/27., 10.44140624/27., 5.220703129/27., 2.131820768e-09/27.,
+       0., 2.269673925e-08/27., -1.472085211e-09/27., 0., -3.579866378e-09/27., 3.309833313e-09/27., 3.069988867e-09/27., 0., 6.749999998/27., .375, 5.062499998/27., -1.687500001/27., -2.53125/27., -4.337891854e-09/27., 0., -2.730785687e-09/27., 0., -1.752529997e-09/27., -2.688220646e-09/27., -7.593750001/27., -11.39062501/27., -5.695312504/27., 0., 1.695512275e-09/27., 0., 8.279972232e-09/27., 5.220703118/27., -2.564397253e-09/27.,
+       0., -1.859604528e-08/27., 1.915529185e-09/27., 0., 1.242531493e-09/27., -2.760365686e-09/27., -2.585106643e-09/27., 0., 1.098504429e-09/27., 3.374999998/27., 8.437500001/27., 8.437500001/27., 2.109375/27., 3.083736641e-09/27., 0., 1.673396774e-09/27., 0., 1.392243972e-09/27., 2.268918792e-09/27., 1.126891968e-09/27., -3.796874997/27., -9.492187497/27., 0., -1.27300754e-09/27., 0., -5.548698339e-09/27., 4.513045636e-09/27., 2.28557188e-09/27.,
+       0., 9.864103043e-09/27., -1.081174038e-09/27., 0., 0., 1.696119228e-09/27., 1.295980653e-09/27., 0., 0., 0., 1.6875/27., 5.90625/27., 8.859375/27., -1.489851421e-09/27., 0., 0., 0., 0., -1.212054971e-09/27., 0., -1.526140554e-09/27., -1.898437502/27., 0., 0., 0., 2.785884723e-09/27., -2.020678656e-09/27., -1.216051235e-09/27.,
+       0., -3.298075133e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 3.796875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 7.43520556e-09/27., 1.890700841e-09/27., -1.677015644e-09/27., 4.574558371e-09/27., 5.387380817e-09/27., 0., 5.849940986e-09/27., 5.050458116e-09/27., -1.929522183e-09/27., -2.073282841e-09/27., -2.226468122e-09/27., 6.749999997/27., 3.374999995/27., -4.838126272e-09/27., -0.8437499999/27., -1.907480826e-09/27., 0., 0., -5.128275461e-09/27., -2.692445267e-09/27., -12.65625/27., -6.328124996/27., 3.118168401e-09/27., 1.066143282e-08/27., -3.392918112e-09/27., 13.44726562/27.,
+       0., -1.190751798e-08/27., 0., 0., 4.178708486e-09/27., -1.216726338e-09/27., -1.696165826e-09/27., 0., 1.815723436e-09/27., -2.60886173e-09/27., 1.441495174e-09/27., 0., 0., 2.719944115e-09/27., 3.375000001/27., 5.062500002/27., 2.53125/27., -0.843749999/27., 1.39102052e-09/27., 0., 3.558355659e-09/27., 2.570188176e-09/27., 0., -6.328125001/27., -9.492187501/27., -5.27208635e-09/27., 5.080195146e-09/27., 1.193951561e-09/27.,
+       0., 7.442177611e-09/27., 0., 0., -1.857538388e-09/27., 0., 1.18081649e-09/27., 0., 0., 1.138837786e-09/27., 0., 0., 0., -1.391406917e-09/27., 0., 1.687499999/27., 4.218750001/27., 4.218749999/27., 0., 0., -1.771896967e-09/27., -1.201704392e-09/27., 0., 0., -3.1640625/27., 2.370734272e-09/27., -2.427414581e-09/27., 0.,
+       0., -2.783008705e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499998/27., 2.953125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 1.790033168e-09/27., -5.705420567e-09/27., -1.564849524e-09/27., 0., -3.253350057e-09/27., -3.762320294e-09/27., 0., -4.616572844e-09/27., -3.507754433e-09/27., 1.293541624e-09/27., 1.483587431e-09/27., 1.689530748e-09/27., 2.045074215e-09/27., 3.535189627e-09/27., 3.453914691e-09/27., 0., 1.283290186e-09/27., 3.374999999/27., 1.6875/27., 3.403833474e-09/27., -0.4218749983/27., 0., -2.617280305e-09/27., -2.352788912e-09/27., -8.859375007/27., -4.429687498/27., 1.039162777e-09/27.,
+       0., 4.584740223e-09/27., 0., 0., -2.198380542e-09/27., 0., 0., 0., 0., 1.329980617e-09/27., 0., 0., 0., -1.280019966e-09/27., 0., 0., 0., 0., 0., 1.6875/27., 2.531249998/27., 1.265624999/27., 0., 0., 0., 2.551306254e-09/27., -4.429687502/27., 0.,
+       0., -1.935287196e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500006/27., 2.109375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., 0., 0., 0., 0., 0.,
+       0., -1.504240658e-09/27., 3.025333442e-09/27., 0., 0., 1.668362077e-09/27., 1.890214411e-09/27., 0., 2.531373966e-09/27., 1.718384884e-09/27., 0., 0., 0., 0., -1.820174975e-09/27., -1.735717804e-09/27., 0., 0., 0., 0., -1.613927342e-09/27., 0., 1.6875/27., 0.8437500013/27., 1.218851466e-09/27., 3.632327668e-09/27., 0., -5.6953125/27.,
+       0., -1.236762301e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499999/27., 1.265625/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0.,
+       0., 0., -1.0402305e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499988/27., 0.4218750002/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27.,
+  };
+
+  static const double dgp6_into_dgp6_refined_2[] =
+  {
+       1., 13.50000002/27., 4.477651047e-09/27., -3.374999997/27., 0., 1.687500007/27., 6.16353408e-09/27., 13.50000002/27., 6.750000004/27., 0., -1.687500001/27., 0., 0.8437499966/27., 4.477651047e-09/27., 0., 1.413127472e-09/27., -2.32492851e-09/27., 2.120135436e-09/27., -3.374999997/27., -1.687500001/27., -2.32492851e-09/27., 0.4218749972/27., 0., 0., 2.120135436e-09/27., 1.687500007/27., 0.8437499966/27., 6.16353408e-09/27.,
+       0., 13.49999996/27., .75, 10.12499999/27., -3.375000001/27., -5.062500013/27., 1.265624989/27., -5.377342456e-09/27., 6.749999995/27., .375, 5.062499999/27., -1.687499997/27., -2.531249997/27., -6.061004549e-09/27., -2.522505923e-09/27., -1.757682607e-09/27., 5.076176607e-09/27., -4.030174159e-09/27., -1.660185991e-09/27., -1.687499997/27., -2.531249998/27., -1.265624997/27., 1.473665918e-09/27., -1.864204236e-09/27., -3.488329512e-09/27., -5.011931539e-09/27., 0.8437500055/27., -5.464675833e-09/27.,
+       0., 4.713708628e-08/27., 6.750000005/27., 16.87500001/27., 16.875/27., 4.218750014/27., -6.328124988/27., 0., 6.160509612e-09/27., .125, 8.437500002/27., 8.437499996/27., 2.109374997/27., 7.43520556e-09/27., 2.598998648e-09/27., 1.897323875e-09/27., -5.032818415e-09/27., 3.233131787e-09/27., 1.890700841e-09/27., -4.13579958e-09/27., -0.8437500017/27., -2.109375004/27., -1.677015644e-09/27., 2.339299995e-09/27., 3.034834639e-09/27., 4.574558371e-09/27., -6.443287975e-09/27., 5.387380817e-09/27.,
+       0., -3.35421592e-08/27., -3.842436459e-09/27., 3.374999994/27., 11.8125/27., 17.71874999/27., 11.81249999/27., 1.790033168e-09/27., -4.808537073e-09/27., 0., 1.687499999/27., 5.906250003/27., 8.859375002/27., -5.705420567e-09/27., -1.867281149e-09/27., -1.504811106e-09/27., 3.508114059e-09/27., -1.928411608e-09/27., -1.564849524e-09/27., 3.067502989e-09/27., 0., -0.4218749969/27., 0., -1.887786536e-09/27., -1.756210904e-09/27., -3.253350057e-09/27., 4.848647695e-09/27., -3.762320294e-09/27.,
+       0., 1.672993628e-08/27., 2.110870102e-09/27., 3.044674203e-09/27., 1.687500001/27., 7.593750005/27., 15.1875/27., -1.504240658e-09/27., 2.597906154e-09/27., 0., 0., 0.8437499987/27., 3.796874999/27., 3.025333442e-09/27., 0., 0., -1.752612067e-09/27., 0., 0., -1.562523827e-09/27., 0., -1.758623983e-09/27., 0., 0., 0., 1.668362077e-09/27., -2.532301121e-09/27., 1.890214411e-09/27.,
+       0., -5.494802163e-09/27., 0., -1.057399888e-09/27., 0., 0.8437499982/27., 4.640624998/27., 0., 0., 0., 0., 0., 0.4218750005/27., -1.0402305e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0.4218750003/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., -5.377342456e-09/27., -6.061004549e-09/27., -1.660185991e-09/27., 1.473665918e-09/27., -5.011931539e-09/27., -5.464675833e-09/27., 13.49999996/27., 6.749999995/27., -2.522505923e-09/27., -1.687499997/27., -1.864204236e-09/27., 0.8437500055/27., .75, .375, -1.757682607e-09/27., -2.531249998/27., -3.488329512e-09/27., 10.12499999/27., 5.062499999/27., 5.076176607e-09/27., -1.265624997/27., -3.375000001/27., -1.687499997/27., -4.030174159e-09/27., -5.062500013/27., -2.531249997/27., 1.265624989/27.,
+       0., 2.269673925e-08/27., -1.472085211e-09/27., 0., -3.579866378e-09/27., 3.309833313e-09/27., 3.069988867e-09/27., 2.269673925e-08/27., 6.749999998/27., .375, 5.0625/27., -1.687500001/27., -2.53125/27., -1.472085211e-09/27., .375, 15.1875/27., 7.593749997/27., -2.531249994/27., 0., 5.0625/27., 7.593749997/27., 3.796875003/27., -3.579866378e-09/27., -1.687500001/27., -2.531249994/27., 3.309833313e-09/27., -2.53125/27., 3.069988867e-09/27.,
+       0., -1.859604528e-08/27., 1.915529185e-09/27., 0., 1.242531493e-09/27., -2.760365686e-09/27., -2.585106643e-09/27., -1.190751798e-08/27., 1.114028846e-09/27., .125, 8.4375/27., 8.437500001/27., 2.109374999/27., 0., -2.510214908e-09/27., 5.0625/27., 12.65625/27., 12.65625/27., 0., 0., 2.531250002/27., 6.328124998/27., 4.178708486e-09/27., 0., -0.8437500044/27., -1.216726338e-09/27., 0., -1.696165826e-09/27.,
+       0., 9.864103043e-09/27., -1.081174038e-09/27., 0., 0., 1.696119228e-09/27., 1.295980653e-09/27., 4.584740223e-09/27., 0., 0., 1.6875/27., 5.906249999/27., 8.859375/27., 0., 1.718240896e-09/27., 0., 2.531249999/27., 8.859375001/27., 0., 0., -1.151603448e-09/27., 1.265625001/27., -2.198380542e-09/27., 0., 2.155219272e-09/27., 0., 0., 0.,
+       0., -3.298075133e-09/27., 0., 0., 0., 0., 0., -1.236762301e-09/27., 0., 0., 0., 0.8437500002/27., 3.796875/27., 0., 0., 0., 0., 1.265625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 7.43520556e-09/27., 1.890700841e-09/27., -1.677015644e-09/27., 4.574558371e-09/27., 5.387380817e-09/27., 4.713708628e-08/27., 6.160509612e-09/27., 2.598998648e-09/27., -4.13579958e-09/27., 2.339299995e-09/27., -6.443287975e-09/27., 6.750000005/27., .125, 1.897323875e-09/27., -0.8437500017/27., 3.034834639e-09/27., 16.87500001/27., 8.437500002/27., -5.032818415e-09/27., -2.109375004/27., 16.875/27., 8.437499996/27., 3.233131787e-09/27., 4.218750014/27., 2.109374997/27., -6.328124988/27.,
+       0., -1.190751798e-08/27., 0., 0., 4.178708486e-09/27., -1.216726338e-09/27., -1.696165826e-09/27., -1.859604528e-08/27., 1.114028846e-09/27., -2.510214908e-09/27., 0., 0., 0., 1.915529185e-09/27., .125, 5.0625/27., 2.531250002/27., -0.8437500044/27., 0., 8.4375/27., 12.65625/27., 6.328124998/27., 1.242531493e-09/27., 8.437500001/27., 12.65625/27., -2.760365686e-09/27., 2.109374999/27., -2.585106643e-09/27.,
+       0., 7.442177611e-09/27., 0., 0., -1.857538388e-09/27., 0., 1.18081649e-09/27., 7.442177611e-09/27., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 4.218749999/27., 4.218750002/27., 0., 0., 4.218749999/27., 10.546875/27., -1.857538388e-09/27., 0., 4.218750002/27., 0., 0., 1.18081649e-09/27.,
+       0., -2.783008705e-09/27., 0., 0., 0., 0., 0., -1.935287196e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500004/27., 2.953124999/27., 0., 0., 0., 2.109375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 1.790033168e-09/27., -5.705420567e-09/27., -1.564849524e-09/27., 0., -3.253350057e-09/27., -3.762320294e-09/27., -3.35421592e-08/27., -4.808537073e-09/27., -1.867281149e-09/27., 3.067502989e-09/27., -1.887786536e-09/27., 4.848647695e-09/27., -3.842436459e-09/27., 0., -1.504811106e-09/27., 0., -1.756210904e-09/27., 3.374999994/27., 1.687499999/27., 3.508114059e-09/27., -0.4218749969/27., 11.8125/27., 5.906250003/27., -1.928411608e-09/27., 17.71874999/27., 8.859375002/27., 11.81249999/27.,
+       0., 4.584740223e-09/27., 0., 0., -2.198380542e-09/27., 0., 0., 9.864103043e-09/27., 0., 1.718240896e-09/27., 0., 0., 0., -1.081174038e-09/27., 0., 0., -1.151603448e-09/27., 2.155219272e-09/27., 0., 1.6875/27., 2.531249999/27., 1.265625001/27., 0., 5.906249999/27., 8.859375001/27., 1.696119228e-09/27., 8.859375/27., 1.295980653e-09/27.,
+       0., -1.935287196e-09/27., 0., 0., 0., 0., 0., -2.783008705e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500004/27., 2.109375/27., 0., 0., 2.953124999/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0., 0., 0., 0.,
+       0., -1.504240658e-09/27., 3.025333442e-09/27., 0., 0., 1.668362077e-09/27., 1.890214411e-09/27., 1.672993628e-08/27., 2.597906154e-09/27., 0., -1.562523827e-09/27., 0., -2.532301121e-09/27., 2.110870102e-09/27., 0., 0., 0., 0., 3.044674203e-09/27., 0., -1.752612067e-09/27., -1.758623983e-09/27., 1.687500001/27., 0.8437499987/27., 0., 7.593750005/27., 3.796874999/27., 15.1875/27.,
+       0., -1.236762301e-09/27., 0., 0., 0., 0., 0., -3.298075133e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500002/27., 1.265625/27., 0., 3.796875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750001/27., 0., 0., 0.,
+       0., 0., -1.0402305e-09/27., 0., 0., 0., 0., -5.494802163e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.057399888e-09/27., 0., 0., 0., 0., 0., 0., 0.8437499982/27., 0.4218750005/27., 4.640624998/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750003/27.,
+  };
+
+  static const double dgp6_into_dgp6_refined_3[] =
+  {
+       1., 0., -.375, 2.10204759e-09/27., 3.164062499/27., 2.685082188e-09/27., 0.5537109359/27., 13.50000002/27., 1.27801857e-09/27., -5.062500003/27., 0., 1.582031252/27., -1.746243791e-09/27., 4.477651047e-09/27., 1.301720728e-09/27., -3.403137136e-09/27., -2.48697705e-09/27., 1.399117932e-09/27., -3.374999997/27., -2.488591681e-09/27., 1.265625/27., -3.134242688e-09/27., 0., -1.679484885e-09/27., 0., 1.687500007/27., 0., 6.16353408e-09/27.,
+       0., .5, 3.658215698e-09/27., -15.1875/27., 0., 10.44140624/27., 2.131820768e-09/27., -5.377342456e-09/27., 6.749999995/27., 4.015840528e-09/27., -7.593749999/27., -3.619460261e-09/27., 5.220703129/27., -6.061004549e-09/27., -4.949828173e-09/27., 4.798898977e-09/27., 5.394797821e-09/27., -2.732185104e-09/27., -1.660185991e-09/27., -1.687499998/27., 0., 1.898437503/27., 1.473665918e-09/27., 2.05126778e-09/27., 2.073730163e-09/27., -5.011931539e-09/27., 0.8437500021/27., -5.464675833e-09/27.,
+       0., 0., 6.749999997/27., 0., -12.65625/27., 1.066143282e-08/27., 13.44726562/27., 0., 5.849940986e-09/27., 3.374999995/27., 0., -6.328124996/27., -3.392918112e-09/27., 7.43520556e-09/27., 5.050458116e-09/27., -4.838126272e-09/27., -5.128275461e-09/27., 3.118168401e-09/27., 1.890700841e-09/27., -1.929522183e-09/27., -0.8437499999/27., -2.692445267e-09/27., -1.677015644e-09/27., -2.073282841e-09/27., -1.907480826e-09/27., 4.574558371e-09/27., -2.226468122e-09/27., 5.387380817e-09/27.,
+       0., 0., 2.045074215e-09/27., 3.374999999/27., 0., -8.859375007/27., 1.039162777e-09/27., 1.790033168e-09/27., -4.616572844e-09/27., 3.535189627e-09/27., 1.6875/27., -2.617280305e-09/27., -4.429687498/27., -5.705420567e-09/27., -3.507754433e-09/27., 3.453914691e-09/27., 3.403833474e-09/27., -2.352788912e-09/27., -1.564849524e-09/27., 1.293541624e-09/27., 0., -0.4218749983/27., 0., 1.483587431e-09/27., 1.283290186e-09/27., -3.253350057e-09/27., 1.689530748e-09/27., -3.762320294e-09/27.,
+       0., 0., 0., 0., 1.6875/27., 3.632327668e-09/27., -5.6953125/27., -1.504240658e-09/27., 2.531373966e-09/27., -1.820174975e-09/27., 0., 0.8437500013/27., 0., 3.025333442e-09/27., 1.718384884e-09/27., -1.735717804e-09/27., -1.613927342e-09/27., 1.218851466e-09/27., 0., 0., 0., 0., 0., 0., 0., 1.668362077e-09/27., 0., 1.890214411e-09/27.,
+       0., 0., 0., 0., 0., 0.8437499988/27., 0., 0., 0., 0., 0., 0., 0.4218750002/27., -1.0402305e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 1.080949017e-09/27., -3.92061665e-09/27., 2.375828888e-09/27., 1.082088734e-09/27., 2.763894428e-09/27., 13.49999996/27., 2.662581975e-09/27., -5.062499997/27., 0., 1.582031249/27., 3.013440618e-09/27., .75, 0., -7.593749995/27., 2.786171066e-09/27., 2.373046874/27., 10.12499999/27., 4.93248614e-09/27., -3.796874999/27., 6.218557924e-09/27., -3.375000001/27., 2.486121308e-09/27., 1.265625001/27., -5.062500013/27., 0., 1.265624989/27.,
+       0., 0., -4.337891854e-09/27., -2.688220646e-09/27., 0., 8.279972232e-09/27., -2.564397253e-09/27., 2.269673925e-08/27., 6.749999998/27., 0., -7.593750001/27., 1.695512275e-09/27., 5.220703118/27., -1.472085211e-09/27., .375, -2.730785687e-09/27., -11.39062501/27., 0., 0., 5.062499998/27., 0., -5.695312504/27., -3.579866378e-09/27., -1.687500001/27., -1.752529997e-09/27., 3.309833313e-09/27., -2.53125/27., 3.069988867e-09/27.,
+       0., 0., 2.719944115e-09/27., 1.39102052e-09/27., 0., -5.27208635e-09/27., 1.193951561e-09/27., -1.190751798e-08/27., 1.815723436e-09/27., 3.375000001/27., 0., -6.328125001/27., 5.080195146e-09/27., 0., -2.60886173e-09/27., 5.062500002/27., 3.558355659e-09/27., -9.492187501/27., 0., 1.441495174e-09/27., 2.53125/27., 2.570188176e-09/27., 4.178708486e-09/27., 0., -0.843749999/27., -1.216726338e-09/27., 0., -1.696165826e-09/27.,
+       0., 0., -1.280019966e-09/27., 0., 0., 2.551306254e-09/27., 0., 4.584740223e-09/27., 0., 0., 1.6875/27., 0., -4.429687502/27., 0., 1.329980617e-09/27., 0., 2.531249998/27., 0., 0., 0., 0., 1.265624999/27., -2.198380542e-09/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., -1.236762301e-09/27., 0., 0., 0., 0.8437499999/27., 0., 0., 0., 0., 0., 1.265625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 4.740131327e-09/27., -2.394091461e-09/27., -2.833538748e-09/27., -2.834398247e-09/27., 4.713708628e-08/27., -2.511138328e-09/27., -2.557980145e-09/27., 0., 1.155419779e-09/27., -1.910224451e-09/27., 6.750000005/27., -1.219869724e-09/27., -2.531250005/27., -2.117545045e-09/27., 0.7910156257/27., 16.87500001/27., -5.105185708e-09/27., -6.328125001/27., -6.206630111e-09/27., 16.875/27., -2.65324732e-09/27., -6.328125001/27., 4.218750014/27., 0., -6.328124988/27.,
+       0., 0., 3.083736641e-09/27., 2.268918792e-09/27., 0., -5.548698339e-09/27., 2.28557188e-09/27., -1.859604528e-08/27., 1.098504429e-09/27., 0., 1.126891968e-09/27., -1.27300754e-09/27., 4.513045636e-09/27., 1.915529185e-09/27., 3.374999998/27., 1.673396774e-09/27., -3.796874997/27., 0., 0., 8.437500001/27., 0., -9.492187497/27., 1.242531493e-09/27., 8.437500001/27., 1.392243972e-09/27., -2.760365686e-09/27., 2.109375/27., -2.585106643e-09/27.,
+       0., 0., -1.391406917e-09/27., 0., 0., 2.370734272e-09/27., 0., 7.442177611e-09/27., 0., 0., 0., 0., -2.427414581e-09/27., 0., 1.138837786e-09/27., 1.687499999/27., -1.771896967e-09/27., -3.1640625/27., 0., 0., 4.218750001/27., -1.201704392e-09/27., -1.857538388e-09/27., 0., 4.218749999/27., 0., 0., 1.18081649e-09/27.,
+       0., 0., 0., 0., 0., 0., 0., -1.935287196e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500006/27., 0., 0., 0., 0., 2.109375/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., -3.800114121e-09/27., 1.817404218e-09/27., 2.774044754e-09/27., 1.897638307e-09/27., -3.35421592e-08/27., 1.650316554e-09/27., 1.915367952e-09/27., 0., 0., 0., -3.842436459e-09/27., 1.215890943e-09/27., 3.350154554e-09/27., 1.134768624e-09/27., 0., 3.374999994/27., 3.677123151e-09/27., -1.265624999/27., 4.347093102e-09/27., 11.8125/27., 1.913446388e-09/27., -4.4296875/27., 17.71874999/27., 0., 11.81249999/27.,
+       0., 0., -1.489851421e-09/27., -1.212054971e-09/27., 0., 2.785884723e-09/27., -1.216051235e-09/27., 9.864103043e-09/27., 0., 0., 0., 0., -2.020678656e-09/27., -1.081174038e-09/27., 0., 0., -1.526140554e-09/27., 0., 0., 1.6875/27., 0., -1.898437502/27., 0., 5.90625/27., 0., 1.696119228e-09/27., 8.859375/27., 1.295980653e-09/27.,
+       0., 0., 0., 0., 0., 0., 0., -2.783008705e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437499998/27., 0., 0., 0., 2.953125/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218749999/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 2.116266852e-09/27., 0., -1.722358007e-09/27., 0., 1.672993628e-08/27., 0., -1.037168957e-09/27., 0., 0., 0., 2.110870102e-09/27., 0., -1.685264233e-09/27., 0., 0., 3.044674203e-09/27., -1.884920663e-09/27., 0., -2.149191101e-09/27., 1.687500001/27., 0., -0.6328125002/27., 7.593750005/27., 0., 15.1875/27.,
+       0., 0., 0., 0., 0., 0., 0., -3.298075133e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.8437500001/27., 0., 0., 3.796875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., -5.494802163e-09/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.057399888e-09/27., 0., 0., 0., 0., 0., 0., 0.8437499982/27., 0., 4.640624998/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.421875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.4218750003/27.,
+  };
+};
+
+
+template <>
+const double * const
+FE_DGP<2>::Matrices::embedding[][GeometryInfo<2>::children_per_cell] =
+{
+  { FE_DGP_2d::dgp1_into_dgp1_refined_0,
+      FE_DGP_2d::dgp1_into_dgp1_refined_1,
+      FE_DGP_2d::dgp1_into_dgp1_refined_2,
+      FE_DGP_2d::dgp1_into_dgp1_refined_3 },
+    { FE_DGP_2d::dgp2_into_dgp2_refined_0,
+       FE_DGP_2d::dgp2_into_dgp2_refined_1,
+       FE_DGP_2d::dgp2_into_dgp2_refined_2,
+       FE_DGP_2d::dgp2_into_dgp2_refined_3 },
+      { FE_DGP_2d::dgp3_into_dgp3_refined_0,
+         FE_DGP_2d::dgp3_into_dgp3_refined_1,
+         FE_DGP_2d::dgp3_into_dgp3_refined_2,
+         FE_DGP_2d::dgp3_into_dgp3_refined_3 },
+       { FE_DGP_2d::dgp4_into_dgp4_refined_0,
+           FE_DGP_2d::dgp4_into_dgp4_refined_1,
+           FE_DGP_2d::dgp4_into_dgp4_refined_2,
+           FE_DGP_2d::dgp4_into_dgp4_refined_3 },
+         { FE_DGP_2d::dgp5_into_dgp5_refined_0,
+             FE_DGP_2d::dgp5_into_dgp5_refined_1,
+             FE_DGP_2d::dgp5_into_dgp5_refined_2,
+             FE_DGP_2d::dgp5_into_dgp5_refined_3 },
+           { FE_DGP_2d::dgp6_into_dgp6_refined_0,
+               FE_DGP_2d::dgp6_into_dgp6_refined_1,
+               FE_DGP_2d::dgp6_into_dgp6_refined_2,
+               FE_DGP_2d::dgp6_into_dgp6_refined_3 }
+};
+
+template <>
+const unsigned int FE_DGP<2>::Matrices::n_embedding_matrices
+= sizeof(FE_DGP<2>::Matrices::embedding) /
+sizeof(FE_DGP<2>::Matrices::embedding[0]);
+
+
+/*
+ * These elements are not defined by interpolation, therefore there
+ * are no interpolation matrices.
+ */
+
+template <>
+const double * const FE_DGP<2>::Matrices::projection_matrices[][GeometryInfo<2>::children_per_cell];
+
+template <>
+const unsigned int FE_DGP<2>::Matrices::n_projection_matrices
+= 0;
+
+
+#else // #if deal_II_dimension
+// On gcc2.95 on Alpha OSF1, the native assembler does not like empty
+// files, so provide some dummy code
+namespace { void dummy () {}; };
+#endif // #if deal_II_dimension == 2
diff --git a/deal.II/deal.II/source/fe/fe_dgp_3d.cc b/deal.II/deal.II/source/fe/fe_dgp_3d.cc
new file mode 100644 (file)
index 0000000..8cedf0e
--- /dev/null
@@ -0,0 +1,792 @@
+//----------------------------------------------------------------
+//    $Id$
+//    Version: $Name$
+//
+//    Copyright (C) 1998, 1999, 2000, 2001, 2002 by the deal.II authors
+//
+//    This file is subject to QPL and may not be  distributed
+//    without copyright and license information. Please refer
+//    to the file deal.II/doc/license.html for the  text  and
+//    further information on this license.
+//
+//----------------------------------------------------------------
+
+
+// only compile in 3d
+#if deal_II_dimension == 3
+
+#include <fe/fe_dgp.h>
+
+// Transfer matrices for finite elements
+
+namespace FE_DGP_3d
+{
+  static const double dgp0_into_dgp0_refined_0[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_1[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_2[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_3[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_4[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_5[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_6[] =
+  {
+       1.,
+  };
+
+  static const double dgp0_into_dgp0_refined_7[] =
+  {
+       1.,
+  };
+
+  static const double dgp1_into_dgp1_refined_0[] =
+  {
+       1., 0., 0., 0.,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_1[] =
+  {
+       1., .5, 0., 0.,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_2[] =
+  {
+       1., .5, 0., .5,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_3[] =
+  {
+       1., 0., 0., .5,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_4[] =
+  {
+       1., 0., .5, 0.,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_5[] =
+  {
+       1., .5, .5, 0.,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_6[] =
+  {
+       1., .5, .5, .5,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp1_into_dgp1_refined_7[] =
+  {
+       1., 0., .5, .5,
+       0., .5, 0., 0.,
+       0., 0., .5, 0.,
+       0., 0., 0., .5,
+  };
+
+  static const double dgp2_into_dgp2_refined_0[] =
+  {
+       1., 0., -.375, 0., 0., -.375, 0., 0., 0., -.375,
+       0., .5, 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_1[] =
+  {
+       1., .5, 0., 0., 0., -.375, 0., 0., 0., -.375,
+       0., .5, .75, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_2[] =
+  {
+       1., .5, 0., 0., 0., -.375, .5, .25, 0., 0.,
+       0., .5, .75, 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, .25, 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, .25, 0., .75,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_3[] =
+  {
+       1., 0., -.375, 0., 0., -.375, .5, 0., 0., 0.,
+       0., .5, 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, 0., 0., .75,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_4[] =
+  {
+       1., 0., -.375, .5, 0., 0., 0., 0., 0., -.375,
+       0., .5, 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, 0., .75, 0., 0., 0., 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_5[] =
+  {
+       1., .5, 0., .5, .25, 0., 0., 0., 0., -.375,
+       0., .5, .75, 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, .25, .75, 0., 0., 0., 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, .25, .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_6[] =
+  {
+       1., .5, 0., .5, .25, 0., .5, .25, .25, 0.,
+       0., .5, .75, 0., .25, 0., 0., .25, 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, .25, .75, 0., 0., .25, 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, .25, .25, .75,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp2_into_dgp2_refined_7[] =
+  {
+       1., 0., -.375, .5, 0., 0., .5, 0., .25, 0.,
+       0., .5, 0., 0., .25, 0., 0., .25, 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .5, 0., .75, 0., 0., .25, 0.,
+       0., 0., 0., 0., .25, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .5, 0., .25, .75,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .25, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25,
+  };
+
+  static const double dgp3_into_dgp3_refined_0[] =
+  {
+       1., 0., -.375, 0., 0., 0., 0., -.375, 0., 0., 0., 0., 0., 0., 0., 0., -.375, 0., 0., 0.,
+       0., .5, 0., -15.1875/27., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -5.0625/27., 0., 0., 0., -15.1875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_1[] =
+  {
+       1., .5, 0., -.125, 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0.,
+       0., .5, .75, .375, 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0.,
+       0., 0., .25, 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, .25, 0., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0.,
+       0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., 0., 0., -5.0625/27., 0., 0., 0., -15.1875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_2[] =
+  {
+       1., .5, 0., -.125, 0., 0., 0., -.375, -5.0625/27., 0., .5, .25, 0., 0., 0., -5.0625/27., 0., 0., 0., -.125,
+       0., .5, .75, .375, 0., 0., 0., 0., -5.0625/27., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., .25, 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, .25, 0., 0., 0., -15.1875/27., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., 0., 0., -5.0625/27., .75, .375, 0., .375,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., 0., 0., 0., .375, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., .375, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_3[] =
+  {
+       1., 0., -.375, 0., 0., 0., 0., -.375, 0., 0., .5, 0., -5.0625/27., 0., 0., -5.0625/27., 0., 0., 0., -.125,
+       0., .5, 0., -15.1875/27., 0., 0., 0., 0., -5.0625/27., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -15.1875/27., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., -5.0625/27., .75, 0., 0., .375,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., 0., .375, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 0., 0., .375, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_4[] =
+  {
+       1., 0., -.375, 0., .5, 0., -5.0625/27., 0., 0., -.125, 0., 0., 0., 0., 0., 0., -.375, 0., -5.0625/27., 0.,
+       0., .5, 0., -15.1875/27., 0., .25, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0.,
+       0., 0., .25, 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, 0., -5.0625/27., .75, 0., .375, 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., .25, 0., 0., 0., 0., 0., -15.1875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .375, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_5[] =
+  {
+       1., .5, 0., -.125, .5, .25, 0., 0., 0., -.125, 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., -5.0625/27., 0.,
+       0., .5, .75, .375, 0., .25, .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0.,
+       0., 0., .25, 16.875/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, .25, 0., .75, .375, .375, 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0.,
+       0., 0., 0., 0., 0., .25, .375, 0., .375, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, .125, 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., .25, .125, 0., 0., 0., 0., -15.1875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .375, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_6[] =
+  {
+       1., .5, 0., -.125, .5, .25, 0., 0., 0., -.125, .5, .25, 0., .25, .125, 0., 0., 0., 0., -.125,
+       0., .5, .75, .375, 0., .25, .375, 0., 0., 0., 0., .25, .375, 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., .25, 16.875/27., 0., 0., .125, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, .25, 0., .75, .375, .375, 0., 0., 0., .25, .125, .375, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, .375, 0., .375, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, .125, 16.875/27., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., .25, .125, 0., .75, .375, .375, .375,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 0., .125, 0., 0., .375, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .375, 0., 0., .375, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, .125, 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp3_into_dgp3_refined_7[] =
+  {
+       1., 0., -.375, 0., .5, 0., -5.0625/27., 0., 0., -.125, .5, 0., -5.0625/27., .25, 0., 0., 0., 0., 0., -.125,
+       0., .5, 0., -15.1875/27., 0., .25, 0., 0., 0., 0., 0., .25, 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., 0., 0., .125, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., .5, 0., -5.0625/27., .75, 0., .375, 0., 0., 0., .25, 0., .375, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .25, 0., 0., .375, 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .25, 0., 16.875/27., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., .25, 0., 0., .75, 0., .375, .375,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., 0., .125, 0., 0., .375, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .375, 0., 0., .375, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., .125, 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125,
+  };
+
+  static const double dgp4_into_dgp4_refined_0[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.1640625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.796875/27., 0., 0., 0., 3.1640625/27.,
+       0., .5, 0., -15.1875/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -15.1875/27., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -2.53125/27., 0., 0., 0., -12.65625/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_1[] =
+  {
+       1., .5, 0., -.125, 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.1640625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.796875/27., 0., 0., 0., 3.1640625/27.,
+       0., .5, .75, .375, -.125, 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., .25, 16.875/27., 16.875/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -2.53125/27., 0., 0., 0., -12.65625/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_2[] =
+  {
+       1., .5, 0., -.125, 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., 0., 0., 3.1640625/27., .5, .25, 0., -1.6875/27., 0., 0., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., -.125, -1.6875/27., 0., 0.,
+       0., .5, .75, .375, -.125, 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0.,
+       0., 0., .25, 16.875/27., 16.875/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -15.1875/27., -7.59375/27., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -5.0625/27., -2.53125/27., 0., .75, .375, 0., 0., 0., -7.59375/27., .375, 5.0625/27., 0., -.125,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -2.53125/27., 0., 0., .375, 15.1875/27., 0., 0., 0., 0., 5.0625/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -7.59375/27., 0., 0., 0., .375, 5.0625/27., 0., 0., 0., 5.0625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 0., 0., -2.53125/27., 16.875/27., 8.4375/27., 0., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 0., 0., 0., 8.4375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 0., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 0., 11.8125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_3[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., 0., 0., 0., 0., -.375, 0., 3.796875/27., 0., 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -.125, 0., 0., 0.,
+       0., .5, 0., -15.1875/27., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -15.1875/27., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -7.59375/27., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -12.65625/27., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., 0., 0., 0., -5.0625/27., 0., 0., .75, 0., -7.59375/27., 0., 0., -7.59375/27., .375, 0., 0., -.125,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -2.53125/27., 0., 0., .375, 0., 0., 0., 0., 0., 5.0625/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -7.59375/27., 0., 0., 0., .375, 0., 0., 0., 0., 5.0625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 0., 0., -2.53125/27., 16.875/27., 0., 0., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 0., 8.4375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 11.8125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_4[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, 0., 3.796875/27., -5.0625/27., 0., 0., 0., 0., 0., 3.1640625/27.,
+       0., .5, 0., -15.1875/27., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., 0., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .75, 0., -7.59375/27., .375, 0., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., 0., -7.59375/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .375, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 16.875/27., 0., 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .25, 0., -2.53125/27., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -15.1875/27., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .375, 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .125, 0., 0., 0., 0., 0., -12.65625/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 5.0625/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_5[] =
+  {
+       1., .5, 0., -.125, 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -.125, -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -.375, -5.0625/27., 0., -5.0625/27., -2.53125/27., 0., 0., 0., 0., 3.1640625/27.,
+       0., .5, .75, .375, -.125, 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -7.59375/27., 0., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., .25, 16.875/27., 16.875/27., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., -.125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -5.0625/27., -2.53125/27., -7.59375/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .375, 15.1875/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., 8.4375/27., 16.875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -2.53125/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .25, .125, 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -15.1875/27., -7.59375/27., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .375, 5.0625/27., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -7.59375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .125, 1.6875/27., 0., 0., 0., 0., -12.65625/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 5.0625/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_6[] =
+  {
+       1., .5, 0., -.125, 0., .5, .25, 0., -1.6875/27., 0., 0., 0., -.125, -1.6875/27., 0., .5, .25, 0., -1.6875/27., .25, .125, 0., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -.125, -1.6875/27., -1.6875/27., 0.,
+       0., .5, .75, .375, -.125, 0., .25, .375, 5.0625/27., 0., 0., 0., 0., -1.6875/27., 0., 0., .25, .375, 5.0625/27., 0., .125, 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0.,
+       0., 0., .25, 16.875/27., 16.875/27., 0., 0., .125, 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 11.8125/27., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., -.125, 0., 0., 0., 0., .25, .125, 0., .375, 5.0625/27., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .375, 15.1875/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., 16.875/27., 8.4375/27., 16.875/27., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, .25, 0., -1.6875/27., .25, .125, 0., 0., 0., -1.6875/27., .75, .375, 0., .375, 5.0625/27., 0., .375, 5.0625/27., 5.0625/27., -.125,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .375, 5.0625/27., 0., .125, 5.0625/27., 0., 0., 0., 0., .375, 15.1875/27., 0., 5.0625/27., 0., 0., 5.0625/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 8.4375/27., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .375, 5.0625/27., 5.0625/27., 0., 0., 0., .375, 5.0625/27., 15.1875/27., 0., 0., 5.0625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 5.0625/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 8.4375/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, .125, 0., .125, 1.6875/27., 0., 16.875/27., 8.4375/27., 8.4375/27., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 5.0625/27., 0., 1.6875/27., 0., 0., 8.4375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 5.0625/27., 0., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 1.6875/27., 1.6875/27., 11.8125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+  static const double dgp4_into_dgp4_refined_7[] =
+  {
+       1., 0., -.375, 0., 3.1640625/27., .5, 0., -5.0625/27., 0., 0., 0., 0., -.125, 0., 0., .5, 0., -5.0625/27., 0., .25, 0., -2.53125/27., 0., 0., -1.6875/27., 0., 0., 0., 0., 0., 0., -.125, 0., -1.6875/27., 0.,
+       0., .5, 0., -15.1875/27., 0., 0., .25, 0., -7.59375/27., 0., 0., 0., 0., -1.6875/27., 0., 0., .25, 0., -7.59375/27., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0., 0.,
+       0., 0., .25, 0., -12.65625/27., 0., 0., .125, 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., .125, 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .75, 0., -7.59375/27., .375, 0., -.125, 0., 0., 0., 0., .25, 0., -2.53125/27., .375, 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., -1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .375, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., .125, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., 16.875/27., 0., 16.875/27., 0., 0., 0., 0., 0., 0., 0., .125, 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 8.4375/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 11.8125/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .5, 0., -5.0625/27., 0., .25, 0., -2.53125/27., 0., 0., -1.6875/27., .75, 0., -7.59375/27., .375, 0., 0., .375, 0., 5.0625/27., -.125,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -7.59375/27., 0., .125, 0., 0., 0., 0., 0., .375, 0., 0., 5.0625/27., 0., 0., 5.0625/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .375, 0., 5.0625/27., 0., 0., 0., .375, 0., 15.1875/27., 0., 0., 5.0625/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 5.0625/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 8.4375/27., 0., 0., 0., 0., 0., 5.0625/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .25, 0., -2.53125/27., .125, 0., 0., 16.875/27., 0., 8.4375/27., 16.875/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 0., 1.6875/27., 0., 0., 8.4375/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 5.0625/27., 0., 0., 8.4375/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., .125, 0., 1.6875/27., 11.8125/27.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27., 0.,
+       0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.6875/27.,
+  };
+
+};
+
+
+template <>
+const double * const
+FE_DGP<3>::Matrices::embedding[][GeometryInfo<3>::children_per_cell] =
+{
+  { FE_DGP_3d::dgp1_into_dgp1_refined_0, FE_DGP_3d::dgp1_into_dgp1_refined_1,
+      FE_DGP_3d::dgp1_into_dgp1_refined_2, FE_DGP_3d::dgp1_into_dgp1_refined_3,
+      FE_DGP_3d::dgp1_into_dgp1_refined_4, FE_DGP_3d::dgp1_into_dgp1_refined_5,
+      FE_DGP_3d::dgp1_into_dgp1_refined_6, FE_DGP_3d::dgp1_into_dgp1_refined_7 },
+    { FE_DGP_3d::dgp2_into_dgp2_refined_0, FE_DGP_3d::dgp2_into_dgp2_refined_1,
+       FE_DGP_3d::dgp2_into_dgp2_refined_2, FE_DGP_3d::dgp2_into_dgp2_refined_3,
+       FE_DGP_3d::dgp2_into_dgp2_refined_4, FE_DGP_3d::dgp2_into_dgp2_refined_5,
+       FE_DGP_3d::dgp2_into_dgp2_refined_6, FE_DGP_3d::dgp2_into_dgp2_refined_7 },
+      { FE_DGP_3d::dgp3_into_dgp3_refined_0, FE_DGP_3d::dgp3_into_dgp3_refined_1,
+         FE_DGP_3d::dgp3_into_dgp3_refined_2, FE_DGP_3d::dgp3_into_dgp3_refined_3,
+         FE_DGP_3d::dgp3_into_dgp3_refined_4, FE_DGP_3d::dgp3_into_dgp3_refined_5,
+         FE_DGP_3d::dgp3_into_dgp3_refined_6, FE_DGP_3d::dgp3_into_dgp3_refined_7 },
+       { FE_DGP_3d::dgp4_into_dgp4_refined_0, FE_DGP_3d::dgp4_into_dgp4_refined_1,
+           FE_DGP_3d::dgp4_into_dgp4_refined_2, FE_DGP_3d::dgp4_into_dgp4_refined_3,
+           FE_DGP_3d::dgp4_into_dgp4_refined_4, FE_DGP_3d::dgp4_into_dgp4_refined_5,
+           FE_DGP_3d::dgp4_into_dgp4_refined_6, FE_DGP_3d::dgp4_into_dgp4_refined_7 }
+};
+
+template <>
+const unsigned int FE_DGP<3>::Matrices::n_embedding_matrices
+= sizeof(FE_DGP<3>::Matrices::embedding) /
+sizeof(FE_DGP<3>::Matrices::embedding[0]);
+
+
+/*
+ * These elements are not defined by interpolation, therefore there
+ * are no interpolation matrices.
+ */
+
+template <>
+const double * const FE_DGP<3>::Matrices::projection_matrices[][GeometryInfo<3>::children_per_cell];
+
+template <>
+const unsigned int FE_DGP<3>::Matrices::n_projection_matrices
+= 0;
+
+
+#else // #if deal_II_dimension
+// On gcc2.95 on Alpha OSF1, the native assembler does not like empty
+// files, so provide some dummy code
+namespace { void dummy () {}; };
+#endif // #if deal_II_dimension

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.