From df9a50fb8e398509390734c7e06dad752c0f4cd0 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Fri, 17 Jul 2009 01:49:37 +0000 Subject: [PATCH] Implement the fix-up procedure also for faces. It isn't tested right now, a testcase is going to be next. git-svn-id: https://svn.dealii.org/trunk@19110 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/grid/grid_tools.cc | 34 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/deal.II/deal.II/source/grid/grid_tools.cc b/deal.II/deal.II/source/grid/grid_tools.cc index b720feba9d..7367f06b98 100644 --- a/deal.II/deal.II/source/grid/grid_tools.cc +++ b/deal.II/deal.II/source/grid/grid_tools.cc @@ -1450,6 +1450,16 @@ namespace internal // general direction double old_min_product, new_min_product; + Point parent_vertices + [GeometryInfo::vertices_per_cell]; + for (unsigned int i=0; i::vertices_per_cell; ++i) + parent_vertices[i] = object->vertex(i); + + Tensor parent_alternating_forms + [GeometryInfo::vertices_per_cell]; + GeometryInfo::alternating_form_at_vertices (parent_vertices, + parent_alternating_forms); + for (unsigned int test=0; test<2; ++test) { Point child_vertices @@ -1471,19 +1481,21 @@ namespace internal child_vertices[c][GeometryInfo::max_children_per_cell-c-1] = object_mid_point; - Tensor child_determinants + Tensor child_alternating_forms [GeometryInfo::max_children_per_cell] [GeometryInfo::vertices_per_cell]; for (unsigned int c=0; cn_children(); ++c) GeometryInfo::alternating_form_at_vertices (child_vertices[c], - child_determinants[c]); + child_alternating_forms[c]); - double min = child_determinants[0][0]; + double min = child_alternating_forms[0][0] * parent_alternating_forms[0]; for (unsigned int c=0; cn_children(); ++c) for (unsigned int i=0; i::vertices_per_cell; ++i) - min = std::min (min, - child_determinants[c][i]); + for (unsigned int j=0; j::vertices_per_cell; ++j) + min = std::min (min, + child_alternating_forms[c][i] * + parent_alternating_forms[j]); if (test == 0) old_min_product = min; @@ -1570,12 +1582,20 @@ namespace internal } } - +#if deal_II_dimension == 1 template void fix_up_faces (const typename dealii::Triangulation<1,spacedim>::cell_iterator &) { // nothing to do for the faces of cells in 1d } + + + template + void fix_up_faces (const dealii::Triangulation<1,1>::cell_iterator &) + { + // nothing to do for the faces of cells in 1d + } +#endif } } } @@ -1599,7 +1619,7 @@ fix_up_distorted_child_cells (const typename Triangulation::Distor const typename Triangulation::cell_iterator cell = *cell_ptr; -// internal::GridTools::FixUpDistortedChildCells::fix_up_faces (cell); + internal::GridTools::FixUpDistortedChildCells::fix_up_faces (cell); if (! internal::GridTools::FixUpDistortedChildCells::fix_up_object (cell)) unfixable_subset.distorted_cells.push_back (cell); -- 2.39.5