From 43d25a33df644d0a66960be17e4a02aaeed57d72 Mon Sep 17 00:00:00 2001 From: David Wells Date: Sun, 9 Mar 2025 12:55:41 -0400 Subject: [PATCH] Triangulation: don't assume the default line orientation is 1. --- source/grid/tria.cc | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/source/grid/tria.cc b/source/grid/tria.cc index c100085ca3..c96f261812 100644 --- a/source/grid/tria.cc +++ b/source/grid/tria.cc @@ -15999,16 +15999,21 @@ void Triangulation::reset_cell_vertex_indices_cache() const std::array line_orientations{{face_iter->line_orientation(0), face_iter->line_orientation(1)}}; - std::array raw_vertex_indices{ - {face_iter->line(0)->vertex_index(1 - line_orientations[0]), - face_iter->line(1)->vertex_index(1 - line_orientations[1]), - face_iter->line(0)->vertex_index(line_orientations[0]), - face_iter->line(1)->vertex_index(line_orientations[1])}}; + const std::array line_vertex_indices{ + {line_orientations[0] == + numbers::default_geometric_orientation, + line_orientations[1] == + numbers::default_geometric_orientation}}; + const std::array raw_vertex_indices{ + {face_iter->line(0)->vertex_index(1 - line_vertex_indices[0]), + face_iter->line(1)->vertex_index(1 - line_vertex_indices[1]), + face_iter->line(0)->vertex_index(line_vertex_indices[0]), + face_iter->line(1)->vertex_index(line_vertex_indices[1])}}; const auto combined_orientation = levels[l]->face_orientations.get_combined_orientation( cell->index() * ReferenceCells::max_n_faces() + face); - std::array vertex_order{ + const std::array vertex_order{ {ref_cell.standard_to_real_face_vertex(0, face, combined_orientation), @@ -16030,11 +16035,15 @@ void Triangulation::reset_cell_vertex_indices_cache() const std::array line_orientations{ {cell->line_orientation(0), cell->line_orientation(1)}}; - std::array raw_vertex_indices{ - {cell->line(0)->vertex_index(1 - line_orientations[0]), - cell->line(1)->vertex_index(1 - line_orientations[1]), - cell->line(0)->vertex_index(line_orientations[0]), - cell->line(1)->vertex_index(line_orientations[1])}}; + const std::array line_vertex_indices{ + {line_orientations[0] == numbers::default_geometric_orientation, + line_orientations[1] == + numbers::default_geometric_orientation}}; + const std::array raw_vertex_indices{ + {cell->line(0)->vertex_index(1 - line_vertex_indices[0]), + cell->line(1)->vertex_index(1 - line_vertex_indices[1]), + cell->line(0)->vertex_index(line_vertex_indices[0]), + cell->line(1)->vertex_index(line_vertex_indices[1])}}; for (unsigned int i = 0; i < 4; ++i) cache[my_index + i] = raw_vertex_indices[i]; } -- 2.39.5