--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2016 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Check MGTransferMatrixFree by comparison with MGTransferPrebuilt on a
+// series of meshes with uniform meshes for FE_Q
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
+
+
+template <int dim, typename Number>
+void check(const unsigned int fe_degree)
+{
+ deallog.threshold_double(std::max(5e2*(double)std::numeric_limits<Number>::epsilon(),
+ 1e-11));
+ FE_Q<dim> fe(QGaussLobatto<1>(fe_degree+1));
+ deallog << "FE: " << fe.get_name() << std::endl;
+
+ // run a few different sizes...
+ unsigned int sizes [] = {1, 2, 3, 4, 5, 6, 8};
+ for (unsigned int cycle=0; cycle<sizeof(sizes)/sizeof(unsigned int); ++cycle)
+ {
+ unsigned int n_refinements = 0;
+ unsigned int n_subdiv = sizes[cycle];
+ if (n_subdiv > 1)
+ while (n_subdiv%2 == 0)
+ {
+ n_refinements += 1;
+ n_subdiv /= 2;
+ }
+ n_refinements += 3-dim;
+ if (fe_degree < 3)
+ n_refinements += 1;
+ parallel::distributed::Triangulation<dim>
+ tr(MPI_COMM_WORLD,
+ Triangulation<dim>::limit_level_difference_at_vertices,
+ parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
+ GridGenerator::subdivided_hyper_cube(tr, n_subdiv);
+ tr.refine_global(n_refinements);
+ deallog << "no. cells: " << tr.n_global_active_cells() << std::endl;
+
+ DoFHandler<dim> mgdof(tr);
+ mgdof.distribute_dofs(fe);
+ mgdof.distribute_mg_dofs(fe);
+
+ ConstraintMatrix hanging_node_constraints;
+ MGConstrainedDoFs mg_constrained_dofs;
+ ZeroFunction<dim> zero_function;
+ typename FunctionMap<dim>::type dirichlet_boundary;
+ dirichlet_boundary[0] = &zero_function;
+ mg_constrained_dofs.initialize(mgdof, dirichlet_boundary);
+
+ // build reference
+ MGTransferPrebuilt<parallel::distributed::Vector<double> >
+ transfer_ref(hanging_node_constraints, mg_constrained_dofs);
+ transfer_ref.build_matrices(mgdof);
+
+ // build matrix-free transfer
+ MGTransferMatrixFree<dim, Number> transfer(mg_constrained_dofs);
+ transfer.build(mgdof);
+
+ // check prolongation for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.prolongate(level, v2, v1);
+ transfer_ref.prolongate(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff prolongate l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+
+ // check restriction for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict l" << level << ": " << v3.l2_norm() << std::endl;
+
+ v2 = 1.;
+ v3 = 1.;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict add l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+ deallog << std::endl;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ Utilities::MPI::MPI_InitFinalize mpi(argc, argv);
+ mpi_initlog();
+
+ check<2,double>(1);
+ check<2,double>(3);
+ check<3,double>(1);
+ check<3,double>(3);
+ check<2,float> (2);
+ check<3,float> (2);
+}
--- /dev/null
+
+DEAL::FE: FE_Q<2>(1)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<2>(QGaussLobatto(4))
+DEAL::no. cells: 4
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 36
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 100
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_Q<3>(1)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_Q<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 27
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 125
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FE_Q<2>(2)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<3>(2)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
--- /dev/null
+
+DEAL::FE: FE_Q<2>(1)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<2>(QGaussLobatto(4))
+DEAL::no. cells: 4
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 36
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 100
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_Q<3>(1)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_Q<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 27
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 125
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FE_Q<2>(2)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<3>(2)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
--- /dev/null
+
+DEAL::FE: FE_Q<2>(1)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<2>(QGaussLobatto(4))
+DEAL::no. cells: 4
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 36
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 100
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_Q<3>(1)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_Q<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 27
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 125
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FE_Q<2>(2)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<3>(2)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2016 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Check MGTransferMatrixFree by comparison with MGTransferPrebuilt on a
+// series of meshes with adaptive meshes for FE_Q
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
+
+
+template <int dim, typename Number>
+void check(const unsigned int fe_degree)
+{
+ deallog.threshold_double(std::max(5e2*(double)std::numeric_limits<Number>::epsilon(),
+ 1e-11));
+ FE_Q<dim> fe(QGaussLobatto<1>(fe_degree+1));
+ deallog << "FE: " << fe.get_name() << std::endl;
+
+ // run a few different sizes...
+ unsigned int sizes [] = {1, 2, 3, 4};
+ for (unsigned int cycle=0; cycle<sizeof(sizes)/sizeof(unsigned int); ++cycle)
+ {
+ unsigned int n_refinements = 0;
+ unsigned int n_subdiv = sizes[cycle];
+ if (n_subdiv > 1)
+ while (n_subdiv%2 == 0)
+ {
+ n_refinements += 1;
+ n_subdiv /= 2;
+ }
+ n_refinements += 6-2*dim;
+ if (fe_degree < 3)
+ n_refinements += 1;
+
+ parallel::distributed::Triangulation<dim>
+ tr(MPI_COMM_WORLD,
+ Triangulation<dim>::limit_level_difference_at_vertices,
+ parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
+ GridGenerator::subdivided_hyper_cube(tr, n_subdiv);
+ tr.refine_global(n_refinements);
+
+ // adaptive refinement into a circle
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() < 0.5)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() > 0.3 && cell->center().norm() < 0.4)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() > 0.33 && cell->center().norm() < 0.37)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+
+ deallog << "no. cells: " << tr.n_global_active_cells() << std::endl;
+
+ DoFHandler<dim> mgdof(tr);
+ mgdof.distribute_dofs(fe);
+ mgdof.distribute_mg_dofs(fe);
+
+ ConstraintMatrix hanging_node_constraints;
+ IndexSet relevant_dofs;
+ DoFTools::extract_locally_relevant_dofs(mgdof, relevant_dofs);
+ hanging_node_constraints.reinit(relevant_dofs);
+ DoFTools::make_hanging_node_constraints(mgdof, hanging_node_constraints);
+ hanging_node_constraints.close();
+
+ MGConstrainedDoFs mg_constrained_dofs;
+ ZeroFunction<dim> zero_function;
+ typename FunctionMap<dim>::type dirichlet_boundary;
+ dirichlet_boundary[0] = &zero_function;
+ mg_constrained_dofs.initialize(mgdof, dirichlet_boundary);
+
+ // build reference
+ MGTransferPrebuilt<parallel::distributed::Vector<double> >
+ transfer_ref(hanging_node_constraints, mg_constrained_dofs);
+ transfer_ref.build_matrices(mgdof);
+
+ // build matrix-free transfer
+ MGTransferMatrixFree<dim, Number> transfer(mg_constrained_dofs);
+ transfer.build(mgdof);
+
+ // check prolongation for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.prolongate(level, v2, v1);
+ transfer_ref.prolongate(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff prolongate l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+
+ // check restriction for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict l" << level << ": " << v3.l2_norm() << std::endl;
+
+ v2 = 1.;
+ v3 = 1.;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict add l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+ deallog << std::endl;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ Utilities::MPI::MPI_InitFinalize mpi(argc, argv);
+ mpi_initlog();
+
+ check<2,double>(1);
+ check<2,double>(3);
+ check<3,double>(1);
+ check<3,double>(3);
+ check<2,float> (2);
+ check<3,float> (2);
+}
--- /dev/null
+
+DEAL::FE: FE_Q<2>(1)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_Q<2>(QGaussLobatto(4))
+DEAL::no. cells: 88
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 510
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::FE: FE_Q<3>(1)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::FE: FE_Q<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 223
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<2>(2)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_Q<3>(2)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
--- /dev/null
+
+DEAL::FE: FE_Q<2>(1)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_Q<2>(QGaussLobatto(4))
+DEAL::no. cells: 88
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 510
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::FE: FE_Q<3>(1)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::FE: FE_Q<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 223
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_Q<2>(2)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_Q<3>(2)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2016 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Check MGTransferMatrixFree by comparison with MGTransferPrebuilt on a
+// series of meshes with adaptive meshes for FE_Q (similar to
+// transfer_matrix_free_02 but on a different mesh refining into a corner)
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
+
+
+template <int dim, typename Number>
+void check(const unsigned int fe_degree)
+{
+ deallog.threshold_double(std::max(5e2*(double)std::numeric_limits<Number>::epsilon(),
+ 1e-11));
+ FE_Q<dim> fe(QGaussLobatto<1>(fe_degree+1));
+ deallog << "FE: " << fe.get_name() << std::endl;
+
+ // run a few different sizes...
+ parallel::distributed::Triangulation<dim>
+ tr(MPI_COMM_WORLD,
+ Triangulation<dim>::limit_level_difference_at_vertices,
+ parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
+ GridGenerator::subdivided_hyper_cube (tr, 3);
+ for (unsigned int cycle=0; cycle<(dim == 2 ? 10 : 7); ++cycle)
+ {
+ // adaptive refinement into a circle
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->vertex(0).norm() < 1e-10)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+
+ deallog << "no. cells: " << tr.n_global_active_cells() << " on "
+ << tr.n_global_levels() << " levels" << std::endl;
+
+ DoFHandler<dim> mgdof(tr);
+ mgdof.distribute_dofs(fe);
+ mgdof.distribute_mg_dofs(fe);
+
+ ConstraintMatrix hanging_node_constraints;
+ IndexSet relevant_dofs;
+ DoFTools::extract_locally_relevant_dofs(mgdof, relevant_dofs);
+ hanging_node_constraints.reinit(relevant_dofs);
+ DoFTools::make_hanging_node_constraints(mgdof, hanging_node_constraints);
+ hanging_node_constraints.close();
+
+ MGConstrainedDoFs mg_constrained_dofs;
+ ZeroFunction<dim> zero_function;
+ typename FunctionMap<dim>::type dirichlet_boundary;
+ dirichlet_boundary[0] = &zero_function;
+ mg_constrained_dofs.initialize(mgdof, dirichlet_boundary);
+
+ // build reference
+ MGTransferPrebuilt<parallel::distributed::Vector<double> >
+ transfer_ref(hanging_node_constraints, mg_constrained_dofs);
+ transfer_ref.build_matrices(mgdof);
+
+ // build matrix-free transfer
+ MGTransferMatrixFree<dim, Number> transfer(mg_constrained_dofs);
+ transfer.build(mgdof);
+
+ // check prolongation for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.prolongate(level, v2, v1);
+ transfer_ref.prolongate(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff prolongate l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+
+ // check restriction for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict l" << level << ": " << v3.l2_norm() << std::endl;
+
+ v2 = 1.;
+ v3 = 1.;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict add l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+ deallog << std::endl;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ Utilities::MPI::MPI_InitFinalize mpi(argc, argv);
+ mpi_initlog();
+
+ check<2,double>(1);
+ check<2,double>(3);
+ check<3,double>(1);
+ check<3,double>(3);
+ check<2,float> (2);
+ check<3,float> (2);
+}
--- /dev/null
+JobId mklap4 Mon Jan 11 11:42:13 2016
+DEAL::FE: FE_Q<2>(1)
+DEAL::no. cells: 12 on 2 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 15 on 3 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 18 on 4 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 21 on 5 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 24 on 6 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 27 on 7 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 30 on 8 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 33 on 9 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::no. cells: 36 on 10 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff prolongate l9: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::Diff restrict l9: 0
+DEAL::Diff restrict add l9: 0
+DEAL::
+DEAL::no. cells: 39 on 11 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff prolongate l9: 0
+DEAL::Diff prolongate l10: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::Diff restrict l9: 0
+DEAL::Diff restrict add l9: 0
+DEAL::Diff restrict l10: 0
+DEAL::Diff restrict add l10: 0
+DEAL::
+DEAL::FE: FE_Q<2>(QGaussLobatto(4))
+DEAL::no. cells: 12 on 2 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 15 on 3 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 18 on 4 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 21 on 5 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 24 on 6 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 27 on 7 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 30 on 8 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 33 on 9 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::no. cells: 36 on 10 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff prolongate l9: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::Diff restrict l9: 0
+DEAL::Diff restrict add l9: 0
+DEAL::
+DEAL::no. cells: 39 on 11 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff prolongate l9: 0
+DEAL::Diff prolongate l10: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::Diff restrict l9: 0
+DEAL::Diff restrict add l9: 0
+DEAL::Diff restrict l10: 0
+DEAL::Diff restrict add l10: 0
+DEAL::
+DEAL::FE: FE_Q<3>(1)
+DEAL::no. cells: 34 on 2 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 41 on 3 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 48 on 4 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 55 on 5 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 62 on 6 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 69 on 7 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 76 on 8 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::FE: FE_Q<3>(QGaussLobatto(4))
+DEAL::no. cells: 34 on 2 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 41 on 3 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 48 on 4 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 55 on 5 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 62 on 6 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 69 on 7 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 76 on 8 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::FE: FE_Q<2>(2)
+DEAL::no. cells: 12 on 2 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 15 on 3 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 18 on 4 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 21 on 5 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 24 on 6 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 27 on 7 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 30 on 8 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 33 on 9 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::no. cells: 36 on 10 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff prolongate l9: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::Diff restrict l9: 0
+DEAL::Diff restrict add l9: 0
+DEAL::
+DEAL::no. cells: 39 on 11 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff prolongate l9: 0
+DEAL::Diff prolongate l10: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::Diff restrict l9: 0
+DEAL::Diff restrict add l9: 0
+DEAL::Diff restrict l10: 0
+DEAL::Diff restrict add l10: 0
+DEAL::
+DEAL::FE: FE_Q<3>(2)
+DEAL::no. cells: 34 on 2 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 41 on 3 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 48 on 4 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 55 on 5 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 62 on 6 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 69 on 7 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 76 on 8 levels
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2016 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Check MGTransferMatrixFree by comparison with MGTransferPrebuilt on a
+// series of meshes with uniform meshes for FE_DGQ (except for the different
+// element and no constraints the same test as transfer_matrix_free_01)
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
+
+
+template <int dim, typename Number>
+void check(const unsigned int fe_degree)
+{
+ deallog.threshold_double(std::max(5e2*(double)std::numeric_limits<Number>::epsilon(),
+ 1e-11));
+ FE_DGQArbitraryNodes<dim> fe(QGaussLobatto<1>(fe_degree+1));
+ deallog << "FE: " << fe.get_name() << std::endl;
+
+ // run a few different sizes...
+ unsigned int sizes [] = {1, 2, 3, 4, 5, 6, 8};
+ for (unsigned int cycle=0; cycle<sizeof(sizes)/sizeof(unsigned int); ++cycle)
+ {
+ unsigned int n_refinements = 0;
+ unsigned int n_subdiv = sizes[cycle];
+ if (n_subdiv > 1)
+ while (n_subdiv%2 == 0)
+ {
+ n_refinements += 1;
+ n_subdiv /= 2;
+ }
+ n_refinements += 3-dim;
+ if (fe_degree < 3)
+ n_refinements += 1;
+ parallel::distributed::Triangulation<dim>
+ tr(MPI_COMM_WORLD,
+ Triangulation<dim>::limit_level_difference_at_vertices,
+ parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
+ GridGenerator::subdivided_hyper_cube(tr, n_subdiv);
+ tr.refine_global(n_refinements);
+ deallog << "no. cells: " << tr.n_global_active_cells() << std::endl;
+
+ DoFHandler<dim> mgdof(tr);
+ mgdof.distribute_dofs(fe);
+ mgdof.distribute_mg_dofs(fe);
+
+ // build reference
+ MGTransferPrebuilt<parallel::distributed::Vector<double> > transfer_ref;
+ transfer_ref.build_matrices(mgdof);
+
+ // build matrix-free transfer
+ MGTransferMatrixFree<dim, Number> transfer;
+ transfer.build(mgdof);
+
+ // check prolongation for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.prolongate(level, v2, v1);
+ transfer_ref.prolongate(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff prolongate l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+
+ // check restriction for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict l" << level << ": " << v3.l2_norm() << std::endl;
+
+ v2 = 1.;
+ v3 = 1.;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict add l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+ deallog << std::endl;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ Utilities::MPI::MPI_InitFinalize mpi(argc, argv);
+ mpi_initlog();
+
+ check<2,double>(1);
+ check<2,double>(3);
+ check<3,double>(1);
+ check<3,double>(3);
+ check<2,float> (2);
+ check<3,float> (2);
+}
--- /dev/null
+
+DEAL::FE: FE_DGQ<2>(1)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<2>(QGaussLobatto(4))
+DEAL::no. cells: 4
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 36
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 100
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(1)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 27
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 125
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FE_DGQ<2>(2)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(2)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
--- /dev/null
+
+DEAL::FE: FE_DGQ<2>(1)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<2>(QGaussLobatto(4))
+DEAL::no. cells: 4
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 36
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 100
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(1)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 27
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 125
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FE_DGQ<2>(2)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(2)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
--- /dev/null
+
+DEAL::FE: FE_DGQ<2>(1)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<2>(QGaussLobatto(4))
+DEAL::no. cells: 4
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 36
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 100
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(1)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 27
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 125
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FE_DGQ<2>(2)
+DEAL::no. cells: 16
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 144
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 256
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 400
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 576
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1024
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(2)
+DEAL::no. cells: 8
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 64
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 216
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 512
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 1000
+DEAL::Diff prolongate l1: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::
+DEAL::no. cells: 1728
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 4096
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2016 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Check MGTransferMatrixFree by comparison with MGTransferPrebuilt on a
+// series of meshes with adaptive meshes for FE_DGQ (except for the different
+// element and no constraints the same test as transfer_matrix_free_01)
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_dgq.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
+
+
+template <int dim, typename Number>
+void check(const unsigned int fe_degree)
+{
+ deallog.threshold_double(std::max(5e2*(double)std::numeric_limits<Number>::epsilon(),
+ 1e-11));
+ FE_DGQArbitraryNodes<dim> fe(QGaussLobatto<1>(fe_degree+1));
+ deallog << "FE: " << fe.get_name() << std::endl;
+
+ // run a few different sizes...
+ unsigned int sizes [] = {1, 2, 3, 4};
+ for (unsigned int cycle=0; cycle<sizeof(sizes)/sizeof(unsigned int); ++cycle)
+ {
+ unsigned int n_refinements = 0;
+ unsigned int n_subdiv = sizes[cycle];
+ if (n_subdiv > 1)
+ while (n_subdiv%2 == 0)
+ {
+ n_refinements += 1;
+ n_subdiv /= 2;
+ }
+ n_refinements += 6-2*dim;
+ if (fe_degree < 3)
+ n_refinements += 1;
+
+ parallel::distributed::Triangulation<dim>
+ tr(MPI_COMM_WORLD,
+ Triangulation<dim>::limit_level_difference_at_vertices,
+ parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
+ GridGenerator::subdivided_hyper_cube(tr, n_subdiv);
+ tr.refine_global(n_refinements);
+
+ // adaptive refinement into a circle
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() < 0.5)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() > 0.3 && cell->center().norm() < 0.4)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() > 0.33 && cell->center().norm() < 0.37)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+
+ deallog << "no. cells: " << tr.n_global_active_cells() << std::endl;
+
+ DoFHandler<dim> mgdof(tr);
+ mgdof.distribute_dofs(fe);
+ mgdof.distribute_mg_dofs(fe);
+
+ // build reference
+ MGTransferPrebuilt<parallel::distributed::Vector<double> > transfer_ref;
+ transfer_ref.build_matrices(mgdof);
+
+ // build matrix-free transfer
+ MGTransferMatrixFree<dim, Number> transfer;
+ transfer.build(mgdof);
+
+ // check prolongation for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.prolongate(level, v2, v1);
+ transfer_ref.prolongate(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff prolongate l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+
+ // check restriction for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict l" << level << ": " << v3.l2_norm() << std::endl;
+
+ v2 = 1.;
+ v3 = 1.;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict add l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+ deallog << std::endl;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ Utilities::MPI::MPI_InitFinalize mpi(argc, argv);
+ mpi_initlog();
+
+ check<2,double>(1);
+ check<2,double>(3);
+ check<3,double>(1);
+ check<3,double>(3);
+ check<2,float> (2);
+ check<3,float> (2);
+}
--- /dev/null
+
+DEAL::FE: FE_DGQ<2>(1)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<2>(QGaussLobatto(4))
+DEAL::no. cells: 88
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 510
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(1)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 223
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQ<2>(2)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(2)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
--- /dev/null
+
+DEAL::FE: FE_DGQ<2>(1)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<2>(QGaussLobatto(4))
+DEAL::no. cells: 88
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 510
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(1)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::FE: FE_DGQArbitraryNodes<3>(QGaussLobatto(4))
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 223
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FE_DGQ<2>(2)
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 868
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 3388
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff prolongate l7: 0
+DEAL::Diff prolongate l8: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::Diff restrict l7: 0
+DEAL::Diff restrict add l7: 0
+DEAL::Diff restrict l8: 0
+DEAL::Diff restrict add l8: 0
+DEAL::
+DEAL::FE: FE_DGQ<3>(2)
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 694
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::no. cells: 3599
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2016 - 2016 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// Check MGTransferMatrixFree by comparison with MGTransferPrebuilt on a
+// series of meshes with adaptive meshes for FESystem(FE_Q,2). Same as
+// transfer_matrix_free_02 but using two components (and fewer meshes).
+
+#include "../tests.h"
+#include <deal.II/base/logstream.h>
+#include <deal.II/lac/parallel_vector.h>
+#include <deal.II/dofs/dof_tools.h>
+#include <deal.II/distributed/tria.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/multigrid/mg_transfer.h>
+#include <deal.II/multigrid/mg_transfer_matrix_free.h>
+
+
+template <int dim, typename Number>
+void check(const unsigned int fe_degree)
+{
+ deallog.threshold_double(std::max(5e2*(double)std::numeric_limits<Number>::epsilon(),
+ 1e-11));
+ FESystem<dim> fe (FE_Q<dim>(QGaussLobatto<1>(fe_degree+1)), 2);
+ deallog << "FE: " << fe.get_name() << std::endl;
+
+ // run a few different sizes...
+ unsigned int sizes [] = {1, 3};
+ for (unsigned int cycle=0; cycle<sizeof(sizes)/sizeof(unsigned int); ++cycle)
+ {
+ unsigned int n_refinements = 0;
+ unsigned int n_subdiv = sizes[cycle];
+ if (n_subdiv > 1)
+ while (n_subdiv%2 == 0)
+ {
+ n_refinements += 1;
+ n_subdiv /= 2;
+ }
+ n_refinements += 6-2*dim;
+ if (fe_degree < 3)
+ n_refinements += 1;
+
+ parallel::distributed::Triangulation<dim>
+ tr(MPI_COMM_WORLD,
+ Triangulation<dim>::limit_level_difference_at_vertices,
+ parallel::distributed::Triangulation<dim>::construct_multigrid_hierarchy);
+ GridGenerator::subdivided_hyper_cube(tr, n_subdiv);
+ tr.refine_global(n_refinements);
+
+ // adaptive refinement into a circle
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() < 0.5)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() > 0.3 && cell->center().norm() < 0.4)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+ for (typename Triangulation<dim>::active_cell_iterator cell=tr.begin_active(); cell != tr.end(); ++cell)
+ if (cell->is_locally_owned() &&
+ cell->center().norm() > 0.33 && cell->center().norm() < 0.37)
+ cell->set_refine_flag();
+ tr.execute_coarsening_and_refinement();
+
+ deallog << "no. cells: " << tr.n_global_active_cells() << std::endl;
+
+ DoFHandler<dim> mgdof(tr);
+ mgdof.distribute_dofs(fe);
+ mgdof.distribute_mg_dofs(fe);
+
+ ConstraintMatrix hanging_node_constraints;
+ IndexSet relevant_dofs;
+ DoFTools::extract_locally_relevant_dofs(mgdof, relevant_dofs);
+ hanging_node_constraints.reinit(relevant_dofs);
+ DoFTools::make_hanging_node_constraints(mgdof, hanging_node_constraints);
+ hanging_node_constraints.close();
+
+ MGConstrainedDoFs mg_constrained_dofs;
+ ZeroFunction<dim> zero_function;
+ typename FunctionMap<dim>::type dirichlet_boundary;
+ dirichlet_boundary[0] = &zero_function;
+ mg_constrained_dofs.initialize(mgdof, dirichlet_boundary);
+
+ // build reference
+ MGTransferPrebuilt<parallel::distributed::Vector<double> >
+ transfer_ref(hanging_node_constraints, mg_constrained_dofs);
+ transfer_ref.build_matrices(mgdof);
+
+ // build matrix-free transfer
+ MGTransferMatrixFree<dim, Number> transfer(mg_constrained_dofs);
+ transfer.build(mgdof);
+
+ // check prolongation for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.prolongate(level, v2, v1);
+ transfer_ref.prolongate(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff prolongate l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+
+ // check restriction for all levels using random vector
+ for (unsigned int level=1; level<mgdof.get_triangulation().n_global_levels(); ++level)
+ {
+ parallel::distributed::Vector<Number> v1, v2;
+ parallel::distributed::Vector<double> v1_cpy, v2_cpy, v3;
+ v1.reinit(mgdof.locally_owned_mg_dofs(level), MPI_COMM_WORLD);
+ v2.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ v3.reinit(mgdof.locally_owned_mg_dofs(level-1), MPI_COMM_WORLD);
+ for (unsigned int i=0; i<v1.local_size(); ++i)
+ v1.local_element(i) = (double)rand()/RAND_MAX;
+ v1_cpy = v1;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict l" << level << ": " << v3.l2_norm() << std::endl;
+
+ v2 = 1.;
+ v3 = 1.;
+ transfer.restrict_and_add(level, v2, v1);
+ transfer_ref.restrict_and_add(level, v3, v1_cpy);
+ v2_cpy = v2;
+ v3 -= v2_cpy;
+ deallog << "Diff restrict add l" << level << ": " << v3.l2_norm() << std::endl;
+ }
+ deallog << std::endl;
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ Utilities::MPI::MPI_InitFinalize mpi(argc, argv);
+ mpi_initlog();
+
+ check<2,double>(1);
+ check<2,double>(3);
+ check<3,double>(1);
+ check<3,double>(3);
+ check<2,float> (2);
+ check<3,float> (2);
+}
--- /dev/null
+
+DEAL::FE: FESystem<2>[FE_Q<2>(1)^2]
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::FE: FESystem<2>[FE_Q<2>(QGaussLobatto(4))^2]
+DEAL::no. cells: 88
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::no. cells: 510
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::
+DEAL::FE: FESystem<3>[FE_Q<3>(1)^2]
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::
+DEAL::FE: FESystem<3>[FE_Q<3>(QGaussLobatto(4))^2]
+DEAL::no. cells: 1
+DEAL::
+DEAL::no. cells: 223
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::
+DEAL::FE: FESystem<2>[FE_Q<2>(2)^2]
+DEAL::no. cells: 250
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::no. cells: 1887
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff prolongate l5: 0
+DEAL::Diff prolongate l6: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::Diff restrict l5: 0
+DEAL::Diff restrict add l5: 0
+DEAL::Diff restrict l6: 0
+DEAL::Diff restrict add l6: 0
+DEAL::
+DEAL::FE: FESystem<3>[FE_Q<3>(2)^2]
+DEAL::no. cells: 15
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::
+DEAL::no. cells: 1791
+DEAL::Diff prolongate l1: 0
+DEAL::Diff prolongate l2: 0
+DEAL::Diff prolongate l3: 0
+DEAL::Diff prolongate l4: 0
+DEAL::Diff restrict l1: 0
+DEAL::Diff restrict add l1: 0
+DEAL::Diff restrict l2: 0
+DEAL::Diff restrict add l2: 0
+DEAL::Diff restrict l3: 0
+DEAL::Diff restrict add l3: 0
+DEAL::Diff restrict l4: 0
+DEAL::Diff restrict add l4: 0
+DEAL::