* normal vector is pointing the other direction. There are not very many
* places in application programs where you need this information actually,
* but a few places in the library make use of this. Note that in 2d, the
- * result is always @p true. More information on the topic can be found in the
- * @ref GlossFaceOrientation "glossary" article on this topic.
+ * result is always @p true. More information on the topic can be found in this
+ * @ref GlossFaceOrientation "glossary" article.
*
* In order to allow all kinds of meshes in 3d, including
* <em>Moebius</em>-loops, for example, a face might even be rotated looking
* <tt>face_orientation</tt> defaults to
* <tt>true</tt>, <tt>face_flip</tt> and
* <tt>face_rotation</tt> default to
- * <tt>false</tt> (standard orientation)
- * and has no effect in 2d.
+ * <tt>false</tt> (standard orientation).
+ * In 2d only <tt>face_flip</tt> is considered.
+ * See this @ref GlossFaceOrientation "glossary"
+ * article for more information.
*
* As the children of a cell are
* ordered according to the
GeometryInfo<2>::child_cell_on_face (const RefinementCase<2> &ref_case,
const unsigned int face,
const unsigned int subface,
- const bool, const bool, const bool,
+ const bool, const bool face_flip, const bool,
const RefinementCase<1> &)
{
Assert (face<faces_per_cell, ExcIndexRange(face, 0, faces_per_cell));
// refined neighbor. this simplifies setting neighbor
// information in execute_refinement.
static const unsigned int
- subcells[RefinementCase<2>::isotropic_refinement][faces_per_cell][max_children_per_face] =
+ subcells[2][RefinementCase<2>::isotropic_refinement][faces_per_cell][max_children_per_face] =
{
- {{0,0},{1,1},{0,1},{0,1}}, // cut_x
- {{0,1},{0,1},{0,0},{1,1}}, // cut_y
- {{0,2},{1,3},{0,1},{2,3}}
- }; // cut_xy
+ {
+ // Normal orientation (face_filp = false)
+ {{0,0},{1,1},{0,1},{0,1}}, // cut_x
+ {{0,1},{0,1},{0,0},{1,1}}, // cut_y
+ {{0,2},{1,3},{0,1},{2,3}} // cut_z
+ },
+ {
+ // Flipped orientation (face_flip = true)
+ {{0,0},{1,1},{1,0},{1,0}}, // cut_x
+ {{1,0},{1,0},{0,0},{1,1}}, // cut_y
+ {{2,0},{3,1},{1,0},{3,2}} // cut_z
+ }
+ };
- return subcells[ref_case-1][face][subface];
+ return subcells[face_flip][ref_case-1][face][subface];
}