]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Bugfix: `hp::Refinement::predict_error` - cast to int 12074/head
authorMarc Fehling <mafehling.git@gmail.com>
Thu, 22 Apr 2021 04:16:08 +0000 (22:16 -0600)
committerMarc Fehling <mafehling.git@gmail.com>
Thu, 22 Apr 2021 18:45:59 +0000 (12:45 -0600)
doc/news/changes/minor/20210421Fehling [new file with mode: 0644]
source/hp/refinement.cc
tests/hp/error_prediction_01.cc
tests/hp/error_prediction_01.output
tests/hp/error_prediction_02.cc [new file with mode: 0644]
tests/hp/error_prediction_02.output [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20210421Fehling b/doc/news/changes/minor/20210421Fehling
new file mode 100644 (file)
index 0000000..6f398de
--- /dev/null
@@ -0,0 +1,4 @@
+Fixed: The function hp::Refinement::predict_error() produced incorrect
+results for p-coarsening.
+<br>
+(Marc Fehling, 2021/04/21)
index ef2d65fbd360ca71de54870a28d92642cedc2111..dc05c8388435cd2f142e65819d06d10eb3016dd5 100644 (file)
@@ -634,7 +634,8 @@ namespace hp
             if (cell->future_fe_index_set())
               {
                 predicted_errors[cell->active_cell_index()] *=
-                  std::pow(gamma_p, future_fe_degree - cell->get_fe().degree);
+                  std::pow(gamma_p,
+                           int(future_fe_degree) - int(cell->get_fe().degree));
               }
 
             // step 2: algebraic decay with h-adaptation
index 6a362f6c253fb7e2d4d1c2f92f211f80e5b0378b..c52b63a4324af9684acb459715019b6fc5ebb3a8 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2019 - 2020 by the deal.II authors
+// Copyright (C) 2019 - 2021 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -17,6 +17,7 @@
 
 // validate combination of error prediction and cell data transfer algorithms
 // for hp-adaptive methods
+// test either h- or p-adaptation
 
 
 #include <deal.II/dofs/dof_handler.h>
 
 #include <deal.II/grid/tria.h>
 
-#include <deal.II/hp/fe_collection.h>
 #include <deal.II/hp/refinement.h>
 
 #include <deal.II/lac/vector.h>
 
-#include <deal.II/numerics/adaptation_strategies.h>
 #include <deal.II/numerics/cell_data_transfer.h>
 
 #include "../tests.h"
@@ -54,6 +53,11 @@ test()
     fes.push_back(FE_Q<dim>(d));
 
   DoFHandler<dim> dh(tria);
+  for (const auto &cell : dh.active_cell_iterators())
+    {
+      // set active FE index
+      cell->set_active_fe_index(1);
+    }
   for (auto cell = dh.begin(0); cell != dh.end(0); ++cell)
     {
       if (cell->id().to_string() == "0_0:")
@@ -72,16 +76,20 @@ test()
           // p-refinement
           cell->set_future_fe_index(2);
         }
+      else if (cell->id().to_string() == "3_0:")
+        {
+          // p-coarsening
+          cell->set_future_fe_index(0);
+        }
     }
   dh.distribute_dofs(fes);
 
   // ----- predict -----
-  Vector<float> error_indicators, predicted_error_indicators;
-  error_indicators.reinit(tria.n_active_cells());
-  predicted_error_indicators.reinit(tria.n_active_cells());
+  Vector<float> error_indicators(tria.n_active_cells());
   for (unsigned int i = 0; i < tria.n_active_cells(); ++i)
     error_indicators[i] = 10.;
 
+  Vector<float> predicted_error_indicators(tria.n_active_cells());
   hp::Refinement::predict_error(dh,
                                 error_indicators,
                                 predicted_error_indicators,
@@ -104,9 +112,9 @@ test()
         deallog << " refining";
       else if (cell->coarsen_flag_set())
         deallog << " coarsening";
-      else if (cell->future_fe_index_set())
-        deallog << " future_fe_deg:"
-                << dh.get_fe_collection()[cell->future_fe_index()].degree;
+
+      if (cell->future_fe_index_set())
+        deallog << " future_fe_deg:" << fes[cell->future_fe_index()].degree;
 
       deallog << std::endl;
     }
index 540f22e27e440d2ef75bfcb47b6c0cc08ab8bf4d..9ad0fa00f83084b2bb58605ffca46a246985b0c2 100644 (file)
@@ -1,71 +1,71 @@
 
 DEAL:1d::pre_adaptation
 DEAL:1d:: ncells:5
-DEAL:1d:: cell:1_0: fe_deg:1 error:10.0000 predicted:5.00000 refining
-DEAL:1d:: cell:2_0: fe_deg:1 error:10.0000 predicted:2.50000 future_fe_deg:3
-DEAL:1d:: cell:3_0: fe_deg:1 error:10.0000 predicted:10.0000
-DEAL:1d:: cell:0_1:0 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:1d:: cell:0_1:1 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
+DEAL:1d:: cell:1_0: fe_deg:2 error:10.0000 predicted:2.50000 refining
+DEAL:1d:: cell:2_0: fe_deg:2 error:10.0000 predicted:5.00000 future_fe_deg:3
+DEAL:1d:: cell:3_0: fe_deg:2 error:10.0000 predicted:20.0000 future_fe_deg:1
+DEAL:1d:: cell:0_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:1d:: cell:0_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
 DEAL:1d::post_adaptation
 DEAL:1d:: ncells:5
-DEAL:1d:: cell:0_0: fe_deg:1 transferred:28.2843
-DEAL:1d:: cell:2_0: fe_deg:3 transferred:2.50000
-DEAL:1d:: cell:3_0: fe_deg:1 transferred:10.0000
-DEAL:1d:: cell:1_1:0 fe_deg:1 transferred:3.53553
-DEAL:1d:: cell:1_1:1 fe_deg:1 transferred:3.53553
+DEAL:1d:: cell:0_0: fe_deg:2 transferred:56.5685
+DEAL:1d:: cell:2_0: fe_deg:3 transferred:5.00000
+DEAL:1d:: cell:3_0: fe_deg:1 transferred:20.0000
+DEAL:1d:: cell:1_1:0 fe_deg:2 transferred:1.76777
+DEAL:1d:: cell:1_1:1 fe_deg:2 transferred:1.76777
 DEAL:1d::predicted_error_norms
-DEAL:1d:: pre_adaptation:30.5164
-DEAL:1d:: post_adaptation:30.5164
+DEAL:1d:: pre_adaptation:60.2599
+DEAL:1d:: post_adaptation:60.2599
 DEAL:1d::OK
 DEAL:2d::pre_adaptation
 DEAL:2d:: ncells:7
-DEAL:2d:: cell:1_0: fe_deg:1 error:10.0000 predicted:5.00000 refining
-DEAL:2d:: cell:2_0: fe_deg:1 error:10.0000 predicted:2.50000 future_fe_deg:3
-DEAL:2d:: cell:3_0: fe_deg:1 error:10.0000 predicted:10.0000
-DEAL:2d:: cell:0_1:0 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:2d:: cell:0_1:1 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:2d:: cell:0_1:2 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:2d:: cell:0_1:3 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
+DEAL:2d:: cell:1_0: fe_deg:2 error:10.0000 predicted:2.50000 refining
+DEAL:2d:: cell:2_0: fe_deg:2 error:10.0000 predicted:5.00000 future_fe_deg:3
+DEAL:2d:: cell:3_0: fe_deg:2 error:10.0000 predicted:20.0000 future_fe_deg:1
+DEAL:2d:: cell:0_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:2d:: cell:0_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:2d:: cell:0_1:2 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:2d:: cell:0_1:3 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
 DEAL:2d::post_adaptation
 DEAL:2d:: ncells:7
-DEAL:2d:: cell:0_0: fe_deg:1 transferred:40.0000
-DEAL:2d:: cell:2_0: fe_deg:3 transferred:2.50000
-DEAL:2d:: cell:3_0: fe_deg:1 transferred:10.0000
-DEAL:2d:: cell:1_1:0 fe_deg:1 transferred:2.50000
-DEAL:2d:: cell:1_1:1 fe_deg:1 transferred:2.50000
-DEAL:2d:: cell:1_1:2 fe_deg:1 transferred:2.50000
-DEAL:2d:: cell:1_1:3 fe_deg:1 transferred:2.50000
+DEAL:2d:: cell:0_0: fe_deg:2 transferred:80.0000
+DEAL:2d:: cell:2_0: fe_deg:3 transferred:5.00000
+DEAL:2d:: cell:3_0: fe_deg:1 transferred:20.0000
+DEAL:2d:: cell:1_1:0 fe_deg:2 transferred:1.25000
+DEAL:2d:: cell:1_1:1 fe_deg:2 transferred:1.25000
+DEAL:2d:: cell:1_1:2 fe_deg:2 transferred:1.25000
+DEAL:2d:: cell:1_1:3 fe_deg:2 transferred:1.25000
 DEAL:2d::predicted_error_norms
-DEAL:2d:: pre_adaptation:41.6083
-DEAL:2d:: post_adaptation:41.6083
+DEAL:2d:: pre_adaptation:82.6514
+DEAL:2d:: post_adaptation:82.6514
 DEAL:2d::OK
 DEAL:3d::pre_adaptation
 DEAL:3d:: ncells:11
-DEAL:3d:: cell:1_0: fe_deg:1 error:10.0000 predicted:5.00000 refining
-DEAL:3d:: cell:2_0: fe_deg:1 error:10.0000 predicted:2.50000 future_fe_deg:3
-DEAL:3d:: cell:3_0: fe_deg:1 error:10.0000 predicted:10.0000
-DEAL:3d:: cell:0_1:0 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:1 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:2 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:3 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:4 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:5 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:6 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
-DEAL:3d:: cell:0_1:7 fe_deg:1 error:10.0000 predicted:20.0000 coarsening
+DEAL:3d:: cell:1_0: fe_deg:2 error:10.0000 predicted:2.50000 refining
+DEAL:3d:: cell:2_0: fe_deg:2 error:10.0000 predicted:5.00000 future_fe_deg:3
+DEAL:3d:: cell:3_0: fe_deg:2 error:10.0000 predicted:20.0000 future_fe_deg:1
+DEAL:3d:: cell:0_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:2 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:3 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:4 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:5 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:6 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
+DEAL:3d:: cell:0_1:7 fe_deg:2 error:10.0000 predicted:40.0000 coarsening
 DEAL:3d::post_adaptation
 DEAL:3d:: ncells:11
-DEAL:3d:: cell:0_0: fe_deg:1 transferred:56.5685
-DEAL:3d:: cell:2_0: fe_deg:3 transferred:2.50000
-DEAL:3d:: cell:3_0: fe_deg:1 transferred:10.0000
-DEAL:3d:: cell:1_1:0 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:1 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:2 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:3 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:4 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:5 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:6 fe_deg:1 transferred:1.76777
-DEAL:3d:: cell:1_1:7 fe_deg:1 transferred:1.76777
+DEAL:3d:: cell:0_0: fe_deg:2 transferred:113.137
+DEAL:3d:: cell:2_0: fe_deg:3 transferred:5.00000
+DEAL:3d:: cell:3_0: fe_deg:1 transferred:20.0000
+DEAL:3d:: cell:1_1:0 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:1 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:2 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:3 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:4 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:5 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:6 fe_deg:2 transferred:0.883883
+DEAL:3d:: cell:1_1:7 fe_deg:2 transferred:0.883883
 DEAL:3d::predicted_error_norms
-DEAL:3d:: pre_adaptation:57.7170
-DEAL:3d:: post_adaptation:57.7170
+DEAL:3d:: pre_adaptation:115.027
+DEAL:3d:: post_adaptation:115.027
 DEAL:3d::OK
diff --git a/tests/hp/error_prediction_02.cc b/tests/hp/error_prediction_02.cc
new file mode 100644 (file)
index 0000000..eb180b0
--- /dev/null
@@ -0,0 +1,192 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2021 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.
+//
+// ---------------------------------------------------------------------
+
+
+
+// validate combination of error prediction and cell data transfer algorithms
+// for hp-adaptive methods
+// test all combinations of h- and p-adaptation
+
+
+#include <deal.II/dofs/dof_handler.h>
+
+#include <deal.II/fe/fe_q.h>
+
+#include <deal.II/grid/tria.h>
+
+#include <deal.II/hp/refinement.h>
+
+#include <deal.II/lac/vector.h>
+
+#include <deal.II/numerics/cell_data_transfer.h>
+
+#include "../tests.h"
+
+#include "../test_grids.h"
+
+
+template <int dim>
+void
+test()
+{
+  // ------ setup ------
+  Triangulation<dim> tria;
+  TestGrids::hyper_line(tria, 4);
+
+  tria.begin_active()->set_refine_flag();
+  (++tria.begin_active())->set_refine_flag();
+  tria.execute_coarsening_and_refinement();
+
+  hp::FECollection<dim> fes;
+  for (unsigned int d = 1; d <= 3; ++d)
+    fes.push_back(FE_Q<dim>(d));
+
+  DoFHandler<dim> dh(tria);
+  for (const auto &cell : dh.active_cell_iterators())
+    {
+      // set active FE index
+      if (cell->is_locally_owned())
+        cell->set_active_fe_index(1);
+    }
+  for (auto cell = dh.begin(0); cell != dh.end(0); ++cell)
+    {
+      // set refinement/coarsening flags
+      if (cell->id().to_string() == "0_0:")
+        {
+          // h-coarsening and p-refinement
+          for (unsigned int i = 0; i < cell->n_children(); ++i)
+            if (cell->child(i)->is_locally_owned())
+              {
+                cell->child(i)->set_coarsen_flag();
+                cell->child(i)->set_future_fe_index(2);
+              }
+        }
+      else if (cell->id().to_string() == "1_0:")
+        {
+          // h-coarsening and p-coarsening
+          for (unsigned int i = 0; i < cell->n_children(); ++i)
+            if (cell->child(i)->is_locally_owned())
+              {
+                cell->child(i)->set_coarsen_flag();
+                cell->child(i)->set_future_fe_index(0);
+              }
+        }
+      else if (cell->id().to_string() == "2_0:")
+        {
+          // h-refinement and p-refinement
+          if (cell->is_locally_owned())
+            {
+              cell->set_refine_flag();
+              cell->set_future_fe_index(2);
+            }
+        }
+      else if (cell->id().to_string() == "3_0:")
+        {
+          // h-refinement and p-coarsening
+          if (cell->is_locally_owned())
+            {
+              cell->set_refine_flag();
+              cell->set_future_fe_index(0);
+            }
+        }
+    }
+  dh.distribute_dofs(fes);
+
+  // ----- predict -----
+  Vector<float> error_indicators(tria.n_active_cells());
+  for (unsigned int i = 0; i < tria.n_active_cells(); ++i)
+    error_indicators[i] = 10.;
+
+  Vector<float> predicted_error_indicators(tria.n_active_cells());
+  hp::Refinement::predict_error(dh,
+                                error_indicators,
+                                predicted_error_indicators,
+                                /*gamma_p=*/0.5,
+                                /*gamma_h=*/1.,
+                                /*gamma_n=*/1.);
+
+  // ----- verify ------
+  deallog << "pre_adaptation" << std::endl
+          << " ncells:" << tria.n_active_cells() << std::endl;
+  for (const auto &cell : dh.active_cell_iterators())
+    {
+      deallog << " cell:" << cell->id().to_string()
+              << " fe_deg:" << cell->get_fe().degree
+              << " error:" << error_indicators[cell->active_cell_index()]
+              << " predicted:"
+              << predicted_error_indicators[cell->active_cell_index()];
+
+      if (cell->refine_flag_set())
+        deallog << " refining";
+      else if (cell->coarsen_flag_set())
+        deallog << " coarsening";
+
+      if (cell->future_fe_index_set())
+        deallog << " future_fe_deg:" << fes[cell->future_fe_index()].degree;
+
+      deallog << std::endl;
+    }
+
+  // ----- execute adaptation -----
+  CellDataTransfer<dim, dim, Vector<float>> cell_data_transfer(
+    tria,
+    &AdaptationStrategies::Refinement::l2_norm<dim, dim, float>,
+    &AdaptationStrategies::Coarsening::l2_norm<dim, dim, float>);
+  cell_data_transfer.prepare_for_coarsening_and_refinement();
+
+  tria.execute_coarsening_and_refinement();
+
+  Vector<float> transferred_indicators(tria.n_active_cells());
+  cell_data_transfer.unpack(predicted_error_indicators, transferred_indicators);
+
+  // ----- verify -----
+  deallog << "post_adaptation" << std::endl
+          << " ncells:" << tria.n_active_cells() << std::endl;
+  for (const auto &cell : dh.active_cell_iterators())
+    deallog << " cell:" << cell->id().to_string()
+            << " fe_deg:" << cell->get_fe().degree << " transferred:"
+            << transferred_indicators[cell->active_cell_index()] << std::endl;
+
+  // ----- verify norms -----
+  const double predicted_error_pre  = predicted_error_indicators.l2_norm(),
+               predicted_error_post = transferred_indicators.l2_norm();
+
+  deallog << "predicted_error_norms" << std::endl
+          << " pre_adaptation:" << predicted_error_pre << std::endl
+          << " post_adaptation:" << predicted_error_post << std::endl;
+
+  Assert(predicted_error_pre == predicted_error_post,
+         ExcMessage("Transfer failed - Results not similar."));
+
+  deallog << "OK" << std::endl;
+}
+
+
+
+int
+main(int argc, char *argv[])
+{
+  initlog();
+
+  deallog.push("1d");
+  test<1>();
+  deallog.pop();
+  deallog.push("2d");
+  test<2>();
+  deallog.pop();
+  deallog.push("3d");
+  test<3>();
+  deallog.pop();
+}
diff --git a/tests/hp/error_prediction_02.output b/tests/hp/error_prediction_02.output
new file mode 100644 (file)
index 0000000..965f98f
--- /dev/null
@@ -0,0 +1,93 @@
+
+DEAL:1d::pre_adaptation
+DEAL:1d:: ncells:6
+DEAL:1d:: cell:2_0: fe_deg:2 error:10.0000 predicted:0.625000 refining future_fe_deg:3
+DEAL:1d:: cell:3_0: fe_deg:2 error:10.0000 predicted:10.0000 refining future_fe_deg:1
+DEAL:1d:: cell:0_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:1d:: cell:0_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:1d:: cell:1_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:1d:: cell:1_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:1d::post_adaptation
+DEAL:1d:: ncells:6
+DEAL:1d:: cell:0_0: fe_deg:3 transferred:56.5685
+DEAL:1d:: cell:1_0: fe_deg:1 transferred:56.5685
+DEAL:1d:: cell:2_1:0 fe_deg:3 transferred:0.441942
+DEAL:1d:: cell:2_1:1 fe_deg:3 transferred:0.441942
+DEAL:1d:: cell:3_1:0 fe_deg:1 transferred:7.07107
+DEAL:1d:: cell:3_1:1 fe_deg:1 transferred:7.07107
+DEAL:1d::predicted_error_norms
+DEAL:1d:: pre_adaptation:80.6250
+DEAL:1d:: post_adaptation:80.6250
+DEAL:1d::OK
+DEAL:2d::pre_adaptation
+DEAL:2d:: ncells:10
+DEAL:2d:: cell:2_0: fe_deg:2 error:10.0000 predicted:0.625000 refining future_fe_deg:3
+DEAL:2d:: cell:3_0: fe_deg:2 error:10.0000 predicted:10.0000 refining future_fe_deg:1
+DEAL:2d:: cell:0_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:2d:: cell:0_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:2d:: cell:0_1:2 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:2d:: cell:0_1:3 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:2d:: cell:1_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:2d:: cell:1_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:2d:: cell:1_1:2 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:2d:: cell:1_1:3 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:2d::post_adaptation
+DEAL:2d:: ncells:10
+DEAL:2d:: cell:0_0: fe_deg:3 transferred:80.0000
+DEAL:2d:: cell:1_0: fe_deg:1 transferred:80.0000
+DEAL:2d:: cell:2_1:0 fe_deg:3 transferred:0.312500
+DEAL:2d:: cell:2_1:1 fe_deg:3 transferred:0.312500
+DEAL:2d:: cell:2_1:2 fe_deg:3 transferred:0.312500
+DEAL:2d:: cell:2_1:3 fe_deg:3 transferred:0.312500
+DEAL:2d:: cell:3_1:0 fe_deg:1 transferred:5.00000
+DEAL:2d:: cell:3_1:1 fe_deg:1 transferred:5.00000
+DEAL:2d:: cell:3_1:2 fe_deg:1 transferred:5.00000
+DEAL:2d:: cell:3_1:3 fe_deg:1 transferred:5.00000
+DEAL:2d::predicted_error_norms
+DEAL:2d:: pre_adaptation:113.580
+DEAL:2d:: post_adaptation:113.580
+DEAL:2d::OK
+DEAL:3d::pre_adaptation
+DEAL:3d:: ncells:18
+DEAL:3d:: cell:2_0: fe_deg:2 error:10.0000 predicted:0.625000 refining future_fe_deg:3
+DEAL:3d:: cell:3_0: fe_deg:2 error:10.0000 predicted:10.0000 refining future_fe_deg:1
+DEAL:3d:: cell:0_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:2 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:3 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:4 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:5 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:6 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:0_1:7 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:3
+DEAL:3d:: cell:1_1:0 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:1 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:2 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:3 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:4 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:5 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:6 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d:: cell:1_1:7 fe_deg:2 error:10.0000 predicted:40.0000 coarsening future_fe_deg:1
+DEAL:3d::post_adaptation
+DEAL:3d:: ncells:18
+DEAL:3d:: cell:0_0: fe_deg:3 transferred:113.137
+DEAL:3d:: cell:1_0: fe_deg:1 transferred:113.137
+DEAL:3d:: cell:2_1:0 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:1 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:2 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:3 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:4 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:5 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:6 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:2_1:7 fe_deg:3 transferred:0.220971
+DEAL:3d:: cell:3_1:0 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:1 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:2 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:3 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:4 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:5 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:6 fe_deg:1 transferred:3.53553
+DEAL:3d:: cell:3_1:7 fe_deg:1 transferred:3.53553
+DEAL:3d::predicted_error_norms
+DEAL:3d:: pre_adaptation:160.313
+DEAL:3d:: post_adaptation:160.313
+DEAL: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.