]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Added 'repartition' signals. Attached 'active_fe_transfer' functions to them.
authorMarc Fehling <marc.fehling@gmx.net>
Thu, 7 Feb 2019 23:59:12 +0000 (00:59 +0100)
committerMarc Fehling <marc.fehling@gmx.net>
Mon, 4 Mar 2019 21:36:58 +0000 (22:36 +0100)
doc/news/changes/minor/20190303Fehling [new file with mode: 0644]
include/deal.II/grid/tria.h
source/distributed/tria.cc
source/hp/dof_handler.cc
tests/mpi/hp_active_fe_indices_transfer_03.cc [new file with mode: 0644]
tests/mpi/hp_active_fe_indices_transfer_03.with_p4est=true.mpirun=2.output [new file with mode: 0644]
tests/mpi/hp_active_fe_indices_transfer_03.with_p4est=true.mpirun=8.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20190303Fehling b/doc/news/changes/minor/20190303Fehling
new file mode 100644 (file)
index 0000000..5bcb949
--- /dev/null
@@ -0,0 +1,5 @@
+New: Signals Triangulation::pre_distributed_repartition and
+Triangulation::post_distributed_repartition which will be triggered in
+parallel::distributed::Triangulation::repartition().
+<br>
+(Marc Fehling, 2019/03/03)
index 6976f51fb1f0f63c3bf159436a44eddd9b6b3c7c..baf3beefda608a6237bf8696e56fb6c43c74a0bd 100644 (file)
@@ -2327,6 +2327,25 @@ public:
      */
     boost::signals2::signal<void()> post_distributed_refinement;
 
+    /**
+     * This signal is triggered at the beginning of execution of the
+     * parallel::distributed::Triangulation::repartition() function. At the time
+     * this signal is triggered, the triangulation is still unchanged.
+     *
+     * @note The parallel::distributed::Triangulation::repartition() function is
+     * also called by parallel::distributed::Triangulation::load(). Thus, the
+     * pre_distributed_repartition signal will be triggered after the
+     * pre_distributed_load one.
+     */
+    boost::signals2::signal<void()> pre_distributed_repartition;
+
+    /**
+     * This signal is triggered at the end of execution of the
+     * parallel::distributed::Triangulation::repartition()
+     * function when the triangulation has reached its final state.
+     */
+    boost::signals2::signal<void()> post_distributed_repartition;
+
     /**
      * This signal is triggered at the beginning of execution of the
      * parallel::distributed::Triangulation::save()
index 9da8894cd146668f67d14b7de558b3055cb004ea..7541203735c6403b1a1547748d706389cff16761 100644 (file)
@@ -4085,6 +4085,9 @@ namespace parallel
               "Error: There shouldn't be any cells flagged for coarsening/refinement when calling repartition()."));
 #  endif
 
+      // signal that repartitioning is going to happen
+      this->signals.pre_distributed_repartition();
+
       // before repartitioning the mesh let others attach mesh related info
       // (such as SolutionTransfer data) to the p4est
       std::vector<typename dealii::internal::p4est::types<dim>::gloidx>
@@ -4160,6 +4163,12 @@ namespace parallel
 
       // update how many cells, edges, etc, we store locally
       this->update_number_cache();
+
+      // signal that repartitioning is finished,
+      // this is triggered before update_periodic_face_map
+      // to be consistent with the serial triangulation class
+      this->signals.post_distributed_repartition();
+
       this->update_periodic_face_map();
     }
 
index 8e9dc7e65a9d95347edf8fa6cbf1c3244ddeab4d..fb3742c33e388280823304e324435465bcc6f135 100644 (file)
@@ -1654,6 +1654,17 @@ namespace hp
           internal::DoFHandlerImplementation::Policy::ParallelDistributed<
             DoFHandler<dim, spacedim>>>(*this);
 
+        tria_listeners.push_back(
+          this->tria->signals.pre_distributed_repartition.connect(std::bind(
+            &DoFHandler<dim,
+                        spacedim>::pre_distributed_active_fe_index_transfer,
+            std::ref(*this))));
+        tria_listeners.push_back(
+          this->tria->signals.post_distributed_repartition.connect(std::bind(
+            &DoFHandler<dim,
+                        spacedim>::post_distributed_active_fe_index_transfer,
+            std::ref(*this))));
+
         tria_listeners.push_back(
           this->tria->signals.pre_distributed_refinement.connect(std::bind(
             &DoFHandler<dim,
diff --git a/tests/mpi/hp_active_fe_indices_transfer_03.cc b/tests/mpi/hp_active_fe_indices_transfer_03.cc
new file mode 100644 (file)
index 0000000..2fc0a32
--- /dev/null
@@ -0,0 +1,104 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2018 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE.md at
+// the top level directory of deal.II.
+//
+// ---------------------------------------------------------------------
+
+
+
+// active fe indices transfer on repartitioning
+
+
+#include <deal.II/distributed/cell_weights.h>
+#include <deal.II/distributed/tria.h>
+
+#include <deal.II/fe/fe_q.h>
+
+#include <deal.II/grid/grid_generator.h>
+
+#include <deal.II/hp/dof_handler.h>
+
+#include "../tests.h"
+
+
+template <int dim>
+void
+test()
+{
+  const unsigned int myid = Utilities::MPI::this_mpi_process(MPI_COMM_WORLD);
+
+  // ------ setup ------
+  parallel::distributed::Triangulation<dim> tria(MPI_COMM_WORLD);
+
+  GridGenerator::subdivided_hyper_cube(tria, 2);
+  tria.refine_global(1);
+  deallog << "cells before: " << tria.n_global_active_cells() << std::endl;
+
+  // prepare FECollection with arbitrary number of entries
+  hp::FECollection<dim> fe_collection;
+  for (unsigned int i = 0; i < Utilities::MPI::n_mpi_processes(MPI_COMM_WORLD);
+       ++i)
+    fe_collection.push_back(FE_Q<dim>(i + 1));
+
+  // we need to introduce dof_handler to its fe_collection first
+  hp::DoFHandler<dim> dh(tria);
+  dh.set_fe(fe_collection);
+
+  for (auto &cell : dh.active_cell_iterators())
+    if (cell->is_locally_owned())
+      {
+        // set active fe index
+        if (!(cell->is_artificial()))
+          cell->set_active_fe_index(myid);
+
+        deallog << "myid=" << myid << " cellid=" << cell->id()
+                << " fe_index=" << cell->active_fe_index() << std::endl;
+      }
+
+  // ----- transfer -----
+  parallel::CellWeights<dim> cell_weights(dh);
+  cell_weights.register_ndofs_weighting(100000);
+
+  tria.repartition();
+
+  deallog << "cells after: " << tria.n_global_active_cells() << std::endl;
+
+  // ------ verify ------
+  // check if all children adopted the correct id
+  for (auto &cell : dh.active_cell_iterators())
+    if (cell->is_locally_owned())
+      deallog << "myid=" << myid << " cellid=" << cell->id()
+              << " fe_index=" << cell->active_fe_index() << std::endl;
+
+  // for further calculations, distribute dofs, i.e.
+  // dh.distribute_dofs(fe_collection);
+
+  // make sure no processor is hanging
+  MPI_Barrier(MPI_COMM_WORLD);
+
+  deallog << "OK" << std::endl;
+}
+
+
+int
+main(int argc, char *argv[])
+{
+  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1);
+  MPILogInitAll                    log;
+
+  deallog.push("2d");
+  test<2>();
+  deallog.pop();
+  deallog.push("3d");
+  test<3>();
+  deallog.pop();
+}
diff --git a/tests/mpi/hp_active_fe_indices_transfer_03.with_p4est=true.mpirun=2.output b/tests/mpi/hp_active_fe_indices_transfer_03.with_p4est=true.mpirun=2.output
new file mode 100644 (file)
index 0000000..7db8f63
--- /dev/null
@@ -0,0 +1,175 @@
+
+DEAL:0:2d::cells before: 16
+DEAL:0:2d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:0 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:1 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:2 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:3 fe_index=0
+DEAL:0:2d::cells after: 16
+DEAL:0:2d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:0 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:1 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:2 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:3 fe_index=0
+DEAL:0:2d::myid=0 cellid=2_1:0 fe_index=1
+DEAL:0:2d::myid=0 cellid=2_1:1 fe_index=1
+DEAL:0:2d::myid=0 cellid=2_1:2 fe_index=1
+DEAL:0:2d::myid=0 cellid=2_1:3 fe_index=1
+DEAL:0:2d::OK
+DEAL:0:3d::cells before: 64
+DEAL:0:3d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:7 fe_index=0
+DEAL:0:3d::cells after: 64
+DEAL:0:3d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=2_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=3_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=4_1:0 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:1 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:2 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:3 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:4 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:5 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:6 fe_index=1
+DEAL:0:3d::myid=0 cellid=4_1:7 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:0 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:1 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:2 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:3 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:4 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:5 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:6 fe_index=1
+DEAL:0:3d::myid=0 cellid=5_1:7 fe_index=1
+DEAL:0:3d::OK
+
+DEAL:1:2d::cells before: 16
+DEAL:1:2d::myid=1 cellid=2_1:0 fe_index=1
+DEAL:1:2d::myid=1 cellid=2_1:1 fe_index=1
+DEAL:1:2d::myid=1 cellid=2_1:2 fe_index=1
+DEAL:1:2d::myid=1 cellid=2_1:3 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:0 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:1 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:2 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:3 fe_index=1
+DEAL:1:2d::cells after: 16
+DEAL:1:2d::myid=1 cellid=3_1:0 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:1 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:2 fe_index=1
+DEAL:1:2d::myid=1 cellid=3_1:3 fe_index=1
+DEAL:1:2d::OK
+DEAL:1:3d::cells before: 64
+DEAL:1:3d::myid=1 cellid=4_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=4_1:7 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=5_1:7 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:7 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:7 fe_index=1
+DEAL:1:3d::cells after: 64
+DEAL:1:3d::myid=1 cellid=6_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=6_1:7 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=7_1:7 fe_index=1
+DEAL:1:3d::OK
+
diff --git a/tests/mpi/hp_active_fe_indices_transfer_03.with_p4est=true.mpirun=8.output b/tests/mpi/hp_active_fe_indices_transfer_03.with_p4est=true.mpirun=8.output
new file mode 100644 (file)
index 0000000..167a31a
--- /dev/null
@@ -0,0 +1,223 @@
+
+DEAL:0:2d::cells before: 16
+DEAL:0:2d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:2d::cells after: 16
+DEAL:0:2d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:2d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:2d::myid=0 cellid=1_1:0 fe_index=2
+DEAL:0:2d::myid=0 cellid=1_1:1 fe_index=2
+DEAL:0:2d::myid=0 cellid=1_1:2 fe_index=2
+DEAL:0:2d::myid=0 cellid=1_1:3 fe_index=2
+DEAL:0:2d::OK
+DEAL:0:3d::cells before: 64
+DEAL:0:3d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:7 fe_index=0
+DEAL:0:3d::cells after: 64
+DEAL:0:3d::myid=0 cellid=0_1:0 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:1 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:2 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:3 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:4 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:5 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:6 fe_index=0
+DEAL:0:3d::myid=0 cellid=0_1:7 fe_index=0
+DEAL:0:3d::myid=0 cellid=1_1:0 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:1 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:2 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:3 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:4 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:5 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:6 fe_index=1
+DEAL:0:3d::myid=0 cellid=1_1:7 fe_index=1
+DEAL:0:3d::myid=0 cellid=2_1:0 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:1 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:2 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:3 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:4 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:5 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:6 fe_index=2
+DEAL:0:3d::myid=0 cellid=2_1:7 fe_index=2
+DEAL:0:3d::myid=0 cellid=3_1:0 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:1 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:2 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:3 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:4 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:5 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:6 fe_index=3
+DEAL:0:3d::myid=0 cellid=3_1:7 fe_index=3
+DEAL:0:3d::OK
+
+DEAL:1:2d::cells before: 16
+DEAL:1:2d::cells after: 16
+DEAL:1:2d::myid=1 cellid=2_1:0 fe_index=4
+DEAL:1:2d::myid=1 cellid=2_1:1 fe_index=4
+DEAL:1:2d::myid=1 cellid=2_1:2 fe_index=4
+DEAL:1:2d::myid=1 cellid=2_1:3 fe_index=4
+DEAL:1:2d::OK
+DEAL:1:3d::cells before: 64
+DEAL:1:3d::myid=1 cellid=1_1:0 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:1 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:2 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:3 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:4 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:5 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:6 fe_index=1
+DEAL:1:3d::myid=1 cellid=1_1:7 fe_index=1
+DEAL:1:3d::cells after: 64
+DEAL:1:3d::myid=1 cellid=4_1:0 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:1 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:2 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:3 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:4 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:5 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:6 fe_index=4
+DEAL:1:3d::myid=1 cellid=4_1:7 fe_index=4
+DEAL:1:3d::OK
+
+
+DEAL:2:2d::cells before: 16
+DEAL:2:2d::myid=2 cellid=1_1:0 fe_index=2
+DEAL:2:2d::myid=2 cellid=1_1:1 fe_index=2
+DEAL:2:2d::myid=2 cellid=1_1:2 fe_index=2
+DEAL:2:2d::myid=2 cellid=1_1:3 fe_index=2
+DEAL:2:2d::cells after: 16
+DEAL:2:2d::OK
+DEAL:2:3d::cells before: 64
+DEAL:2:3d::myid=2 cellid=2_1:0 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:1 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:2 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:3 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:4 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:5 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:6 fe_index=2
+DEAL:2:3d::myid=2 cellid=2_1:7 fe_index=2
+DEAL:2:3d::cells after: 64
+DEAL:2:3d::myid=2 cellid=5_1:0 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:1 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:2 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:3 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:4 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:5 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:6 fe_index=5
+DEAL:2:3d::myid=2 cellid=5_1:7 fe_index=5
+DEAL:2:3d::OK
+
+
+DEAL:3:2d::cells before: 16
+DEAL:3:2d::cells after: 16
+DEAL:3:2d::myid=3 cellid=3_1:0 fe_index=6
+DEAL:3:2d::myid=3 cellid=3_1:1 fe_index=6
+DEAL:3:2d::myid=3 cellid=3_1:2 fe_index=6
+DEAL:3:2d::myid=3 cellid=3_1:3 fe_index=6
+DEAL:3:2d::OK
+DEAL:3:3d::cells before: 64
+DEAL:3:3d::myid=3 cellid=3_1:0 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:1 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:2 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:3 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:4 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:5 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:6 fe_index=3
+DEAL:3:3d::myid=3 cellid=3_1:7 fe_index=3
+DEAL:3:3d::cells after: 64
+DEAL:3:3d::myid=3 cellid=6_1:0 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:1 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:2 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:3 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:4 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:5 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:6 fe_index=6
+DEAL:3:3d::myid=3 cellid=6_1:7 fe_index=6
+DEAL:3:3d::OK
+
+
+DEAL:4:2d::cells before: 16
+DEAL:4:2d::myid=4 cellid=2_1:0 fe_index=4
+DEAL:4:2d::myid=4 cellid=2_1:1 fe_index=4
+DEAL:4:2d::myid=4 cellid=2_1:2 fe_index=4
+DEAL:4:2d::myid=4 cellid=2_1:3 fe_index=4
+DEAL:4:2d::cells after: 16
+DEAL:4:2d::OK
+DEAL:4:3d::cells before: 64
+DEAL:4:3d::myid=4 cellid=4_1:0 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:1 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:2 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:3 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:4 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:5 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:6 fe_index=4
+DEAL:4:3d::myid=4 cellid=4_1:7 fe_index=4
+DEAL:4:3d::cells after: 64
+DEAL:4:3d::OK
+
+
+DEAL:5:2d::cells before: 16
+DEAL:5:2d::cells after: 16
+DEAL:5:2d::OK
+DEAL:5:3d::cells before: 64
+DEAL:5:3d::myid=5 cellid=5_1:0 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:1 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:2 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:3 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:4 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:5 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:6 fe_index=5
+DEAL:5:3d::myid=5 cellid=5_1:7 fe_index=5
+DEAL:5:3d::cells after: 64
+DEAL:5:3d::myid=5 cellid=7_1:0 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:1 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:2 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:3 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:4 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:5 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:6 fe_index=7
+DEAL:5:3d::myid=5 cellid=7_1:7 fe_index=7
+DEAL:5:3d::OK
+
+
+DEAL:6:2d::cells before: 16
+DEAL:6:2d::myid=6 cellid=3_1:0 fe_index=6
+DEAL:6:2d::myid=6 cellid=3_1:1 fe_index=6
+DEAL:6:2d::myid=6 cellid=3_1:2 fe_index=6
+DEAL:6:2d::myid=6 cellid=3_1:3 fe_index=6
+DEAL:6:2d::cells after: 16
+DEAL:6:2d::OK
+DEAL:6:3d::cells before: 64
+DEAL:6:3d::myid=6 cellid=6_1:0 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:1 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:2 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:3 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:4 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:5 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:6 fe_index=6
+DEAL:6:3d::myid=6 cellid=6_1:7 fe_index=6
+DEAL:6:3d::cells after: 64
+DEAL:6:3d::OK
+
+
+DEAL:7:2d::cells before: 16
+DEAL:7:2d::cells after: 16
+DEAL:7:2d::OK
+DEAL:7:3d::cells before: 64
+DEAL:7:3d::myid=7 cellid=7_1:0 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:1 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:2 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:3 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:4 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:5 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:6 fe_index=7
+DEAL:7:3d::myid=7 cellid=7_1:7 fe_index=7
+DEAL:7:3d::cells after: 64
+DEAL:7:3d::OK
+

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.