Reference documentation for deal.II version Git b3b9f019ec 2021-07-26 17:39:47 -0400
RefinementPossibilities< dim > Struct Template Reference

#include <deal.II/base/geometry_info.h>

Inheritance diagram for RefinementPossibilities< dim >:
[legend]

## Public Types

enum  Possibilities { no_refinement = 0, isotropic_refinement = 0xFF }

## Detailed Description

### template<int dim> struct RefinementPossibilities< dim >

A class that provides possible choices for isotropic and anisotropic refinement flags in the current space dimension.

This general template is unused except in some weird template constructs. Actual use is made, however, of the specializations RefinementPossibilities<1>, RefinementPossibilities<2>, and RefinementPossibilities<3>.

Definition at line 487 of file geometry_info.h.

## ◆ Possibilities

template<int dim>

Possible values for refinement cases in the current dimension.

Note the construction of the values: the lowest bit describes a cut of the x-axis, the second to lowest bit corresponds to a cut of the y-axis and the third to lowest bit corresponds to a cut of the z-axis. Thus, the following relations hold (among others):

cut_xy == cut_x | cut_y
cut_xyz == cut_xy | cut_xz
cut_x == cut_xy & cut_xz

Only those cuts that are reasonable in a given space dimension are offered, of course.

In addition, the tag isotropic_refinement denotes isotropic refinement in the space dimension selected by the template argument of this class.

If you choose anisotropic refinement, for example by passing as argument to CellIterator::set_refine_flag() one of the flags RefinementCase::cut_x, RefinementCase::cut_y, RefinementCase::cut_z, or a combination of these, then keep in mind that refining in x-, y-, or z-direction happens with regard to the local coordinate system of the cell. In other words, these flags determine which edges and faces of the cell will be cut into new edges and faces. On the other hand, this process is independent of how the cell is oriented within the global coordinate system, and you should not assume any particular orientation of the cell's local coordinate system within the global coordinate system of the space it lives in.

Enumerator
no_refinement

Do not perform refinement.

isotropic_refinement

Perform isotropic refinement. This implies refining in all coordinate directions. For the current general template class – which is never used because there are specializations for the 1d, 2d, and 3d cases –, we simply set this number to a value that has all bits set. The specializations in RefinementPossibilities<1>, RefinementPossibilities<2>, and RefinementPossibilities<3> set the corresponding enum element to more reasonable values.

Definition at line 523 of file geometry_info.h.

The documentation for this struct was generated from the following file: