From 1a09f9a9dd39b2cff7936e22c6553d28a6752aa0 Mon Sep 17 00:00:00 2001 From: David Wells Date: Fri, 10 Jan 2025 12:34:47 -0500 Subject: [PATCH] max_n_vertices() etc: move up to ReferenceCells. This makes it clearer that these values do not depend on the current cell. --- include/deal.II/fe/mapping.h | 4 +- include/deal.II/fe/mapping_fe_field.h | 2 +- include/deal.II/fe/mapping_q1_eulerian.h | 2 +- include/deal.II/fe/mapping_q_cache.h | 2 +- include/deal.II/fe/mapping_q_eulerian.h | 2 +- include/deal.II/grid/reference_cell.h | 136 +++++++++--------- include/deal.II/grid/tria_accessor.h | 49 +++---- .../deal.II/matrix_free/fe_evaluation_data.h | 2 +- .../matrix_free/mapping_info.templates.h | 42 +++--- include/deal.II/matrix_free/matrix_free.h | 2 +- .../matrix_free/matrix_free.templates.h | 2 +- source/fe/mapping.cc | 8 +- source/fe/mapping_fe_field.cc | 4 +- source/fe/mapping_q.cc | 2 +- source/fe/mapping_q1_eulerian.cc | 4 +- source/fe/mapping_q_cache.cc | 4 +- source/fe/mapping_q_eulerian.cc | 4 +- source/grid/grid_in.cc | 6 +- source/grid/tria.cc | 30 ++-- source/grid/tria_accessor.cc | 12 +- 20 files changed, 162 insertions(+), 157 deletions(-) diff --git a/include/deal.II/fe/mapping.h b/include/deal.II/fe/mapping.h index 7681b7765d..2d27ec2f5b 100644 --- a/include/deal.II/fe/mapping.h +++ b/include/deal.II/fe/mapping.h @@ -350,7 +350,7 @@ public: */ virtual boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif @@ -368,7 +368,7 @@ public: */ boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/include/deal.II/fe/mapping_fe_field.h b/include/deal.II/fe/mapping_fe_field.h index 1926de6bb7..b1cb2f7638 100644 --- a/include/deal.II/fe/mapping_fe_field.h +++ b/include/deal.II/fe/mapping_fe_field.h @@ -171,7 +171,7 @@ public: */ virtual boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/include/deal.II/fe/mapping_q1_eulerian.h b/include/deal.II/fe/mapping_q1_eulerian.h index 7810f86ee9..9275b36492 100644 --- a/include/deal.II/fe/mapping_q1_eulerian.h +++ b/include/deal.II/fe/mapping_q1_eulerian.h @@ -119,7 +119,7 @@ public: */ virtual boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/include/deal.II/fe/mapping_q_cache.h b/include/deal.II/fe/mapping_q_cache.h index a7a6398af7..d434a4d00e 100644 --- a/include/deal.II/fe/mapping_q_cache.h +++ b/include/deal.II/fe/mapping_q_cache.h @@ -196,7 +196,7 @@ public: */ virtual boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/include/deal.II/fe/mapping_q_eulerian.h b/include/deal.II/fe/mapping_q_eulerian.h index f6355b8673..b04a5d2845 100644 --- a/include/deal.II/fe/mapping_q_eulerian.h +++ b/include/deal.II/fe/mapping_q_eulerian.h @@ -123,7 +123,7 @@ public: */ virtual boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/include/deal.II/grid/reference_cell.h b/include/deal.II/grid/reference_cell.h index 98b363a0cf..6136bb4367 100644 --- a/include/deal.II/grid/reference_cell.h +++ b/include/deal.II/grid/reference_cell.h @@ -285,17 +285,6 @@ public: unsigned int n_vertices() const; - /** - * Return the maximum number of vertices an object of dimension `structdim` - * can have. This is always the number of vertices of a - * `structdim`-dimensional hypercube. - * - * @see ReferenceCell::max_n_faces() - */ - template - static constexpr unsigned int - max_n_vertices(); - /** * Return an object that can be thought of as an array containing all * indices from zero to n_vertices(). @@ -322,17 +311,6 @@ public: unsigned int n_lines() const; - /** - * Return the maximum number of lines an object of dimension `structdim` can - * have. This is always the number of lines of a `structdim`-dimensional - * hypercube. - * - * @see ReferenceCell::max_n_faces() - */ - template - static constexpr unsigned int - max_n_lines(); - /** * Return an object that can be thought of as an array containing all * indices from zero to n_lines(). @@ -348,25 +326,6 @@ public: unsigned int n_faces() const; - /** - * Return the maximum number of faces an object of dimension `structdim` can - * have. This is always the number of faces of a `structdim`-dimensional - * hypercube. - * - * @note The primary use case of this and the other maxima functions is to - * enable simple array indexing to per-face data by cell index and face - * number, e.g., - * - * @code - * cell->index() * ReferenceCell::max_n_faces() + face_no; - * @endcode - * - * is a unique index to the `face_no`th face of the current cell. - */ - template - static constexpr unsigned int - max_n_faces(); - /** * Return an object that can be thought of as an array containing all * indices from zero to n_faces(). @@ -1157,6 +1116,47 @@ namespace ReferenceCells template constexpr const ReferenceCell & get_hypercube(); + + /** + * Return the maximum number of vertices an object of dimension `structdim` + * can have. This is always the number of vertices of a + * `structdim`-dimensional hypercube. + * + * @see ReferenceCells::max_n_faces() + */ + template + constexpr unsigned int + max_n_vertices(); + + /** + * Return the maximum number of lines an object of dimension `structdim` can + * have. This is always the number of lines of a `structdim`-dimensional + * hypercube. + * + * @see ReferenceCells::max_n_faces() + */ + template + constexpr unsigned int + max_n_lines(); + + /** + * Return the maximum number of faces an object of dimension `structdim` can + * have. This is always the number of faces of a `structdim`-dimensional + * hypercube. + * + * @note The primary use case of this and the other maxima functions is to + * enable simple array indexing to per-face data by cell index and face + * number, e.g., + * + * @code + * cell->index() * ReferenceCells::max_n_faces() + face_no; + * @endcode + * + * is a unique index to the `face_no`th face of the current cell. + */ + template + constexpr unsigned int + max_n_faces(); } // namespace ReferenceCells @@ -1602,15 +1602,6 @@ ReferenceCell::n_vertices() const -template -inline constexpr unsigned int -ReferenceCell::max_n_vertices() -{ - return GeometryInfo::vertices_per_cell; -} - - - inline unsigned int ReferenceCell::n_lines() const { @@ -1641,15 +1632,6 @@ ReferenceCell::n_lines() const -template -inline constexpr unsigned int -ReferenceCell::max_n_lines() -{ - return GeometryInfo::lines_per_cell; -} - - - template Point ReferenceCell::vertex(const unsigned int v) const @@ -1800,15 +1782,6 @@ ReferenceCell::n_faces() const -template -inline constexpr unsigned int -ReferenceCell::max_n_faces() -{ - return GeometryInfo::faces_per_cell; -} - - - inline std_cxx20::ranges::iota_view ReferenceCell::face_indices() const { @@ -2639,6 +2612,33 @@ namespace ReferenceCells } return ReferenceCells::Invalid; } + + + + template + inline constexpr unsigned int + max_n_vertices() + { + return GeometryInfo::vertices_per_cell; + } + + + + template + inline constexpr unsigned int + max_n_lines() + { + return GeometryInfo::lines_per_cell; + } + + + + template + inline constexpr unsigned int + max_n_faces() + { + return GeometryInfo::faces_per_cell; + } } // namespace ReferenceCells diff --git a/include/deal.II/grid/tria_accessor.h b/include/deal.II/grid/tria_accessor.h index 6807698128..2d54255190 100644 --- a/include/deal.II/grid/tria_accessor.h +++ b/include/deal.II/grid/tria_accessor.h @@ -3241,7 +3241,7 @@ public: boost::container::small_vector< TriaIterator>, #ifndef _MSC_VER // MSVC prior to 2022 cannot use a constexpr function this way - ReferenceCell::max_n_faces() + ReferenceCells::max_n_faces() #else GeometryInfo::faces_per_cell #endif @@ -4919,7 +4919,7 @@ namespace internal { return accessor.tria->levels[accessor.present_level] ->cells - .cells[accessor.present_index * ReferenceCell::max_n_faces<3>() + i]; + .cells[accessor.present_index * ReferenceCells::max_n_faces<3>() + i]; } @@ -4958,7 +4958,8 @@ namespace internal if (dim != 1) accessor.tria->levels[accessor.present_level] ->face_orientations.set_combined_orientation( - accessor.present_index * ReferenceCell::max_n_faces() + face, + accessor.present_index * ReferenceCells::max_n_faces() + + face, combined_orientation); } @@ -5009,7 +5010,7 @@ namespace internal cell.get_triangulation() .levels[cell.level()] ->face_orientations.get_combined_orientation( - cell.index() * ReferenceCell::max_n_faces() + f); + cell.index() * ReferenceCells::max_n_faces() + f); // It might seem superfluous to spell out the four indices // that get later consumed by a for loop over these four @@ -5033,7 +5034,7 @@ namespace internal cell.get_triangulation() .levels[cell.level()] ->face_orientations.get_combined_orientation( - cell.index() * ReferenceCell::max_n_faces() + f); + cell.index() * ReferenceCells::max_n_faces() + f); const std::array my_indices{ {ref_cell.standard_to_real_face_line(0, f, orientation), ref_cell.standard_to_real_face_line(1, f, orientation)}}; @@ -5130,7 +5131,7 @@ namespace internal cell.get_triangulation() .levels[cell.level()] ->face_orientations.get_combined_orientation( - cell.index() * ReferenceCell::max_n_faces() + f); + cell.index() * ReferenceCells::max_n_faces() + f); // It might seem superfluous to spell out the four indices and // orientations that get later consumed by a for loop over @@ -5165,7 +5166,7 @@ namespace internal cell.get_triangulation() .levels[cell.level()] ->face_orientations.get_combined_orientation( - cell.index() * ReferenceCell::max_n_faces<3>() + f); + cell.index() * ReferenceCells::max_n_faces<3>() + f); const std::array my_indices{ {ref_cell.standard_to_real_face_line(0, f, orientation), ref_cell.standard_to_real_face_line(1, f, orientation)}}; @@ -5305,14 +5306,14 @@ TriaAccessor::vertex_index( // dim branch) so that we can get line vertex indices when setting up the // cell vertex index cache return this->objects() - .cells[this->present_index * ReferenceCell::max_n_faces<1>() + corner]; + .cells[this->present_index * ReferenceCells::max_n_faces<1>() + corner]; } else if constexpr (structdim == dim) { // This branch should only be used after the cell vertex index cache is // set up const auto my_index = static_cast(this->present_index) * - ReferenceCell::max_n_vertices(); + ReferenceCells::max_n_vertices(); AssertIndexRange(my_index + corner, this->tria->levels[this->present_level] ->cell_vertex_indices_cache.size()); @@ -5380,7 +5381,7 @@ TriaAccessor::line_index(const unsigned int i) const if constexpr (structdim == 2) { return this->objects() - .cells[this->present_index * ReferenceCell::max_n_faces<2>() + i]; + .cells[this->present_index * ReferenceCells::max_n_faces<2>() + i]; } else if constexpr (structdim == 3) { @@ -5447,12 +5448,12 @@ TriaAccessor::combined_face_orientation( else return this->tria->levels[this->present_level] ->face_orientations.get_orientation( - this->present_index * ReferenceCell::max_n_faces() + face); + this->present_index * ReferenceCells::max_n_faces() + face); } else return this->tria->levels[this->present_level] ->face_orientations.get_combined_orientation( - this->present_index * ReferenceCell::max_n_faces() + face); + this->present_index * ReferenceCells::max_n_faces() + face); } @@ -5479,7 +5480,7 @@ TriaAccessor::face_orientation( else return this->tria->levels[this->present_level] ->face_orientations.get_orientation( - this->present_index * ReferenceCell::max_n_faces() + face); + this->present_index * ReferenceCells::max_n_faces() + face); } @@ -5499,7 +5500,7 @@ TriaAccessor::face_flip(const unsigned int face) const if constexpr (structdim == 3) return this->tria->levels[this->present_level]->face_orientations.get_flip( - this->present_index * ReferenceCell::max_n_faces() + face); + this->present_index * ReferenceCells::max_n_faces() + face); else // In 1d and 2d, face_flip is always false as faces can only be // 'flipped' in 3d. @@ -5524,7 +5525,7 @@ TriaAccessor::face_rotation( if constexpr (structdim == 3) return this->tria->levels[this->present_level] ->face_orientations.get_rotation( - this->present_index * ReferenceCell::max_n_faces() + face); + this->present_index * ReferenceCells::max_n_faces() + face); else // In 1d and 2d, face_rotation is always false as faces can only be // 'rotated' in 3d. @@ -5562,11 +5563,11 @@ TriaAccessor::line_orientation( else if constexpr (structdim == 2 && dim == 3) { // line orientations in 3d are stored in their own array - Assert(this->present_index * ReferenceCell::max_n_lines<2>() + line < + Assert(this->present_index * ReferenceCells::max_n_lines<2>() + line < this->tria->faces->quads_line_orientations.size(), ExcInternalError()); return this->tria->faces->quads_line_orientations - [this->present_index * ReferenceCell::max_n_lines<2>() + line]; + [this->present_index * ReferenceCells::max_n_lines<2>() + line]; } else if constexpr (structdim == 3 && dim == 3) { @@ -5620,11 +5621,11 @@ TriaAccessor::set_line_orientation( // We set line orientations per face, not per cell, so this only works for // faces in 3d Assert(structdim == 2, ExcNotImplemented()); - Assert(this->present_index * ReferenceCell::max_n_lines<2>() + line < + Assert(this->present_index * ReferenceCells::max_n_lines<2>() + line < this->tria->faces->quads_line_orientations.size(), ExcInternalError()); this->tria->faces->quads_line_orientations - [this->present_index * ReferenceCell::max_n_lines<2>() + line] = value; + [this->present_index * ReferenceCells::max_n_lines<2>() + line] = value; } } @@ -6347,7 +6348,7 @@ TriaAccessor::diameter() const { boost::container::small_vector, # ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() # else GeometryInfo::vertices_per_cell # endif @@ -7666,7 +7667,7 @@ template inline boost::container::small_vector< TriaIterator>, # ifndef _MSC_VER - ReferenceCell::max_n_faces() + ReferenceCells::max_n_faces() # else GeometryInfo::faces_per_cell # endif @@ -7676,7 +7677,7 @@ CellAccessor::face_iterators() const boost::container::small_vector< TriaIterator>, # ifndef _MSC_VER - ReferenceCell::max_n_faces() + ReferenceCells::max_n_faces() # else GeometryInfo::faces_per_cell # endif @@ -7719,7 +7720,7 @@ CellAccessor::neighbor_index(const unsigned int face_no) const { AssertIndexRange(face_no, this->n_faces()); return this->tria->levels[this->present_level] - ->neighbors[this->present_index * ReferenceCell::max_n_faces() + + ->neighbors[this->present_index * ReferenceCells::max_n_faces() + face_no] .second; } @@ -7732,7 +7733,7 @@ CellAccessor::neighbor_level(const unsigned int face_no) const { AssertIndexRange(face_no, this->n_faces()); return this->tria->levels[this->present_level] - ->neighbors[this->present_index * ReferenceCell::max_n_faces() + + ->neighbors[this->present_index * ReferenceCells::max_n_faces() + face_no] .first; } diff --git a/include/deal.II/matrix_free/fe_evaluation_data.h b/include/deal.II/matrix_free/fe_evaluation_data.h index f4e3d2d806..edad29b521 100644 --- a/include/deal.II/matrix_free/fe_evaluation_data.h +++ b/include/deal.II/matrix_free/fe_evaluation_data.h @@ -1544,7 +1544,7 @@ FEEvaluationData::get_current_cell_index() const { if (is_face && dof_access_index == internal::MatrixFreeFunctions::DoFInfo::dof_access_cell) - return cell * ReferenceCell::max_n_faces() + face_numbers[0]; + return cell * ReferenceCells::max_n_faces() + face_numbers[0]; else return cell; } diff --git a/include/deal.II/matrix_free/mapping_info.templates.h b/include/deal.II/matrix_free/mapping_info.templates.h index 9b3c04d3b6..578dce85c8 100644 --- a/include/deal.II/matrix_free/mapping_info.templates.h +++ b/include/deal.II/matrix_free/mapping_info.templates.h @@ -3099,10 +3099,10 @@ namespace internal // counting AssertDimension(cell_type.size(), cells.size() / n_lanes); face_data_by_cells[my_q].data_index_offsets.resize( - cell_type.size() * ReferenceCell::max_n_faces()); + cell_type.size() * ReferenceCells::max_n_faces()); if (update_flags & update_quadrature_points) face_data_by_cells[my_q].quadrature_point_offsets.resize( - cell_type.size() * ReferenceCell::max_n_faces()); + cell_type.size() * ReferenceCells::max_n_faces()); std::size_t storage_length = 0; for (unsigned int i = 0; i < cell_type.size(); ++i) for (const unsigned int face : GeometryInfo::face_indices()) @@ -3110,54 +3110,54 @@ namespace internal if (faces_by_cells_type[i][face] <= affine) { face_data_by_cells[my_q].data_index_offsets - [i * ReferenceCell::max_n_faces() + face] = + [i * ReferenceCells::max_n_faces() + face] = storage_length; ++storage_length; } else { face_data_by_cells[my_q].data_index_offsets - [i * ReferenceCell::max_n_faces() + face] = + [i * ReferenceCells::max_n_faces() + face] = storage_length; storage_length += face_data_by_cells[my_q].descriptor[0].n_q_points; } if (update_flags & update_quadrature_points) face_data_by_cells[my_q].quadrature_point_offsets - [i * ReferenceCell::max_n_faces() + face] = - (i * ReferenceCell::max_n_faces() + face) * + [i * ReferenceCells::max_n_faces() + face] = + (i * ReferenceCells::max_n_faces() + face) * face_data_by_cells[my_q].descriptor[0].n_q_points; } face_data_by_cells[my_q].JxW_values.resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); face_data_by_cells[my_q].jacobians[0].resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); face_data_by_cells[my_q].jacobians[1].resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); if (update_flags & update_normal_vectors) face_data_by_cells[my_q].normal_vectors.resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); if (update_flags & update_normal_vectors && update_flags & update_jacobians) face_data_by_cells[my_q].normals_times_jacobians[0].resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); if (update_flags & update_normal_vectors && update_flags & update_jacobians) face_data_by_cells[my_q].normals_times_jacobians[1].resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); if (update_flags & update_jacobian_grads) { face_data_by_cells[my_q].jacobian_gradients[0].resize_fast( - storage_length * ReferenceCell::max_n_faces()); + storage_length * ReferenceCells::max_n_faces()); face_data_by_cells[my_q] .jacobian_gradients_non_inverse[0] .resize_fast(storage_length * - ReferenceCell::max_n_faces()); + ReferenceCells::max_n_faces()); } if (update_flags & update_quadrature_points) face_data_by_cells[my_q].quadrature_points.resize_fast( - cell_type.size() * ReferenceCell::max_n_faces() * + cell_type.size() * ReferenceCells::max_n_faces() * face_data_by_cells[my_q].descriptor[0].n_q_points); } @@ -3195,9 +3195,8 @@ namespace internal dealii::FEFaceValues &fe_val_neigh = *fe_face_values_neigh[my_q][fe_index]; const unsigned int offset = - face_data_by_cells[my_q] - .data_index_offsets[cell * ReferenceCell::max_n_faces() + - face]; + face_data_by_cells[my_q].data_index_offsets + [cell * ReferenceCells::max_n_faces() + face]; const GeometryType my_cell_type = faces_by_cells_type[cell][face]; @@ -3334,7 +3333,8 @@ namespace internal for (unsigned int d = 0; d < dim; ++d) face_data_by_cells[my_q].quadrature_points [face_data_by_cells[my_q].quadrature_point_offsets - [cell * ReferenceCell::max_n_faces() + face] + + [cell * ReferenceCells::max_n_faces() + + face] + q][d][v] = fe_val.quadrature_point(q)[d]; } if (update_flags & update_normal_vectors && @@ -3372,7 +3372,7 @@ namespace internal memory += cell_type.capacity() * sizeof(GeometryType); memory += face_type.capacity() * sizeof(GeometryType); memory += faces_by_cells_type.capacity() * - ReferenceCell::max_n_faces() * sizeof(GeometryType); + ReferenceCells::max_n_faces() * sizeof(GeometryType); memory += sizeof(*this); return memory; } @@ -3398,7 +3398,7 @@ namespace internal out << " Faces by cells types: "; task_info.print_memory_statistics(out, faces_by_cells_type.capacity() * - ReferenceCell::max_n_faces() * + ReferenceCells::max_n_faces() * sizeof(GeometryType)); for (unsigned int j = 0; j < cell_data.size(); ++j) diff --git a/include/deal.II/matrix_free/matrix_free.h b/include/deal.II/matrix_free/matrix_free.h index 4eecd5539a..7244e41a37 100644 --- a/include/deal.II/matrix_free/matrix_free.h +++ b/include/deal.II/matrix_free/matrix_free.h @@ -2571,7 +2571,7 @@ MatrixFree::get_faces_by_cells_boundary_id( const unsigned int face_number) const { AssertIndexRange(cell_batch_index, n_cell_batches()); - AssertIndexRange(face_number, ReferenceCell::max_n_faces()); + AssertIndexRange(face_number, ReferenceCells::max_n_faces()); Assert(face_info.cell_and_face_boundary_id.size(0) >= n_cell_batches(), ExcNotInitialized()); std::array result; diff --git a/include/deal.II/matrix_free/matrix_free.templates.h b/include/deal.II/matrix_free/matrix_free.templates.h index 23affe7c90..fd2db2c568 100644 --- a/include/deal.II/matrix_free/matrix_free.templates.h +++ b/include/deal.II/matrix_free/matrix_free.templates.h @@ -2062,7 +2062,7 @@ MatrixFree::initialize_indices( numbers::invalid_unsigned_int); face_info.cell_and_face_boundary_id.reinit( TableIndices<3>(task_info.cell_partition_data.back(), - ReferenceCell::max_n_faces(), + ReferenceCells::max_n_faces(), VectorizedArrayType::size()), true); face_info.cell_and_face_boundary_id.fill(numbers::invalid_boundary_id); diff --git a/source/fe/mapping.cc b/source/fe/mapping.cc index a6386f89d4..5bf7e72eb1 100644 --- a/source/fe/mapping.cc +++ b/source/fe/mapping.cc @@ -35,7 +35,7 @@ DEAL_II_NAMESPACE_OPEN template boost::container::small_vector, # ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() # else GeometryInfo::vertices_per_cell # endif @@ -45,7 +45,7 @@ Mapping::get_vertices( { boost::container::small_vector, # ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() # else GeometryInfo::vertices_per_cell # endif @@ -62,7 +62,7 @@ Mapping::get_vertices( template boost::container::small_vector, # ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() # else GeometryInfo::vertices_per_cell # endif @@ -73,7 +73,7 @@ Mapping::get_vertices( { boost::container::small_vector, # ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() # else GeometryInfo::vertices_per_cell # endif diff --git a/source/fe/mapping_fe_field.cc b/source/fe/mapping_fe_field.cc index 58d9f8f0cb..b13539d37e 100644 --- a/source/fe/mapping_fe_field.cc +++ b/source/fe/mapping_fe_field.cc @@ -448,7 +448,7 @@ MappingFEField::is_compatible_with( template boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif @@ -491,7 +491,7 @@ MappingFEField::get_vertices( boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/source/fe/mapping_q.cc b/source/fe/mapping_q.cc index 55c2fe6aee..e838b338dd 100644 --- a/source/fe/mapping_q.cc +++ b/source/fe/mapping_q.cc @@ -643,7 +643,7 @@ MappingQ::transform_points_real_to_unit_cell( std::vector> support_points_higher_order; boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/source/fe/mapping_q1_eulerian.cc b/source/fe/mapping_q1_eulerian.cc index 79358a1ccb..a8a2076b1c 100644 --- a/source/fe/mapping_q1_eulerian.cc +++ b/source/fe/mapping_q1_eulerian.cc @@ -50,7 +50,7 @@ MappingQ1Eulerian::MappingQ1Eulerian( template boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif @@ -60,7 +60,7 @@ MappingQ1Eulerian::get_vertices( { boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/source/fe/mapping_q_cache.cc b/source/fe/mapping_q_cache.cc index 52f0bca873..353a483963 100644 --- a/source/fe/mapping_q_cache.cc +++ b/source/fe/mapping_q_cache.cc @@ -729,7 +729,7 @@ MappingQCache::compute_mapping_support_points( template boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif @@ -748,7 +748,7 @@ MappingQCache::get_vertices( const auto ptr = (*support_point_cache)[cell->level()][cell->index()].begin(); return boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/source/fe/mapping_q_eulerian.cc b/source/fe/mapping_q_eulerian.cc index 3569730fd1..9f8bec794c 100644 --- a/source/fe/mapping_q_eulerian.cc +++ b/source/fe/mapping_q_eulerian.cc @@ -100,7 +100,7 @@ MappingQEulerian::SupportQuadrature:: template boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif @@ -113,7 +113,7 @@ MappingQEulerian::get_vertices( boost::container::small_vector, #ifndef _MSC_VER - ReferenceCell::max_n_vertices() + ReferenceCells::max_n_vertices() #else GeometryInfo::vertices_per_cell #endif diff --git a/source/grid/grid_in.cc b/source/grid/grid_in.cc index 909902b64e..0d14a63839 100644 --- a/source/grid/grid_in.cc +++ b/source/grid/grid_in.cc @@ -3771,7 +3771,7 @@ namespace const long element_n = elements[side_n] - 1; const long face_n = faces[side_n] - 1; const std::size_t face_id = - element_n * ReferenceCell::max_n_faces() + face_n; + element_n * ReferenceCells::max_n_faces() + face_n; face_side_sets[face_id].push_back(side_set_id); } } @@ -3818,9 +3818,9 @@ namespace } // Record the b_or_m_id of the current face. const unsigned int local_face_n = - face_id % ReferenceCell::max_n_faces(); + face_id % ReferenceCells::max_n_faces(); const CellData &cell = - cells[face_id / ReferenceCell::max_n_faces()]; + cells[face_id / ReferenceCells::max_n_faces()]; const ReferenceCell cell_type = ReferenceCell::n_vertices_to_type(dim, cell.vertices.size()); const unsigned int deal_face_n = diff --git a/source/grid/tria.cc b/source/grid/tria.cc index 109da0ad42..79daa46b30 100644 --- a/source/grid/tria.cc +++ b/source/grid/tria.cc @@ -1837,13 +1837,13 @@ namespace switch (structdim) { case 0: - return ReferenceCell::max_n_faces<0>(); + return ReferenceCells::max_n_faces<0>(); case 1: - return ReferenceCell::max_n_faces<1>(); + return ReferenceCells::max_n_faces<1>(); case 2: - return ReferenceCell::max_n_faces<2>(); + return ReferenceCells::max_n_faces<2>(); case 3: - return ReferenceCell::max_n_faces<3>(); + return ReferenceCells::max_n_faces<3>(); default: DEAL_II_ASSERT_UNREACHABLE(); return numbers::invalid_unsigned_int; @@ -2070,7 +2070,7 @@ namespace internal { // reserve the field of the derived class tria_faces.quads_line_orientations.resize( - new_size * ReferenceCell::max_n_lines<2>(), true); + new_size * ReferenceCells::max_n_lines<2>(), true); auto &q_is_q = tria_faces.quad_is_quadrilateral; q_is_q.reserve(new_size); @@ -3267,7 +3267,7 @@ namespace internal for (unsigned int line = 0; line < n_lines; ++line) for (unsigned int i = crs.ptr[line], j = 0; i < crs.ptr[line + 1]; ++i, ++j) - lines_0.cells[line * ReferenceCell::max_n_faces<1>() + j] = + lines_0.cells[line * ReferenceCells::max_n_faces<1>() + j] = crs.col[i]; // set vertex indices } @@ -3298,7 +3298,7 @@ namespace internal { AssertIndexRange(j, reference_cell.n_lines()); // set line index - quads_0.cells[q * ReferenceCell::max_n_lines<2>() + j] = + quads_0.cells[q * ReferenceCells::max_n_lines<2>() + j] = crs.col[i]; // set line orientations @@ -3314,7 +3314,7 @@ namespace internal ReferenceCell::reversed_combined_line_orientation(), ExcInternalError()); faces.quads_line_orientations - [q * ReferenceCell::max_n_lines<2>() + j] = + [q * ReferenceCells::max_n_lines<2>() + j] = combined_orientation == ReferenceCell::default_combined_face_orientation(); } @@ -3370,18 +3370,18 @@ namespace internal { // set neighbor if not at boundary if (nei.col[i] != static_cast(-1)) - level.neighbors[cell * ReferenceCell::max_n_faces() + + level.neighbors[cell * ReferenceCells::max_n_faces() + j] = {0, nei.col[i]}; // set face indices - cells_0.cells[cell * ReferenceCell::max_n_faces() + j] = + cells_0.cells[cell * ReferenceCells::max_n_faces() + j] = crs.col[i]; // set face orientation if needed if (orientation_needed) { level.face_orientations.set_combined_orientation( - cell * ReferenceCell::max_n_faces() + j, + cell * ReferenceCells::max_n_faces() + j, connectivity.entity_orientations(dim - 1) .get_combined_orientation(i)); } @@ -3498,7 +3498,7 @@ namespace internal [[maybe_unused]] unsigned int counter = 0; std::vector key; - key.reserve(ReferenceCell::max_n_vertices()); + key.reserve(ReferenceCells::max_n_vertices()); for (unsigned int o = 0; o < obj.n_objects(); ++o) { @@ -15956,12 +15956,12 @@ void Triangulation::reset_cell_vertex_indices_cache() std::vector &cache = levels[l]->cell_vertex_indices_cache; cache.clear(); cache.resize(levels[l]->refine_flags.size() * - ReferenceCell::max_n_vertices(), + ReferenceCells::max_n_vertices(), numbers::invalid_unsigned_int); for (const auto &cell : cell_iterators_on_level(l)) { const unsigned int my_index = - cell->index() * ReferenceCell::max_n_vertices(); + cell->index() * ReferenceCells::max_n_vertices(); // to reduce the cost of this function when passing down into quads, // then lines, then vertices, we use a more low-level access method @@ -15982,7 +15982,7 @@ void Triangulation::reset_cell_vertex_indices_cache() const unsigned char combined_orientation = levels[l]->face_orientations.get_combined_orientation( - cell->index() * ReferenceCell::max_n_faces() + face); + cell->index() * ReferenceCells::max_n_faces() + face); std::array vertex_order{ {ref_cell.standard_to_real_face_vertex(0, face, diff --git a/source/grid/tria_accessor.cc b/source/grid/tria_accessor.cc index 704ae97b04..6353eebf12 100644 --- a/source/grid/tria_accessor.cc +++ b/source/grid/tria_accessor.cc @@ -2360,19 +2360,23 @@ CellAccessor::set_neighbor( if (pointer.state() == IteratorState::valid) { this->tria->levels[this->present_level] - ->neighbors[this->present_index * ReferenceCell::max_n_faces() + i] + ->neighbors[this->present_index * ReferenceCells::max_n_faces() + + i] .first = pointer->present_level; this->tria->levels[this->present_level] - ->neighbors[this->present_index * ReferenceCell::max_n_faces() + i] + ->neighbors[this->present_index * ReferenceCells::max_n_faces() + + i] .second = pointer->present_index; } else { this->tria->levels[this->present_level] - ->neighbors[this->present_index * ReferenceCell::max_n_faces() + i] + ->neighbors[this->present_index * ReferenceCells::max_n_faces() + + i] .first = -1; this->tria->levels[this->present_level] - ->neighbors[this->present_index * ReferenceCell::max_n_faces() + i] + ->neighbors[this->present_index * ReferenceCells::max_n_faces() + + i] .second = -1; } } -- 2.39.5