16 #ifndef dealii_geometry_info_h 17 #define dealii_geometry_info_h 20 #include <deal.II/base/config.h> 22 #include <deal.II/base/exceptions.h> 23 #include <deal.II/base/point.h> 29 DEAL_II_NAMESPACE_OPEN
34 namespace GeometryInfoHelper
42 struct Initializers<1>
44 static constexpr std::array<unsigned int, 2> ucd_to_deal{{0, 1}};
46 static constexpr std::array<unsigned int, 2> unit_normal_direction{
49 static constexpr std::array<int, 2> unit_normal_orientation{{-1, 1}};
51 static constexpr std::array<unsigned int, 2> opposite_face{{1, 0}};
53 static constexpr std::array<unsigned int, 2> dx_to_deal{{0, 1}};
55 static constexpr std::array<std::array<unsigned int, 1>, 2>
56 vertex_to_face{{{{0}}, {{1}}}};
60 struct Initializers<2>
62 static constexpr std::array<unsigned int, 4> ucd_to_deal{{0, 1, 3, 2}};
64 static constexpr std::array<unsigned int, 4> unit_normal_direction{
67 static constexpr std::array<int, 4> unit_normal_orientation{
70 static constexpr std::array<unsigned int, 4> opposite_face{{1, 0, 3, 2}};
72 static constexpr std::array<unsigned int, 4> dx_to_deal{{0, 2, 1, 3}};
74 static constexpr std::array<std::array<unsigned int, 2>, 4>
75 vertex_to_face{{{{0, 2}}, {{1, 2}}, {{0, 3}}, {{1, 3}}}};
79 struct Initializers<3>
81 static constexpr std::array<unsigned int, 8> ucd_to_deal{
82 {0, 1, 5, 4, 2, 3, 7, 6}};
84 static constexpr std::array<unsigned int, 6> unit_normal_direction{
87 static constexpr std::array<int, 6> unit_normal_orientation{
88 {-1, 1, -1, 1, -1, 1}};
90 static constexpr std::array<unsigned int, 6> opposite_face{
93 static constexpr std::array<unsigned int, 8> dx_to_deal{
94 {0, 4, 2, 6, 1, 5, 3, 7}};
96 static constexpr std::array<std::array<unsigned int, 3>, 8>
97 vertex_to_face{{{{0, 2, 4}},
108 struct Initializers<4>
110 static constexpr std::array<unsigned int, 16> ucd_to_deal{
126 numbers::invalid_unsigned_int}};
128 static constexpr std::array<unsigned int, 8> unit_normal_direction{
129 {0, 0, 1, 1, 2, 2, 3, 3}};
131 static constexpr std::array<int, 8> unit_normal_orientation{
132 {-1, 1, -1, 1, -1, 1, -1, 1}};
134 static constexpr std::array<unsigned int, 8> opposite_face{
135 {1, 0, 3, 2, 5, 4, 7, 6}};
137 static constexpr std::array<unsigned int, 16> dx_to_deal{
153 numbers::invalid_unsigned_int}};
155 static constexpr std::array<std::array<unsigned int, 4>, 16>
159 numbers::invalid_unsigned_int}},
163 numbers::invalid_unsigned_int}},
167 numbers::invalid_unsigned_int}},
171 numbers::invalid_unsigned_int}},
175 numbers::invalid_unsigned_int}},
179 numbers::invalid_unsigned_int}},
183 numbers::invalid_unsigned_int}},
187 numbers::invalid_unsigned_int}},
191 numbers::invalid_unsigned_int}},
195 numbers::invalid_unsigned_int}},
199 numbers::invalid_unsigned_int}},
203 numbers::invalid_unsigned_int}},
207 numbers::invalid_unsigned_int}},
211 numbers::invalid_unsigned_int}},
215 numbers::invalid_unsigned_int}},
219 numbers::invalid_unsigned_int}}}};
289 operator unsigned int()
const;
360 isotropic_refinement =
static_cast<std::uint8_t
>(-1)
426 isotropic_refinement = cut_x
497 cut_xy = cut_x | cut_y,
502 isotropic_refinement = cut_xy
573 cut_xy = cut_x | cut_y,
581 cut_xz = cut_x | cut_z,
585 cut_yz = cut_y | cut_z,
589 cut_xyz = cut_x | cut_y | cut_z,
594 isotropic_refinement = cut_xyz
645 operator std::uint8_t()
const;
677 cut_axis(
const unsigned int i);
683 memory_consumption();
689 template <
class Archive>
691 serialize(Archive &ar,
const unsigned int version);
697 ExcInvalidRefinementCase,
699 <<
"The refinement flags given (" << arg1
700 <<
") contain set bits that do not " 701 <<
"make sense for the space dimension of the object to which they are applied.");
708 std::uint8_t value : (dim > 0 ? dim : 1);
750 case_isotropic =
static_cast<std::uint8_t
>(-1)
782 case_isotropic = case_none
816 case_isotropic = case_none
855 case_isotropic = case_x
975 case_isotropic = case_xy
998 subface_possibility);
1011 operator std::uint8_t()
const;
1016 static constexpr std::size_t
1017 memory_consumption();
1023 ExcInvalidSubfaceCase,
1025 <<
"The subface case given (" << arg1 <<
") does not make sense " 1026 <<
"for the space dimension of the object to which they are applied.");
1033 std::uint8_t value : (dim == 3 ? 4 : 1);
1072 static constexpr
unsigned int max_children_per_cell = 1;
1077 static constexpr
unsigned int faces_per_cell = 0;
1086 static constexpr
unsigned int max_children_per_face = 0;
1099 static constexpr
unsigned int vertices_per_cell = 1;
1107 static constexpr
unsigned int vertices_per_face = 0;
1112 static constexpr
unsigned int lines_per_face = 0;
1117 static constexpr
unsigned int quads_per_face = 0;
1122 static constexpr
unsigned int lines_per_cell = 0;
1127 static constexpr
unsigned int quads_per_cell = 0;
1132 static constexpr
unsigned int hexes_per_cell = 0;
1166 static const std::array<unsigned int, vertices_per_cell>
dx_to_deal;
1705 static constexpr
unsigned int max_children_per_cell = 1 << dim;
1710 static constexpr
unsigned int faces_per_cell = 2 * dim;
1719 static constexpr
unsigned int max_children_per_face =
1725 static constexpr
unsigned int vertices_per_cell = 1 << dim;
1730 static constexpr
unsigned int vertices_per_face =
1736 static constexpr
unsigned int lines_per_face =
1742 static constexpr
unsigned int quads_per_face =
1754 static constexpr
unsigned int lines_per_cell =
1765 static constexpr
unsigned int quads_per_cell =
1772 static constexpr
unsigned int hexes_per_cell =
1793 static constexpr std::array<unsigned int, vertices_per_cell> ucd_to_deal =
1794 internal::GeometryInfoHelper::Initializers<dim>::ucd_to_deal;
1809 static constexpr std::array<unsigned int, vertices_per_cell> dx_to_deal =
1810 internal::GeometryInfoHelper::Initializers<dim>::dx_to_deal;
1822 static constexpr std::array<std::array<unsigned int, dim>, vertices_per_cell>
1824 internal::GeometryInfoHelper::Initializers<dim>::vertex_to_face;
1851 const unsigned int subface_no);
1860 const unsigned int face_no,
1861 const bool face_orientation =
true,
1862 const bool face_flip =
false,
1863 const bool face_rotation =
false);
1871 min_cell_refinement_case_for_face_refinement(
1873 const unsigned int face_no,
1874 const bool face_orientation =
true,
1875 const bool face_flip =
false,
1876 const bool face_rotation =
false);
1884 const unsigned int line_no);
1891 min_cell_refinement_case_for_line_refinement(
const unsigned int line_no);
1941 const unsigned int face,
1942 const unsigned int subface,
1943 const bool face_orientation =
true,
1944 const bool face_flip =
false,
1945 const bool face_rotation =
false,
1963 line_to_cell_vertices(
const unsigned int line,
const unsigned int vertex);
1986 face_to_cell_vertices(
const unsigned int face,
1987 const unsigned int vertex,
1988 const bool face_orientation =
true,
1989 const bool face_flip =
false,
1990 const bool face_rotation =
false);
2004 face_to_cell_lines(
const unsigned int face,
2005 const unsigned int line,
2006 const bool face_orientation =
true,
2007 const bool face_flip =
false,
2008 const bool face_rotation =
false);
2020 standard_to_real_face_vertex(
const unsigned int vertex,
2021 const bool face_orientation =
true,
2022 const bool face_flip =
false,
2023 const bool face_rotation =
false);
2035 real_to_standard_face_vertex(
const unsigned int vertex,
2036 const bool face_orientation =
true,
2037 const bool face_flip =
false,
2038 const bool face_rotation =
false);
2050 standard_to_real_face_line(
const unsigned int line,
2051 const bool face_orientation =
true,
2052 const bool face_flip =
false,
2053 const bool face_rotation =
false);
2065 real_to_standard_face_line(
const unsigned int line,
2066 const bool face_orientation =
true,
2067 const bool face_flip =
false,
2068 const bool face_rotation =
false);
2076 unit_cell_vertex(
const unsigned int vertex);
2098 cell_to_child_coordinates(
const Point<dim> & p,
2099 const unsigned int child_index,
2109 child_to_cell_coordinates(
const Point<dim> & p,
2110 const unsigned int child_index,
2133 is_inside_unit_cell(
const Point<dim> &p,
const double eps);
2155 d_linear_shape_function(
const Point<dim> &xi,
const unsigned int i);
2162 d_linear_shape_function_gradient(
const Point<dim> &xi,
const unsigned int i);
2215 template <
int spacedim>
2217 alternating_form_at_vertices
2218 #ifndef DEAL_II_CONSTEXPR_BUG 2234 static constexpr std::array<unsigned int, faces_per_cell>
2235 unit_normal_direction =
2236 internal::GeometryInfoHelper::Initializers<dim>::unit_normal_direction;
2254 static constexpr std::array<int, faces_per_cell> unit_normal_orientation =
2255 internal::GeometryInfoHelper::Initializers<dim>::unit_normal_orientation;
2262 static constexpr std::array<unsigned int, faces_per_cell> opposite_face =
2263 internal::GeometryInfoHelper::Initializers<dim>::opposite_face;
2271 <<
"The coordinates must satisfy 0 <= x_i <= 1, " 2272 <<
"but here we have x_i=" << arg1);
2281 <<
"RefinementCase<dim> " << arg1 <<
": face " << arg2
2282 <<
" has no subface " << arg3);
2296 const unsigned int i);
2300 const unsigned int i);
2304 const unsigned int i);
2318 : object(static_cast<Object>(object_dimension))
2322 inline GeometryPrimitive::operator
unsigned int()
const 2324 return static_cast<unsigned int>(object);
2332 inline SubfaceCase<dim>::SubfaceCase(
2333 const typename SubfacePossibilities<dim>::Possibilities subface_possibility)
2334 : value(subface_possibility)
2339 inline SubfaceCase<dim>::operator std::uint8_t()
const 2353 return static_cast<std::uint8_t
>(-1);
2406 : value(refinement_case)
2412 Assert((refinement_case &
2415 ExcInvalidRefinementCase(refinement_case));
2422 : value(refinement_case)
2428 Assert((refinement_case &
2431 ExcInvalidRefinementCase(refinement_case));
2482 template <
class Archive>
2488 std::uint8_t uchar_value = value;
2490 value = uchar_value;
2502 return Point<1>(
static_cast<double>(vertex));
2514 return Point<2>(vertex % 2, vertex / 2);
2526 return Point<3>(vertex % 2, vertex / 2 % 2, vertex / 4);
2548 return (p[0] <= 0.5 ? 0 : 1);
2560 return (p[0] <= 0.5 ? (p[1] <= 0.5 ? 0 : 2) : (p[1] <= 0.5 ? 1 : 3));
2573 return (p[0] <= 0.5 ?
2574 (p[1] <= 0.5 ? (p[2] <= 0.5 ? 0 : 4) : (p[2] <= 0.5 ? 2 : 6)) :
2575 (p[1] <= 0.5 ? (p[2] <= 0.5 ? 1 : 5) : (p[2] <= 0.5 ? 3 : 7)));
2593 const unsigned int child_index,
2609 const unsigned int child_index,
2619 switch (refine_case)
2623 if (child_index == 1)
2628 if (child_index == 1)
2647 const unsigned int child_index,
2662 switch (refine_case)
2666 if (child_index == 1)
2671 if (child_index == 1)
2676 if (child_index == 1)
2682 if (child_index % 2 == 1)
2684 if (child_index / 2 == 1)
2694 if (child_index / 2 == 1)
2696 if (child_index % 2 == 1)
2702 if (child_index % 2 == 1)
2704 if (child_index / 2 == 1)
2724 const unsigned int ,
2737 const unsigned int child_index,
2753 const unsigned int child_index,
2768 switch (refine_case)
2771 if (child_index == 1)
2776 if (child_index == 1)
2781 if (child_index == 1)
2786 if (child_index % 2 == 1)
2788 if (child_index / 2 == 1)
2798 if (child_index / 2 == 1)
2800 if (child_index % 2 == 1)
2806 if (child_index % 2 == 1)
2808 if (child_index / 2 == 1)
2829 const unsigned int child_index,
2838 switch (refine_case)
2841 if (child_index == 1)
2846 if (child_index == 1)
2867 const unsigned int ,
2888 return (p[0] >= 0.) && (p[0] <= 1.);
2897 return (p[0] >= 0.) && (p[0] <= 1.) && (p[1] >= 0.) && (p[1] <= 1.);
2906 return (p[0] >= 0.) && (p[0] <= 1.) && (p[1] >= 0.) && (p[1] <= 1.) &&
2907 (p[2] >= 0.) && (p[2] <= 1.);
2924 return (p[0] >= -eps) && (p[0] <= 1. + eps);
2933 const double l = -eps, u = 1 + eps;
2934 return (p[0] >= l) && (p[0] <= u) && (p[1] >= l) && (p[1] <= u);
2943 const double l = -eps, u = 1.0 + eps;
2944 return (p[0] >= l) && (p[0] <= u) && (p[1] >= l) && (p[1] <= u) &&
2945 (p[2] >= l) && (p[2] <= u);
2953 const unsigned int vertex)
2966 const unsigned int vertex)
2968 constexpr
unsigned int cell_vertices[4][2] = {{0, 2}, {1, 3}, {0, 1}, {2, 3}};
2969 return cell_vertices[line][vertex];
2977 const unsigned int vertex)
2995 return vertices[line][vertex];
3010 const bool face_orientation,
3011 const bool face_flip,
3012 const bool face_rotation)
3035 constexpr
unsigned int vertex_translation[4][2][2][2] = {
3057 return vertex_translation[vertex][face_orientation][face_flip][face_rotation];
3080 0, 2, 2, 4, 2, 4, 4, 8};
3082 return n_children[ref_case];
3117 0, 2, 3, 3, 4, 2, 3, 3, 4, 4};
3118 return nsubs[subface_case];
3147 switch (subface_case)
3184 const unsigned int subface_no)
3187 switch (subface_case)
3222 if (subface_no == 0)
3269 const unsigned int face_no,
3274 const unsigned int dim = 2;
3295 return ref_cases[cell_refinement_case][face_no / 2];
3303 const unsigned int face_no,
3304 const bool face_orientation,
3306 const bool face_rotation)
3308 const unsigned int dim = 3;
3353 ref_cases[cell_refinement_case][face_no / 2];
3373 return (face_orientation == face_rotation) ? flip[ref_case] : ref_case;
3391 const unsigned int line_no)
3394 const unsigned int dim = 1;
3403 return cell_refinement_case;
3411 const unsigned int line_no)
3422 const unsigned int line_no)
3424 const unsigned int dim = 3;
3445 1, 1, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2};
3447 return ((cell_refinement_case & cut_one[direction[line_no]]) ?
3477 const unsigned int dim = 1;
3488 const unsigned int face_no,
3493 const unsigned int dim = 2;
3494 Assert(face_refinement_case <
3514 const unsigned int face_no,
3515 const bool face_orientation,
3517 const bool face_rotation)
3519 const unsigned int dim = 3;
3520 Assert(face_refinement_case <
3547 (face_orientation == face_rotation) ? flip[face_refinement_case] :
3548 face_refinement_case;
3553 RefinementCase<dim>::cut_z,
3558 RefinementCase<dim>::cut_z,
3567 return face_to_cell[face_no / 2][std_face_ref];
3585 const unsigned int line_no)
3597 const unsigned int line_no)
3599 const unsigned int dim = 2;
3611 const unsigned int line_no)
3613 const unsigned int dim = 3;
3621 RefinementCase<dim>::cut_x,
3622 RefinementCase<dim>::cut_z,
3623 RefinementCase<dim>::cut_z};
3625 return ref_cases[line_no / 2];
3633 const bool face_orientation,
3634 const bool face_flip,
3635 const bool face_rotation)
3658 const unsigned int vertex_translation[4][2][2][2] = {
3680 return vertex_translation[vertex][face_orientation][face_flip][face_rotation];
3703 const bool face_orientation,
3704 const bool face_flip,
3705 const bool face_rotation)
3728 const unsigned int line_translation[4][2][2][2] = {
3750 return line_translation[line][face_orientation][face_flip][face_rotation];
3771 const bool face_orientation,
3772 const bool face_flip,
3773 const bool face_rotation)
3796 const unsigned int line_translation[4][2][2][2] = {
3818 return line_translation[line][face_orientation][face_flip][face_rotation];
3839 const unsigned int face,
3840 const unsigned int subface,
3859 const unsigned int face,
3860 const unsigned int subface,
3862 const bool face_flip,
3882 {{0, 0}, {1, 1}, {0, 1}, {0, 1}},
3883 {{0, 1}, {0, 1}, {0, 0}, {1, 1}},
3884 {{0, 2}, {1, 3}, {0, 1}, {2, 3}}
3888 {{0, 0}, {1, 1}, {1, 0}, {1, 0}},
3889 {{1, 0}, {1, 0}, {0, 0}, {1, 1}},
3890 {{2, 0}, {3, 1}, {1, 0}, {3, 2}}
3893 return subcells[face_flip][ref_case - 1][face][subface];
3901 const unsigned int face,
3902 const unsigned int subface,
3903 const bool face_orientation,
3904 const bool face_flip,
3905 const bool face_rotation,
3908 const unsigned int dim = 3;
3949 (face_orientation == face_rotation) ? flip[face_ref_case] : face_ref_case;
3961 const unsigned int subface_exchange[4][2][2][2][4] = {
3964 {{{{0, e, e, e}, {0, e, e, e}}, {{0, e, e, e}, {0, e, e, e}}},
3965 {{{0, e, e, e}, {0, e, e, e}}, {{0, e, e, e}, {0, e, e, e}}}},
3979 {{{{0, 1, e, e}, {0, 1, e, e}}, {{1, 0, e, e}, {1, 0, e, e}}},
3980 {{{0, 1, e, e}, {0, 1, e, e}}, {{1, 0, e, e}, {1, 0, e, e}}}},
3983 {{{{0, 1, e, e}, {1, 0, e, e}}, {{1, 0, e, e}, {0, 1, e, e}}},
3984 {{{0, 1, e, e}, {1, 0, e, e}}, {{1, 0, e, e}, {0, 1, e, e}}}},
4006 const unsigned int std_subface =
4007 subface_exchange[face_ref_case][face_orientation][face_flip][face_rotation]
4091 const unsigned int equivalent_iso_subface[4][4] = {
4097 const unsigned int equ_std_subface =
4098 equivalent_iso_subface[std_face_ref][std_subface];
4101 return iso_children[ref_case - 1][face][equ_std_subface];
4108 ExcMessage(
"The face RefineCase is too coarse " 4109 "for the given cell RefineCase."));
4136 const unsigned int line,
4156 const unsigned int line,
4174 const unsigned int line,
4175 const bool face_orientation,
4176 const bool face_flip,
4177 const bool face_rotation)
4190 line, face_orientation, face_flip, face_rotation)];
4212 const unsigned int vertex,
4213 const bool face_orientation,
4214 const bool face_flip,
4215 const bool face_rotation)
4232 for (
unsigned int i = 0; i < dim; i++)
4247 double result = 0.0;
4249 for (
unsigned int i = 0; i < dim; i++)
4250 if ((-p[i]) > result)
4252 else if ((p[i] - 1.) > result)
4253 result = (p[i] - 1.);
4263 const unsigned int i)
4272 const double x = xi[0];
4285 const double x = xi[0];
4286 const double y = xi[1];
4290 return (1 - x) * (1 - y);
4303 const double x = xi[0];
4304 const double y = xi[1];
4305 const double z = xi[2];
4309 return (1 - x) * (1 - y) * (1 - z);
4311 return x * (1 - y) * (1 - z);
4313 return (1 - x) * y * (1 - z);
4315 return x * y * (1 - z);
4317 return (1 - x) * (1 - y) * z;
4319 return x * (1 - y) * z;
4321 return (1 - x) * y * z;
4339 const unsigned int i)
4360 const unsigned int i)
4365 const double x = xi[0];
4366 const double y = xi[1];
4370 return Point<2>(-(1 - y), -(1 - x));
4386 const unsigned int i)
4391 const double x = xi[0];
4392 const double y = xi[1];
4393 const double z = xi[2];
4397 return Point<3>(-(1 - y) * (1 - z),
4399 -(1 - x) * (1 - y));
4401 return Point<3>((1 - y) * (1 - z), -x * (1 - z), -x * (1 - y));
4403 return Point<3>(-y * (1 - z), (1 - x) * (1 - z), -(1 - x) * y);
4405 return Point<3>(y * (1 - z), x * (1 - z), -x * y);
4407 return Point<3>(-(1 - y) * z, -(1 - x) * z, (1 - x) * (1 - y));
4409 return Point<3>((1 - y) * z, -x * z, x * (1 - y));
4411 return Point<3>(-y * z, (1 - x) * z, (1 - x) * y);
4413 return Point<3>(y * z, x * z, x * y);
4439 namespace GeometryInfoHelper
4449 result[0] = derivative[0][1];
4450 result[1] = -derivative[0][0];
4461 return cross_product_3d(derivative[0], derivative[1]);
4473 for (
unsigned int i = 0; i < dim; ++i)
4474 jacobian[i] = derivative[i];
4483 template <
int spacedim>
4486 # ifndef DEAL_II_CONSTEXPR_BUG 4530 for (
unsigned int l = 0; l < dim; ++l)
4531 derivatives[l] += vertices[j] * grad_phi_j[l];
4534 forms[i] = internal::GeometryInfoHelper::wedge_product(derivatives);
4539 DEAL_II_NAMESPACE_CLOSE
static Point< dim > child_to_cell_coordinates(const Point< dim > &p, const unsigned int child_index, const RefinementCase< dim > refine_case=RefinementCase< dim >::isotropic_refinement)
static unsigned int real_to_standard_face_vertex(const unsigned int vertex, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static const unsigned int invalid_unsigned_int
static unsigned int standard_to_real_face_line(const unsigned int line, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
Number determinant(const SymmetricTensor< 2, dim, Number > &)
static unsigned int child_cell_from_point(const Point< dim > &p)
static unsigned int face_to_cell_vertices(const unsigned int face, const unsigned int vertex, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static RefinementCase< 1 > line_refinement_case(const RefinementCase< dim > &cell_refinement_case, const unsigned int line_no)
static unsigned int face_to_cell_lines(const unsigned int face, const unsigned int line, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static constexpr unsigned int max_children_per_face
RefinementCase operator|(const RefinementCase &r) const
static bool is_inside_unit_cell(const Point< dim > &p)
GeometryPrimitive(const Object object)
void serialize(Archive &ar, const unsigned int version)
static unsigned int line_to_cell_vertices(const unsigned int line, const unsigned int vertex)
static unsigned int real_to_standard_face_line(const unsigned int line, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static Point< dim > cell_to_child_coordinates(const Point< dim > &p, const unsigned int child_index, const RefinementCase< dim > refine_case=RefinementCase< dim >::isotropic_refinement)
static Point< dim > unit_cell_vertex(const unsigned int vertex)
static Tensor< 1, dim > d_linear_shape_function_gradient(const Point< dim > &xi, const unsigned int i)
static::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
static const std::array< unsigned int, vertices_per_cell > ucd_to_deal
static constexpr unsigned int vertices_per_cell
UpdateFlags operator&(const UpdateFlags f1, const UpdateFlags f2)
RefinementCase operator~() const
static double distance_to_unit_cell(const Point< dim > &p)
UpdateFlags operator|(const UpdateFlags f1, const UpdateFlags f2)
static::ExceptionBase & ExcMessage(std::string arg1)
static::ExceptionBase & ExcImpossibleInDim(int arg1)
#define DeclException1(Exception1, type1, outsequence)
static constexpr unsigned int lines_per_cell
static unsigned int child_cell_on_face(const RefinementCase< dim > &ref_case, const unsigned int face, const unsigned int subface, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false, const RefinementCase< dim-1 > &face_refinement_case=RefinementCase< dim-1 >::isotropic_refinement)
#define Assert(cond, exc)
static RefinementCase< dim-1 > face_refinement_case(const RefinementCase< dim > &cell_refinement_case, const unsigned int face_no, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static constexpr unsigned int faces_per_cell
static::ExceptionBase & ExcInvalidCoordinate(double arg1)
static std::size_t memory_consumption()
static unsigned int standard_to_real_face_vertex(const unsigned int vertex, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static RefinementCase< dim > min_cell_refinement_case_for_line_refinement(const unsigned int line_no)
RefinementCase operator&(const RefinementCase &r) const
static unsigned int n_children(const RefinementCase< dim > &refinement_case)
static Point< dim > project_to_unit_cell(const Point< dim > &p)
static const std::array< unsigned int, vertices_per_cell > dx_to_deal
static double d_linear_shape_function(const Point< dim > &xi, const unsigned int i)
static constexpr unsigned int lines_per_face
static unsigned int n_subfaces(const internal::SubfaceCase< dim > &subface_case)
static::ExceptionBase & ExcNotImplemented()
#define DeclException3(Exception3, type1, type2, type3, outsequence)
static double subface_ratio(const internal::SubfaceCase< dim > &subface_case, const unsigned int subface_no)
static RefinementCase< dim > min_cell_refinement_case_for_face_refinement(const RefinementCase< dim-1 > &face_refinement_case, const unsigned int face_no, const bool face_orientation=true, const bool face_flip=false, const bool face_rotation=false)
static RefinementCase cut_axis(const unsigned int i)
static::ExceptionBase & ExcInternalError()