From 4e3a9abb98b37365d3564c6c8937143c2a8654e7 Mon Sep 17 00:00:00 2001 From: Kyle Schwiebert Date: Sat, 25 Jan 2025 09:59:02 -0500 Subject: [PATCH] Add 3D capability to alfeld_split_of_simplex_mesh() and test. --- source/grid/grid_generator.cc | 58 +++- tests/simplex/alfeld_split_01.cc | 7 +- tests/simplex/alfeld_split_01.output | 429 +++++++++++++++++++++++++++ tests/simplex/stokes-sv.cc | 20 +- tests/simplex/stokes-sv.output | 20 ++ 5 files changed, 521 insertions(+), 13 deletions(-) diff --git a/source/grid/grid_generator.cc b/source/grid/grid_generator.cc index d6f018551e..f15ecb478d 100644 --- a/source/grid/grid_generator.cc +++ b/source/grid/grid_generator.cc @@ -8395,8 +8395,6 @@ namespace GridGenerator alfeld_split_of_simplex_mesh(const Triangulation &in_tria, Triangulation &out_tria) { - Assert(dim == 2, ExcNotImplemented()); - Triangulation temp_tria; if (in_tria.n_global_levels() > 1) { @@ -8416,6 +8414,27 @@ namespace GridGenerator vertex_ids_for_boundary_faces_2d = { {{{{{0, 1}}}}, {{{{1, 2}}}}, {{{{2, 0}}}}}}; + // Three tetrahedra connecting to barycenter with vertex index 4: + static const ndarray table_3D_cell = { + {{{0, 1, 2, 4}}, {{1, 0, 3, 4}}, {{0, 2, 3, 4}}, {{2, 1, 3, 4}}}}; + + // Boundary-faces 3d: + // Each face of the original simplex is defined by the following vertices: + static const ndarray + vertex_ids_for_boundary_faces_3d = { + {{{{{0, 1, 2}}}}, {{{{1, 0, 3}}}}, {{{{0, 2, 3}}}}, {{{{2, 1, 3}}}}}}; + + // Boundary-lines 3d: + // Each line/edge of the original simplex is defined by the following + // vertices: + static const ndarray + vertex_ids_for_boundary_lines_3d = {{{{{{0, 1}}}}, + {{{{1, 2}}}}, + {{{{2, 0}}}}, + {{{{0, 3}}}}, + {{{{1, 3}}}}, + {{{{2, 3}}}}}}; + std::vector> vertices; std::vector> cells; SubCellData subcell_data; @@ -8440,7 +8459,7 @@ namespace GridGenerator // temporary array storing the global indices of each cell entity in the // sequence: vertices, edges/faces, cell - std::array local_vertex_indices; + std::array local_vertex_indices; // (i) copy the existing vertex locations Point barycenter; @@ -8462,8 +8481,8 @@ namespace GridGenerator } // (ii) barycenter: - local_vertex_indices[3] = vertices.size(); - vertices.push_back(barycenter / 3.); + local_vertex_indices[local_vertex_indices.size() - 1] = vertices.size(); + vertices.push_back(barycenter / static_cast(dim + 1)); // helper function for creating cells and subcells const auto add_cell = [&](const unsigned int struct_dim, @@ -8546,16 +8565,19 @@ namespace GridGenerator }; const auto material_id_cell = cell->material_id(); + const auto manifold_id_cell = cell->manifold_id(); // create cells one by one if (dim == 2) { - // get cell-manifold id from current quad cell - const auto manifold_id_cell = cell->manifold_id(); - for (const auto &cell_vertices : table_2D_cell) add_cell(dim, cell_vertices, material_id_cell, manifold_id_cell); } + else if (dim == 3) + { + for (const auto &cell_vertices : table_3D_cell) + add_cell(dim, cell_vertices, material_id_cell, manifold_id_cell); + } else DEAL_II_NOT_IMPLEMENTED(); @@ -8572,9 +8594,29 @@ namespace GridGenerator vertex_ids_for_boundary_faces_2d[f]) add_cell(1, face_vertices, bid, mid); } + else if (dim == 3) + { + for (const auto &face_vertices : + vertex_ids_for_boundary_faces_3d[f]) + add_cell(2, face_vertices, bid, mid); + } else DEAL_II_NOT_IMPLEMENTED(); } + + // In 3D we need to treat boundary lines separately. + if (dim == 3) + { + for (const auto l : cell->line_indices()) + { + const auto bid = cell->line(l)->boundary_id(); + const auto mid = cell->line(l)->manifold_id(); + + for (const auto &line_vertices : + vertex_ids_for_boundary_lines_3d[l]) + add_cell(1, line_vertices, bid, mid); + } + } } out_tria.clear(); diff --git a/tests/simplex/alfeld_split_01.cc b/tests/simplex/alfeld_split_01.cc index 7537e276e7..6436b47587 100644 --- a/tests/simplex/alfeld_split_01.cc +++ b/tests/simplex/alfeld_split_01.cc @@ -12,7 +12,7 @@ * * ------------------------------------------------------------------------ * - * Test function GridGenerator::alfeld_split_of_simplex_mesh() in 2D. + * Test function GridGenerator::alfeld_split_of_simplex_mesh() in 2D and 3D. */ #include @@ -22,7 +22,6 @@ #include #include -#include #include #include "../tests.h" @@ -92,4 +91,8 @@ main() deallog.push("2d"); check<2, 2>(); deallog.pop(); + + deallog.push("3d"); + check<3, 3>(); + deallog.pop(); } diff --git a/tests/simplex/alfeld_split_01.output b/tests/simplex/alfeld_split_01.output index b533eed074..fc53bad10b 100644 --- a/tests/simplex/alfeld_split_01.output +++ b/tests/simplex/alfeld_split_01.output @@ -118,3 +118,432 @@ SCALARS ManifoldID int 1 LOOKUP_TABLE default -1 -1 -1 -1 -1 -1 -1 -1 DEAL:2d::OK! +# vtk DataFile Version 3.0 +Triangulation generated with deal.II +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 67 double +0.00000 0.00000 0.00000 +0.500000 0.00000 0.00000 +0.00000 0.500000 0.00000 +0.00000 0.00000 0.500000 +0.125000 0.125000 0.125000 +0.500000 0.500000 0.00000 +0.500000 0.500000 0.500000 +0.375000 0.375000 0.125000 +0.500000 0.00000 0.500000 +0.375000 0.125000 0.375000 +0.00000 0.500000 0.500000 +0.125000 0.375000 0.375000 +0.250000 0.250000 0.250000 +1.00000 0.00000 0.00000 +1.00000 0.500000 0.00000 +1.00000 0.00000 0.500000 +0.875000 0.125000 0.125000 +0.625000 0.375000 0.125000 +0.625000 0.125000 0.375000 +1.00000 0.500000 0.500000 +0.875000 0.375000 0.375000 +0.750000 0.250000 0.250000 +0.500000 1.00000 0.00000 +0.375000 0.625000 0.125000 +0.00000 1.00000 0.00000 +0.00000 1.00000 0.500000 +0.125000 0.875000 0.125000 +0.125000 0.625000 0.375000 +0.500000 1.00000 0.500000 +0.375000 0.875000 0.375000 +0.250000 0.750000 0.250000 +0.625000 0.625000 0.125000 +1.00000 1.00000 0.00000 +1.00000 1.00000 0.500000 +0.875000 0.875000 0.125000 +0.875000 0.625000 0.375000 +0.625000 0.875000 0.375000 +0.750000 0.750000 0.250000 +0.500000 0.00000 1.00000 +0.375000 0.125000 0.625000 +0.00000 0.500000 1.00000 +0.125000 0.375000 0.625000 +0.00000 0.00000 1.00000 +0.125000 0.125000 0.875000 +0.500000 0.500000 1.00000 +0.375000 0.375000 0.875000 +0.250000 0.250000 0.750000 +0.625000 0.125000 0.625000 +1.00000 0.500000 1.00000 +0.875000 0.375000 0.625000 +1.00000 0.00000 1.00000 +0.875000 0.125000 0.875000 +0.625000 0.375000 0.875000 +0.750000 0.250000 0.750000 +0.125000 0.625000 0.625000 +0.500000 1.00000 1.00000 +0.375000 0.875000 0.625000 +0.375000 0.625000 0.875000 +0.00000 1.00000 1.00000 +0.125000 0.875000 0.875000 +0.250000 0.750000 0.750000 +0.875000 0.625000 0.625000 +0.625000 0.875000 0.625000 +0.625000 0.625000 0.875000 +1.00000 1.00000 1.00000 +0.875000 0.875000 0.875000 +0.750000 0.750000 0.750000 + +CELLS 200 960 +4 0 1 2 4 +4 1 0 3 4 +4 0 2 3 4 +4 2 1 3 4 +4 2 1 5 7 +4 1 2 6 7 +4 2 5 6 7 +4 5 1 6 7 +4 1 3 8 9 +4 3 1 6 9 +4 1 8 6 9 +4 8 3 6 9 +4 2 3 6 11 +4 3 2 10 11 +4 2 6 10 11 +4 6 3 10 11 +4 1 2 3 12 +4 2 1 6 12 +4 1 3 6 12 +4 3 2 6 12 +4 1 13 14 16 +4 13 1 15 16 +4 1 14 15 16 +4 14 13 15 16 +4 1 14 5 17 +4 14 1 6 17 +4 1 5 6 17 +4 5 14 6 17 +4 1 8 15 18 +4 8 1 6 18 +4 1 15 6 18 +4 15 8 6 18 +4 14 15 19 20 +4 15 14 6 20 +4 14 19 6 20 +4 19 15 6 20 +4 1 14 6 21 +4 14 1 15 21 +4 1 6 15 21 +4 6 14 15 21 +4 2 5 22 23 +4 5 2 6 23 +4 2 22 6 23 +4 22 5 6 23 +4 2 22 24 26 +4 22 2 25 26 +4 2 24 25 26 +4 24 22 25 26 +4 2 10 6 27 +4 10 2 25 27 +4 2 6 25 27 +4 6 10 25 27 +4 22 6 28 29 +4 6 22 25 29 +4 22 28 25 29 +4 28 6 25 29 +4 2 22 25 30 +4 22 2 6 30 +4 2 25 6 30 +4 25 22 6 30 +4 5 14 22 31 +4 14 5 6 31 +4 5 22 6 31 +4 22 14 6 31 +4 22 14 32 34 +4 14 22 33 34 +4 22 32 33 34 +4 32 14 33 34 +4 14 6 19 35 +4 6 14 33 35 +4 14 19 33 35 +4 19 6 33 35 +4 22 6 33 36 +4 6 22 28 36 +4 22 33 28 36 +4 33 6 28 36 +4 14 22 6 37 +4 22 14 33 37 +4 14 6 33 37 +4 6 22 33 37 +4 3 8 6 39 +4 8 3 38 39 +4 3 6 38 39 +4 6 8 38 39 +4 3 6 10 41 +4 6 3 40 41 +4 3 10 40 41 +4 10 6 40 41 +4 3 42 38 43 +4 42 3 40 43 +4 3 38 40 43 +4 38 42 40 43 +4 6 38 44 45 +4 38 6 40 45 +4 6 44 40 45 +4 44 38 40 45 +4 3 6 40 46 +4 6 3 38 46 +4 3 40 38 46 +4 40 6 38 46 +4 8 15 6 47 +4 15 8 38 47 +4 8 6 38 47 +4 6 15 38 47 +4 6 15 19 49 +4 15 6 48 49 +4 6 19 48 49 +4 19 15 48 49 +4 15 38 50 51 +4 38 15 48 51 +4 15 50 48 51 +4 50 38 48 51 +4 6 38 48 52 +4 38 6 44 52 +4 6 48 44 52 +4 48 38 44 52 +4 15 6 38 53 +4 6 15 48 53 +4 15 38 48 53 +4 38 6 48 53 +4 10 6 25 54 +4 6 10 40 54 +4 10 25 40 54 +4 25 6 40 54 +4 25 6 28 56 +4 6 25 55 56 +4 25 28 55 56 +4 28 6 55 56 +4 6 40 44 57 +4 40 6 55 57 +4 6 44 55 57 +4 44 40 55 57 +4 25 40 55 59 +4 40 25 58 59 +4 25 55 58 59 +4 55 40 58 59 +4 6 25 40 60 +4 25 6 55 60 +4 6 40 55 60 +4 40 25 55 60 +4 6 19 33 61 +4 19 6 48 61 +4 6 33 48 61 +4 33 19 48 61 +4 6 33 28 62 +4 33 6 55 62 +4 6 28 55 62 +4 28 33 55 62 +4 6 44 48 63 +4 44 6 55 63 +4 6 48 55 63 +4 48 44 55 63 +4 33 48 64 65 +4 48 33 55 65 +4 33 64 55 65 +4 64 48 55 65 +4 6 33 55 66 +4 33 6 48 66 +4 6 55 48 66 +4 55 33 48 66 +3 1 0 3 +3 0 1 2 +3 2 1 5 +3 13 1 15 +3 1 13 14 +3 1 3 8 +3 8 3 38 +3 3 42 38 +3 2 5 22 +3 1 8 15 +3 15 8 38 +3 14 13 15 +3 1 14 5 +3 5 14 22 +3 14 15 19 +3 22 14 32 +3 32 14 33 +3 19 15 48 +3 14 19 33 +3 33 19 48 +3 2 22 24 +3 24 22 25 +3 22 33 28 +3 25 55 58 +3 22 28 25 +3 25 28 55 +3 22 32 33 +3 28 33 55 +3 33 48 64 +3 15 38 50 +3 44 38 40 +3 50 38 48 +3 38 42 40 +3 44 40 55 +3 48 38 44 +3 48 44 55 +3 64 48 55 +3 15 50 48 +3 55 40 58 +3 33 64 55 + +CELL_TYPES 200 +10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 + + +CELL_DATA 200 +SCALARS MaterialID int 1 +LOOKUP_TABLE default +0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8 9 9 9 9 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13 14 14 14 14 15 15 15 15 16 16 16 16 17 17 17 17 18 18 18 18 19 19 19 19 20 20 20 20 21 21 21 21 22 22 22 22 23 23 23 23 24 24 24 24 25 25 25 25 26 26 26 26 27 27 27 27 28 28 28 28 29 29 29 29 30 30 30 30 31 31 31 31 32 32 32 32 33 33 33 33 34 34 34 34 35 35 35 35 36 36 36 36 37 37 37 37 38 38 38 38 39 39 39 39 +2 4 4 2 4 2 2 2 4 2 2 1 4 4 1 4 1 1 1 1 4 3 3 3 3 3 3 3 1 2 5 5 5 5 5 5 5 1 5 3 + + +SCALARS ManifoldID int 1 +LOOKUP_TABLE default +-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + +# vtk DataFile Version 3.0 +Triangulation generated with deal.II +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 67 double +0.00000 0.00000 0.00000 +0.500000 0.00000 0.00000 +0.00000 0.500000 0.00000 +0.00000 0.00000 0.500000 +0.125000 0.125000 0.125000 +0.500000 0.500000 0.00000 +0.500000 0.500000 0.500000 +0.375000 0.375000 0.125000 +0.500000 0.00000 0.500000 +0.375000 0.125000 0.375000 +0.00000 0.500000 0.500000 +0.125000 0.375000 0.375000 +0.250000 0.250000 0.250000 +1.00000 0.00000 0.00000 +1.00000 0.500000 0.00000 +1.00000 0.00000 0.500000 +0.875000 0.125000 0.125000 +0.625000 0.375000 0.125000 +0.625000 0.125000 0.375000 +1.00000 0.500000 0.500000 +0.875000 0.375000 0.375000 +0.750000 0.250000 0.250000 +0.500000 1.00000 0.00000 +0.375000 0.625000 0.125000 +0.00000 1.00000 0.00000 +0.00000 1.00000 0.500000 +0.125000 0.875000 0.125000 +0.125000 0.625000 0.375000 +0.500000 1.00000 0.500000 +0.375000 0.875000 0.375000 +0.250000 0.750000 0.250000 +0.625000 0.625000 0.125000 +1.00000 1.00000 0.00000 +1.00000 1.00000 0.500000 +0.875000 0.875000 0.125000 +0.875000 0.625000 0.375000 +0.625000 0.875000 0.375000 +0.750000 0.750000 0.250000 +0.500000 0.00000 1.00000 +0.375000 0.125000 0.625000 +0.00000 0.500000 1.00000 +0.125000 0.375000 0.625000 +0.00000 0.00000 1.00000 +0.125000 0.125000 0.875000 +0.500000 0.500000 1.00000 +0.375000 0.375000 0.875000 +0.250000 0.250000 0.750000 +0.625000 0.125000 0.625000 +1.00000 0.500000 1.00000 +0.875000 0.375000 0.625000 +1.00000 0.00000 1.00000 +0.875000 0.125000 0.875000 +0.625000 0.375000 0.875000 +0.750000 0.250000 0.750000 +0.125000 0.625000 0.625000 +0.500000 1.00000 1.00000 +0.375000 0.875000 0.625000 +0.375000 0.625000 0.875000 +0.00000 1.00000 1.00000 +0.125000 0.875000 0.875000 +0.250000 0.750000 0.750000 +0.875000 0.625000 0.625000 +0.625000 0.875000 0.625000 +0.625000 0.625000 0.875000 +1.00000 1.00000 1.00000 +0.875000 0.875000 0.875000 +0.750000 0.750000 0.750000 + +CELLS 48 192 +3 1 0 3 +3 0 1 2 +3 2 1 5 +3 13 1 15 +3 1 13 14 +3 0 2 3 +3 3 2 10 +3 10 2 25 +3 1 3 8 +3 8 3 38 +3 42 3 40 +3 3 42 38 +3 2 5 22 +3 1 8 15 +3 15 8 38 +3 3 10 40 +3 14 13 15 +3 1 14 5 +3 5 14 22 +3 14 15 19 +3 22 14 32 +3 32 14 33 +3 19 15 48 +3 14 19 33 +3 33 19 48 +3 2 22 24 +3 24 22 25 +3 22 33 28 +3 2 24 25 +3 10 25 40 +3 40 25 58 +3 25 55 58 +3 22 28 25 +3 25 28 55 +3 22 32 33 +3 28 33 55 +3 33 48 64 +3 15 38 50 +3 44 38 40 +3 50 38 48 +3 38 42 40 +3 44 40 55 +3 48 38 44 +3 48 44 55 +3 64 48 55 +3 15 50 48 +3 55 40 58 +3 33 64 55 + +CELL_TYPES 48 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 + + +CELL_DATA 48 +SCALARS MaterialID int 1 +LOOKUP_TABLE default +2 4 4 2 4 0 0 0 2 2 0 2 4 2 2 0 1 4 4 1 4 1 1 1 1 4 3 3 0 0 0 3 3 3 3 3 1 2 5 5 5 5 5 5 5 1 5 3 + + +SCALARS ManifoldID int 1 +LOOKUP_TABLE default +-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +DEAL:3d::OK! diff --git a/tests/simplex/stokes-sv.cc b/tests/simplex/stokes-sv.cc index 81cb4f59f7..7f1fefd2d9 100644 --- a/tests/simplex/stokes-sv.cc +++ b/tests/simplex/stokes-sv.cc @@ -673,8 +673,9 @@ namespace Step56 data_component_interpretation); data_out.build_patches(); - std::ofstream output( - "solution-" + Utilities::int_to_string(refinement_cycle, 2) + ".vtk"); + std::ofstream output("solution-" + + Utilities::int_to_string(refinement_cycle, 2) + + "-dim-" + Utilities::int_to_string(dim, 2) + ".vtk"); data_out.write_vtk(output); } @@ -682,7 +683,11 @@ namespace Step56 void StokesProblem::run() { - for (unsigned int refinement_cycle = 0; refinement_cycle < 3; + // For Scott-Vogelius elements in 3D, we must use a cubic velocity space and + // so we must use fewer refinements. + const unsigned int max_refinements_cycles = dim < 3 ? 3 : 2; + for (unsigned int refinement_cycle = 0; + refinement_cycle < max_refinements_cycles; ++refinement_cycle) { deallog << "Refinement cycle " << refinement_cycle << std::endl; @@ -722,5 +727,14 @@ main() flow_problem.run(); } + { + using namespace Step56; + + const int degree = 2; // In 3D, not stable unless degree >= 2. + const int dim = 3; + StokesProblem flow_problem(degree); + + flow_problem.run(); + } return 0; } diff --git a/tests/simplex/stokes-sv.output b/tests/simplex/stokes-sv.output index 72f547a5ae..bd77ca266c 100644 --- a/tests/simplex/stokes-sv.output +++ b/tests/simplex/stokes-sv.output @@ -29,3 +29,23 @@ DEAL:: Velocity L2 Error: 0.000739254 DEAL:: Pressure L2 Error: 0.190631 DEAL:: Velocity H1 Error: 0.0599330 DEAL:: Velocity Hdiv Err: 6.61221e-09 +DEAL::Refinement cycle 0 +DEAL:: Set-up... +DEAL:: Number of active cells: 20 +DEAL:: Number of degrees of freedom: 605 (405+200) +DEAL:: Assembling... +DEAL:: Solving... +DEAL:: Velocity L2 Error: 0.155024 +DEAL:: Pressure L2 Error: 12.3846 +DEAL:: Velocity H1 Error: 2.71669 +DEAL:: Velocity Hdiv Err: 6.54647e-08 +DEAL::Refinement cycle 1 +DEAL:: Set-up... +DEAL:: Number of active cells: 1280 +DEAL:: Number of degrees of freedom: 33023 (20223+12800) +DEAL:: Assembling... +DEAL:: Solving... +DEAL:: Velocity L2 Error: 0.000420642 +DEAL:: Pressure L2 Error: 0.0644518 +DEAL:: Velocity H1 Error: 0.0207581 +DEAL:: Velocity Hdiv Err: 7.31178e-08 -- 2.39.5