reference_cell() const;
/**
- * Number of unique quads. If all quads have the same type, the value is
- * one; else it equals the number of quads.
+ * Number of unique 2d subobjects. If all two-dimensional subobjects
+ * are of the same kind, the value is one; else it equals the number
+ * of two-dimensional subobjects. For example, for hex reference
+ * cells with the usual finite elements, each face has the same
+ * geometric shape (a square) and each face has the same number and
+ * kind of shape functions associated with it; as a consequence, the
+ * returned value is one. On the other hand, for a wedge element,
+ * the two-dimensional subobjects can be both quadrilaterals and
+ * triangles, and so the returned value equals the number of faces
+ * of these objects (i.e., five).
*/
unsigned int
- n_unique_quads() const;
+ n_unique_2d_subobjects() const;
/**
- * Number of unique faces. If all faces have the same type, the value is
- * one; else it equals the number of faces.
+ * Number of unique faces. If all faces have the same type (i.e.,
+ * have the same shape and also have the same kind and number of
+ * DoFs associated with them), the value is one; else it equals the
+ * number of faces.
*/
unsigned int
n_unique_faces() const;
template <int dim>
inline unsigned int
-FiniteElementData<dim>::n_unique_quads() const
+FiniteElementData<dim>::n_unique_2d_subobjects() const
{
return number_of_unique_2d_subobjects;
}
if (dim == 3)
{
adjust_quad_dof_index_for_face_orientation_table.resize(
- this->n_unique_quads());
+ this->n_unique_2d_subobjects());
- for (unsigned int f = 0; f < this->n_unique_quads(); ++f)
+ for (unsigned int f = 0; f < this->n_unique_2d_subobjects(); ++f)
{
adjust_quad_dof_index_for_face_orientation_table[f] =
Table<2, int>(this->n_dofs_per_quad(f),
// the function should also not have been
// called
AssertIndexRange(index, this->n_dofs_per_quad(face));
- const auto table_n = this->n_unique_quads() == 1 ? 0 : face;
+ const auto table_n = this->n_unique_2d_subobjects() == 1 ? 0 : face;
Assert(
adjust_quad_dof_index_for_face_orientation_table[table_n].n_elements() ==
(this->reference_cell().n_face_orientations(face)) *
if (dim == 3)
{
adjust_quad_dof_sign_for_face_orientation_table.resize(
- this->n_unique_quads());
+ this->n_unique_2d_subobjects());
- for (unsigned int f = 0; f < this->n_unique_quads(); ++f)
+ for (unsigned int f = 0; f < this->n_unique_2d_subobjects(); ++f)
{
adjust_quad_dof_sign_for_face_orientation_table[f] =
Table<2, bool>(this->n_dofs_per_quad(f),
// called
AssertIndexRange(index, this->n_dofs_per_quad(face));
Assert(adjust_quad_dof_sign_for_face_orientation_table
- [this->n_unique_quads() == 1 ? 0 : face]
+ [this->n_unique_2d_subobjects() == 1 ? 0 : face]
.n_elements() ==
this->reference_cell().n_face_orientations(face) *
this->n_dofs_per_quad(face),
ExcInternalError());
return adjust_quad_dof_sign_for_face_orientation_table
- [this->n_unique_quads() == 1 ? 0 : face](
+ [this->n_unique_2d_subobjects() == 1 ? 0 : face](
index,
4 * static_cast<int>(face_orientation) + 2 * static_cast<int>(face_flip) +
static_cast<int>(face_rotation));