From f51a382b2044b49c8add95cdc7c1203edcd3d41b Mon Sep 17 00:00:00 2001 From: Mathias Anselmann Date: Tue, 10 Nov 2020 19:11:10 +0100 Subject: [PATCH] parallel running version of multigrid Cuthill McKee reordering --- include/deal.II/dofs/dof_renumbering.h | 7 +- include/deal.II/dofs/dof_tools.h | 15 + source/dofs/dof_renumbering.cc | 112 ++- source/dofs/dof_renumbering.inst.in | 3 +- source/dofs/dof_tools.cc | 37 + source/dofs/dof_tools.inst.in | 8 + tests/mpi/renumber_cuthill_mckee.cc | 122 +++- ...hill_mckee.mpirun=1.with_p4est=true.output | 660 ++++++++++++++++++ ...hill_mckee.mpirun=4.with_p4est=true.output | 660 ++++++++++++++++++ 9 files changed, 1554 insertions(+), 70 deletions(-) diff --git a/include/deal.II/dofs/dof_renumbering.h b/include/deal.II/dofs/dof_renumbering.h index 0ee1e4fb8c..314cb08d36 100644 --- a/include/deal.II/dofs/dof_renumbering.h +++ b/include/deal.II/dofs/dof_renumbering.h @@ -590,7 +590,9 @@ namespace DoFRenumbering * This function does not perform the renumbering on the DoFHandler DoFs but * only returns the renumbering vector. * - * See the Cuthill_McKee() function for an explanation of the arguments. + * If a valid level is passed as parameter, the renumbering vector for this + * grid level is returned. + * See the Cuthill_McKee() function for an explanation of the other arguments. */ template void @@ -600,7 +602,8 @@ namespace DoFRenumbering const bool reversed_numbering = false, const bool use_constraints = false, const std::vector &starting_indices = - std::vector()); + std::vector(), + const unsigned int level = numbers::invalid_unsigned_int); /** * Renumber the degrees of freedom according to the Cuthill-McKee method, diff --git a/include/deal.II/dofs/dof_tools.h b/include/deal.II/dofs/dof_tools.h index 57c1c76721..fc30216f7f 100644 --- a/include/deal.II/dofs/dof_tools.h +++ b/include/deal.II/dofs/dof_tools.h @@ -1657,6 +1657,21 @@ namespace DoFTools extract_locally_active_dofs(const DoFHandler &dof_handler, IndexSet & dof_set); + /** + * Same function as above, but on a certain level in a multigrid scenarion. + * Strictly speaking we don't talk about active DoFs in such a multigrid + * scenario. Nevertheless this function returns all DoF indices that live on + * all locally owned cells (including on the interface to ghost cells) on a + * certain level, as the function above. + */ + template + void + extract_locally_active_level_dofs( + const DoFHandler &dof_handler, + IndexSet & dof_set, + const unsigned int level); + + /** * Extract the set of global DoF indices that are active on the current * DoFHandler. For regular DoFHandlers, these are all DoF indices, but for diff --git a/source/dofs/dof_renumbering.cc b/source/dofs/dof_renumbering.cc index 91dd5cc960..d997f2dd08 100644 --- a/source/dofs/dof_renumbering.cc +++ b/source/dofs/dof_renumbering.cc @@ -39,6 +39,7 @@ #include #include +#include #include DEAL_II_DISABLE_EXTRA_DIAGNOSTICS @@ -391,8 +392,12 @@ namespace DoFRenumbering const DoFHandler & dof_handler, const bool reversed_numbering, const bool use_constraints, - const std::vector &starting_indices) + const std::vector &starting_indices, + const unsigned int level) { + const bool reorder_level_dofs = + (level == numbers::invalid_unsigned_int) ? false : true; + // see if there is anything to do at all or whether we can skip the work on // this processor if (dof_handler.locally_owned_dofs().n_elements() == 0) @@ -406,25 +411,50 @@ namespace DoFRenumbering // note that if constraints are not requested, then the 'constraints' // object will be empty and using it has no effect IndexSet locally_relevant_dofs; - DoFTools::extract_locally_relevant_dofs(dof_handler, locally_relevant_dofs); + IndexSet const *ptr_locally_owned_dofs; + if (reorder_level_dofs == false) + { + DoFTools::extract_locally_relevant_dofs(dof_handler, + locally_relevant_dofs); + ptr_locally_owned_dofs = &dof_handler.locally_owned_dofs(); + } + else + { + Assert(dof_handler.n_dofs(level) != numbers::invalid_dof_index, + ExcDoFHandlerNotInitialized()); + DoFTools::extract_locally_relevant_level_dofs(dof_handler, + level, + locally_relevant_dofs); + ptr_locally_owned_dofs = &dof_handler.locally_owned_mg_dofs(level); + } AffineConstraints constraints; if (use_constraints) { + // regarding constraints is not yet implemented on a level basis + Assert(reorder_level_dofs == false, ExcNotImplemented()); + constraints.reinit(locally_relevant_dofs); DoFTools::make_hanging_node_constraints(dof_handler, constraints); } constraints.close(); - const IndexSet &locally_owned_dofs = dof_handler.locally_owned_dofs(); - // see if we can get away with the sequential algorithm - if (locally_owned_dofs.n_elements() == locally_owned_dofs.size()) + if (ptr_locally_owned_dofs->n_elements() == ptr_locally_owned_dofs->size()) { - AssertDimension(new_indices.size(), dof_handler.n_dofs()); + AssertDimension(new_indices.size(), + ptr_locally_owned_dofs->n_elements()); - DynamicSparsityPattern dsp(dof_handler.n_dofs(), dof_handler.n_dofs()); - DoFTools::make_sparsity_pattern(dof_handler, dsp, constraints); + DynamicSparsityPattern dsp(ptr_locally_owned_dofs->size(), + ptr_locally_owned_dofs->size()); + if (reorder_level_dofs == false) + { + DoFTools::make_sparsity_pattern(dof_handler, dsp, constraints); + } + else + { + MGTools::make_sparsity_pattern(dof_handler, dsp, level); + } SparsityTools::reorder_Cuthill_McKee(dsp, new_indices, @@ -443,14 +473,24 @@ namespace DoFRenumbering // relevant. in the process, also check that all indices // really belong to at least the locally relevant ones IndexSet locally_active_dofs; - DoFTools::extract_locally_active_dofs(dof_handler, locally_active_dofs); + if (reorder_level_dofs == false) + { + DoFTools::extract_locally_active_dofs(dof_handler, + locally_active_dofs); + } + else + { + DoFTools::extract_locally_active_level_dofs(dof_handler, + locally_active_dofs, + level); + } bool needs_locally_active = false; for (const auto starting_index : starting_indices) { if ((needs_locally_active == /* previously already set to */ true) || - (locally_owned_dofs.is_element(starting_index) == false)) + (ptr_locally_owned_dofs->is_element(starting_index) == false)) { Assert( locally_active_dofs.is_element(starting_index), @@ -465,15 +505,28 @@ namespace DoFRenumbering } const IndexSet index_set_to_use = - (needs_locally_active ? locally_active_dofs : locally_owned_dofs); + (needs_locally_active ? locally_active_dofs : + *ptr_locally_owned_dofs); + + // if this process doesn't own any DoFs (on this level), there is + // nothing to do + if (index_set_to_use.n_elements() == 0) + return; // then create first the global sparsity pattern, and then the local // sparsity pattern from the global one by transferring its indices to // processor-local (locally owned or locally active) index space - DynamicSparsityPattern dsp(dof_handler.n_dofs(), - dof_handler.n_dofs(), + DynamicSparsityPattern dsp(index_set_to_use.size(), + index_set_to_use.size(), index_set_to_use); - DoFTools::make_sparsity_pattern(dof_handler, dsp, constraints); + if (reorder_level_dofs == false) + { + DoFTools::make_sparsity_pattern(dof_handler, dsp, constraints); + } + else + { + MGTools::make_sparsity_pattern(dof_handler, dsp, level); + } DynamicSparsityPattern local_sparsity(index_set_to_use.n_elements(), index_set_to_use.n_elements()); @@ -504,7 +557,8 @@ namespace DoFRenumbering index_set_to_use.index_within_set(starting_indices[i]); // then do the renumbering on the locally owned portion - AssertDimension(new_indices.size(), locally_owned_dofs.n_elements()); + AssertDimension(new_indices.size(), + ptr_locally_owned_dofs->n_elements()); std::vector my_new_indices( index_set_to_use.n_elements()); SparsityTools::reorder_Cuthill_McKee(local_sparsity, @@ -523,7 +577,7 @@ namespace DoFRenumbering { // first step: figure out which DoF indices to eliminate IndexSet active_but_not_owned_dofs = locally_active_dofs; - active_but_not_owned_dofs.subtract_set(locally_owned_dofs); + active_but_not_owned_dofs.subtract_set(*ptr_locally_owned_dofs); std::set erase_these_indices; for (const auto p : active_but_not_owned_dofs) @@ -563,14 +617,14 @@ namespace DoFRenumbering translate_indices[i] = next_new_index; ++next_new_index; } - Assert(next_new_index == locally_owned_dofs.n_elements(), + Assert(next_new_index == ptr_locally_owned_dofs->n_elements(), ExcInternalError()); } // and then do the renumbering of the result of the // Cuthill-McKee algorithm above, right into the output array new_indices.clear(); - new_indices.reserve(locally_owned_dofs.n_elements()); + new_indices.reserve(ptr_locally_owned_dofs->n_elements()); for (const auto &p : my_new_indices) if (p != numbers::invalid_dof_index) { @@ -578,7 +632,7 @@ namespace DoFRenumbering ExcInternalError()); new_indices.push_back(translate_indices[p]); } - Assert(new_indices.size() == locally_owned_dofs.n_elements(), + Assert(new_indices.size() == ptr_locally_owned_dofs->n_elements(), ExcInternalError()); } else @@ -589,7 +643,7 @@ namespace DoFRenumbering // indices of the locally-owned DoFs. so that's where we get the // indices for (types::global_dof_index &new_index : new_indices) - new_index = locally_owned_dofs.nth_index_in_set(new_index); + new_index = ptr_locally_owned_dofs->nth_index_in_set(new_index); } } @@ -605,16 +659,16 @@ namespace DoFRenumbering Assert(dof_handler.n_dofs(level) != numbers::invalid_dof_index, ExcDoFHandlerNotInitialized()); - // make the connection graph - DynamicSparsityPattern dsp(dof_handler.n_dofs(level), - dof_handler.n_dofs(level)); - MGTools::make_sparsity_pattern(dof_handler, dsp, level); - - std::vector new_indices(dsp.n_rows()); - SparsityTools::reorder_Cuthill_McKee(dsp, new_indices, starting_indices); + std::vector new_indices( + dof_handler.locally_owned_mg_dofs(level).n_elements(), + numbers::invalid_dof_index); - if (reversed_numbering) - new_indices = Utilities::reverse_permutation(new_indices); + compute_Cuthill_McKee(new_indices, + dof_handler, + reversed_numbering, + false, + starting_indices, + level); // actually perform renumbering; // this is dimension specific and diff --git a/source/dofs/dof_renumbering.inst.in b/source/dofs/dof_renumbering.inst.in index 064de36baa..624e4a33b9 100644 --- a/source/dofs/dof_renumbering.inst.in +++ b/source/dofs/dof_renumbering.inst.in @@ -39,7 +39,8 @@ for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS) const DoFHandler &, const bool, const bool, - const std::vector &); + const std::vector &, + const unsigned int); template void component_wise( diff --git a/source/dofs/dof_tools.cc b/source/dofs/dof_tools.cc index 2c88a6aa2f..c8ddae04b3 100644 --- a/source/dofs/dof_tools.cc +++ b/source/dofs/dof_tools.cc @@ -1133,6 +1133,43 @@ namespace DoFTools + template + void + extract_locally_active_level_dofs( + const DoFHandler &dof_handler, + IndexSet & dof_set, + const unsigned int level) + { + // collect all the locally owned dofs + dof_set = dof_handler.locally_owned_mg_dofs(level); + + // add the DoF on the adjacent ghost cells to the IndexSet, cache them + // in a set. need to check each dof manually because we can't be sure + // that the dof range of locally_owned_dofs is really contiguous. + std::vector dof_indices; + std::set global_dof_indices; + + typename DoFHandler::level_cell_iterator + cell = dof_handler.begin_mg(level), + endc = dof_handler.end_mg(level); + for (; cell != endc; ++cell) + if (cell->is_locally_owned_on_level()) + { + dof_indices.resize(cell->get_fe().n_dofs_per_cell()); + cell->get_mg_dof_indices(dof_indices); + + for (const types::global_dof_index dof_index : dof_indices) + if (!dof_set.is_element(dof_index)) + global_dof_indices.insert(dof_index); + } + + dof_set.add_indices(global_dof_indices.begin(), global_dof_indices.end()); + + dof_set.compress(); + } + + + template void extract_locally_relevant_dofs(const DoFHandler &dof_handler, diff --git a/source/dofs/dof_tools.inst.in b/source/dofs/dof_tools.inst.in index 49ec698e40..eca9cc1fee 100644 --- a/source/dofs/dof_tools.inst.in +++ b/source/dofs/dof_tools.inst.in @@ -39,6 +39,14 @@ for (deal_II_dimension, deal_II_space_dimension : DIMENSIONS) & dof_handler, IndexSet &dof_set); + template void + extract_locally_active_level_dofs( + const DoFHandler + & dof_handler, + IndexSet & dof_set, + const unsigned int level); + template std::vector locally_owned_dofs_per_component( diff --git a/tests/mpi/renumber_cuthill_mckee.cc b/tests/mpi/renumber_cuthill_mckee.cc index ae04f8dc6e..83c506f7c0 100644 --- a/tests/mpi/renumber_cuthill_mckee.cc +++ b/tests/mpi/renumber_cuthill_mckee.cc @@ -44,7 +44,10 @@ test() unsigned int myid = Utilities::MPI::this_mpi_process(MPI_COMM_WORLD); unsigned int nprocs = Utilities::MPI::n_mpi_processes(MPI_COMM_WORLD); - parallel::distributed::Triangulation tr(MPI_COMM_WORLD); + parallel::distributed::Triangulation tr( + MPI_COMM_WORLD, + Triangulation::limit_level_difference_at_vertices, + parallel::distributed::Triangulation::construct_multigrid_hierarchy); GridGenerator::hyper_cube(tr, -1.0, 1.0); tr.refine_global(8 - 2 * dim); @@ -65,45 +68,88 @@ test() static const FE_Q fe(1); dofh.distribute_dofs(fe); - std::vector renumbering( - dofh.locally_owned_dofs().n_elements()); - DoFRenumbering::compute_Cuthill_McKee(renumbering, dofh); - - // send everything to processor 0 for output - std::vector complete_renumbering(dofh.n_dofs()); - std::copy(renumbering.begin(), - renumbering.end(), - complete_renumbering.begin()); - unsigned int offset = renumbering.size(); - const std::vector dofs_per_proc = - Utilities::MPI::all_gather(MPI_COMM_WORLD, dofh.locally_owned_dofs()); - for (unsigned int i = 1; i < nprocs; ++i) - { - if (myid == i) - MPI_Send(&renumbering[0], - renumbering.size(), - Utilities::MPI::internal::mpi_type_id( - &complete_renumbering[0]), - 0, - i, - MPI_COMM_WORLD); - else if (myid == 0) - MPI_Recv(&complete_renumbering[offset], - dofs_per_proc[i].n_elements(), - Utilities::MPI::internal::mpi_type_id( - &complete_renumbering[0]), - i, - i, - MPI_COMM_WORLD, - MPI_STATUSES_IGNORE); - offset += dofs_per_proc[i].n_elements(); - } + dofh.distribute_mg_dofs(); - if (myid == 0) + for (unsigned int level = 0; level <= tr.n_levels(); ++level) { - AssertDimension(offset, complete_renumbering.size()); - for (unsigned int i = 0; i < complete_renumbering.size(); ++i) - deallog << complete_renumbering[i] << std::endl; + types::global_dof_index n_dofs{0}; + std::vector renumbering; + if (level < tr.n_levels()) + { + n_dofs = dofh.n_dofs(level); + renumbering = std::vector( + dofh.locally_owned_mg_dofs(level).n_elements()); + DoFRenumbering::compute_Cuthill_McKee( + renumbering, + dofh, + false, + false, + std::vector(), + level); + } + else + { + n_dofs = dofh.n_dofs(); + renumbering = std::vector( + dofh.locally_owned_dofs().n_elements()); + DoFRenumbering::compute_Cuthill_McKee(renumbering, dofh); + } + + // send everything to processor 0 for output + std::vector complete_renumbering(n_dofs); + std::copy(renumbering.begin(), + renumbering.end(), + complete_renumbering.begin()); + unsigned int offset = renumbering.size(); + std::vector dofs_per_proc; + if (level < tr.n_levels()) + { + dofs_per_proc = + Utilities::MPI::all_gather(MPI_COMM_WORLD, + dofh.locally_owned_mg_dofs(level)); + } + else + { + dofs_per_proc = Utilities::MPI::all_gather(MPI_COMM_WORLD, + dofh.locally_owned_dofs()); + } + + for (unsigned int i = 1; i < nprocs; ++i) + { + if (myid == i) + MPI_Send(&renumbering[0], + renumbering.size(), + Utilities::MPI::internal::mpi_type_id( + &complete_renumbering[0]), + 0, + i, + MPI_COMM_WORLD); + else if (myid == 0) + MPI_Recv(&complete_renumbering[offset], + dofs_per_proc[i].n_elements(), + Utilities::MPI::internal::mpi_type_id( + &complete_renumbering[0]), + i, + i, + MPI_COMM_WORLD, + MPI_STATUSES_IGNORE); + offset += dofs_per_proc[i].n_elements(); + } + + if (myid == 0) + { + AssertDimension(offset, complete_renumbering.size()); + if (level < tr.n_levels()) + { + deallog << "On level: " << level << std::endl; + } + else + { + deallog << "On active cells:" << std::endl; + } + for (unsigned int i = 0; i < complete_renumbering.size(); ++i) + deallog << complete_renumbering[i] << std::endl; + } } } diff --git a/tests/mpi/renumber_cuthill_mckee.mpirun=1.with_p4est=true.output b/tests/mpi/renumber_cuthill_mckee.mpirun=1.with_p4est=true.output index e571ed9ee3..ba52e39737 100644 --- a/tests/mpi/renumber_cuthill_mckee.mpirun=1.with_p4est=true.output +++ b/tests/mpi/renumber_cuthill_mckee.mpirun=1.with_p4est=true.output @@ -1,4 +1,500 @@ +DEAL:0:2d::On level: 0 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::On level: 1 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::7 +DEAL:0:2d::5 +DEAL:0:2d::8 +DEAL:0:2d::6 +DEAL:0:2d::On level: 2 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::19 +DEAL:0:2d::12 +DEAL:0:2d::20 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::21 +DEAL:0:2d::22 +DEAL:0:2d::15 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::18 +DEAL:0:2d::On level: 3 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::18 +DEAL:0:2d::12 +DEAL:0:2d::19 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::20 +DEAL:0:2d::21 +DEAL:0:2d::15 +DEAL:0:2d::22 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::25 +DEAL:0:2d::27 +DEAL:0:2d::36 +DEAL:0:2d::38 +DEAL:0:2d::28 +DEAL:0:2d::39 +DEAL:0:2d::49 +DEAL:0:2d::51 +DEAL:0:2d::64 +DEAL:0:2d::67 +DEAL:0:2d::52 +DEAL:0:2d::68 +DEAL:0:2d::29 +DEAL:0:2d::40 +DEAL:0:2d::30 +DEAL:0:2d::41 +DEAL:0:2d::53 +DEAL:0:2d::69 +DEAL:0:2d::54 +DEAL:0:2d::70 +DEAL:0:2d::26 +DEAL:0:2d::31 +DEAL:0:2d::32 +DEAL:0:2d::37 +DEAL:0:2d::42 +DEAL:0:2d::43 +DEAL:0:2d::33 +DEAL:0:2d::34 +DEAL:0:2d::44 +DEAL:0:2d::45 +DEAL:0:2d::50 +DEAL:0:2d::55 +DEAL:0:2d::56 +DEAL:0:2d::65 +DEAL:0:2d::71 +DEAL:0:2d::72 +DEAL:0:2d::57 +DEAL:0:2d::58 +DEAL:0:2d::73 +DEAL:0:2d::74 +DEAL:0:2d::35 +DEAL:0:2d::46 +DEAL:0:2d::47 +DEAL:0:2d::48 +DEAL:0:2d::59 +DEAL:0:2d::75 +DEAL:0:2d::60 +DEAL:0:2d::76 +DEAL:0:2d::61 +DEAL:0:2d::62 +DEAL:0:2d::77 +DEAL:0:2d::78 +DEAL:0:2d::63 +DEAL:0:2d::79 +DEAL:0:2d::80 +DEAL:0:2d::66 +DEAL:0:2d::On level: 4 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::18 +DEAL:0:2d::12 +DEAL:0:2d::19 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::20 +DEAL:0:2d::21 +DEAL:0:2d::15 +DEAL:0:2d::22 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::25 +DEAL:0:2d::27 +DEAL:0:2d::36 +DEAL:0:2d::38 +DEAL:0:2d::28 +DEAL:0:2d::39 +DEAL:0:2d::49 +DEAL:0:2d::51 +DEAL:0:2d::64 +DEAL:0:2d::66 +DEAL:0:2d::52 +DEAL:0:2d::67 +DEAL:0:2d::29 +DEAL:0:2d::40 +DEAL:0:2d::30 +DEAL:0:2d::41 +DEAL:0:2d::53 +DEAL:0:2d::68 +DEAL:0:2d::54 +DEAL:0:2d::69 +DEAL:0:2d::26 +DEAL:0:2d::31 +DEAL:0:2d::32 +DEAL:0:2d::37 +DEAL:0:2d::42 +DEAL:0:2d::43 +DEAL:0:2d::33 +DEAL:0:2d::34 +DEAL:0:2d::44 +DEAL:0:2d::45 +DEAL:0:2d::50 +DEAL:0:2d::55 +DEAL:0:2d::56 +DEAL:0:2d::65 +DEAL:0:2d::70 +DEAL:0:2d::71 +DEAL:0:2d::57 +DEAL:0:2d::58 +DEAL:0:2d::72 +DEAL:0:2d::73 +DEAL:0:2d::35 +DEAL:0:2d::46 +DEAL:0:2d::47 +DEAL:0:2d::48 +DEAL:0:2d::59 +DEAL:0:2d::74 +DEAL:0:2d::60 +DEAL:0:2d::75 +DEAL:0:2d::61 +DEAL:0:2d::62 +DEAL:0:2d::76 +DEAL:0:2d::77 +DEAL:0:2d::63 +DEAL:0:2d::78 +DEAL:0:2d::79 +DEAL:0:2d::80 +DEAL:0:2d::81 +DEAL:0:2d::83 +DEAL:0:2d::100 +DEAL:0:2d::102 +DEAL:0:2d::84 +DEAL:0:2d::103 +DEAL:0:2d::121 +DEAL:0:2d::123 +DEAL:0:2d::144 +DEAL:0:2d::146 +DEAL:0:2d::124 +DEAL:0:2d::147 +DEAL:0:2d::85 +DEAL:0:2d::104 +DEAL:0:2d::86 +DEAL:0:2d::105 +DEAL:0:2d::125 +DEAL:0:2d::148 +DEAL:0:2d::126 +DEAL:0:2d::149 +DEAL:0:2d::169 +DEAL:0:2d::171 +DEAL:0:2d::196 +DEAL:0:2d::198 +DEAL:0:2d::172 +DEAL:0:2d::199 +DEAL:0:2d::225 +DEAL:0:2d::227 +DEAL:0:2d::256 +DEAL:0:2d::259 +DEAL:0:2d::228 +DEAL:0:2d::260 +DEAL:0:2d::173 +DEAL:0:2d::200 +DEAL:0:2d::174 +DEAL:0:2d::201 +DEAL:0:2d::229 +DEAL:0:2d::261 +DEAL:0:2d::230 +DEAL:0:2d::262 +DEAL:0:2d::87 +DEAL:0:2d::106 +DEAL:0:2d::88 +DEAL:0:2d::107 +DEAL:0:2d::127 +DEAL:0:2d::150 +DEAL:0:2d::128 +DEAL:0:2d::151 +DEAL:0:2d::89 +DEAL:0:2d::108 +DEAL:0:2d::90 +DEAL:0:2d::109 +DEAL:0:2d::129 +DEAL:0:2d::152 +DEAL:0:2d::130 +DEAL:0:2d::153 +DEAL:0:2d::175 +DEAL:0:2d::202 +DEAL:0:2d::176 +DEAL:0:2d::203 +DEAL:0:2d::231 +DEAL:0:2d::263 +DEAL:0:2d::232 +DEAL:0:2d::264 +DEAL:0:2d::177 +DEAL:0:2d::204 +DEAL:0:2d::178 +DEAL:0:2d::205 +DEAL:0:2d::233 +DEAL:0:2d::265 +DEAL:0:2d::234 +DEAL:0:2d::266 +DEAL:0:2d::82 +DEAL:0:2d::91 +DEAL:0:2d::92 +DEAL:0:2d::101 +DEAL:0:2d::110 +DEAL:0:2d::111 +DEAL:0:2d::93 +DEAL:0:2d::94 +DEAL:0:2d::112 +DEAL:0:2d::113 +DEAL:0:2d::122 +DEAL:0:2d::131 +DEAL:0:2d::132 +DEAL:0:2d::145 +DEAL:0:2d::154 +DEAL:0:2d::155 +DEAL:0:2d::133 +DEAL:0:2d::134 +DEAL:0:2d::156 +DEAL:0:2d::157 +DEAL:0:2d::95 +DEAL:0:2d::96 +DEAL:0:2d::114 +DEAL:0:2d::115 +DEAL:0:2d::97 +DEAL:0:2d::98 +DEAL:0:2d::116 +DEAL:0:2d::117 +DEAL:0:2d::135 +DEAL:0:2d::136 +DEAL:0:2d::158 +DEAL:0:2d::159 +DEAL:0:2d::137 +DEAL:0:2d::138 +DEAL:0:2d::160 +DEAL:0:2d::161 +DEAL:0:2d::170 +DEAL:0:2d::179 +DEAL:0:2d::180 +DEAL:0:2d::197 +DEAL:0:2d::206 +DEAL:0:2d::207 +DEAL:0:2d::181 +DEAL:0:2d::182 +DEAL:0:2d::208 +DEAL:0:2d::209 +DEAL:0:2d::226 +DEAL:0:2d::235 +DEAL:0:2d::236 +DEAL:0:2d::257 +DEAL:0:2d::267 +DEAL:0:2d::268 +DEAL:0:2d::237 +DEAL:0:2d::238 +DEAL:0:2d::269 +DEAL:0:2d::270 +DEAL:0:2d::183 +DEAL:0:2d::184 +DEAL:0:2d::210 +DEAL:0:2d::211 +DEAL:0:2d::185 +DEAL:0:2d::186 +DEAL:0:2d::212 +DEAL:0:2d::213 +DEAL:0:2d::239 +DEAL:0:2d::240 +DEAL:0:2d::271 +DEAL:0:2d::272 +DEAL:0:2d::241 +DEAL:0:2d::242 +DEAL:0:2d::273 +DEAL:0:2d::274 +DEAL:0:2d::99 +DEAL:0:2d::118 +DEAL:0:2d::119 +DEAL:0:2d::120 +DEAL:0:2d::139 +DEAL:0:2d::162 +DEAL:0:2d::140 +DEAL:0:2d::163 +DEAL:0:2d::141 +DEAL:0:2d::142 +DEAL:0:2d::164 +DEAL:0:2d::165 +DEAL:0:2d::143 +DEAL:0:2d::166 +DEAL:0:2d::167 +DEAL:0:2d::168 +DEAL:0:2d::187 +DEAL:0:2d::214 +DEAL:0:2d::188 +DEAL:0:2d::215 +DEAL:0:2d::243 +DEAL:0:2d::275 +DEAL:0:2d::244 +DEAL:0:2d::276 +DEAL:0:2d::189 +DEAL:0:2d::216 +DEAL:0:2d::190 +DEAL:0:2d::217 +DEAL:0:2d::245 +DEAL:0:2d::277 +DEAL:0:2d::246 +DEAL:0:2d::278 +DEAL:0:2d::191 +DEAL:0:2d::192 +DEAL:0:2d::218 +DEAL:0:2d::219 +DEAL:0:2d::193 +DEAL:0:2d::194 +DEAL:0:2d::220 +DEAL:0:2d::221 +DEAL:0:2d::247 +DEAL:0:2d::248 +DEAL:0:2d::279 +DEAL:0:2d::280 +DEAL:0:2d::249 +DEAL:0:2d::250 +DEAL:0:2d::281 +DEAL:0:2d::282 +DEAL:0:2d::195 +DEAL:0:2d::222 +DEAL:0:2d::223 +DEAL:0:2d::224 +DEAL:0:2d::251 +DEAL:0:2d::283 +DEAL:0:2d::252 +DEAL:0:2d::284 +DEAL:0:2d::253 +DEAL:0:2d::254 +DEAL:0:2d::285 +DEAL:0:2d::286 +DEAL:0:2d::255 +DEAL:0:2d::287 +DEAL:0:2d::288 +DEAL:0:2d::258 +DEAL:0:2d::On level: 5 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::18 +DEAL:0:2d::12 +DEAL:0:2d::19 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::20 +DEAL:0:2d::21 +DEAL:0:2d::15 +DEAL:0:2d::22 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::25 +DEAL:0:2d::27 +DEAL:0:2d::36 +DEAL:0:2d::38 +DEAL:0:2d::28 +DEAL:0:2d::39 +DEAL:0:2d::49 +DEAL:0:2d::51 +DEAL:0:2d::64 +DEAL:0:2d::67 +DEAL:0:2d::52 +DEAL:0:2d::68 +DEAL:0:2d::29 +DEAL:0:2d::40 +DEAL:0:2d::30 +DEAL:0:2d::41 +DEAL:0:2d::53 +DEAL:0:2d::69 +DEAL:0:2d::54 +DEAL:0:2d::70 +DEAL:0:2d::26 +DEAL:0:2d::31 +DEAL:0:2d::32 +DEAL:0:2d::37 +DEAL:0:2d::42 +DEAL:0:2d::43 +DEAL:0:2d::33 +DEAL:0:2d::34 +DEAL:0:2d::44 +DEAL:0:2d::45 +DEAL:0:2d::50 +DEAL:0:2d::55 +DEAL:0:2d::56 +DEAL:0:2d::65 +DEAL:0:2d::71 +DEAL:0:2d::72 +DEAL:0:2d::57 +DEAL:0:2d::58 +DEAL:0:2d::73 +DEAL:0:2d::74 +DEAL:0:2d::35 +DEAL:0:2d::46 +DEAL:0:2d::47 +DEAL:0:2d::48 +DEAL:0:2d::59 +DEAL:0:2d::75 +DEAL:0:2d::60 +DEAL:0:2d::76 +DEAL:0:2d::61 +DEAL:0:2d::62 +DEAL:0:2d::77 +DEAL:0:2d::78 +DEAL:0:2d::63 +DEAL:0:2d::79 +DEAL:0:2d::80 +DEAL:0:2d::66 +DEAL:0:2d::On active cells: DEAL:0:2d::0 DEAL:0:2d::1 DEAL:0:2d::2 @@ -344,6 +840,170 @@ DEAL:0:2d::206 DEAL:0:2d::231 DEAL:0:2d::236 DEAL:0:2d::237 +DEAL:0:3d::On level: 0 +DEAL:0:3d::0 +DEAL:0:3d::1 +DEAL:0:3d::2 +DEAL:0:3d::3 +DEAL:0:3d::4 +DEAL:0:3d::5 +DEAL:0:3d::6 +DEAL:0:3d::7 +DEAL:0:3d::On level: 1 +DEAL:0:3d::0 +DEAL:0:3d::1 +DEAL:0:3d::2 +DEAL:0:3d::4 +DEAL:0:3d::3 +DEAL:0:3d::5 +DEAL:0:3d::6 +DEAL:0:3d::7 +DEAL:0:3d::8 +DEAL:0:3d::15 +DEAL:0:3d::16 +DEAL:0:3d::24 +DEAL:0:3d::9 +DEAL:0:3d::17 +DEAL:0:3d::18 +DEAL:0:3d::25 +DEAL:0:3d::10 +DEAL:0:3d::19 +DEAL:0:3d::11 +DEAL:0:3d::20 +DEAL:0:3d::21 +DEAL:0:3d::26 +DEAL:0:3d::12 +DEAL:0:3d::22 +DEAL:0:3d::13 +DEAL:0:3d::23 +DEAL:0:3d::14 +DEAL:0:3d::On level: 2 +DEAL:0:3d::0 +DEAL:0:3d::1 +DEAL:0:3d::2 +DEAL:0:3d::4 +DEAL:0:3d::3 +DEAL:0:3d::5 +DEAL:0:3d::6 +DEAL:0:3d::7 +DEAL:0:3d::8 +DEAL:0:3d::11 +DEAL:0:3d::12 +DEAL:0:3d::20 +DEAL:0:3d::9 +DEAL:0:3d::13 +DEAL:0:3d::14 +DEAL:0:3d::21 +DEAL:0:3d::15 +DEAL:0:3d::22 +DEAL:0:3d::10 +DEAL:0:3d::16 +DEAL:0:3d::17 +DEAL:0:3d::23 +DEAL:0:3d::18 +DEAL:0:3d::24 +DEAL:0:3d::19 +DEAL:0:3d::25 +DEAL:0:3d::26 +DEAL:0:3d::27 +DEAL:0:3d::30 +DEAL:0:3d::31 +DEAL:0:3d::45 +DEAL:0:3d::64 +DEAL:0:3d::71 +DEAL:0:3d::72 +DEAL:0:3d::98 +DEAL:0:3d::32 +DEAL:0:3d::46 +DEAL:0:3d::73 +DEAL:0:3d::99 +DEAL:0:3d::33 +DEAL:0:3d::47 +DEAL:0:3d::74 +DEAL:0:3d::100 +DEAL:0:3d::48 +DEAL:0:3d::101 +DEAL:0:3d::28 +DEAL:0:3d::34 +DEAL:0:3d::35 +DEAL:0:3d::49 +DEAL:0:3d::36 +DEAL:0:3d::50 +DEAL:0:3d::65 +DEAL:0:3d::75 +DEAL:0:3d::76 +DEAL:0:3d::102 +DEAL:0:3d::77 +DEAL:0:3d::103 +DEAL:0:3d::37 +DEAL:0:3d::51 +DEAL:0:3d::52 +DEAL:0:3d::78 +DEAL:0:3d::104 +DEAL:0:3d::105 +DEAL:0:3d::38 +DEAL:0:3d::53 +DEAL:0:3d::79 +DEAL:0:3d::106 +DEAL:0:3d::80 +DEAL:0:3d::107 +DEAL:0:3d::66 +DEAL:0:3d::81 +DEAL:0:3d::54 +DEAL:0:3d::108 +DEAL:0:3d::109 +DEAL:0:3d::82 +DEAL:0:3d::29 +DEAL:0:3d::39 +DEAL:0:3d::40 +DEAL:0:3d::55 +DEAL:0:3d::41 +DEAL:0:3d::56 +DEAL:0:3d::42 +DEAL:0:3d::57 +DEAL:0:3d::58 +DEAL:0:3d::67 +DEAL:0:3d::83 +DEAL:0:3d::84 +DEAL:0:3d::110 +DEAL:0:3d::85 +DEAL:0:3d::111 +DEAL:0:3d::86 +DEAL:0:3d::112 +DEAL:0:3d::113 +DEAL:0:3d::43 +DEAL:0:3d::59 +DEAL:0:3d::87 +DEAL:0:3d::114 +DEAL:0:3d::60 +DEAL:0:3d::115 +DEAL:0:3d::88 +DEAL:0:3d::116 +DEAL:0:3d::68 +DEAL:0:3d::89 +DEAL:0:3d::117 +DEAL:0:3d::90 +DEAL:0:3d::44 +DEAL:0:3d::61 +DEAL:0:3d::62 +DEAL:0:3d::91 +DEAL:0:3d::118 +DEAL:0:3d::119 +DEAL:0:3d::92 +DEAL:0:3d::120 +DEAL:0:3d::121 +DEAL:0:3d::69 +DEAL:0:3d::93 +DEAL:0:3d::94 +DEAL:0:3d::63 +DEAL:0:3d::122 +DEAL:0:3d::123 +DEAL:0:3d::95 +DEAL:0:3d::124 +DEAL:0:3d::96 +DEAL:0:3d::97 +DEAL:0:3d::70 +DEAL:0:3d::On active cells: DEAL:0:3d::0 DEAL:0:3d::1 DEAL:0:3d::2 diff --git a/tests/mpi/renumber_cuthill_mckee.mpirun=4.with_p4est=true.output b/tests/mpi/renumber_cuthill_mckee.mpirun=4.with_p4est=true.output index 77331db604..87ac614b50 100644 --- a/tests/mpi/renumber_cuthill_mckee.mpirun=4.with_p4est=true.output +++ b/tests/mpi/renumber_cuthill_mckee.mpirun=4.with_p4est=true.output @@ -1,4 +1,500 @@ +DEAL:0:2d::On level: 0 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::On level: 1 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::5 +DEAL:0:2d::6 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::On level: 2 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::7 +DEAL:0:2d::5 +DEAL:0:2d::8 +DEAL:0:2d::6 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::10 +DEAL:0:2d::12 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::15 +DEAL:0:2d::17 +DEAL:0:2d::19 +DEAL:0:2d::16 +DEAL:0:2d::18 +DEAL:0:2d::20 +DEAL:0:2d::21 +DEAL:0:2d::22 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::On level: 3 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::19 +DEAL:0:2d::12 +DEAL:0:2d::20 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::21 +DEAL:0:2d::22 +DEAL:0:2d::15 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::18 +DEAL:0:2d::25 +DEAL:0:2d::26 +DEAL:0:2d::27 +DEAL:0:2d::28 +DEAL:0:2d::29 +DEAL:0:2d::31 +DEAL:0:2d::30 +DEAL:0:2d::32 +DEAL:0:2d::34 +DEAL:0:2d::35 +DEAL:0:2d::33 +DEAL:0:2d::36 +DEAL:0:2d::37 +DEAL:0:2d::39 +DEAL:0:2d::41 +DEAL:0:2d::43 +DEAL:0:2d::40 +DEAL:0:2d::38 +DEAL:0:2d::44 +DEAL:0:2d::42 +DEAL:0:2d::45 +DEAL:0:2d::46 +DEAL:0:2d::49 +DEAL:0:2d::47 +DEAL:0:2d::48 +DEAL:0:2d::51 +DEAL:0:2d::55 +DEAL:0:2d::61 +DEAL:0:2d::59 +DEAL:0:2d::63 +DEAL:0:2d::50 +DEAL:0:2d::52 +DEAL:0:2d::53 +DEAL:0:2d::54 +DEAL:0:2d::56 +DEAL:0:2d::57 +DEAL:0:2d::60 +DEAL:0:2d::64 +DEAL:0:2d::58 +DEAL:0:2d::62 +DEAL:0:2d::65 +DEAL:0:2d::66 +DEAL:0:2d::67 +DEAL:0:2d::68 +DEAL:0:2d::69 +DEAL:0:2d::74 +DEAL:0:2d::71 +DEAL:0:2d::77 +DEAL:0:2d::70 +DEAL:0:2d::72 +DEAL:0:2d::75 +DEAL:0:2d::78 +DEAL:0:2d::73 +DEAL:0:2d::79 +DEAL:0:2d::80 +DEAL:0:2d::76 +DEAL:0:2d::On level: 4 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::18 +DEAL:0:2d::12 +DEAL:0:2d::19 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::20 +DEAL:0:2d::21 +DEAL:0:2d::15 +DEAL:0:2d::22 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::25 +DEAL:0:2d::27 +DEAL:0:2d::36 +DEAL:0:2d::38 +DEAL:0:2d::28 +DEAL:0:2d::39 +DEAL:0:2d::49 +DEAL:0:2d::51 +DEAL:0:2d::64 +DEAL:0:2d::67 +DEAL:0:2d::52 +DEAL:0:2d::68 +DEAL:0:2d::29 +DEAL:0:2d::40 +DEAL:0:2d::30 +DEAL:0:2d::41 +DEAL:0:2d::53 +DEAL:0:2d::69 +DEAL:0:2d::54 +DEAL:0:2d::70 +DEAL:0:2d::26 +DEAL:0:2d::31 +DEAL:0:2d::32 +DEAL:0:2d::37 +DEAL:0:2d::42 +DEAL:0:2d::43 +DEAL:0:2d::33 +DEAL:0:2d::34 +DEAL:0:2d::44 +DEAL:0:2d::45 +DEAL:0:2d::50 +DEAL:0:2d::55 +DEAL:0:2d::56 +DEAL:0:2d::65 +DEAL:0:2d::71 +DEAL:0:2d::72 +DEAL:0:2d::57 +DEAL:0:2d::58 +DEAL:0:2d::73 +DEAL:0:2d::74 +DEAL:0:2d::35 +DEAL:0:2d::46 +DEAL:0:2d::47 +DEAL:0:2d::48 +DEAL:0:2d::59 +DEAL:0:2d::75 +DEAL:0:2d::60 +DEAL:0:2d::76 +DEAL:0:2d::61 +DEAL:0:2d::62 +DEAL:0:2d::77 +DEAL:0:2d::78 +DEAL:0:2d::63 +DEAL:0:2d::79 +DEAL:0:2d::80 +DEAL:0:2d::66 +DEAL:0:2d::81 +DEAL:0:2d::82 +DEAL:0:2d::83 +DEAL:0:2d::84 +DEAL:0:2d::85 +DEAL:0:2d::87 +DEAL:0:2d::86 +DEAL:0:2d::88 +DEAL:0:2d::90 +DEAL:0:2d::92 +DEAL:0:2d::89 +DEAL:0:2d::93 +DEAL:0:2d::91 +DEAL:0:2d::94 +DEAL:0:2d::97 +DEAL:0:2d::99 +DEAL:0:2d::95 +DEAL:0:2d::96 +DEAL:0:2d::100 +DEAL:0:2d::101 +DEAL:0:2d::98 +DEAL:0:2d::102 +DEAL:0:2d::106 +DEAL:0:2d::108 +DEAL:0:2d::103 +DEAL:0:2d::109 +DEAL:0:2d::117 +DEAL:0:2d::119 +DEAL:0:2d::130 +DEAL:0:2d::131 +DEAL:0:2d::120 +DEAL:0:2d::132 +DEAL:0:2d::104 +DEAL:0:2d::110 +DEAL:0:2d::105 +DEAL:0:2d::111 +DEAL:0:2d::121 +DEAL:0:2d::133 +DEAL:0:2d::122 +DEAL:0:2d::134 +DEAL:0:2d::107 +DEAL:0:2d::112 +DEAL:0:2d::118 +DEAL:0:2d::123 +DEAL:0:2d::113 +DEAL:0:2d::114 +DEAL:0:2d::124 +DEAL:0:2d::125 +DEAL:0:2d::135 +DEAL:0:2d::139 +DEAL:0:2d::145 +DEAL:0:2d::147 +DEAL:0:2d::140 +DEAL:0:2d::141 +DEAL:0:2d::148 +DEAL:0:2d::149 +DEAL:0:2d::115 +DEAL:0:2d::116 +DEAL:0:2d::126 +DEAL:0:2d::127 +DEAL:0:2d::128 +DEAL:0:2d::136 +DEAL:0:2d::129 +DEAL:0:2d::137 +DEAL:0:2d::142 +DEAL:0:2d::143 +DEAL:0:2d::150 +DEAL:0:2d::151 +DEAL:0:2d::144 +DEAL:0:2d::138 +DEAL:0:2d::152 +DEAL:0:2d::146 +DEAL:0:2d::153 +DEAL:0:2d::154 +DEAL:0:2d::157 +DEAL:0:2d::155 +DEAL:0:2d::156 +DEAL:0:2d::159 +DEAL:0:2d::162 +DEAL:0:2d::169 +DEAL:0:2d::164 +DEAL:0:2d::171 +DEAL:0:2d::158 +DEAL:0:2d::160 +DEAL:0:2d::161 +DEAL:0:2d::163 +DEAL:0:2d::165 +DEAL:0:2d::166 +DEAL:0:2d::167 +DEAL:0:2d::172 +DEAL:0:2d::168 +DEAL:0:2d::173 +DEAL:0:2d::178 +DEAL:0:2d::189 +DEAL:0:2d::180 +DEAL:0:2d::191 +DEAL:0:2d::203 +DEAL:0:2d::217 +DEAL:0:2d::211 +DEAL:0:2d::219 +DEAL:0:2d::181 +DEAL:0:2d::192 +DEAL:0:2d::182 +DEAL:0:2d::193 +DEAL:0:2d::212 +DEAL:0:2d::220 +DEAL:0:2d::213 +DEAL:0:2d::221 +DEAL:0:2d::170 +DEAL:0:2d::174 +DEAL:0:2d::175 +DEAL:0:2d::179 +DEAL:0:2d::183 +DEAL:0:2d::184 +DEAL:0:2d::176 +DEAL:0:2d::177 +DEAL:0:2d::185 +DEAL:0:2d::186 +DEAL:0:2d::190 +DEAL:0:2d::194 +DEAL:0:2d::195 +DEAL:0:2d::202 +DEAL:0:2d::204 +DEAL:0:2d::205 +DEAL:0:2d::196 +DEAL:0:2d::197 +DEAL:0:2d::206 +DEAL:0:2d::207 +DEAL:0:2d::187 +DEAL:0:2d::198 +DEAL:0:2d::188 +DEAL:0:2d::199 +DEAL:0:2d::214 +DEAL:0:2d::222 +DEAL:0:2d::215 +DEAL:0:2d::223 +DEAL:0:2d::200 +DEAL:0:2d::201 +DEAL:0:2d::208 +DEAL:0:2d::209 +DEAL:0:2d::216 +DEAL:0:2d::224 +DEAL:0:2d::210 +DEAL:0:2d::218 +DEAL:0:2d::225 +DEAL:0:2d::226 +DEAL:0:2d::227 +DEAL:0:2d::228 +DEAL:0:2d::229 +DEAL:0:2d::234 +DEAL:0:2d::231 +DEAL:0:2d::236 +DEAL:0:2d::230 +DEAL:0:2d::232 +DEAL:0:2d::235 +DEAL:0:2d::237 +DEAL:0:2d::233 +DEAL:0:2d::238 +DEAL:0:2d::239 +DEAL:0:2d::240 +DEAL:0:2d::241 +DEAL:0:2d::250 +DEAL:0:2d::243 +DEAL:0:2d::252 +DEAL:0:2d::261 +DEAL:0:2d::274 +DEAL:0:2d::263 +DEAL:0:2d::277 +DEAL:0:2d::244 +DEAL:0:2d::253 +DEAL:0:2d::245 +DEAL:0:2d::254 +DEAL:0:2d::264 +DEAL:0:2d::278 +DEAL:0:2d::265 +DEAL:0:2d::279 +DEAL:0:2d::242 +DEAL:0:2d::246 +DEAL:0:2d::251 +DEAL:0:2d::255 +DEAL:0:2d::247 +DEAL:0:2d::248 +DEAL:0:2d::256 +DEAL:0:2d::257 +DEAL:0:2d::262 +DEAL:0:2d::266 +DEAL:0:2d::275 +DEAL:0:2d::280 +DEAL:0:2d::267 +DEAL:0:2d::268 +DEAL:0:2d::281 +DEAL:0:2d::282 +DEAL:0:2d::249 +DEAL:0:2d::258 +DEAL:0:2d::259 +DEAL:0:2d::260 +DEAL:0:2d::269 +DEAL:0:2d::283 +DEAL:0:2d::270 +DEAL:0:2d::284 +DEAL:0:2d::271 +DEAL:0:2d::272 +DEAL:0:2d::285 +DEAL:0:2d::286 +DEAL:0:2d::273 +DEAL:0:2d::287 +DEAL:0:2d::288 +DEAL:0:2d::276 +DEAL:0:2d::On level: 5 +DEAL:0:2d::0 +DEAL:0:2d::1 +DEAL:0:2d::2 +DEAL:0:2d::3 +DEAL:0:2d::4 +DEAL:0:2d::6 +DEAL:0:2d::5 +DEAL:0:2d::7 +DEAL:0:2d::8 +DEAL:0:2d::9 +DEAL:0:2d::11 +DEAL:0:2d::16 +DEAL:0:2d::19 +DEAL:0:2d::12 +DEAL:0:2d::20 +DEAL:0:2d::10 +DEAL:0:2d::13 +DEAL:0:2d::14 +DEAL:0:2d::17 +DEAL:0:2d::21 +DEAL:0:2d::22 +DEAL:0:2d::15 +DEAL:0:2d::23 +DEAL:0:2d::24 +DEAL:0:2d::18 +DEAL:0:2d::25 +DEAL:0:2d::26 +DEAL:0:2d::27 +DEAL:0:2d::28 +DEAL:0:2d::29 +DEAL:0:2d::31 +DEAL:0:2d::30 +DEAL:0:2d::32 +DEAL:0:2d::34 +DEAL:0:2d::35 +DEAL:0:2d::33 +DEAL:0:2d::36 +DEAL:0:2d::37 +DEAL:0:2d::39 +DEAL:0:2d::41 +DEAL:0:2d::43 +DEAL:0:2d::40 +DEAL:0:2d::38 +DEAL:0:2d::44 +DEAL:0:2d::42 +DEAL:0:2d::45 +DEAL:0:2d::46 +DEAL:0:2d::49 +DEAL:0:2d::47 +DEAL:0:2d::48 +DEAL:0:2d::51 +DEAL:0:2d::55 +DEAL:0:2d::61 +DEAL:0:2d::59 +DEAL:0:2d::63 +DEAL:0:2d::50 +DEAL:0:2d::52 +DEAL:0:2d::53 +DEAL:0:2d::54 +DEAL:0:2d::56 +DEAL:0:2d::57 +DEAL:0:2d::60 +DEAL:0:2d::64 +DEAL:0:2d::58 +DEAL:0:2d::62 +DEAL:0:2d::65 +DEAL:0:2d::66 +DEAL:0:2d::67 +DEAL:0:2d::68 +DEAL:0:2d::69 +DEAL:0:2d::74 +DEAL:0:2d::71 +DEAL:0:2d::77 +DEAL:0:2d::70 +DEAL:0:2d::72 +DEAL:0:2d::75 +DEAL:0:2d::78 +DEAL:0:2d::73 +DEAL:0:2d::79 +DEAL:0:2d::80 +DEAL:0:2d::76 +DEAL:0:2d::On active cells: DEAL:0:2d::0 DEAL:0:2d::1 DEAL:0:2d::2 @@ -344,6 +840,170 @@ DEAL:0:2d::338 DEAL:0:2d::337 DEAL:0:2d::333 DEAL:0:2d::334 +DEAL:0:3d::On level: 0 +DEAL:0:3d::0 +DEAL:0:3d::1 +DEAL:0:3d::2 +DEAL:0:3d::3 +DEAL:0:3d::4 +DEAL:0:3d::5 +DEAL:0:3d::6 +DEAL:0:3d::7 +DEAL:0:3d::On level: 1 +DEAL:0:3d::0 +DEAL:0:3d::4 +DEAL:0:3d::1 +DEAL:0:3d::5 +DEAL:0:3d::2 +DEAL:0:3d::6 +DEAL:0:3d::3 +DEAL:0:3d::7 +DEAL:0:3d::8 +DEAL:0:3d::9 +DEAL:0:3d::10 +DEAL:0:3d::11 +DEAL:0:3d::12 +DEAL:0:3d::14 +DEAL:0:3d::13 +DEAL:0:3d::15 +DEAL:0:3d::16 +DEAL:0:3d::17 +DEAL:0:3d::18 +DEAL:0:3d::20 +DEAL:0:3d::19 +DEAL:0:3d::21 +DEAL:0:3d::22 +DEAL:0:3d::23 +DEAL:0:3d::24 +DEAL:0:3d::25 +DEAL:0:3d::26 +DEAL:0:3d::On level: 2 +DEAL:0:3d::0 +DEAL:0:3d::1 +DEAL:0:3d::2 +DEAL:0:3d::4 +DEAL:0:3d::3 +DEAL:0:3d::5 +DEAL:0:3d::6 +DEAL:0:3d::7 +DEAL:0:3d::11 +DEAL:0:3d::20 +DEAL:0:3d::21 +DEAL:0:3d::26 +DEAL:0:3d::8 +DEAL:0:3d::12 +DEAL:0:3d::13 +DEAL:0:3d::22 +DEAL:0:3d::14 +DEAL:0:3d::23 +DEAL:0:3d::9 +DEAL:0:3d::15 +DEAL:0:3d::16 +DEAL:0:3d::24 +DEAL:0:3d::17 +DEAL:0:3d::25 +DEAL:0:3d::10 +DEAL:0:3d::18 +DEAL:0:3d::19 +DEAL:0:3d::27 +DEAL:0:3d::31 +DEAL:0:3d::32 +DEAL:0:3d::35 +DEAL:0:3d::36 +DEAL:0:3d::40 +DEAL:0:3d::41 +DEAL:0:3d::44 +DEAL:0:3d::28 +DEAL:0:3d::33 +DEAL:0:3d::37 +DEAL:0:3d::42 +DEAL:0:3d::29 +DEAL:0:3d::34 +DEAL:0:3d::38 +DEAL:0:3d::43 +DEAL:0:3d::30 +DEAL:0:3d::39 +DEAL:0:3d::45 +DEAL:0:3d::47 +DEAL:0:3d::48 +DEAL:0:3d::51 +DEAL:0:3d::55 +DEAL:0:3d::61 +DEAL:0:3d::46 +DEAL:0:3d::49 +DEAL:0:3d::50 +DEAL:0:3d::52 +DEAL:0:3d::56 +DEAL:0:3d::62 +DEAL:0:3d::53 +DEAL:0:3d::57 +DEAL:0:3d::58 +DEAL:0:3d::54 +DEAL:0:3d::59 +DEAL:0:3d::60 +DEAL:0:3d::63 +DEAL:0:3d::67 +DEAL:0:3d::69 +DEAL:0:3d::73 +DEAL:0:3d::64 +DEAL:0:3d::68 +DEAL:0:3d::70 +DEAL:0:3d::74 +DEAL:0:3d::65 +DEAL:0:3d::71 +DEAL:0:3d::66 +DEAL:0:3d::72 +DEAL:0:3d::75 +DEAL:0:3d::77 +DEAL:0:3d::78 +DEAL:0:3d::81 +DEAL:0:3d::85 +DEAL:0:3d::91 +DEAL:0:3d::83 +DEAL:0:3d::86 +DEAL:0:3d::87 +DEAL:0:3d::76 +DEAL:0:3d::79 +DEAL:0:3d::80 +DEAL:0:3d::82 +DEAL:0:3d::88 +DEAL:0:3d::92 +DEAL:0:3d::84 +DEAL:0:3d::89 +DEAL:0:3d::90 +DEAL:0:3d::93 +DEAL:0:3d::97 +DEAL:0:3d::99 +DEAL:0:3d::103 +DEAL:0:3d::94 +DEAL:0:3d::100 +DEAL:0:3d::95 +DEAL:0:3d::98 +DEAL:0:3d::101 +DEAL:0:3d::104 +DEAL:0:3d::96 +DEAL:0:3d::102 +DEAL:0:3d::105 +DEAL:0:3d::109 +DEAL:0:3d::113 +DEAL:0:3d::106 +DEAL:0:3d::110 +DEAL:0:3d::114 +DEAL:0:3d::107 +DEAL:0:3d::111 +DEAL:0:3d::115 +DEAL:0:3d::108 +DEAL:0:3d::112 +DEAL:0:3d::116 +DEAL:0:3d::117 +DEAL:0:3d::121 +DEAL:0:3d::118 +DEAL:0:3d::122 +DEAL:0:3d::119 +DEAL:0:3d::123 +DEAL:0:3d::120 +DEAL:0:3d::124 +DEAL:0:3d::On active cells: DEAL:0:3d::0 DEAL:0:3d::1 DEAL:0:3d::2 -- 2.39.5