From: Martin Kronbichler Date: Fri, 8 Mar 2019 18:13:06 +0000 (+0100) Subject: Fix renumbering of mg dofs for FE_Q X-Git-Tag: v9.1.0-rc1~297^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e68d75d19c94cd100b1b312669641b1f6a8bc90a;p=dealii.git Fix renumbering of mg dofs for FE_Q --- diff --git a/source/dofs/dof_handler_policy.cc b/source/dofs/dof_handler_policy.cc index aa9b53c703..a2f2eca38f 100644 --- a/source/dofs/dof_handler_policy.cc +++ b/source/dofs/dof_handler_policy.cc @@ -3097,6 +3097,7 @@ namespace internal const unsigned int level, const bool check_validity) { + (void)check_validity; Assert(level < dof_handler.get_triangulation().n_levels(), ExcInternalError()); @@ -3116,18 +3117,21 @@ namespace internal d, dof_handler.get_fe().dofs_per_vertex); - if (check_validity) - Assert(idx != numbers::invalid_dof_index, - ExcInternalError()); - if (idx != numbers::invalid_dof_index) - i->set_index(level, - d, - dof_handler.get_fe().dofs_per_vertex, - (indices_we_care_about.size() == 0) ? - (new_numbers[idx]) : - (new_numbers[indices_we_care_about - .index_within_set(idx)])); + { + Assert(check_validity == false || + (indices_we_care_about.size() > 0 ? + indices_we_care_about.is_element(idx) : + (idx < new_numbers.size())), + ExcInternalError()); + i->set_index(level, + d, + dof_handler.get_fe().dofs_per_vertex, + (indices_we_care_about.size() == 0) ? + (new_numbers[idx]) : + (new_numbers[indices_we_care_about + .index_within_set(idx)])); + } } } @@ -3215,10 +3219,12 @@ namespace internal typename DoFHandler<2, spacedim>::level_cell_iterator cell, endc = dof_handler.end(level); for (cell = dof_handler.begin(level); cell != endc; ++cell) - for (unsigned int line = 0; - line < GeometryInfo<2>::faces_per_cell; - ++line) - cell->face(line)->set_user_flag(); + if (cell->level_subdomain_id() != + numbers::artificial_subdomain_id) + for (unsigned int line = 0; + line < GeometryInfo<2>::faces_per_cell; + ++line) + cell->face(line)->set_user_flag(); for (typename DoFHandler<2, spacedim>::cell_iterator cell = dof_handler.begin(); @@ -3283,10 +3289,12 @@ namespace internal typename DoFHandler<3, spacedim>::level_cell_iterator cell, endc = dof_handler.end(level); for (cell = dof_handler.begin(level); cell != endc; ++cell) - for (unsigned int line = 0; - line < GeometryInfo<3>::lines_per_cell; - ++line) - cell->line(line)->set_user_flag(); + if (cell->level_subdomain_id() != + numbers::artificial_subdomain_id) + for (unsigned int line = 0; + line < GeometryInfo<3>::lines_per_cell; + ++line) + cell->line(line)->set_user_flag(); for (typename DoFHandler<3, spacedim>::cell_iterator cell = dof_handler.begin(); @@ -3322,10 +3330,12 @@ namespace internal // those quads logically belong to the same level as the cell, // at least for isotropic refinement for (cell = dof_handler.begin(level); cell != endc; ++cell) - for (unsigned int quad = 0; - quad < GeometryInfo<3>::quads_per_cell; - ++quad) - cell->quad(quad)->set_user_flag(); + if (cell->level_subdomain_id() != + numbers::artificial_subdomain_id) + for (unsigned int quad = 0; + quad < GeometryInfo<3>::quads_per_cell; + ++quad) + cell->quad(quad)->set_user_flag(); for (typename DoFHandler<3, spacedim>::cell_iterator cell = dof_handler.begin(); @@ -5898,7 +5908,8 @@ namespace internal // in case we do not own any of the given level (but only some remote // processor), we do not need to call the renumbering - if (level < this->dof_handler->get_triangulation().n_levels()) + if (level < this->dof_handler->get_triangulation().n_levels() && + relevant_dofs.n_elements() > 0) Implementation::renumber_mg_dofs( ghosted_new_numbers, relevant_dofs, *dof_handler, level, true); #else diff --git a/tests/multigrid/renumbering_08.cc b/tests/multigrid/renumbering_08.cc new file mode 100644 index 0000000000..64d388beb4 --- /dev/null +++ b/tests/multigrid/renumbering_08.cc @@ -0,0 +1,130 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2019 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. +// +// --------------------------------------------------------------------- + + +// check renumbering the degrees of freedom on the multigrid levels in +// parallel for FE_Q, otherwise similar to renumbering_05 + +#include + +#include + +#include + +#include +#include + +#include + +#include "../tests.h" + +using namespace std; + + +template +void +print_dof_numbers(const DoFHandler &dof) +{ + std::vector dof_indices(dof.get_fe().dofs_per_cell); + deallog << "DoF numbers on active cells" << std::endl; + for (auto cell : dof.active_cell_iterators()) + if (!cell->is_artificial()) + { + cell->get_dof_indices(dof_indices); + deallog << "cell " << cell->id() << ": "; + for (types::global_dof_index i : dof_indices) + deallog << i << " "; + deallog << std::endl; + } + for (unsigned int l = 0; l < dof.get_triangulation().n_global_levels(); ++l) + { + deallog << "DoF numbers on level " << l << std::endl; + for (auto cell : dof.cell_iterators_on_level(l)) + if (cell->level_subdomain_id() != numbers::artificial_subdomain_id) + { + cell->get_mg_dof_indices(dof_indices); + deallog << "cell " << cell->id() << ": "; + for (types::global_dof_index i : dof_indices) + deallog << i << " "; + deallog << std::endl; + } + } +} + +template +void +check() +{ + FE_Q fe(2); + + parallel::distributed::Triangulation tr( + MPI_COMM_WORLD, + Triangulation::limit_level_difference_at_vertices, + parallel::distributed::Triangulation::construct_multigrid_hierarchy); + for (unsigned int cycle = 0; cycle < 5; ++cycle) + { + tr.clear(); + const unsigned int n_refine = cycle / 3; + const unsigned int remainder = cycle % 3; + Point p1; + for (unsigned int d = 0; d < dim; ++d) + p1[d] = -1; + Point p2; + for (unsigned int d = 0; d < remainder; ++d) + p2[d] = 2.8; + for (unsigned int d = remainder; d < dim; ++d) + p2[d] = 1; + std::vector subdivisions(dim, 1); + for (unsigned int d = 0; d < remainder; ++d) + subdivisions[d] = 2; + GridGenerator::subdivided_hyper_rectangle(tr, subdivisions, p1, p2); + + DoFHandler mgdof(tr); + mgdof.distribute_dofs(fe); + mgdof.distribute_mg_dofs(); + + print_dof_numbers(mgdof); + + // compute a renumbering on the level degrees of freedom by simply + // flipping the local numbers + for (unsigned int l = 0; l < tr.n_global_levels(); ++l) + { + std::vector new_indices; + if (mgdof.locally_owned_mg_dofs(l).n_elements() > 0) + { + const types::global_dof_index first = + mgdof.locally_owned_mg_dofs(l).nth_index_in_set(0); + const types::global_dof_index last = + first + mgdof.locally_owned_mg_dofs(l).n_elements(); + for (unsigned int i = 0; i < last - first; ++i) + new_indices.push_back(last - 1 - i); + } + mgdof.renumber_dofs(l, new_indices); + } + + print_dof_numbers(mgdof); + } +} + + +int +main(int argc, char **argv) +{ + Utilities::MPI::MPI_InitFinalize mpi(argc, argv); + MPILogInitAll log; + + check<2>(); + check<3>(); +} diff --git a/tests/multigrid/renumbering_08.with_p4est=true.mpirun=2.output b/tests/multigrid/renumbering_08.with_p4est=true.mpirun=2.output new file mode 100644 index 0000000000..9f389f39c9 --- /dev/null +++ b/tests/multigrid/renumbering_08.with_p4est=true.mpirun=2.output @@ -0,0 +1,227 @@ + +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 8 7 6 5 4 3 2 1 0 +DEAL:0::cell 1_0:: 7 14 5 13 3 12 11 10 9 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::cell 2_0:: 2 3 15 16 17 18 7 19 20 +DEAL:0::cell 3_0:: 3 10 16 21 18 22 13 23 24 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::cell 2_0:: 2 3 15 16 17 18 7 19 20 +DEAL:0::cell 3_0:: 3 10 16 21 18 22 13 23 24 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::cell 2_0:: 2 3 15 16 17 18 7 19 20 +DEAL:0::cell 3_0:: 3 10 16 21 18 22 13 23 24 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 14 13 12 11 10 9 8 7 6 +DEAL:0::cell 1_0:: 13 5 11 4 9 3 2 1 0 +DEAL:0::cell 2_0:: 12 11 24 23 22 21 7 20 19 +DEAL:0::cell 3_0:: 11 4 23 18 21 17 1 16 15 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:0::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 8 7 6 5 4 3 2 1 0 +DEAL:0::cell 1_0:: 7 14 5 13 3 12 11 10 9 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +DEAL:0::cell 1_0:: 25 44 23 43 21 42 19 41 17 40 39 38 13 37 36 35 9 34 7 33 5 32 31 30 29 28 27 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::cell 2_0:: 2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62 +DEAL:0::cell 3_0:: 3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::cell 2_0:: 2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62 +DEAL:0::cell 3_0:: 3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::cell 2_0:: 2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62 +DEAL:0::cell 3_0:: 3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 +DEAL:0::cell 1_0:: 43 17 41 16 39 15 37 14 35 13 12 11 31 10 9 8 27 7 25 6 23 5 4 3 2 1 0 +DEAL:0::cell 2_0:: 42 41 74 73 38 37 72 71 70 69 33 68 67 66 29 65 26 25 64 63 62 61 21 60 59 58 57 +DEAL:0::cell 3_0:: 41 16 73 56 37 14 71 55 69 54 11 53 66 52 8 51 25 6 63 50 61 49 3 48 47 46 45 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::DoF numbers on level 0 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::DoF numbers on active cells +DEAL:0::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:0::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:0::DoF numbers on level 0 +DEAL:0::cell 0_0:: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +DEAL:0::cell 1_0:: 25 44 23 43 21 42 19 41 17 40 39 38 13 37 36 35 9 34 7 33 5 32 31 30 29 28 27 + +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 8 7 6 5 4 3 2 1 0 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 8 7 6 5 4 3 2 1 0 +DEAL:1::cell 1_0:: 7 14 5 13 3 12 11 10 9 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::cell 2_0:: 2 3 15 16 17 18 7 19 20 +DEAL:1::cell 3_0:: 3 10 16 21 18 22 13 23 24 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::cell 2_0:: 2 3 15 16 17 18 7 19 20 +DEAL:1::cell 3_0:: 3 10 16 21 18 22 13 23 24 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::cell 2_0:: 2 3 15 16 17 18 7 19 20 +DEAL:1::cell 3_0:: 3 10 16 21 18 22 13 23 24 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 14 13 12 11 10 9 8 7 6 +DEAL:1::cell 1_0:: 13 5 11 4 9 3 2 1 0 +DEAL:1::cell 2_0:: 12 11 24 23 22 21 7 20 19 +DEAL:1::cell 3_0:: 11 4 23 18 21 17 1 16 15 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 8 7 6 5 4 3 2 1 0 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 +DEAL:1::cell 1_0:: 1 9 3 10 5 11 12 13 14 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 8 7 6 5 4 3 2 1 0 +DEAL:1::cell 1_0:: 7 14 5 13 3 12 11 10 9 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +DEAL:1::cell 1_0:: 25 44 23 43 21 42 19 41 17 40 39 38 13 37 36 35 9 34 7 33 5 32 31 30 29 28 27 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::cell 2_0:: 2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62 +DEAL:1::cell 3_0:: 3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::cell 2_0:: 2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62 +DEAL:1::cell 3_0:: 3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::cell 2_0:: 2 3 45 46 6 7 47 48 49 50 11 51 52 53 15 54 18 19 55 56 57 58 23 59 60 61 62 +DEAL:1::cell 3_0:: 3 28 46 63 7 30 48 64 50 65 33 66 53 67 36 68 19 38 56 69 58 70 41 71 72 73 74 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 +DEAL:1::cell 1_0:: 43 17 41 16 39 15 37 14 35 13 12 11 31 10 9 8 27 7 25 6 23 5 4 3 2 1 0 +DEAL:1::cell 2_0:: 42 41 74 73 38 37 72 71 70 69 33 68 67 66 29 65 26 25 64 63 62 61 21 60 59 58 57 +DEAL:1::cell 3_0:: 41 16 73 56 37 14 71 55 69 54 11 53 66 52 8 51 25 6 63 50 61 49 3 48 47 46 45 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::DoF numbers on active cells +DEAL:1::cell 0_0:: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +DEAL:1::cell 1_0:: 1 27 3 28 5 29 7 30 9 31 32 33 13 34 35 36 17 37 19 38 21 39 40 41 42 43 44 +DEAL:1::DoF numbers on level 0 +DEAL:1::cell 0_0:: 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 +DEAL:1::cell 1_0:: 25 44 23 43 21 42 19 41 17 40 39 38 13 37 36 35 9 34 7 33 5 32 31 30 29 28 27 +