From: Peter Munch Date: Tue, 22 Oct 2019 10:04:18 +0000 (+0200) Subject: Fix bug in get_face_iterator X-Git-Tag: v9.2.0-rc1~941^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F8944%2Fhead;p=dealii.git Fix bug in get_face_iterator --- diff --git a/include/deal.II/matrix_free/matrix_free.templates.h b/include/deal.II/matrix_free/matrix_free.templates.h index 4c552eb505..28848a2aac 100644 --- a/include/deal.II/matrix_free/matrix_free.templates.h +++ b/include/deal.II/matrix_free/matrix_free.templates.h @@ -218,7 +218,8 @@ MatrixFree::get_face_iterator( AssertIndexRange(fe_component, dof_handlers.n_dof_handlers); if (interior) { - AssertIndexRange(face_batch_number, n_ghost_inner_face_batches()); + AssertIndexRange(face_batch_number, + n_inner_face_batches() + n_boundary_face_batches()); } else { diff --git a/tests/matrix_free/iterators.cc b/tests/matrix_free/iterators.cc new file mode 100644 index 0000000000..116d124230 --- /dev/null +++ b/tests/matrix_free/iterators.cc @@ -0,0 +1,194 @@ +// --------------------------------------------------------------------- +// +// 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. +// +// --------------------------------------------------------------------- + + + +// tests matrix-free get_cell_iterator and get_face_iterator for +// a globally refined mesh + + +#include +#include + +#include + +#include +#include + +#include + +#include + +#include + +#include + +#include "../tests.h" + +using namespace dealii; + +template > +class Test +{ +public: + using VectorType = LinearAlgebra::distributed::Vector; + + void + run(unsigned int fe_degree) + { + Triangulation tria( + Triangulation::limit_level_difference_at_vertices); + GridGenerator::hyper_cube(tria); + + tria.refine_global(2); + + FE_DGQ fe(fe_degree); + DoFHandler dof_handler(tria); + dof_handler.distribute_dofs(fe); + dof_handler.distribute_mg_dofs(); + + MappingQ mapping(1); + + QGauss<1> quad(fe_degree + 1); + + + + for (unsigned int level = numbers::invalid_unsigned_int; + level < tria.n_global_levels() || + level == numbers::invalid_unsigned_int; + level++) + { + if (level == numbers::invalid_unsigned_int) + deallog << "Active level (with max_level=" + << tria.n_global_levels() - 1 << "):" << std::endl; + else + deallog << "Multigrid level " << level << ":" << std::endl; + + AffineConstraints constraint; + + typename MatrixFree::AdditionalData + additional_data; + additional_data.mapping_update_flags = update_values; + additional_data.mapping_update_flags_inner_faces = update_values; + additional_data.mapping_update_flags_boundary_faces = update_values; + additional_data.mg_level = level; + + MatrixFree matrix_free; + matrix_free.reinit( + mapping, dof_handler, constraint, quad, additional_data); + + VectorType src, dst; + + matrix_free.initialize_dof_vector(src); + matrix_free.initialize_dof_vector(dst); + + matrix_free.loop(&Test::cell_operation, + &Test::face_operation, + &Test::boundary_operation, + this, + dst, + src); + + for (const auto cell : cells) + deallog << "cell: " << cell.to_string() << std::endl; + + for (const auto face : faces) + deallog << "face: " << face.first.to_string() << " " + << face.second.to_string() << std::endl; + + for (const auto boundary : boundaries) + deallog << "boundary: " << boundary.to_string() << std::endl; + + cells.clear(); + faces.clear(); + boundaries.clear(); + + deallog << std::endl; + } + } + +private: + void + cell_operation(const MatrixFree &data, + VectorType &, + const VectorType &, + const std::pair &pair) const + { + for (auto cell = pair.first; cell < pair.second; cell++) + for (auto lane = 0u; lane < data.n_active_entries_per_cell_batch(cell); + lane++) + cells.emplace(data.get_cell_iterator(cell, lane)->id()); + } + + void + face_operation(const MatrixFree &data, + VectorType &, + const VectorType &, + const std::pair &pair) const + { + for (auto face = pair.first; face < pair.second; face++) + for (auto lane = 0u; lane < data.n_active_entries_per_face_batch(face); + lane++) + { + const auto face_0 = + data.get_face_iterator(face, lane, true).first->id(); + const auto face_1 = + data.get_face_iterator(face, lane, false).first->id(); + if (face_0 < face_1) + faces.emplace(face_0, face_1); + else + faces.emplace(face_1, face_0); + } + } + + + void + boundary_operation(const MatrixFree &data, + VectorType &, + const VectorType &, + const std::pair &pair) const + { + for (auto face = pair.first; face < pair.second; face++) + for (auto lane = 0u; lane < data.n_active_entries_per_face_batch(face); + lane++) + boundaries.emplace( + data.get_face_iterator(face, lane, true).first->id()); + } + + mutable std::set cells; + mutable std::set> faces; + mutable std::set boundaries; +}; + + +int +main() +{ + initlog(); + { + deallog.push("2d"); + Test<2> runner; + runner.run(1); + deallog.pop(); + } + { + deallog.push("3d"); + Test<3> runner; + runner.run(1); + deallog.pop(); + } +} diff --git a/tests/matrix_free/iterators.output b/tests/matrix_free/iterators.output new file mode 100644 index 0000000000..c3d312835f --- /dev/null +++ b/tests/matrix_free/iterators.output @@ -0,0 +1,693 @@ + +DEAL:2d::Active level (with max_level=2): +DEAL:2d::cell: 0_2:00 +DEAL:2d::cell: 0_2:01 +DEAL:2d::cell: 0_2:02 +DEAL:2d::cell: 0_2:03 +DEAL:2d::cell: 0_2:10 +DEAL:2d::cell: 0_2:11 +DEAL:2d::cell: 0_2:12 +DEAL:2d::cell: 0_2:13 +DEAL:2d::cell: 0_2:20 +DEAL:2d::cell: 0_2:21 +DEAL:2d::cell: 0_2:22 +DEAL:2d::cell: 0_2:23 +DEAL:2d::cell: 0_2:30 +DEAL:2d::cell: 0_2:31 +DEAL:2d::cell: 0_2:32 +DEAL:2d::cell: 0_2:33 +DEAL:2d::face: 0_2:00 0_2:01 +DEAL:2d::face: 0_2:00 0_2:02 +DEAL:2d::face: 0_2:01 0_2:03 +DEAL:2d::face: 0_2:01 0_2:10 +DEAL:2d::face: 0_2:02 0_2:03 +DEAL:2d::face: 0_2:02 0_2:20 +DEAL:2d::face: 0_2:03 0_2:12 +DEAL:2d::face: 0_2:03 0_2:21 +DEAL:2d::face: 0_2:10 0_2:11 +DEAL:2d::face: 0_2:10 0_2:12 +DEAL:2d::face: 0_2:11 0_2:13 +DEAL:2d::face: 0_2:12 0_2:13 +DEAL:2d::face: 0_2:12 0_2:30 +DEAL:2d::face: 0_2:13 0_2:31 +DEAL:2d::face: 0_2:20 0_2:21 +DEAL:2d::face: 0_2:20 0_2:22 +DEAL:2d::face: 0_2:21 0_2:23 +DEAL:2d::face: 0_2:21 0_2:30 +DEAL:2d::face: 0_2:22 0_2:23 +DEAL:2d::face: 0_2:23 0_2:32 +DEAL:2d::face: 0_2:30 0_2:31 +DEAL:2d::face: 0_2:30 0_2:32 +DEAL:2d::face: 0_2:31 0_2:33 +DEAL:2d::face: 0_2:32 0_2:33 +DEAL:2d::boundary: 0_2:00 +DEAL:2d::boundary: 0_2:01 +DEAL:2d::boundary: 0_2:02 +DEAL:2d::boundary: 0_2:10 +DEAL:2d::boundary: 0_2:11 +DEAL:2d::boundary: 0_2:13 +DEAL:2d::boundary: 0_2:20 +DEAL:2d::boundary: 0_2:22 +DEAL:2d::boundary: 0_2:23 +DEAL:2d::boundary: 0_2:31 +DEAL:2d::boundary: 0_2:32 +DEAL:2d::boundary: 0_2:33 +DEAL:2d:: +DEAL:2d::Multigrid level 0: +DEAL:2d::cell: 0_0: +DEAL:2d::boundary: 0_0: +DEAL:2d:: +DEAL:2d::Multigrid level 1: +DEAL:2d::cell: 0_1:0 +DEAL:2d::cell: 0_1:1 +DEAL:2d::cell: 0_1:2 +DEAL:2d::cell: 0_1:3 +DEAL:2d::face: 0_1:0 0_1:1 +DEAL:2d::face: 0_1:0 0_1:2 +DEAL:2d::face: 0_1:1 0_1:3 +DEAL:2d::face: 0_1:2 0_1:3 +DEAL:2d::boundary: 0_1:0 +DEAL:2d::boundary: 0_1:1 +DEAL:2d::boundary: 0_1:2 +DEAL:2d::boundary: 0_1:3 +DEAL:2d:: +DEAL:2d::Multigrid level 2: +DEAL:2d::cell: 0_2:00 +DEAL:2d::cell: 0_2:01 +DEAL:2d::cell: 0_2:02 +DEAL:2d::cell: 0_2:03 +DEAL:2d::cell: 0_2:10 +DEAL:2d::cell: 0_2:11 +DEAL:2d::cell: 0_2:12 +DEAL:2d::cell: 0_2:13 +DEAL:2d::cell: 0_2:20 +DEAL:2d::cell: 0_2:21 +DEAL:2d::cell: 0_2:22 +DEAL:2d::cell: 0_2:23 +DEAL:2d::cell: 0_2:30 +DEAL:2d::cell: 0_2:31 +DEAL:2d::cell: 0_2:32 +DEAL:2d::cell: 0_2:33 +DEAL:2d::face: 0_2:00 0_2:01 +DEAL:2d::face: 0_2:00 0_2:02 +DEAL:2d::face: 0_2:01 0_2:03 +DEAL:2d::face: 0_2:01 0_2:10 +DEAL:2d::face: 0_2:02 0_2:03 +DEAL:2d::face: 0_2:02 0_2:20 +DEAL:2d::face: 0_2:03 0_2:12 +DEAL:2d::face: 0_2:03 0_2:21 +DEAL:2d::face: 0_2:10 0_2:11 +DEAL:2d::face: 0_2:10 0_2:12 +DEAL:2d::face: 0_2:11 0_2:13 +DEAL:2d::face: 0_2:12 0_2:13 +DEAL:2d::face: 0_2:12 0_2:30 +DEAL:2d::face: 0_2:13 0_2:31 +DEAL:2d::face: 0_2:20 0_2:21 +DEAL:2d::face: 0_2:20 0_2:22 +DEAL:2d::face: 0_2:21 0_2:23 +DEAL:2d::face: 0_2:21 0_2:30 +DEAL:2d::face: 0_2:22 0_2:23 +DEAL:2d::face: 0_2:23 0_2:32 +DEAL:2d::face: 0_2:30 0_2:31 +DEAL:2d::face: 0_2:30 0_2:32 +DEAL:2d::face: 0_2:31 0_2:33 +DEAL:2d::face: 0_2:32 0_2:33 +DEAL:2d::boundary: 0_2:00 +DEAL:2d::boundary: 0_2:01 +DEAL:2d::boundary: 0_2:02 +DEAL:2d::boundary: 0_2:10 +DEAL:2d::boundary: 0_2:11 +DEAL:2d::boundary: 0_2:13 +DEAL:2d::boundary: 0_2:20 +DEAL:2d::boundary: 0_2:22 +DEAL:2d::boundary: 0_2:23 +DEAL:2d::boundary: 0_2:31 +DEAL:2d::boundary: 0_2:32 +DEAL:2d::boundary: 0_2:33 +DEAL:2d:: +DEAL:3d::Active level (with max_level=2): +DEAL:3d::cell: 0_2:00 +DEAL:3d::cell: 0_2:01 +DEAL:3d::cell: 0_2:02 +DEAL:3d::cell: 0_2:03 +DEAL:3d::cell: 0_2:04 +DEAL:3d::cell: 0_2:05 +DEAL:3d::cell: 0_2:06 +DEAL:3d::cell: 0_2:07 +DEAL:3d::cell: 0_2:10 +DEAL:3d::cell: 0_2:11 +DEAL:3d::cell: 0_2:12 +DEAL:3d::cell: 0_2:13 +DEAL:3d::cell: 0_2:14 +DEAL:3d::cell: 0_2:15 +DEAL:3d::cell: 0_2:16 +DEAL:3d::cell: 0_2:17 +DEAL:3d::cell: 0_2:20 +DEAL:3d::cell: 0_2:21 +DEAL:3d::cell: 0_2:22 +DEAL:3d::cell: 0_2:23 +DEAL:3d::cell: 0_2:24 +DEAL:3d::cell: 0_2:25 +DEAL:3d::cell: 0_2:26 +DEAL:3d::cell: 0_2:27 +DEAL:3d::cell: 0_2:30 +DEAL:3d::cell: 0_2:31 +DEAL:3d::cell: 0_2:32 +DEAL:3d::cell: 0_2:33 +DEAL:3d::cell: 0_2:34 +DEAL:3d::cell: 0_2:35 +DEAL:3d::cell: 0_2:36 +DEAL:3d::cell: 0_2:37 +DEAL:3d::cell: 0_2:40 +DEAL:3d::cell: 0_2:41 +DEAL:3d::cell: 0_2:42 +DEAL:3d::cell: 0_2:43 +DEAL:3d::cell: 0_2:44 +DEAL:3d::cell: 0_2:45 +DEAL:3d::cell: 0_2:46 +DEAL:3d::cell: 0_2:47 +DEAL:3d::cell: 0_2:50 +DEAL:3d::cell: 0_2:51 +DEAL:3d::cell: 0_2:52 +DEAL:3d::cell: 0_2:53 +DEAL:3d::cell: 0_2:54 +DEAL:3d::cell: 0_2:55 +DEAL:3d::cell: 0_2:56 +DEAL:3d::cell: 0_2:57 +DEAL:3d::cell: 0_2:60 +DEAL:3d::cell: 0_2:61 +DEAL:3d::cell: 0_2:62 +DEAL:3d::cell: 0_2:63 +DEAL:3d::cell: 0_2:64 +DEAL:3d::cell: 0_2:65 +DEAL:3d::cell: 0_2:66 +DEAL:3d::cell: 0_2:67 +DEAL:3d::cell: 0_2:70 +DEAL:3d::cell: 0_2:71 +DEAL:3d::cell: 0_2:72 +DEAL:3d::cell: 0_2:73 +DEAL:3d::cell: 0_2:74 +DEAL:3d::cell: 0_2:75 +DEAL:3d::cell: 0_2:76 +DEAL:3d::cell: 0_2:77 +DEAL:3d::face: 0_2:00 0_2:01 +DEAL:3d::face: 0_2:00 0_2:02 +DEAL:3d::face: 0_2:00 0_2:04 +DEAL:3d::face: 0_2:01 0_2:03 +DEAL:3d::face: 0_2:01 0_2:05 +DEAL:3d::face: 0_2:01 0_2:10 +DEAL:3d::face: 0_2:02 0_2:03 +DEAL:3d::face: 0_2:02 0_2:06 +DEAL:3d::face: 0_2:02 0_2:20 +DEAL:3d::face: 0_2:03 0_2:07 +DEAL:3d::face: 0_2:03 0_2:12 +DEAL:3d::face: 0_2:03 0_2:21 +DEAL:3d::face: 0_2:04 0_2:05 +DEAL:3d::face: 0_2:04 0_2:06 +DEAL:3d::face: 0_2:04 0_2:40 +DEAL:3d::face: 0_2:05 0_2:07 +DEAL:3d::face: 0_2:05 0_2:14 +DEAL:3d::face: 0_2:05 0_2:41 +DEAL:3d::face: 0_2:06 0_2:07 +DEAL:3d::face: 0_2:06 0_2:24 +DEAL:3d::face: 0_2:06 0_2:42 +DEAL:3d::face: 0_2:07 0_2:16 +DEAL:3d::face: 0_2:07 0_2:25 +DEAL:3d::face: 0_2:07 0_2:43 +DEAL:3d::face: 0_2:10 0_2:11 +DEAL:3d::face: 0_2:10 0_2:12 +DEAL:3d::face: 0_2:10 0_2:14 +DEAL:3d::face: 0_2:11 0_2:13 +DEAL:3d::face: 0_2:11 0_2:15 +DEAL:3d::face: 0_2:12 0_2:13 +DEAL:3d::face: 0_2:12 0_2:16 +DEAL:3d::face: 0_2:12 0_2:30 +DEAL:3d::face: 0_2:13 0_2:17 +DEAL:3d::face: 0_2:13 0_2:31 +DEAL:3d::face: 0_2:14 0_2:15 +DEAL:3d::face: 0_2:14 0_2:16 +DEAL:3d::face: 0_2:14 0_2:50 +DEAL:3d::face: 0_2:15 0_2:17 +DEAL:3d::face: 0_2:15 0_2:51 +DEAL:3d::face: 0_2:16 0_2:17 +DEAL:3d::face: 0_2:16 0_2:34 +DEAL:3d::face: 0_2:16 0_2:52 +DEAL:3d::face: 0_2:17 0_2:35 +DEAL:3d::face: 0_2:17 0_2:53 +DEAL:3d::face: 0_2:20 0_2:21 +DEAL:3d::face: 0_2:20 0_2:22 +DEAL:3d::face: 0_2:20 0_2:24 +DEAL:3d::face: 0_2:21 0_2:23 +DEAL:3d::face: 0_2:21 0_2:25 +DEAL:3d::face: 0_2:21 0_2:30 +DEAL:3d::face: 0_2:22 0_2:23 +DEAL:3d::face: 0_2:22 0_2:26 +DEAL:3d::face: 0_2:23 0_2:27 +DEAL:3d::face: 0_2:23 0_2:32 +DEAL:3d::face: 0_2:24 0_2:25 +DEAL:3d::face: 0_2:24 0_2:26 +DEAL:3d::face: 0_2:24 0_2:60 +DEAL:3d::face: 0_2:25 0_2:27 +DEAL:3d::face: 0_2:25 0_2:34 +DEAL:3d::face: 0_2:25 0_2:61 +DEAL:3d::face: 0_2:26 0_2:27 +DEAL:3d::face: 0_2:26 0_2:62 +DEAL:3d::face: 0_2:27 0_2:36 +DEAL:3d::face: 0_2:27 0_2:63 +DEAL:3d::face: 0_2:30 0_2:31 +DEAL:3d::face: 0_2:30 0_2:32 +DEAL:3d::face: 0_2:30 0_2:34 +DEAL:3d::face: 0_2:31 0_2:33 +DEAL:3d::face: 0_2:31 0_2:35 +DEAL:3d::face: 0_2:32 0_2:33 +DEAL:3d::face: 0_2:32 0_2:36 +DEAL:3d::face: 0_2:33 0_2:37 +DEAL:3d::face: 0_2:34 0_2:35 +DEAL:3d::face: 0_2:34 0_2:36 +DEAL:3d::face: 0_2:34 0_2:70 +DEAL:3d::face: 0_2:35 0_2:37 +DEAL:3d::face: 0_2:35 0_2:71 +DEAL:3d::face: 0_2:36 0_2:37 +DEAL:3d::face: 0_2:36 0_2:72 +DEAL:3d::face: 0_2:37 0_2:73 +DEAL:3d::face: 0_2:40 0_2:41 +DEAL:3d::face: 0_2:40 0_2:42 +DEAL:3d::face: 0_2:40 0_2:44 +DEAL:3d::face: 0_2:41 0_2:43 +DEAL:3d::face: 0_2:41 0_2:45 +DEAL:3d::face: 0_2:41 0_2:50 +DEAL:3d::face: 0_2:42 0_2:43 +DEAL:3d::face: 0_2:42 0_2:46 +DEAL:3d::face: 0_2:42 0_2:60 +DEAL:3d::face: 0_2:43 0_2:47 +DEAL:3d::face: 0_2:43 0_2:52 +DEAL:3d::face: 0_2:43 0_2:61 +DEAL:3d::face: 0_2:44 0_2:45 +DEAL:3d::face: 0_2:44 0_2:46 +DEAL:3d::face: 0_2:45 0_2:47 +DEAL:3d::face: 0_2:45 0_2:54 +DEAL:3d::face: 0_2:46 0_2:47 +DEAL:3d::face: 0_2:46 0_2:64 +DEAL:3d::face: 0_2:47 0_2:56 +DEAL:3d::face: 0_2:47 0_2:65 +DEAL:3d::face: 0_2:50 0_2:51 +DEAL:3d::face: 0_2:50 0_2:52 +DEAL:3d::face: 0_2:50 0_2:54 +DEAL:3d::face: 0_2:51 0_2:53 +DEAL:3d::face: 0_2:51 0_2:55 +DEAL:3d::face: 0_2:52 0_2:53 +DEAL:3d::face: 0_2:52 0_2:56 +DEAL:3d::face: 0_2:52 0_2:70 +DEAL:3d::face: 0_2:53 0_2:57 +DEAL:3d::face: 0_2:53 0_2:71 +DEAL:3d::face: 0_2:54 0_2:55 +DEAL:3d::face: 0_2:54 0_2:56 +DEAL:3d::face: 0_2:55 0_2:57 +DEAL:3d::face: 0_2:56 0_2:57 +DEAL:3d::face: 0_2:56 0_2:74 +DEAL:3d::face: 0_2:57 0_2:75 +DEAL:3d::face: 0_2:60 0_2:61 +DEAL:3d::face: 0_2:60 0_2:62 +DEAL:3d::face: 0_2:60 0_2:64 +DEAL:3d::face: 0_2:61 0_2:63 +DEAL:3d::face: 0_2:61 0_2:65 +DEAL:3d::face: 0_2:61 0_2:70 +DEAL:3d::face: 0_2:62 0_2:63 +DEAL:3d::face: 0_2:62 0_2:66 +DEAL:3d::face: 0_2:63 0_2:67 +DEAL:3d::face: 0_2:63 0_2:72 +DEAL:3d::face: 0_2:64 0_2:65 +DEAL:3d::face: 0_2:64 0_2:66 +DEAL:3d::face: 0_2:65 0_2:67 +DEAL:3d::face: 0_2:65 0_2:74 +DEAL:3d::face: 0_2:66 0_2:67 +DEAL:3d::face: 0_2:67 0_2:76 +DEAL:3d::face: 0_2:70 0_2:71 +DEAL:3d::face: 0_2:70 0_2:72 +DEAL:3d::face: 0_2:70 0_2:74 +DEAL:3d::face: 0_2:71 0_2:73 +DEAL:3d::face: 0_2:71 0_2:75 +DEAL:3d::face: 0_2:72 0_2:73 +DEAL:3d::face: 0_2:72 0_2:76 +DEAL:3d::face: 0_2:73 0_2:77 +DEAL:3d::face: 0_2:74 0_2:75 +DEAL:3d::face: 0_2:74 0_2:76 +DEAL:3d::face: 0_2:75 0_2:77 +DEAL:3d::face: 0_2:76 0_2:77 +DEAL:3d::boundary: 0_2:00 +DEAL:3d::boundary: 0_2:01 +DEAL:3d::boundary: 0_2:02 +DEAL:3d::boundary: 0_2:03 +DEAL:3d::boundary: 0_2:04 +DEAL:3d::boundary: 0_2:05 +DEAL:3d::boundary: 0_2:06 +DEAL:3d::boundary: 0_2:10 +DEAL:3d::boundary: 0_2:11 +DEAL:3d::boundary: 0_2:12 +DEAL:3d::boundary: 0_2:13 +DEAL:3d::boundary: 0_2:14 +DEAL:3d::boundary: 0_2:15 +DEAL:3d::boundary: 0_2:17 +DEAL:3d::boundary: 0_2:20 +DEAL:3d::boundary: 0_2:21 +DEAL:3d::boundary: 0_2:22 +DEAL:3d::boundary: 0_2:23 +DEAL:3d::boundary: 0_2:24 +DEAL:3d::boundary: 0_2:26 +DEAL:3d::boundary: 0_2:27 +DEAL:3d::boundary: 0_2:30 +DEAL:3d::boundary: 0_2:31 +DEAL:3d::boundary: 0_2:32 +DEAL:3d::boundary: 0_2:33 +DEAL:3d::boundary: 0_2:35 +DEAL:3d::boundary: 0_2:36 +DEAL:3d::boundary: 0_2:37 +DEAL:3d::boundary: 0_2:40 +DEAL:3d::boundary: 0_2:41 +DEAL:3d::boundary: 0_2:42 +DEAL:3d::boundary: 0_2:44 +DEAL:3d::boundary: 0_2:45 +DEAL:3d::boundary: 0_2:46 +DEAL:3d::boundary: 0_2:47 +DEAL:3d::boundary: 0_2:50 +DEAL:3d::boundary: 0_2:51 +DEAL:3d::boundary: 0_2:53 +DEAL:3d::boundary: 0_2:54 +DEAL:3d::boundary: 0_2:55 +DEAL:3d::boundary: 0_2:56 +DEAL:3d::boundary: 0_2:57 +DEAL:3d::boundary: 0_2:60 +DEAL:3d::boundary: 0_2:62 +DEAL:3d::boundary: 0_2:63 +DEAL:3d::boundary: 0_2:64 +DEAL:3d::boundary: 0_2:65 +DEAL:3d::boundary: 0_2:66 +DEAL:3d::boundary: 0_2:67 +DEAL:3d::boundary: 0_2:71 +DEAL:3d::boundary: 0_2:72 +DEAL:3d::boundary: 0_2:73 +DEAL:3d::boundary: 0_2:74 +DEAL:3d::boundary: 0_2:75 +DEAL:3d::boundary: 0_2:76 +DEAL:3d::boundary: 0_2:77 +DEAL:3d:: +DEAL:3d::Multigrid level 0: +DEAL:3d::cell: 0_0: +DEAL:3d::boundary: 0_0: +DEAL:3d:: +DEAL:3d::Multigrid level 1: +DEAL:3d::cell: 0_1:0 +DEAL:3d::cell: 0_1:1 +DEAL:3d::cell: 0_1:2 +DEAL:3d::cell: 0_1:3 +DEAL:3d::cell: 0_1:4 +DEAL:3d::cell: 0_1:5 +DEAL:3d::cell: 0_1:6 +DEAL:3d::cell: 0_1:7 +DEAL:3d::face: 0_1:0 0_1:1 +DEAL:3d::face: 0_1:0 0_1:2 +DEAL:3d::face: 0_1:0 0_1:4 +DEAL:3d::face: 0_1:1 0_1:3 +DEAL:3d::face: 0_1:1 0_1:5 +DEAL:3d::face: 0_1:2 0_1:3 +DEAL:3d::face: 0_1:2 0_1:6 +DEAL:3d::face: 0_1:3 0_1:7 +DEAL:3d::face: 0_1:4 0_1:5 +DEAL:3d::face: 0_1:4 0_1:6 +DEAL:3d::face: 0_1:5 0_1:7 +DEAL:3d::face: 0_1:6 0_1:7 +DEAL:3d::boundary: 0_1:0 +DEAL:3d::boundary: 0_1:1 +DEAL:3d::boundary: 0_1:2 +DEAL:3d::boundary: 0_1:3 +DEAL:3d::boundary: 0_1:4 +DEAL:3d::boundary: 0_1:5 +DEAL:3d::boundary: 0_1:6 +DEAL:3d::boundary: 0_1:7 +DEAL:3d:: +DEAL:3d::Multigrid level 2: +DEAL:3d::cell: 0_2:00 +DEAL:3d::cell: 0_2:01 +DEAL:3d::cell: 0_2:02 +DEAL:3d::cell: 0_2:03 +DEAL:3d::cell: 0_2:04 +DEAL:3d::cell: 0_2:05 +DEAL:3d::cell: 0_2:06 +DEAL:3d::cell: 0_2:07 +DEAL:3d::cell: 0_2:10 +DEAL:3d::cell: 0_2:11 +DEAL:3d::cell: 0_2:12 +DEAL:3d::cell: 0_2:13 +DEAL:3d::cell: 0_2:14 +DEAL:3d::cell: 0_2:15 +DEAL:3d::cell: 0_2:16 +DEAL:3d::cell: 0_2:17 +DEAL:3d::cell: 0_2:20 +DEAL:3d::cell: 0_2:21 +DEAL:3d::cell: 0_2:22 +DEAL:3d::cell: 0_2:23 +DEAL:3d::cell: 0_2:24 +DEAL:3d::cell: 0_2:25 +DEAL:3d::cell: 0_2:26 +DEAL:3d::cell: 0_2:27 +DEAL:3d::cell: 0_2:30 +DEAL:3d::cell: 0_2:31 +DEAL:3d::cell: 0_2:32 +DEAL:3d::cell: 0_2:33 +DEAL:3d::cell: 0_2:34 +DEAL:3d::cell: 0_2:35 +DEAL:3d::cell: 0_2:36 +DEAL:3d::cell: 0_2:37 +DEAL:3d::cell: 0_2:40 +DEAL:3d::cell: 0_2:41 +DEAL:3d::cell: 0_2:42 +DEAL:3d::cell: 0_2:43 +DEAL:3d::cell: 0_2:44 +DEAL:3d::cell: 0_2:45 +DEAL:3d::cell: 0_2:46 +DEAL:3d::cell: 0_2:47 +DEAL:3d::cell: 0_2:50 +DEAL:3d::cell: 0_2:51 +DEAL:3d::cell: 0_2:52 +DEAL:3d::cell: 0_2:53 +DEAL:3d::cell: 0_2:54 +DEAL:3d::cell: 0_2:55 +DEAL:3d::cell: 0_2:56 +DEAL:3d::cell: 0_2:57 +DEAL:3d::cell: 0_2:60 +DEAL:3d::cell: 0_2:61 +DEAL:3d::cell: 0_2:62 +DEAL:3d::cell: 0_2:63 +DEAL:3d::cell: 0_2:64 +DEAL:3d::cell: 0_2:65 +DEAL:3d::cell: 0_2:66 +DEAL:3d::cell: 0_2:67 +DEAL:3d::cell: 0_2:70 +DEAL:3d::cell: 0_2:71 +DEAL:3d::cell: 0_2:72 +DEAL:3d::cell: 0_2:73 +DEAL:3d::cell: 0_2:74 +DEAL:3d::cell: 0_2:75 +DEAL:3d::cell: 0_2:76 +DEAL:3d::cell: 0_2:77 +DEAL:3d::face: 0_2:00 0_2:01 +DEAL:3d::face: 0_2:00 0_2:02 +DEAL:3d::face: 0_2:00 0_2:04 +DEAL:3d::face: 0_2:01 0_2:03 +DEAL:3d::face: 0_2:01 0_2:05 +DEAL:3d::face: 0_2:01 0_2:10 +DEAL:3d::face: 0_2:02 0_2:03 +DEAL:3d::face: 0_2:02 0_2:06 +DEAL:3d::face: 0_2:02 0_2:20 +DEAL:3d::face: 0_2:03 0_2:07 +DEAL:3d::face: 0_2:03 0_2:12 +DEAL:3d::face: 0_2:03 0_2:21 +DEAL:3d::face: 0_2:04 0_2:05 +DEAL:3d::face: 0_2:04 0_2:06 +DEAL:3d::face: 0_2:04 0_2:40 +DEAL:3d::face: 0_2:05 0_2:07 +DEAL:3d::face: 0_2:05 0_2:14 +DEAL:3d::face: 0_2:05 0_2:41 +DEAL:3d::face: 0_2:06 0_2:07 +DEAL:3d::face: 0_2:06 0_2:24 +DEAL:3d::face: 0_2:06 0_2:42 +DEAL:3d::face: 0_2:07 0_2:16 +DEAL:3d::face: 0_2:07 0_2:25 +DEAL:3d::face: 0_2:07 0_2:43 +DEAL:3d::face: 0_2:10 0_2:11 +DEAL:3d::face: 0_2:10 0_2:12 +DEAL:3d::face: 0_2:10 0_2:14 +DEAL:3d::face: 0_2:11 0_2:13 +DEAL:3d::face: 0_2:11 0_2:15 +DEAL:3d::face: 0_2:12 0_2:13 +DEAL:3d::face: 0_2:12 0_2:16 +DEAL:3d::face: 0_2:12 0_2:30 +DEAL:3d::face: 0_2:13 0_2:17 +DEAL:3d::face: 0_2:13 0_2:31 +DEAL:3d::face: 0_2:14 0_2:15 +DEAL:3d::face: 0_2:14 0_2:16 +DEAL:3d::face: 0_2:14 0_2:50 +DEAL:3d::face: 0_2:15 0_2:17 +DEAL:3d::face: 0_2:15 0_2:51 +DEAL:3d::face: 0_2:16 0_2:17 +DEAL:3d::face: 0_2:16 0_2:34 +DEAL:3d::face: 0_2:16 0_2:52 +DEAL:3d::face: 0_2:17 0_2:35 +DEAL:3d::face: 0_2:17 0_2:53 +DEAL:3d::face: 0_2:20 0_2:21 +DEAL:3d::face: 0_2:20 0_2:22 +DEAL:3d::face: 0_2:20 0_2:24 +DEAL:3d::face: 0_2:21 0_2:23 +DEAL:3d::face: 0_2:21 0_2:25 +DEAL:3d::face: 0_2:21 0_2:30 +DEAL:3d::face: 0_2:22 0_2:23 +DEAL:3d::face: 0_2:22 0_2:26 +DEAL:3d::face: 0_2:23 0_2:27 +DEAL:3d::face: 0_2:23 0_2:32 +DEAL:3d::face: 0_2:24 0_2:25 +DEAL:3d::face: 0_2:24 0_2:26 +DEAL:3d::face: 0_2:24 0_2:60 +DEAL:3d::face: 0_2:25 0_2:27 +DEAL:3d::face: 0_2:25 0_2:34 +DEAL:3d::face: 0_2:25 0_2:61 +DEAL:3d::face: 0_2:26 0_2:27 +DEAL:3d::face: 0_2:26 0_2:62 +DEAL:3d::face: 0_2:27 0_2:36 +DEAL:3d::face: 0_2:27 0_2:63 +DEAL:3d::face: 0_2:30 0_2:31 +DEAL:3d::face: 0_2:30 0_2:32 +DEAL:3d::face: 0_2:30 0_2:34 +DEAL:3d::face: 0_2:31 0_2:33 +DEAL:3d::face: 0_2:31 0_2:35 +DEAL:3d::face: 0_2:32 0_2:33 +DEAL:3d::face: 0_2:32 0_2:36 +DEAL:3d::face: 0_2:33 0_2:37 +DEAL:3d::face: 0_2:34 0_2:35 +DEAL:3d::face: 0_2:34 0_2:36 +DEAL:3d::face: 0_2:34 0_2:70 +DEAL:3d::face: 0_2:35 0_2:37 +DEAL:3d::face: 0_2:35 0_2:71 +DEAL:3d::face: 0_2:36 0_2:37 +DEAL:3d::face: 0_2:36 0_2:72 +DEAL:3d::face: 0_2:37 0_2:73 +DEAL:3d::face: 0_2:40 0_2:41 +DEAL:3d::face: 0_2:40 0_2:42 +DEAL:3d::face: 0_2:40 0_2:44 +DEAL:3d::face: 0_2:41 0_2:43 +DEAL:3d::face: 0_2:41 0_2:45 +DEAL:3d::face: 0_2:41 0_2:50 +DEAL:3d::face: 0_2:42 0_2:43 +DEAL:3d::face: 0_2:42 0_2:46 +DEAL:3d::face: 0_2:42 0_2:60 +DEAL:3d::face: 0_2:43 0_2:47 +DEAL:3d::face: 0_2:43 0_2:52 +DEAL:3d::face: 0_2:43 0_2:61 +DEAL:3d::face: 0_2:44 0_2:45 +DEAL:3d::face: 0_2:44 0_2:46 +DEAL:3d::face: 0_2:45 0_2:47 +DEAL:3d::face: 0_2:45 0_2:54 +DEAL:3d::face: 0_2:46 0_2:47 +DEAL:3d::face: 0_2:46 0_2:64 +DEAL:3d::face: 0_2:47 0_2:56 +DEAL:3d::face: 0_2:47 0_2:65 +DEAL:3d::face: 0_2:50 0_2:51 +DEAL:3d::face: 0_2:50 0_2:52 +DEAL:3d::face: 0_2:50 0_2:54 +DEAL:3d::face: 0_2:51 0_2:53 +DEAL:3d::face: 0_2:51 0_2:55 +DEAL:3d::face: 0_2:52 0_2:53 +DEAL:3d::face: 0_2:52 0_2:56 +DEAL:3d::face: 0_2:52 0_2:70 +DEAL:3d::face: 0_2:53 0_2:57 +DEAL:3d::face: 0_2:53 0_2:71 +DEAL:3d::face: 0_2:54 0_2:55 +DEAL:3d::face: 0_2:54 0_2:56 +DEAL:3d::face: 0_2:55 0_2:57 +DEAL:3d::face: 0_2:56 0_2:57 +DEAL:3d::face: 0_2:56 0_2:74 +DEAL:3d::face: 0_2:57 0_2:75 +DEAL:3d::face: 0_2:60 0_2:61 +DEAL:3d::face: 0_2:60 0_2:62 +DEAL:3d::face: 0_2:60 0_2:64 +DEAL:3d::face: 0_2:61 0_2:63 +DEAL:3d::face: 0_2:61 0_2:65 +DEAL:3d::face: 0_2:61 0_2:70 +DEAL:3d::face: 0_2:62 0_2:63 +DEAL:3d::face: 0_2:62 0_2:66 +DEAL:3d::face: 0_2:63 0_2:67 +DEAL:3d::face: 0_2:63 0_2:72 +DEAL:3d::face: 0_2:64 0_2:65 +DEAL:3d::face: 0_2:64 0_2:66 +DEAL:3d::face: 0_2:65 0_2:67 +DEAL:3d::face: 0_2:65 0_2:74 +DEAL:3d::face: 0_2:66 0_2:67 +DEAL:3d::face: 0_2:67 0_2:76 +DEAL:3d::face: 0_2:70 0_2:71 +DEAL:3d::face: 0_2:70 0_2:72 +DEAL:3d::face: 0_2:70 0_2:74 +DEAL:3d::face: 0_2:71 0_2:73 +DEAL:3d::face: 0_2:71 0_2:75 +DEAL:3d::face: 0_2:72 0_2:73 +DEAL:3d::face: 0_2:72 0_2:76 +DEAL:3d::face: 0_2:73 0_2:77 +DEAL:3d::face: 0_2:74 0_2:75 +DEAL:3d::face: 0_2:74 0_2:76 +DEAL:3d::face: 0_2:75 0_2:77 +DEAL:3d::face: 0_2:76 0_2:77 +DEAL:3d::boundary: 0_2:00 +DEAL:3d::boundary: 0_2:01 +DEAL:3d::boundary: 0_2:02 +DEAL:3d::boundary: 0_2:03 +DEAL:3d::boundary: 0_2:04 +DEAL:3d::boundary: 0_2:05 +DEAL:3d::boundary: 0_2:06 +DEAL:3d::boundary: 0_2:10 +DEAL:3d::boundary: 0_2:11 +DEAL:3d::boundary: 0_2:12 +DEAL:3d::boundary: 0_2:13 +DEAL:3d::boundary: 0_2:14 +DEAL:3d::boundary: 0_2:15 +DEAL:3d::boundary: 0_2:17 +DEAL:3d::boundary: 0_2:20 +DEAL:3d::boundary: 0_2:21 +DEAL:3d::boundary: 0_2:22 +DEAL:3d::boundary: 0_2:23 +DEAL:3d::boundary: 0_2:24 +DEAL:3d::boundary: 0_2:26 +DEAL:3d::boundary: 0_2:27 +DEAL:3d::boundary: 0_2:30 +DEAL:3d::boundary: 0_2:31 +DEAL:3d::boundary: 0_2:32 +DEAL:3d::boundary: 0_2:33 +DEAL:3d::boundary: 0_2:35 +DEAL:3d::boundary: 0_2:36 +DEAL:3d::boundary: 0_2:37 +DEAL:3d::boundary: 0_2:40 +DEAL:3d::boundary: 0_2:41 +DEAL:3d::boundary: 0_2:42 +DEAL:3d::boundary: 0_2:44 +DEAL:3d::boundary: 0_2:45 +DEAL:3d::boundary: 0_2:46 +DEAL:3d::boundary: 0_2:47 +DEAL:3d::boundary: 0_2:50 +DEAL:3d::boundary: 0_2:51 +DEAL:3d::boundary: 0_2:53 +DEAL:3d::boundary: 0_2:54 +DEAL:3d::boundary: 0_2:55 +DEAL:3d::boundary: 0_2:56 +DEAL:3d::boundary: 0_2:57 +DEAL:3d::boundary: 0_2:60 +DEAL:3d::boundary: 0_2:62 +DEAL:3d::boundary: 0_2:63 +DEAL:3d::boundary: 0_2:64 +DEAL:3d::boundary: 0_2:65 +DEAL:3d::boundary: 0_2:66 +DEAL:3d::boundary: 0_2:67 +DEAL:3d::boundary: 0_2:71 +DEAL:3d::boundary: 0_2:72 +DEAL:3d::boundary: 0_2:73 +DEAL:3d::boundary: 0_2:74 +DEAL:3d::boundary: 0_2:75 +DEAL:3d::boundary: 0_2:76 +DEAL:3d::boundary: 0_2:77 +DEAL:3d::