From 926b4d131391542cf0c45f32e7ce0a96a368b8e8 Mon Sep 17 00:00:00 2001 From: bangerth Date: Thu, 18 Nov 2010 22:16:29 +0000 Subject: [PATCH] Interestingly, mesh refinement of surfaces in higher spaces produced the wrong result for cells that lie at the boundary of the surface (the new point at the center of a quad was computed from the surrounding vertices, rather than from the surface description). Fix this. git-svn-id: https://svn.dealii.org/trunk@22811 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/doc/news/changes.h | 8 + deal.II/source/grid/tria.cc | 191 ++++++---- tests/codim_one/extract_boundary_mesh_04.cc | 13 +- .../extract_boundary_mesh_04/cmp/generic | 345 ++++++++++++++++++ 4 files changed, 479 insertions(+), 78 deletions(-) create mode 100644 tests/codim_one/extract_boundary_mesh_04/cmp/generic diff --git a/deal.II/doc/news/changes.h b/deal.II/doc/news/changes.h index 642e959a30..2be99ffac4 100644 --- a/deal.II/doc/news/changes.h +++ b/deal.II/doc/news/changes.h @@ -379,6 +379,14 @@ independent of the dimension.

deal.II

    +
  1. Fixed: Triangulation::execute_coarsening_and_refinement misplaced + the new central vertex of a quad in a two-dimensional mesh embedded into + higher dimensional space if said quad was at the boundary of the surface + described by this triangulation. This is now fixed. +
    + (WB, 2010/11/18) +

  2. +
  3. New: The GridTools::extract_boundary_mesh function can be used to generate a surface mesh from the boundary of a volume mesh.
    diff --git a/deal.II/source/grid/tria.cc b/deal.II/source/grid/tria.cc index cec3bde55f..c5783dadb1 100644 --- a/deal.II/source/grid/tria.cc +++ b/deal.II/source/grid/tria.cc @@ -1407,6 +1407,9 @@ namespace internal const SubCellData &/*subcelldata*/, Triangulation<1,spacedim> &triangulation) { + AssertThrow (v.size() > 0, ExcMessage ("No vertices given")); + AssertThrow (cells.size() > 0, ExcMessage ("No cells given")); + // note: since no boundary // information can be given in one // dimension, the @p{subcelldata} @@ -1544,6 +1547,9 @@ namespace internal const SubCellData &subcelldata, Triangulation<2,spacedim> &triangulation) { + AssertThrow (v.size() > 0, ExcMessage ("No vertices given")); + AssertThrow (cells.size() > 0, ExcMessage ("No cells given")); + const unsigned int dim=2; // copy vertices @@ -1847,6 +1853,9 @@ namespace internal const SubCellData &subcelldata, Triangulation<3,spacedim> &triangulation) { + AssertThrow (v.size() > 0, ExcMessage ("No vertices given")); + AssertThrow (cells.size() > 0, ExcMessage ("No cells given")); + const unsigned int dim=3; // copy vertices @@ -3812,11 +3821,25 @@ namespace internal .--.--. */ - // collect the indices - // all vertices + // find the next + // unused vertex and + // allocate it for + // the new vertex we + // need here + while (triangulation.vertices_used[next_unused_vertex] == true) + ++next_unused_vertex; + Assert (next_unused_vertex < triangulation.vertices.size(), + ExcTooFewVerticesAllocated()); + triangulation.vertices_used[next_unused_vertex] = true; + + // collect the + // indices of the + // eight + // surrounding + // vertices // 2--7--3 // | | | - // 4--8--5 + // 4--9--5 // | | | // 0--6--1 int new_vertices[9]; @@ -3825,94 +3848,120 @@ namespace internal for (unsigned int line_no=0; line_no<4; ++line_no) if (cell->line(line_no)->has_children()) new_vertices[4+line_no]=cell->line(line_no)->child(0)->vertex_index(1); + new_vertices[8] = next_unused_vertex; if (ref_case==RefinementCase::cut_xy) { - // find the next - // unused vertex and - // set it - // appropriately - while (triangulation.vertices_used[next_unused_vertex] == true) - ++next_unused_vertex; - Assert (next_unused_vertex < triangulation.vertices.size(), - ExcTooFewVerticesAllocated()); - triangulation.vertices_used[next_unused_vertex] = true; - - new_vertices[8]=next_unused_vertex; - - Point new_point; + // if this quad lives + // in 2d, then we can + // compute the new + // central vertex + // location just from + // the surrounding + // ones. If this is + // not the case, then + // we need to ask a + // boundary object if (dim == spacedim) { + // in a first + // step, compute + // the location + // of central + // vertex as the + // average of the + // 8 surrounding + // vertices + Point new_point; for (unsigned int i=0; i<8; ++i) new_point += triangulation.vertices[new_vertices[i]]; new_point /= 8.0; + + triangulation.vertices[next_unused_vertex] = new_point; + + // if the user_flag is set, i.e. if the + // cell is at the boundary, use a + // different calculation of the middle + // vertex here. this is of advantage, if + // the boundary is strongly curved and + // the cell has a high aspect ratio. this + // can happen for example, if it was + // refined anisotropically before. + if (cell->user_flag_set()) + { + // first reset the user_flag + cell->clear_user_flag(); + // the user flag indicates: at least + // one face is at the boundary. if it + // is only one, set the new middle + // vertex in a different way to avoid + // some mis-shaped elements if the + // new point on the boundary is not + // where we expect it, especially if + // it is to far inside the current + // cell + unsigned int boundary_face=GeometryInfo::faces_per_cell; + for (unsigned int face=0; face::faces_per_cell; ++face) + if (cell->face(face)->at_boundary()) + { + if (boundary_face == GeometryInfo::faces_per_cell) + // no boundary face found so + // far, so set it now + boundary_face=face; + else + // there is another boundary + // face, so reset boundary_face to + // invalid value as a flag to + // do nothing in the following + boundary_face=GeometryInfo::faces_per_cell+1; + } + + if (boundary_face::faces_per_cell) + // reset the cell's middle vertex + // to the middle of the straight + // connection between the new + // points on this face and on the + // opposite face + triangulation.vertices[next_unused_vertex] + = 0.5*(cell->face(boundary_face) + ->child(0)->vertex(1)+ + cell->face(GeometryInfo + ::opposite_face[boundary_face]) + ->child(0)->vertex(1)); + } } else { + // if this quad + // lives in a + // higher + // dimensional + // space then we + // don't need to + // worry if it is + // at the + // boundary of + // the manifold + // -- we always + // have to use + // the boundary + // object anyway; + // so ignore + // whether the + // user flag is + // set or not + cell->clear_user_flag(); + // new vertex is // placed on the // surface according // to the information // stored in the // boundary class - new_point = + triangulation.vertices[next_unused_vertex] = triangulation.boundary[cell->material_id()] ->get_new_point_on_quad (cell); } - - triangulation.vertices[new_vertices[8]] = new_point; - - - // if the user_flag is set, i.e. if the - // cell is at the boundary, use a - // different calculation of the middle - // vertex here. this is of advantage, if - // the boundary is strongly curved and - // the cell has a high aspect ratio. this - // can happen for example, if it was - // refined anisotropically before. - if (cell->user_flag_set()) - { - // first reset the user_flag - cell->clear_user_flag(); - // the user flag indicates: at least - // one face is at the boundary. if it - // is only one, set the new middle - // vertex in a different way to avoid - // some mis-shaped elements if the - // new point on the boundary is not - // where we expect it, especially if - // it is to far inside the current - // cell - unsigned int bound_face=GeometryInfo::faces_per_cell; - for (unsigned int face=0; face::faces_per_cell; ++face) - if (cell->face(face)->at_boundary()) - { - if (bound_face == GeometryInfo::faces_per_cell) - // no boundary face found so - // far, so set it now - bound_face=face; - else - // there is another boundary - // face, so reset bound_face to - // invalid value as a flag to - // do nothing in the following - bound_face=GeometryInfo::faces_per_cell+1; - } - - if (bound_face::faces_per_cell) - // reset the cell's middle vertex - // to the middle of the straight - // connection between the new - // points on this face and on the - // opposite face - triangulation.vertices[new_vertices[8]] - = 0.5*(cell->face(bound_face) - ->child(0)->vertex(1)+ - cell->face(GeometryInfo - ::opposite_face[bound_face]) - ->child(0)->vertex(1)); - } } diff --git a/tests/codim_one/extract_boundary_mesh_04.cc b/tests/codim_one/extract_boundary_mesh_04.cc index 6a03470313..2bac4696be 100644 --- a/tests/codim_one/extract_boundary_mesh_04.cc +++ b/tests/codim_one/extract_boundary_mesh_04.cc @@ -107,30 +107,29 @@ int main () for (unsigned int f=0; f::faces_per_cell; ++f) if (cell->at_boundary(f) && (cell->center()[dim-1]>0)) cell->face(f)->set_all_boundary_indicators (1); - + volume_mesh.set_boundary (1, boundary_description); volume_mesh.set_boundary (0, boundary_description); - volume_mesh.refine_global (3); + volume_mesh.refine_global (1); const HyperBallBoundary surface_description; Triangulation boundary_mesh; boundary_mesh.set_boundary (1, surface_description); boundary_mesh.set_boundary (0, surface_description); - + set boundary_ids; boundary_ids.insert(1); - + GridTools::extract_boundary_mesh (volume_mesh, boundary_mesh, surface_to_volume_mapping, boundary_ids); deallog << volume_mesh.n_active_cells () << std::endl; deallog << boundary_mesh.n_active_cells () << std::endl; - //save_mesh(boundary_mesh); - + deallog << "Surface mesh:" << std::endl; + save_mesh(boundary_mesh); test_vertices_orientation(boundary_mesh, surface_to_volume_mapping); - //save_mesh(boundary_mesh); } diff --git a/tests/codim_one/extract_boundary_mesh_04/cmp/generic b/tests/codim_one/extract_boundary_mesh_04/cmp/generic new file mode 100644 index 0000000000..6c7fcad4a3 --- /dev/null +++ b/tests/codim_one/extract_boundary_mesh_04/cmp/generic @@ -0,0 +1,345 @@ + +DEAL::Testing hyper_cube in dim: 3... +DEAL::56 +DEAL::20 +DEAL::Surface mesh: +0.577350 -0.577350 -0.577350 1 1 +0.707107 -0.707107 0.00000 1 1 +1.00000 0.00000 0.00000 1 1 +0.707107 0.00000 -0.707107 1 1 +0.577350 -0.577350 -0.577350 1 1 + + +0.707107 -0.707107 0.00000 1 1 +0.577350 -0.577350 0.577350 1 1 +0.707107 0.00000 0.707107 1 1 +1.00000 0.00000 0.00000 1 1 +0.707107 -0.707107 0.00000 1 1 + + +0.707107 0.00000 -0.707107 1 1 +1.00000 0.00000 0.00000 1 1 +0.707107 0.707107 0.00000 1 1 +0.577350 0.577350 -0.577350 1 1 +0.707107 0.00000 -0.707107 1 1 + + +1.00000 0.00000 0.00000 1 1 +0.707107 0.00000 0.707107 1 1 +0.577350 0.577350 0.577350 1 1 +0.707107 0.707107 0.00000 1 1 +1.00000 0.00000 0.00000 1 1 + + +-0.577350 -0.577350 0.577350 1 1 +-0.707107 0.00000 0.707107 1 1 +0.00000 0.00000 1.00000 1 1 +0.00000 -0.707107 0.707107 1 1 +-0.577350 -0.577350 0.577350 1 1 + + +-0.707107 0.00000 0.707107 1 1 +-0.577350 0.577350 0.577350 1 1 +0.00000 0.707107 0.707107 1 1 +0.00000 0.00000 1.00000 1 1 +-0.707107 0.00000 0.707107 1 1 + + +0.00000 -0.707107 0.707107 1 1 +0.00000 0.00000 1.00000 1 1 +0.707107 0.00000 0.707107 1 1 +0.577350 -0.577350 0.577350 1 1 +0.00000 -0.707107 0.707107 1 1 + + +0.00000 0.00000 1.00000 1 1 +0.00000 0.707107 0.707107 1 1 +0.577350 0.577350 0.577350 1 1 +0.707107 0.00000 0.707107 1 1 +0.00000 0.00000 1.00000 1 1 + + +-0.577350 -0.577350 -0.577350 1 1 +-0.707107 0.00000 -0.707107 1 1 +-1.00000 0.00000 0.00000 1 1 +-0.707107 -0.707107 0.00000 1 1 +-0.577350 -0.577350 -0.577350 1 1 + + +-0.707107 0.00000 -0.707107 1 1 +-0.577350 0.577350 -0.577350 1 1 +-0.707107 0.707107 0.00000 1 1 +-1.00000 0.00000 0.00000 1 1 +-0.707107 0.00000 -0.707107 1 1 + + +-0.707107 -0.707107 0.00000 1 1 +-1.00000 0.00000 0.00000 1 1 +-0.707107 0.00000 0.707107 1 1 +-0.577350 -0.577350 0.577350 1 1 +-0.707107 -0.707107 0.00000 1 1 + + +-1.00000 0.00000 0.00000 1 1 +-0.707107 0.707107 0.00000 1 1 +-0.577350 0.577350 0.577350 1 1 +-0.707107 0.00000 0.707107 1 1 +-1.00000 0.00000 0.00000 1 1 + + +-0.577350 -0.577350 -0.577350 1 1 +-0.707107 -0.707107 0.00000 1 1 +0.00000 -1.00000 0.00000 1 1 +0.00000 -0.707107 -0.707107 1 1 +-0.577350 -0.577350 -0.577350 1 1 + + +-0.707107 -0.707107 0.00000 1 1 +-0.577350 -0.577350 0.577350 1 1 +0.00000 -0.707107 0.707107 1 1 +0.00000 -1.00000 0.00000 1 1 +-0.707107 -0.707107 0.00000 1 1 + + +0.00000 -0.707107 -0.707107 1 1 +0.00000 -1.00000 0.00000 1 1 +0.707107 -0.707107 0.00000 1 1 +0.577350 -0.577350 -0.577350 1 1 +0.00000 -0.707107 -0.707107 1 1 + + +0.00000 -1.00000 0.00000 1 1 +0.00000 -0.707107 0.707107 1 1 +0.577350 -0.577350 0.577350 1 1 +0.707107 -0.707107 0.00000 1 1 +0.00000 -1.00000 0.00000 1 1 + + +-0.577350 0.577350 -0.577350 1 1 +0.00000 0.707107 -0.707107 1 1 +0.00000 1.00000 0.00000 1 1 +-0.707107 0.707107 0.00000 1 1 +-0.577350 0.577350 -0.577350 1 1 + + +0.00000 0.707107 -0.707107 1 1 +0.577350 0.577350 -0.577350 1 1 +0.707107 0.707107 0.00000 1 1 +0.00000 1.00000 0.00000 1 1 +0.00000 0.707107 -0.707107 1 1 + + +-0.707107 0.707107 0.00000 1 1 +0.00000 1.00000 0.00000 1 1 +0.00000 0.707107 0.707107 1 1 +-0.577350 0.577350 0.577350 1 1 +-0.707107 0.707107 0.00000 1 1 + + +0.00000 1.00000 0.00000 1 1 +0.707107 0.707107 0.00000 1 1 +0.577350 0.577350 0.577350 1 1 +0.00000 0.707107 0.707107 1 1 +0.00000 1.00000 0.00000 1 1 + + +DEAL::Surface cell: 1.0 with vertices: +DEAL:: 0.577350 -0.577350 -0.577350 +DEAL:: 0.707107 -0.707107 0.00000 +DEAL:: 0.707107 0.00000 -0.707107 +DEAL:: 1.00000 0.00000 0.00000 +DEAL::Volume face: 80 with vertices: +DEAL:: 0.577350 -0.577350 -0.577350 +DEAL:: 0.707107 -0.707107 0.00000 +DEAL:: 0.707107 0.00000 -0.707107 +DEAL:: 1.00000 0.00000 0.00000 +DEAL::Surface cell: 1.1 with vertices: +DEAL:: 0.707107 -0.707107 0.00000 +DEAL:: 0.577350 -0.577350 0.577350 +DEAL:: 1.00000 0.00000 0.00000 +DEAL:: 0.707107 0.00000 0.707107 +DEAL::Volume face: 81 with vertices: +DEAL:: 0.707107 -0.707107 0.00000 +DEAL:: 0.577350 -0.577350 0.577350 +DEAL:: 1.00000 0.00000 0.00000 +DEAL:: 0.707107 0.00000 0.707107 +DEAL::Surface cell: 1.2 with vertices: +DEAL:: 0.707107 0.00000 -0.707107 +DEAL:: 1.00000 0.00000 0.00000 +DEAL:: 0.577350 0.577350 -0.577350 +DEAL:: 0.707107 0.707107 0.00000 +DEAL::Volume face: 82 with vertices: +DEAL:: 0.707107 0.00000 -0.707107 +DEAL:: 1.00000 0.00000 0.00000 +DEAL:: 0.577350 0.577350 -0.577350 +DEAL:: 0.707107 0.707107 0.00000 +DEAL::Surface cell: 1.3 with vertices: +DEAL:: 1.00000 0.00000 0.00000 +DEAL:: 0.707107 0.00000 0.707107 +DEAL:: 0.707107 0.707107 0.00000 +DEAL:: 0.577350 0.577350 0.577350 +DEAL::Volume face: 83 with vertices: +DEAL:: 1.00000 0.00000 0.00000 +DEAL:: 0.707107 0.00000 0.707107 +DEAL:: 0.707107 0.707107 0.00000 +DEAL:: 0.577350 0.577350 0.577350 +DEAL::Surface cell: 1.4 with vertices: +DEAL:: -0.577350 -0.577350 0.577350 +DEAL:: -0.707107 0.00000 0.707107 +DEAL:: 0.00000 -0.707107 0.707107 +DEAL:: 0.00000 0.00000 1.00000 +DEAL::Volume face: 92 with vertices: +DEAL:: -0.577350 -0.577350 0.577350 +DEAL:: -0.707107 0.00000 0.707107 +DEAL:: 0.00000 -0.707107 0.707107 +DEAL:: 0.00000 0.00000 1.00000 +DEAL::Surface cell: 1.5 with vertices: +DEAL:: -0.707107 0.00000 0.707107 +DEAL:: -0.577350 0.577350 0.577350 +DEAL:: 0.00000 0.00000 1.00000 +DEAL:: 0.00000 0.707107 0.707107 +DEAL::Volume face: 93 with vertices: +DEAL:: -0.707107 0.00000 0.707107 +DEAL:: -0.577350 0.577350 0.577350 +DEAL:: 0.00000 0.00000 1.00000 +DEAL:: 0.00000 0.707107 0.707107 +DEAL::Surface cell: 1.6 with vertices: +DEAL:: 0.00000 -0.707107 0.707107 +DEAL:: 0.00000 0.00000 1.00000 +DEAL:: 0.577350 -0.577350 0.577350 +DEAL:: 0.707107 0.00000 0.707107 +DEAL::Volume face: 94 with vertices: +DEAL:: 0.00000 -0.707107 0.707107 +DEAL:: 0.00000 0.00000 1.00000 +DEAL:: 0.577350 -0.577350 0.577350 +DEAL:: 0.707107 0.00000 0.707107 +DEAL::Surface cell: 1.7 with vertices: +DEAL:: 0.00000 0.00000 1.00000 +DEAL:: 0.00000 0.707107 0.707107 +DEAL:: 0.707107 0.00000 0.707107 +DEAL:: 0.577350 0.577350 0.577350 +DEAL::Volume face: 95 with vertices: +DEAL:: 0.00000 0.00000 1.00000 +DEAL:: 0.00000 0.707107 0.707107 +DEAL:: 0.707107 0.00000 0.707107 +DEAL:: 0.577350 0.577350 0.577350 +DEAL::Surface cell: 1.8 with vertices: +DEAL:: -0.577350 -0.577350 -0.577350 +DEAL:: -0.707107 0.00000 -0.707107 +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: -1.00000 0.00000 0.00000 +DEAL::Volume face: 64 with vertices: +DEAL:: -0.577350 -0.577350 -0.577350 +DEAL:: -0.707107 0.00000 -0.707107 +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: -1.00000 0.00000 0.00000 +DEAL::Surface cell: 1.9 with vertices: +DEAL:: -0.707107 0.00000 -0.707107 +DEAL:: -0.577350 0.577350 -0.577350 +DEAL:: -1.00000 0.00000 0.00000 +DEAL:: -0.707107 0.707107 0.00000 +DEAL::Volume face: 65 with vertices: +DEAL:: -0.707107 0.00000 -0.707107 +DEAL:: -0.577350 0.577350 -0.577350 +DEAL:: -1.00000 0.00000 0.00000 +DEAL:: -0.707107 0.707107 0.00000 +DEAL::Surface cell: 1.10 with vertices: +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: -1.00000 0.00000 0.00000 +DEAL:: -0.577350 -0.577350 0.577350 +DEAL:: -0.707107 0.00000 0.707107 +DEAL::Volume face: 66 with vertices: +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: -1.00000 0.00000 0.00000 +DEAL:: -0.577350 -0.577350 0.577350 +DEAL:: -0.707107 0.00000 0.707107 +DEAL::Surface cell: 1.11 with vertices: +DEAL:: -1.00000 0.00000 0.00000 +DEAL:: -0.707107 0.707107 0.00000 +DEAL:: -0.707107 0.00000 0.707107 +DEAL:: -0.577350 0.577350 0.577350 +DEAL::Volume face: 67 with vertices: +DEAL:: -1.00000 0.00000 0.00000 +DEAL:: -0.707107 0.707107 0.00000 +DEAL:: -0.707107 0.00000 0.707107 +DEAL:: -0.577350 0.577350 0.577350 +DEAL::Surface cell: 1.12 with vertices: +DEAL:: -0.577350 -0.577350 -0.577350 +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: 0.00000 -0.707107 -0.707107 +DEAL:: 0.00000 -1.00000 0.00000 +DEAL::Volume face: 60 with vertices: +DEAL:: -0.577350 -0.577350 -0.577350 +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: 0.00000 -0.707107 -0.707107 +DEAL:: 0.00000 -1.00000 0.00000 +DEAL::Surface cell: 1.13 with vertices: +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: -0.577350 -0.577350 0.577350 +DEAL:: 0.00000 -1.00000 0.00000 +DEAL:: 0.00000 -0.707107 0.707107 +DEAL::Volume face: 61 with vertices: +DEAL:: -0.707107 -0.707107 0.00000 +DEAL:: -0.577350 -0.577350 0.577350 +DEAL:: 0.00000 -1.00000 0.00000 +DEAL:: 0.00000 -0.707107 0.707107 +DEAL::Surface cell: 1.14 with vertices: +DEAL:: 0.00000 -0.707107 -0.707107 +DEAL:: 0.00000 -1.00000 0.00000 +DEAL:: 0.577350 -0.577350 -0.577350 +DEAL:: 0.707107 -0.707107 0.00000 +DEAL::Volume face: 62 with vertices: +DEAL:: 0.00000 -0.707107 -0.707107 +DEAL:: 0.00000 -1.00000 0.00000 +DEAL:: 0.577350 -0.577350 -0.577350 +DEAL:: 0.707107 -0.707107 0.00000 +DEAL::Surface cell: 1.15 with vertices: +DEAL:: 0.00000 -1.00000 0.00000 +DEAL:: 0.00000 -0.707107 0.707107 +DEAL:: 0.707107 -0.707107 0.00000 +DEAL:: 0.577350 -0.577350 0.577350 +DEAL::Volume face: 63 with vertices: +DEAL:: 0.00000 -1.00000 0.00000 +DEAL:: 0.00000 -0.707107 0.707107 +DEAL:: 0.707107 -0.707107 0.00000 +DEAL:: 0.577350 -0.577350 0.577350 +DEAL::Surface cell: 1.16 with vertices: +DEAL:: -0.577350 0.577350 -0.577350 +DEAL:: 0.00000 0.707107 -0.707107 +DEAL:: -0.707107 0.707107 0.00000 +DEAL:: 0.00000 1.00000 0.00000 +DEAL::Volume face: 108 with vertices: +DEAL:: -0.577350 0.577350 -0.577350 +DEAL:: 0.00000 0.707107 -0.707107 +DEAL:: -0.707107 0.707107 0.00000 +DEAL:: 0.00000 1.00000 0.00000 +DEAL::Surface cell: 1.17 with vertices: +DEAL:: 0.00000 0.707107 -0.707107 +DEAL:: 0.577350 0.577350 -0.577350 +DEAL:: 0.00000 1.00000 0.00000 +DEAL:: 0.707107 0.707107 0.00000 +DEAL::Volume face: 109 with vertices: +DEAL:: 0.00000 0.707107 -0.707107 +DEAL:: 0.577350 0.577350 -0.577350 +DEAL:: 0.00000 1.00000 0.00000 +DEAL:: 0.707107 0.707107 0.00000 +DEAL::Surface cell: 1.18 with vertices: +DEAL:: -0.707107 0.707107 0.00000 +DEAL:: 0.00000 1.00000 0.00000 +DEAL:: -0.577350 0.577350 0.577350 +DEAL:: 0.00000 0.707107 0.707107 +DEAL::Volume face: 110 with vertices: +DEAL:: -0.707107 0.707107 0.00000 +DEAL:: 0.00000 1.00000 0.00000 +DEAL:: -0.577350 0.577350 0.577350 +DEAL:: 0.00000 0.707107 0.707107 +DEAL::Surface cell: 1.19 with vertices: +DEAL:: 0.00000 1.00000 0.00000 +DEAL:: 0.707107 0.707107 0.00000 +DEAL:: 0.00000 0.707107 0.707107 +DEAL:: 0.577350 0.577350 0.577350 +DEAL::Volume face: 111 with vertices: +DEAL:: 0.00000 1.00000 0.00000 +DEAL:: 0.707107 0.707107 0.00000 +DEAL:: 0.00000 0.707107 0.707107 +DEAL:: 0.577350 0.577350 0.577350 -- 2.39.5