const ReferenceCell &reference_cell,
const unsigned int face_no,
const unsigned int subface_no,
- const bool,
- const bool,
- const bool,
+ const unsigned char /*combined_orientation*/,
const unsigned int n_quadrature_points,
const internal::SubfaceCase<1>)
{
const ReferenceCell &reference_cell,
const unsigned int face_no,
const unsigned int subface_no,
- const bool,
- const bool,
- const bool,
+ const unsigned char /*combined_orientation*/,
const unsigned int n_quadrature_points,
const internal::SubfaceCase<2>)
{
const ReferenceCell &reference_cell,
const unsigned int face_no,
const unsigned int subface_no,
- const bool face_orientation,
- const bool face_flip,
- const bool face_rotation,
+ const unsigned char combined_orientation,
const unsigned int n_quadrature_points,
const internal::SubfaceCase<3> ref_case)
{
const unsigned int dim = 3;
+ const auto [face_orientation, face_rotation, face_flip] =
+ internal::split_face_orientation(combined_orientation);
+
Assert(reference_cell == ReferenceCells::Hexahedron, ExcNotImplemented());
(void)reference_cell;
// TODO: Check what the face_orientation, face_flip and face_rotation
// have to be in 3d
unsigned int k = QProjector<dim>::DataSetDescriptor::face(
- this->reference_cell(), face, false, false, false, n_face_points);
+ this->reference_cell(),
+ face,
+ ReferenceCell::default_combined_face_orientation(),
+ n_face_points);
for (unsigned int i = 0; i < boundary_weights_abf.size(1); ++i)
nodal_values[start_abf_dofs + i] +=
n_orient * boundary_weights_abf(k + fp, i) *
for (unsigned int k = 0;
k < face_points.size() * GeometryInfo<dim>::faces_per_cell;
++k)
- this->generalized_support_points[k] = faces.point(
- k +
- QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
- 0,
- true,
- false,
- false,
- this->n_dofs_per_face(face_no)));
+ this->generalized_support_points[k] =
+ faces.point(k + QProjector<dim>::DataSetDescriptor::face(
+ this->reference_cell(),
+ 0,
+ ReferenceCell::default_combined_face_orientation(),
+ this->n_dofs_per_face(face_no)));
// Currently, for backward compatibility, we do not use moments, but
// point values on faces in 2d. In 3d, this is impossible, since the
QProjector<dim>::DataSetDescriptor::face(
ReferenceCells::get_hypercube<dim>(),
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(face_no),
quadrature[0].size());
const UpdateFlags flags(fe_data.update_each);
++line)
this->generalized_support_points[line * n_edge_points + q_point] =
edge_quadrature.point(
- QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
- line,
- true,
- false,
- false,
- n_edge_points) +
+ QProjector<dim>::DataSetDescriptor::face(
+ this->reference_cell(),
+ line,
+ ReferenceCell::default_combined_face_orientation(),
+ n_edge_points) +
q_point);
for (unsigned int i = 0; i < order; ++i)
for (unsigned int q_point = 0; q_point < n_edge_points; ++q_point)
this->generalized_support_points[line * n_edge_points + q_point] =
edge_quadrature.point(
- QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
- line,
- true,
- false,
- false,
- n_edge_points) +
+ QProjector<dim>::DataSetDescriptor::face(
+ this->reference_cell(),
+ line,
+ ReferenceCell::default_combined_face_orientation(),
+ n_edge_points) +
q_point);
}
}
QProjector<dim - 1>::DataSetDescriptor::face(
ReferenceCells::get_hypercube<dim - 1>(),
line,
- true,
- false,
- false,
+ ReferenceCell::default_combined_face_orientation(),
n_edge_points) +
q_point);
GeometryInfo<dim>::lines_per_cell *
n_edge_points] =
face_quadrature.point(
- QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
- face,
- true,
- false,
- false,
- n_face_points) +
+ QProjector<dim>::DataSetDescriptor::face(
+ this->reference_cell(),
+ face,
+ ReferenceCell::default_combined_face_orientation(),
+ n_face_points) +
q_point);
}
QProjector<dim - 1>::DataSetDescriptor::face(
ReferenceCells::get_hypercube<dim - 1>(),
line,
- true,
- false,
- false,
+ ReferenceCell::default_combined_face_orientation(),
n_edge_points) +
q_point);
const auto offset =
QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
n_q_points);
if (flags & update_values)
const auto offset =
QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
n_q_points);
// TODO: Size assertions
QProjector<dim>::DataSetDescriptor::subface(this->reference_cell(),
face_no,
sub_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
n_q_points,
cell->subface_case(face_no));
// Enter the support point
// into the vector
this->generalized_support_points[current] = faces.point(
- current +
- QProjector<dim>::DataSetDescriptor::face(
- this->reference_cell(), 0, true, false, false, n_face_points));
+ current + QProjector<dim>::DataSetDescriptor::face(
+ this->reference_cell(),
+ 0,
+ ReferenceCell::default_combined_face_orientation(),
+ n_face_points));
}
}
for (unsigned int k = 0; k < this->n_dofs_per_face(face_no) *
GeometryInfo<dim>::faces_per_cell;
++k)
- this->generalized_support_points[k] = faces.point(
- k + QProjector<dim>::DataSetDescriptor::face(this->reference_cell(),
- 0,
- true,
- false,
- false,
- this->n_dofs_per_face(
- face_no)));
+ this->generalized_support_points[k] =
+ faces.point(k + QProjector<dim>::DataSetDescriptor::face(
+ this->reference_cell(),
+ 0,
+ ReferenceCell::default_combined_face_orientation(),
+ this->n_dofs_per_face(face_no)));
current =
this->n_dofs_per_face(face_no) * GeometryInfo<dim>::faces_per_cell;
const auto offset = QProjector<dim>::DataSetDescriptor::face(
ReferenceCells::get_hypercube<dim>(),
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(face_no),
quadrature_points.size());
ReferenceCells::get_hypercube<dim>(),
face_no,
sub_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(face_no),
quadrature_points.size(),
cell->subface_case(face_no));
numbers::invalid_unsigned_int,
QProjector<dim>::DataSetDescriptor::face(this->fe->reference_cell(),
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
quadrature),
quadrature[quadrature.size() == 1 ? 0 : face_no],
data,
QProjector<dim>::DataSetDescriptor::subface(this->fe->reference_cell(),
face_no,
subface_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
quadrature.size(),
cell->subface_case(face_no)),
quadrature,
numbers::invalid_unsigned_int,
QProjector<dim>::DataSetDescriptor::face(reference_cell,
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
quadrature[0].size()),
data,
euler_dof_handler->get_fe(),
QProjector<dim>::DataSetDescriptor::subface(reference_cell,
face_no,
subface_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(
+ face_no),
quadrature.size(),
cell->subface_case(face_no)),
data,
QProjector<dim>::DataSetDescriptor::face(
ReferenceCells::get_hypercube<dim>(),
face_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(face_no),
quadrature[0].size()),
quadrature[0],
data,
ReferenceCells::get_hypercube<dim>(),
face_no,
subface_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(face_no),
quadrature.size(),
cell->subface_case(face_no)),
quadrature,
ReferenceCells::get_hypercube<dim>(),
face_no,
subface_no,
- cell->face_orientation(face_no),
- cell->face_flip(face_no),
- cell->face_rotation(face_no),
+ cell->combined_face_orientation(face_no),
quadrature.size(),
cell->subface_case(face_no)),
quadrature,