16 #ifndef dealii_geometry_info_h 17 #define dealii_geometry_info_h 37 namespace GeometryInfoHelper
45 struct Initializers<1>
47 static constexpr std::array<unsigned int, 2>
53 static constexpr std::array<unsigned int, 2>
54 unit_normal_direction()
59 static constexpr std::array<int, 2>
60 unit_normal_orientation()
65 static constexpr std::array<Tensor<1, 1>, 2>
71 static constexpr ::ndarray<Tensor<1, 1>, 2, 0>
72 unit_tangential_vectors()
74 return {{{{}}, {{}}}};
77 static constexpr std::array<unsigned int, 2>
83 static constexpr std::array<unsigned int, 2>
89 static constexpr ::ndarray<unsigned int, 2, 1>
92 return {{{{0}}, {{1}}}};
97 struct Initializers<2>
99 static constexpr std::array<unsigned int, 4>
102 return {{0, 1, 3, 2}};
105 static constexpr std::array<unsigned int, 4>
106 unit_normal_direction()
108 return {{0, 0, 1, 1}};
111 static constexpr std::array<int, 4>
112 unit_normal_orientation()
114 return {{-1, 1, -1, 1}};
117 static constexpr std::array<Tensor<1, 2>, 4>
126 static constexpr ::ndarray<Tensor<1, 2>, 4, 1>
127 unit_tangential_vectors()
135 static constexpr std::array<unsigned int, 4>
138 return {{1, 0, 3, 2}};
141 static constexpr std::array<unsigned int, 4>
144 return {{0, 2, 1, 3}};
147 static constexpr ::ndarray<unsigned int, 4, 2>
150 return {{{{0, 2}}, {{1, 2}}, {{0, 3}}, {{1, 3}}}};
155 struct Initializers<3>
157 static constexpr std::array<unsigned int, 8>
160 return {{0, 1, 5, 4, 2, 3, 7, 6}};
163 static constexpr std::array<unsigned int, 6>
164 unit_normal_direction()
166 return {{0, 0, 1, 1, 2, 2}};
169 static constexpr std::array<int, 6>
170 unit_normal_orientation()
172 return {{-1, 1, -1, 1, -1, 1}};
175 static constexpr std::array<Tensor<1, 3>, 6>
186 static constexpr ::ndarray<Tensor<1, 3>, 6, 2>
187 unit_tangential_vectors()
197 static constexpr std::array<unsigned int, 6>
200 return {{1, 0, 3, 2, 5, 4}};
203 static constexpr std::array<unsigned int, 8>
206 return {{0, 4, 2, 6, 1, 5, 3, 7}};
209 static constexpr ::ndarray<unsigned int, 8, 3>
212 return {{{{0, 2, 4}},
224 struct Initializers<4>
226 static constexpr std::array<unsigned int, 16>
244 numbers::invalid_unsigned_int}};
247 static constexpr std::array<unsigned int, 8>
248 unit_normal_direction()
250 return {{0, 0, 1, 1, 2, 2, 3, 3}};
253 static constexpr std::array<int, 8>
254 unit_normal_orientation()
256 return {{-1, 1, -1, 1, -1, 1, -1, 1}};
259 static constexpr std::array<Tensor<1, 4>, 8>
272 static constexpr ::ndarray<Tensor<1, 4>, 8, 3>
273 unit_tangential_vectors()
301 static constexpr std::array<unsigned int, 8>
304 return {{1, 0, 3, 2, 5, 4, 7, 6}};
307 static constexpr std::array<unsigned int, 16>
325 numbers::invalid_unsigned_int}};
328 static constexpr ::ndarray<unsigned int, 16, 4>
334 numbers::invalid_unsigned_int}},
338 numbers::invalid_unsigned_int}},
342 numbers::invalid_unsigned_int}},
346 numbers::invalid_unsigned_int}},
350 numbers::invalid_unsigned_int}},
354 numbers::invalid_unsigned_int}},
358 numbers::invalid_unsigned_int}},
362 numbers::invalid_unsigned_int}},
366 numbers::invalid_unsigned_int}},
370 numbers::invalid_unsigned_int}},
374 numbers::invalid_unsigned_int}},
378 numbers::invalid_unsigned_int}},
382 numbers::invalid_unsigned_int}},
386 numbers::invalid_unsigned_int}},
390 numbers::invalid_unsigned_int}},
394 numbers::invalid_unsigned_int}}}};
463 operator unsigned int()
const;
541 isotropic_refinement = 0xFF
606 isotropic_refinement = cut_x
676 cut_xy = cut_x | cut_y,
681 isotropic_refinement = cut_xy
751 cut_xy = cut_x | cut_y,
759 cut_xz = cut_x | cut_z,
763 cut_yz = cut_y | cut_z,
767 cut_xyz = cut_x | cut_y | cut_z,
772 isotropic_refinement = cut_xyz
822 operator std::uint8_t()
const;
854 cut_axis(
const unsigned int i);
867 template <
class Archive>
869 serialize(Archive &ar,
const unsigned int version);
875 ExcInvalidRefinementCase,
877 <<
"The refinement flags given (" << arg1
878 <<
") contain set bits that do not " 879 <<
"make sense for the space dimension of the object to which they are applied.");
886 std::uint8_t
value : (dim > 0 ? dim : 1);
927 case_isotropic =
static_cast<std::uint8_t
>(-1)
958 case_isotropic = case_none
991 case_isotropic = case_none
1029 case_isotropic = case_x
1148 case_isotropic = case_xy
1170 subface_possibility);
1183 operator std::uint8_t()
const;
1188 static constexpr std::size_t
1195 ExcInvalidSubfaceCase,
1197 <<
"The subface case given (" << arg1 <<
") does not make sense " 1198 <<
"for the space dimension of the object to which they are applied.");
1205 std::uint8_t
value : (dim == 3 ? 4 : 1);
1246 static constexpr
unsigned int max_children_per_cell = 1;
1251 static constexpr
unsigned int faces_per_cell = 0;
1269 static std::array<unsigned int, 0>
1279 static constexpr
unsigned int max_children_per_face = 0;
1292 static constexpr
unsigned int vertices_per_cell = 1;
1312 static std::array<unsigned int, vertices_per_cell>
1339 face_to_cell_vertices(
const unsigned int face,
1340 const unsigned int vertex,
1341 const bool face_orientation =
true,
1342 const bool face_flip =
false,
1343 const bool face_rotation =
false);
1360 face_to_cell_lines(
const unsigned int face,
1361 const unsigned int line,
1362 const bool face_orientation =
true,
1363 const bool face_flip =
false,
1364 const bool face_rotation =
false);
1372 static constexpr
unsigned int vertices_per_face = 0;
1377 static constexpr
unsigned int lines_per_face = 0;
1382 static constexpr
unsigned int quads_per_face = 0;
1387 static constexpr
unsigned int lines_per_cell = 0;
1392 static constexpr
unsigned int quads_per_cell = 0;
1397 static constexpr
unsigned int hexes_per_cell = 0;
1431 static const std::array<unsigned int, vertices_per_cell>
dx_to_deal;
1972 static constexpr
unsigned int max_children_per_cell = 1 << dim;
1977 static constexpr
unsigned int faces_per_cell = 2 * dim;
2005 static constexpr
unsigned int max_children_per_face =
2011 static constexpr
unsigned int vertices_per_cell = 1 << dim;
2034 static constexpr
unsigned int vertices_per_face =
2040 static constexpr
unsigned int lines_per_face =
2046 static constexpr
unsigned int quads_per_face =
2058 static constexpr
unsigned int lines_per_cell =
2069 static constexpr
unsigned int quads_per_cell =
2076 static constexpr
unsigned int hexes_per_cell =
2097 static constexpr std::array<unsigned int, vertices_per_cell> ucd_to_deal =
2098 internal::GeometryInfoHelper::Initializers<dim>::ucd_to_deal();
2113 static constexpr std::array<unsigned int, vertices_per_cell> dx_to_deal =
2114 internal::GeometryInfoHelper::Initializers<dim>::dx_to_deal();
2128 internal::GeometryInfoHelper::Initializers<dim>::vertex_to_face();
2155 const unsigned int subface_no);
2164 const unsigned int face_no,
2165 const bool face_orientation =
true,
2166 const bool face_flip =
false,
2167 const bool face_rotation =
false);
2175 min_cell_refinement_case_for_face_refinement(
2177 const unsigned int face_no,
2178 const bool face_orientation =
true,
2179 const bool face_flip =
false,
2180 const bool face_rotation =
false);
2188 const unsigned int line_no);
2195 min_cell_refinement_case_for_line_refinement(
const unsigned int line_no);
2245 const unsigned int face,
2246 const unsigned int subface,
2247 const bool face_orientation =
true,
2248 const bool face_flip =
false,
2249 const bool face_rotation =
false,
2267 line_to_cell_vertices(
const unsigned int line,
const unsigned int vertex);
2290 face_to_cell_vertices(
const unsigned int face,
2291 const unsigned int vertex,
2292 const bool face_orientation =
true,
2293 const bool face_flip =
false,
2294 const bool face_rotation =
false);
2308 face_to_cell_lines(
const unsigned int face,
2309 const unsigned int line,
2310 const bool face_orientation =
true,
2311 const bool face_flip =
false,
2312 const bool face_rotation =
false);
2324 standard_to_real_face_vertex(
const unsigned int vertex,
2325 const bool face_orientation =
true,
2326 const bool face_flip =
false,
2327 const bool face_rotation =
false);
2339 real_to_standard_face_vertex(
const unsigned int vertex,
2340 const bool face_orientation =
true,
2341 const bool face_flip =
false,
2342 const bool face_rotation =
false);
2354 standard_to_real_face_line(
const unsigned int line,
2355 const bool face_orientation =
true,
2356 const bool face_flip =
false,
2357 const bool face_rotation =
false);
2365 standard_to_real_line_vertex(
const unsigned int vertex,
2366 const bool line_orientation =
true);
2375 static std::array<unsigned int, 2>
2376 standard_quad_vertex_to_line_vertex_index(
const unsigned int vertex);
2385 static std::array<unsigned int, 2>
2386 standard_hex_vertex_to_quad_vertex_index(
const unsigned int vertex);
2395 static std::array<unsigned int, 2>
2396 standard_hex_line_to_quad_line_index(
const unsigned int line);
2408 real_to_standard_face_line(
const unsigned int line,
2409 const bool face_orientation =
true,
2410 const bool face_flip =
false,
2411 const bool face_rotation =
false);
2419 unit_cell_vertex(
const unsigned int vertex);
2441 cell_to_child_coordinates(
const Point<dim> & p,
2442 const unsigned int child_index,
2452 child_to_cell_coordinates(
const Point<dim> & p,
2453 const unsigned int child_index,
2482 template <
typename Number =
double>
2499 d_linear_shape_function(
const Point<dim> &xi,
const unsigned int i);
2506 d_linear_shape_function_gradient(
const Point<dim> &xi,
const unsigned int i);
2559 template <
int spacedim>
2561 alternating_form_at_vertices
2562 #ifndef DEAL_II_CXX14_CONSTEXPR_BUG 2578 static constexpr std::array<unsigned int, faces_per_cell>
2579 unit_normal_direction =
2580 internal::GeometryInfoHelper::Initializers<dim>::unit_normal_direction();
2598 static constexpr std::array<int, faces_per_cell> unit_normal_orientation =
2599 internal::GeometryInfoHelper::Initializers<dim>::unit_normal_orientation();
2611 static constexpr std::array<Tensor<1, dim>, faces_per_cell>
2612 unit_normal_vector =
2613 internal::GeometryInfoHelper::Initializers<dim>::unit_normal_vector();
2629 unit_tangential_vectors = internal::GeometryInfoHelper::Initializers<
2630 dim>::unit_tangential_vectors();
2637 static constexpr std::array<unsigned int, faces_per_cell> opposite_face =
2638 internal::GeometryInfoHelper::Initializers<dim>::opposite_face();
2646 <<
"The coordinates must satisfy 0 <= x_i <= 1, " 2647 <<
"but here we have x_i=" << arg1);
2656 <<
"RefinementCase<dim> " << arg1 <<
": face " << arg2
2657 <<
" has no subface " << arg3);
2671 const unsigned int i);
2675 const unsigned int i);
2679 const unsigned int i);
2693 : object(static_cast<Object>(object_dimension))
2697 inline GeometryPrimitive::operator
unsigned int()
const 2699 return static_cast<unsigned int>(object);
2707 inline SubfaceCase<dim>::SubfaceCase(
2708 const typename SubfacePossibilities<dim>::Possibilities subface_possibility)
2709 : value(subface_possibility)
2714 inline SubfaceCase<dim>::operator std::uint8_t()
const 2728 return static_cast<std::uint8_t
>(-1);
2781 : value(refinement_case)
2787 Assert((refinement_case &
2790 ExcInvalidRefinementCase(refinement_case));
2797 : value(refinement_case)
2803 Assert((refinement_case &
2806 ExcInvalidRefinementCase(refinement_case));
2857 template <
class Archive>
2863 std::uint8_t uchar_value = value;
2865 value = uchar_value;
2876 return Point<1>(
static_cast<double>(vertex));
2887 return {
static_cast<double>(vertex % 2), static_cast<double>(vertex / 2)};
2898 return {
static_cast<double>(vertex % 2),
2899 static_cast<double>(vertex / 2 % 2),
2900 static_cast<double>(vertex / 4)};
2905 inline std::array<unsigned int, 0>
2913 inline std::array<unsigned int, 1>
2956 return (p[0] <= 0.5 ? 0 : 1);
2968 return (p[0] <= 0.5 ? (p[1] <= 0.5 ? 0 : 2) : (p[1] <= 0.5 ? 1 : 3));
2981 return (p[0] <= 0.5 ?
2982 (p[1] <= 0.5 ? (p[2] <= 0.5 ? 0 : 4) : (p[2] <= 0.5 ? 2 : 6)) :
2983 (p[1] <= 0.5 ? (p[2] <= 0.5 ? 1 : 5) : (p[2] <= 0.5 ? 3 : 7)));
3001 const unsigned int child_index,
3017 const unsigned int child_index,
3024 switch (refine_case)
3028 if (child_index == 1)
3033 if (child_index == 1)
3052 const unsigned int child_index,
3064 switch (refine_case)
3068 if (child_index == 1)
3073 if (child_index == 1)
3078 if (child_index == 1)
3084 if (child_index % 2 == 1)
3086 if (child_index / 2 == 1)
3096 if (child_index / 2 == 1)
3098 if (child_index % 2 == 1)
3104 if (child_index % 2 == 1)
3106 if (child_index / 2 == 1)
3126 const unsigned int ,
3139 const unsigned int child_index,
3155 const unsigned int child_index,
3167 switch (refine_case)
3170 if (child_index == 1)
3175 if (child_index == 1)
3180 if (child_index == 1)
3185 if (child_index % 2 == 1)
3187 if (child_index / 2 == 1)
3197 if (child_index / 2 == 1)
3199 if (child_index % 2 == 1)
3205 if (child_index % 2 == 1)
3207 if (child_index / 2 == 1)
3228 const unsigned int child_index,
3234 switch (refine_case)
3237 if (child_index == 1)
3242 if (child_index == 1)
3263 const unsigned int ,
3284 return (p[0] >= 0.) && (p[0] <= 1.);
3293 return (p[0] >= 0.) && (p[0] <= 1.) && (p[1] >= 0.) && (p[1] <= 1.);
3302 return (p[0] >= 0.) && (p[0] <= 1.) && (p[1] >= 0.) && (p[1] <= 1.) &&
3303 (p[2] >= 0.) && (p[2] <= 1.);
3320 return (p[0] >= -eps) && (p[0] <= 1. +
eps);
3329 const double l = -
eps, u = 1 +
eps;
3330 return (p[0] >= l) && (p[0] <= u) && (p[1] >= l) && (p[1] <= u);
3339 const double l = -
eps, u = 1.0 +
eps;
3340 return (p[0] >= l) && (p[0] <= u) && (p[1] >= l) && (p[1] <= u) &&
3341 (p[2] >= l) && (p[2] <= u);
3349 const unsigned int vertex)
3362 const unsigned int vertex)
3364 constexpr
unsigned int cell_vertices[4][2] = {{0, 2}, {1, 3}, {0, 1}, {2, 3}};
3365 return cell_vertices[line][vertex];
3373 const unsigned int vertex)
3391 return vertices[line][vertex];
3406 const bool face_orientation,
3407 const bool face_flip,
3408 const bool face_rotation)
3430 constexpr
unsigned int vertex_translation[4][2][2][2] = {
3452 return vertex_translation[vertex][face_orientation][face_flip][face_rotation];
3474 0, 2, 2, 4, 2, 4, 4, 8};
3476 return n_children[ref_case];
3511 0, 2, 3, 3, 4, 2, 3, 3, 4, 4};
3512 return nsubs[subface_case];
3541 switch (subface_case)
3578 const unsigned int subface_no)
3581 switch (subface_case)
3616 if (subface_no == 0)
3663 const unsigned int face_no,
3668 const unsigned int dim = 2;
3686 return ref_cases[cell_refinement_case][face_no / 2];
3694 const unsigned int face_no,
3695 const bool face_orientation,
3697 const bool face_rotation)
3699 const unsigned int dim = 3;
3741 ref_cases[cell_refinement_case][face_no / 2];
3761 return (face_orientation == face_rotation) ? flip[ref_case] : ref_case;
3779 const unsigned int line_no)
3782 const unsigned int dim = 1;
3788 return cell_refinement_case;
3796 const unsigned int line_no)
3807 const unsigned int line_no)
3809 const unsigned int dim = 3;
3827 1, 1, 0, 0, 1, 1, 0, 0, 2, 2, 2, 2};
3829 return ((cell_refinement_case & cut_one[direction[line_no]]) ?
3859 const unsigned int dim = 1;
3870 const unsigned int face_no,
3875 const unsigned int dim = 2;
3892 const unsigned int face_no,
3893 const bool face_orientation,
3895 const bool face_rotation)
3897 const unsigned int dim = 3;
3921 (face_orientation == face_rotation) ? flip[face_refinement_case] :
3922 face_refinement_case;
3927 RefinementCase<dim>::cut_z,
3932 RefinementCase<dim>::cut_z,
3941 return face_to_cell[face_no / 2][std_face_ref];
3959 const unsigned int line_no)
3971 const unsigned int line_no)
3973 const unsigned int dim = 2;
3984 const unsigned int line_no)
3986 const unsigned int dim = 3;
3993 RefinementCase<dim>::cut_x,
3994 RefinementCase<dim>::cut_z,
3995 RefinementCase<dim>::cut_z};
3997 return ref_cases[line_no / 2];
4005 const bool face_orientation,
4006 const bool face_flip,
4007 const bool face_rotation)
4029 const unsigned int vertex_translation[4][2][2][2] = {
4051 return vertex_translation[vertex][face_orientation][face_flip][face_rotation];
4073 const bool face_orientation,
4074 const bool face_flip,
4075 const bool face_rotation)
4097 const unsigned int line_translation[4][2][2][2] = {
4119 return line_translation[line][face_orientation][face_flip][face_rotation];
4140 const bool line_orientation)
4142 return line_orientation ? vertex : (1 - vertex);
4159 inline std::array<unsigned int, 2>
4161 const unsigned int vertex)
4163 return {{vertex % 2, vertex / 2}};
4169 inline std::array<unsigned int, 2>
4171 const unsigned int vertex)
4181 inline std::array<unsigned int, 2>
4205 return {{lookup_table[i][0], lookup_table[i][1]}};
4211 inline std::array<unsigned int, 2>
4222 inline std::array<unsigned int, 2>
4224 const unsigned int vertex)
4231 return {{4 + vertex / 4, vertex % 4}};
4237 inline std::array<unsigned int, 2>
4239 const unsigned int vertex)
4251 const bool face_orientation,
4252 const bool face_flip,
4253 const bool face_rotation)
4275 const unsigned int line_translation[4][2][2][2] = {
4297 return line_translation[line][face_orientation][face_flip][face_rotation];
4318 const unsigned int face,
4319 const unsigned int subface,
4337 const unsigned int face,
4338 const unsigned int subface,
4340 const bool face_flip,
4359 {{0, 0}, {1, 1}, {0, 1}, {0, 1}},
4360 {{0, 1}, {0, 1}, {0, 0}, {1, 1}},
4361 {{0, 2}, {1, 3}, {0, 1}, {2, 3}}
4365 {{0, 0}, {1, 1}, {1, 0}, {1, 0}},
4366 {{1, 0}, {1, 0}, {0, 0}, {1, 1}},
4367 {{2, 0}, {3, 1}, {1, 0}, {3, 2}}
4370 return subcells[face_flip][ref_case - 1][face][subface];
4378 const unsigned int face,
4379 const unsigned int subface,
4380 const bool face_orientation,
4381 const bool face_flip,
4382 const bool face_rotation,
4385 const unsigned int dim = 3;
4390 if (!(subface == 0 &&
4428 (face_orientation == face_rotation) ? flip[face_ref_case] : face_ref_case;
4440 const unsigned int subface_exchange[4][2][2][2][4] = {
4443 {{{{0,
e,
e, e}, {0,
e,
e, e}}, {{0,
e,
e, e}, {0,
e,
e, e}}},
4444 {{{0,
e,
e, e}, {0,
e,
e, e}}, {{0,
e,
e, e}, {0,
e,
e, e}}}},
4458 {{{{0, 1,
e, e}, {0, 1,
e, e}}, {{1, 0,
e, e}, {1, 0,
e, e}}},
4459 {{{0, 1,
e, e}, {0, 1,
e, e}}, {{1, 0,
e, e}, {1, 0,
e, e}}}},
4462 {{{{0, 1,
e, e}, {1, 0,
e, e}}, {{1, 0,
e, e}, {0, 1,
e, e}}},
4463 {{{0, 1,
e, e}, {1, 0,
e, e}}, {{1, 0,
e, e}, {0, 1,
e, e}}}},
4485 const unsigned int std_subface =
4486 subface_exchange[face_ref_case][face_orientation][face_flip][face_rotation]
4570 const unsigned int equivalent_iso_subface[4][4] = {
4576 const unsigned int equ_std_subface =
4577 equivalent_iso_subface[std_face_ref][std_subface];
4580 return iso_children[ref_case - 1][face][equ_std_subface];
4587 ExcMessage(
"The face RefineCase is too coarse " 4588 "for the given cell RefineCase."));
4615 const unsigned int line,
4633 const unsigned int line,
4634 const bool face_orientation,
4635 const bool face_flip,
4636 const bool face_rotation)
4649 line, face_orientation, face_flip, face_rotation)];
4684 const unsigned int vertex,
4685 const bool face_orientation,
4686 const bool face_flip,
4687 const bool face_rotation)
4713 template <
typename Number>
4718 for (
unsigned int i = 0; i < dim; i++)
4730 double result = 0.0;
4732 for (
unsigned int i = 0; i < dim; i++)
4735 result =
std::max(result, p[i] - 1.);
4746 const unsigned int i)
4754 const double x = xi[0];
4767 const double x = xi[0];
4768 const double y = xi[1];
4772 return (1 - x) * (1 - y);
4785 const double x = xi[0];
4786 const double y = xi[1];
4787 const double z = xi[2];
4791 return (1 - x) * (1 - y) * (1 - z);
4793 return x * (1 - y) * (1 - z);
4795 return (1 - x) * y * (1 - z);
4797 return x * y * (1 - z);
4799 return (1 - x) * (1 - y) * z;
4801 return x * (1 - y) * z;
4803 return (1 - x) * y * z;
4821 const unsigned int i)
4841 const unsigned int i)
4845 const double x = xi[0];
4846 const double y = xi[1];
4850 return Point<2>(-(1 - y), -(1 - x));
4866 const unsigned int i)
4870 const double x = xi[0];
4871 const double y = xi[1];
4872 const double z = xi[2];
4876 return Point<3>(-(1 - y) * (1 - z),
4878 -(1 - x) * (1 - y));
4880 return Point<3>((1 - y) * (1 - z), -x * (1 - z), -x * (1 - y));
4882 return Point<3>(-y * (1 - z), (1 - x) * (1 - z), -(1 - x) * y);
4884 return Point<3>(y * (1 - z), x * (1 - z), -x * y);
4886 return Point<3>(-(1 - y) * z, -(1 - x) * z, (1 - x) * (1 - y));
4888 return Point<3>((1 - y) * z, -x * z, x * (1 - y));
4890 return Point<3>(-y * z, (1 - x) * z, (1 - x) * y);
4892 return Point<3>(y * z, x * z, x * y);
4918 namespace GeometryInfoHelper
4928 result[0] = derivative[0][1];
4929 result[1] = -derivative[0][0];
4952 for (
unsigned int i = 0; i < dim; ++i)
4953 jacobian[i] = derivative[i];
4962 template <
int spacedim>
4965 # ifndef DEAL_II_CXX14_CONSTEXPR_BUG 5009 for (
unsigned int l = 0; l < dim; ++
l)
5010 derivatives[l] += vertices[j] * grad_phi_j[l];
5013 forms[i] = internal::GeometryInfoHelper::wedge_product(derivatives);
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)
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
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)
static std_cxx20::ranges::iota_view< unsigned int, unsigned int > face_indices()
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
static bool is_inside_unit_cell(const Point< dim > &p)
GeometryPrimitive(const Object object)
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
void serialize(Archive &ar, const unsigned int version)
static unsigned int line_to_cell_vertices(const unsigned int line, const unsigned int vertex)
static Point< dim, Number > project_to_unit_cell(const Point< dim, Number > &p)
#define AssertIndexRange(index, range)
RefinementCase operator &(const RefinementCase &r) const
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 const std::array< unsigned int, vertices_per_cell > ucd_to_deal
static constexpr unsigned int vertices_per_cell
RefinementCase operator~() const
constexpr Tensor< 1, dim, typename ProductType< Number1, Number2 >::type > cross_product_3d(const Tensor< 1, dim, Number1 > &src1, const Tensor< 1, dim, Number2 > &src2)
static double distance_to_unit_cell(const Point< dim > &p)
static std::array< unsigned int, 2 > standard_quad_vertex_to_line_vertex_index(const unsigned int vertex)
static ::ExceptionBase & ExcMessage(std::string arg1)
static ::ExceptionBase & ExcImpossibleInDim(int arg1)
RefinementCase operator|(const RefinementCase &r) const
UpdateFlags operator &(const UpdateFlags f1, const UpdateFlags f2)
#define DeclException1(Exception1, type1, outsequence)
static constexpr unsigned int lines_per_cell
#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
boost::integer_range< IncrementableType > iota_view
static ::ExceptionBase & ExcInvalidCoordinate(double arg1)
#define DEAL_II_NAMESPACE_CLOSE
static unsigned int standard_to_real_line_vertex(const unsigned int vertex, const bool line_orientation=true)
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)
Point< spacedim > point(const gp_Pnt &p, const double tolerance=1e-10)
static std_cxx20::ranges::iota_view< unsigned int, unsigned int > vertex_indices()
static RefinementCase< dim > min_cell_refinement_case_for_line_refinement(const unsigned int line_no)
static unsigned int n_children(const RefinementCase< dim > &refinement_case)
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)
ParameterHandler::OutputStyle operator|(const ParameterHandler::OutputStyle f1, const ParameterHandler::OutputStyle f2)
static constexpr unsigned int lines_per_face
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 DEAL_II_NAMESPACE_OPEN
static unsigned int n_subfaces(const internal::SubfaceCase< dim > &subface_case)
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 std::array< unsigned int, 2 > standard_hex_vertex_to_quad_vertex_index(const unsigned int vertex)
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 std::array< unsigned int, 2 > standard_hex_line_to_quad_line_index(const unsigned int line)
typename internal::ndarray::HelperArray< T, Ns... >::type ndarray
static RefinementCase cut_axis(const unsigned int i)
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
static ::ExceptionBase & ExcInternalError()