17 #ifndef __deal2__tria_accessor_templates_h 18 #define __deal2__tria_accessor_templates_h 21 #include <deal.II/base/config.h> 22 #include <deal.II/base/geometry_info.h> 23 #include <deal.II/base/template_constraints.h> 24 #include <deal.II/grid/tria.h> 25 #include <deal.II/grid/tria_levels.h> 26 #include <deal.II/grid/tria_faces.h> 27 #include <deal.II/grid/tria_iterator.h> 28 #include <deal.II/grid/tria_accessor.h> 29 #include <deal.II/grid/tria_iterator.templates.h> 30 #include <deal.II/distributed/tria.h> 47 template <
int structdim,
int dim,
int spacedim>
55 present_level((structdim==dim) ? level : 0),
56 present_index (index),
67 Assert ((level == 0) || (level == -1) || (level == -2),
73 template <
int structdim,
int dim,
int spacedim>
83 template <
int structdim,
int dim,
int spacedim>
101 template <
int structdim,
int dim,
int spacedim>
110 if (structdim != dim)
120 template <
int structdim,
int dim,
int spacedim>
125 Assert (
tria == a.
tria, TriaAccessorExceptions::ExcCantCompareIterators());
132 template <
int structdim,
int dim,
int spacedim>
137 Assert (
tria == a.
tria, TriaAccessorExceptions::ExcCantCompareIterators());
144 template <
int structdim,
int dim,
int spacedim>
149 Assert (
tria == other.
tria, TriaAccessorExceptions::ExcCantCompareIterators());
160 template <
int structdim,
int dim,
int spacedim>
172 template <
int structdim,
int dim,
int spacedim>
182 template <
int structdim,
int dim,
int spacedim>
197 template <
int structdim,
int dim,
int spacedim>
207 template <
int structdim,
int dim,
int spacedim>
216 if (structdim != dim)
225 static_cast<int>(
objects().cells.size()))
232 static_cast<int>(this->
tria->levels[this->present_level]->cells.cells.size()))
250 template <
int structdim,
int dim,
int spacedim>
258 if (structdim != dim)
294 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<1> > *
296 const ::internal::int2type<1>)
298 return &faces->lines;
304 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<2> > *
306 const ::internal::int2type<2>)
308 return &faces->quads;
312 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<1> > *
314 const ::internal::int2type<1>)
321 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<2> > *
323 const ::internal::int2type<2>)
330 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<3> > *
332 const ::internal::int2type<3>)
345 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<3> > *
347 const ::internal::int2type<3>)
357 template <
int structdim,
int dim>
359 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<structdim> > *
361 const ::internal::int2type<structdim>)
369 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<dim> > *
371 const ::internal::int2type<dim>)
380 template <
int structdim,
int dim,
int spacedim>
382 ::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject<structdim> > &
385 if (structdim != dim)
389 return *::internal::TriaAccessorBase::get_objects (this->
tria->faces,
392 return *::internal::TriaAccessorBase::get_objects (&this->
tria->levels[this->present_level]->cells,
400 template <
int structdim,
int dim,
int spacedim>
408 ExcMessage (
"You are attempting an illegal conversion between " 409 "iterator/accessor types. The constructor you call " 410 "only exists to make certain template constructs " 411 "easier to write as dimension independent code but " 412 "the conversion is not valid in the current context."));
417 template <
int structdim,
int dim,
int spacedim>
424 ExcMessage (
"You are attempting an illegal conversion between " 425 "iterator/accessor types. The constructor you call " 426 "only exists to make certain template constructs " 427 "easier to write as dimension independent code but " 428 "the conversion is not valid in the current context."));
433 template <
int structdim,
int dim,
int spacedim>
447 template <
int structdim,
int dim,
int spacedim>
462 template <
int structdim,
int dim,
int spacedim>
477 template <
int structdim,
int dim,
int spacedim>
491 template <
int structdim,
int dim,
int spacedim>
505 template <
int structdim,
int dim,
int spacedim>
512 template <
int structdim,
int dim,
int spacedim>
532 using ::TriaAccessor;
545 template <
int dim,
int spacedim>
552 ExcMessage (
"You can't ask for the index of a line bounding " 553 "a one-dimensional cell because it is not " 554 "bounded by lines."));
559 template <
int dim,
int spacedim>
563 const unsigned int i)
569 template <
int dim,
int spacedim>
573 const unsigned int i)
583 static const unsigned int lookup_table[12][2] =
604 const unsigned int quad_index=lookup_table[i][0];
605 const unsigned int std_line_index=lookup_table[i][1];
613 return (accessor.
quad(quad_index)->line_index(line_index));
623 template <
int structdim,
int dim,
int spacedim>
630 ExcMessage (
"You can't ask for the index of a quad bounding " 631 "a one- or two-dimensional cell because it is not " 632 "bounded by quads."));
637 template <
int dim,
int spacedim>
641 const unsigned int i)
654 template <
int structdim,
int dim,
int spacedim>
670 template <
int dim,
int spacedim>
674 const unsigned int face)
687 template <
int structdim,
int dim,
int spacedim>
709 template <
int dim,
int spacedim>
713 const unsigned int face)
719 ->cells.face_flips.size(),
735 template <
int structdim,
int dim,
int spacedim>
751 template <
int dim,
int spacedim>
755 const unsigned int face)
761 ->cells.face_rotations.size(),
775 template <
int dim,
int spacedim>
785 template <
int spacedim>
796 template <
int spacedim>
800 const unsigned int line)
805 return accessor.
tria->faces->quads.face_orientation(accessor.
present_index, line);
809 template <
int dim,
int spacedim>
813 const unsigned int line)
815 Assert (accessor.
used(), TriaAccessorExceptions::ExcCellNotUsed());
827 static const unsigned int lookup_table[12][2] =
845 const unsigned int quad_index=lookup_table[line][0];
846 const unsigned int std_line_index=lookup_table[line][1];
877 static const bool bool_table[2][2][2][2] =
897 return (accessor.
quad(quad_index)
898 ->line_orientation(line_index)
899 == bool_table[std_line_index/2]
912 template <
int structdim,
int dim,
int spacedim>
923 template <
int dim,
int spacedim>
927 const unsigned int face,
930 Assert (accessor.
used(), TriaAccessorExceptions::ExcCellNotUsed());
935 ->cells.face_orientations.size(),
951 template <
int structdim,
int dim,
int spacedim>
962 template <
int dim,
int spacedim>
966 const unsigned int face,
973 ->cells.face_flips.size(),
989 template <
int structdim,
int dim,
int spacedim>
1000 template <
int dim,
int spacedim>
1004 const unsigned int face,
1011 ->cells.face_rotations.size(),
1025 template <
int dim,
int spacedim>
1036 template <
int spacedim>
1049 template <
int spacedim>
1053 const unsigned int line,
1056 Assert (accessor.
used(), TriaAccessorExceptions::ExcCellNotUsed());
1060 < accessor.
tria->faces->quads.line_orientations.size(),
1072 template <
int dim,
int spacedim>
1089 template <
int dim,
int spacedim>
1093 const unsigned int corner)
1099 template <
int dim,
int spacedim>
1103 const unsigned int corner)
1114 static const unsigned int switch_table[2][2]= {{1,0},{0,1}};
1116 return accessor.
line(corner%2)
1117 ->vertex_index(switch_table[accessor.
line_orientation(corner%2)][corner/2]);
1122 template <
int dim,
int spacedim>
1126 const unsigned int corner)
1136 const unsigned int face_index=4+corner/4;
1138 return accessor.
quad(face_index)
1140 ::standard_to_real_face_vertex(corner%4,
1152 template <
int structdim,
int dim,
int spacedim>
1160 TriaAccessorBase<structdim,dim,spacedim> (parent, level, index, local_data)
1165 template <
int structdim,
int dim,
int spacedim>
1171 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1177 template <
int structdim,
int dim,
int spacedim>
1185 return ::internal::TriaAccessor::Implementation::vertex_index (*
this, corner);
1190 template <
int structdim,
int dim,
int spacedim>
1199 template <
int structdim,
int dim,
int spacedim>
1201 typename ::internal::Triangulation::Iterators<dim,spacedim>::line_iterator
1205 return typename ::internal::Triangulation::Iterators<dim,spacedim>::line_iterator
1211 template <
int structdim,
int dim,
int spacedim>
1219 return ::internal::TriaAccessor::Implementation::line_index (*
this, i);
1225 template <
int structdim,
int dim,
int spacedim>
1227 typename ::internal::Triangulation::Iterators<dim,spacedim>::quad_iterator
1231 return typename ::internal::Triangulation::Iterators<dim,spacedim>::quad_iterator
1237 template <
int structdim,
int dim,
int spacedim>
1242 return ::internal::TriaAccessor::Implementation::quad_index (*
this, i);
1247 template <
int structdim,
int dim,
int spacedim>
1252 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1254 return ::internal::TriaAccessor::Implementation::face_orientation (*
this, face);
1259 template <
int structdim,
int dim,
int spacedim>
1264 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1266 return ::internal::TriaAccessor::Implementation::face_flip (*
this, face);
1270 template <
int structdim,
int dim,
int spacedim>
1275 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1277 return ::internal::TriaAccessor::Implementation::face_rotation (*
this, face);
1282 template <
int structdim,
int dim,
int spacedim>
1287 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1291 return ::internal::TriaAccessor::Implementation::line_orientation (*
this, line);
1296 template <
int structdim,
int dim,
int spacedim>
1300 const bool value)
const 1302 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1309 template <
int structdim,
int dim,
int spacedim>
1313 const bool value)
const 1315 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1321 template <
int structdim,
int dim,
int spacedim>
1325 const bool value)
const 1327 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1334 template <
int structdim,
int dim,
int spacedim>
1338 const bool value)
const 1340 Assert (
used(), TriaAccessorExceptions::ExcCellNotUsed());
1349 template <
int structdim,
int dim,
int spacedim>
1353 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1359 template <
int structdim,
int dim,
int spacedim>
1364 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1369 template <
int structdim,
int dim,
int spacedim>
1383 template <
int structdim,
int dim,
int spacedim>
1401 template <
int structdim,
int dim,
int spacedim>
1419 TriaAccessorExceptions::ExcCellHasNoChildren());
1426 return child(i%2)->child_index(i/2);
1430 return child(i/2)->child_index(i%2);
1433 ExcMessage(
"This cell has no grandchildren equivalent to isotropic refinement"));
1444 template <
int structdim,
int dim,
int spacedim>
1449 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1473 this->
objects().refinement_cases.size(),
1475 this->
objects().refinement_cases.size()));
1485 template <
int structdim,
int dim,
int spacedim>
1494 (dim == structdim ? this->
level() + 1 : 0),
1498 TriaAccessorExceptions::ExcUnusedCellAsChild());
1505 template <
int structdim,
int dim,
int spacedim>
1525 TriaAccessorExceptions::ExcCellHasNoChildren());
1532 return child(i%2)->child(i/2);
1536 return child(i/2)->child(i%2);
1539 ExcMessage(
"This cell has no grandchildren equivalent to isotropic refinement"));
1552 template <
int structdim,
int dim,
int spacedim>
1558 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1570 template <
int structdim,
int dim,
int spacedim>
1580 template <
int structdim,
int dim,
int spacedim>
1587 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1589 this->
objects().refinement_cases.size(),
1591 this->
objects().refinement_cases.size()));
1597 template <
int structdim,
int dim,
int spacedim>
1603 TriaAccessorExceptions::ExcDereferenceInvalidObject());
1605 this->
objects().refinement_cases.size(),
1607 this->
objects().refinement_cases.size()));
1617 template <
int structdim,
int dim,
int spacedim>
1620 const int index)
const 1622 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1623 Assert (i%2==0, TriaAccessorExceptions::ExcSetOnlyEvenChildren(i));
1634 TriaAccessorExceptions::ExcCantSetChildren(index));
1641 template <
int structdim,
int dim,
int spacedim>
1645 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1653 template <
int structdim,
int dim,
int spacedim>
1662 for (
unsigned int i=0; i<n_sets_of_two; ++i)
1668 template <
int structdim,
int dim,
int spacedim>
1673 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1679 template <
int structdim,
int dim,
int spacedim>
1684 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1690 template <
int structdim,
int dim,
int spacedim>
1695 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1701 template <
int structdim,
int dim,
int spacedim>
1707 for (
unsigned int c=0; c<this->
n_children(); ++c)
1708 this->
child(c)->recursively_set_user_flag ();
1713 template <
int structdim,
int dim,
int spacedim>
1719 for (
unsigned int c=0; c<this->
n_children(); ++c)
1720 this->
child(c)->recursively_clear_user_flag ();
1725 template <
int structdim,
int dim,
int spacedim>
1728 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1734 template <
int structdim,
int dim,
int spacedim>
1737 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1743 template <
int structdim,
int dim,
int spacedim>
1746 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1752 template <
int structdim,
int dim,
int spacedim>
1755 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1761 template <
int structdim,
int dim,
int spacedim>
1768 for (
unsigned int c=0; c<this->
n_children(); ++c)
1769 this->
child(c)->recursively_set_user_pointer (p);
1774 template <
int structdim,
int dim,
int spacedim>
1781 for (
unsigned int c=0; c<this->
n_children(); ++c)
1782 this->
child(c)->recursively_clear_user_pointer ();
1787 template <
int structdim,
int dim,
int spacedim>
1790 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1796 template <
int structdim,
int dim,
int spacedim>
1799 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1805 template <
int structdim,
int dim,
int spacedim>
1808 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1814 template <
int structdim,
int dim,
int spacedim>
1821 for (
unsigned int c=0; c<this->
n_children(); ++c)
1822 this->
child(c)->recursively_set_user_index (p);
1827 template <
int structdim,
int dim,
int spacedim>
1834 for (
unsigned int c=0; c<this->
n_children(); ++c)
1835 this->
child(c)->recursively_clear_user_index ();
1840 template <
int structdim,
int dim,
int spacedim>
1848 unsigned int max_depth = 1;
1850 max_depth = std::max (max_depth,
1851 child(c)->max_refinement_depth() + 1);
1857 template <
int structdim,
int dim,
int spacedim>
1865 unsigned int sum = 0;
1867 sum += this->
child(c)->number_of_children();
1874 template <
int structdim,
int dim,
int spacedim>
1879 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1886 template <
int structdim,
int dim,
int spacedim>
1892 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1899 template <
int structdim,
int dim,
int spacedim>
1916 for (
unsigned int i=0; i<4; ++i)
1917 this->
line(i)->set_boundary_indicator (boundary_ind);
1927 template <
int structdim,
int dim,
int spacedim>
1938 template <
int structdim,
int dim,
int spacedim>
1943 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
1951 template <
int structdim,
int dim,
int spacedim>
1958 return std::sqrt((this->
vertex(1)-this->
vertex(0)).square());
1960 return std::sqrt(std::max((this->
vertex(3)-this->
vertex(0)).square(),
1963 return std::sqrt(std::max( std::max((this->
vertex(7)-this->
vertex(0)).square(),
1975 template <
int structdim,
int dim,
int spacedim>
1982 return std::sqrt((this->
vertex(1)-this->
vertex(0)).square());
1986 double min = std::numeric_limits<double>::max();
1987 for (
unsigned int i=0; i<GeometryInfo<structdim>::vertices_per_cell; ++i)
1988 for (
unsigned int j=i+1; j<GeometryInfo<structdim>::vertices_per_cell; ++j)
1989 min = std::min(min, (this->
vertex(i)-this->
vertex(j)).square());
1990 return std::sqrt(min);
2000 template <
int structdim,
int dim,
int spacedim>
2005 for (
unsigned int v=0; v<GeometryInfo<structdim>::vertices_per_cell; ++v)
2011 template <
int structdim,
int dim,
int spacedim>
2031 bool is_translation =
true;
2033 const double tol_square = 1e-24 * dist.
norm_square();
2034 for (
unsigned int i=1; i<GeometryInfo<structdim>::vertices_per_cell; ++i)
2039 is_translation =
false;
2043 return is_translation;
2049 template <
int spacedim>
2057 vertex_kind (vertex_kind),
2058 global_vertex_index (vertex_index)
2063 template <
int spacedim>
2072 vertex_kind (interior_vertex),
2073 global_vertex_index (
numbers::invalid_unsigned_int)
2086 template <
int spacedim>
2087 template <
int structdim2,
int dim2,
int spacedim2>
2093 vertex_kind (interior_vertex),
2094 global_vertex_index (
numbers::invalid_unsigned_int)
2101 template <
int spacedim>
2102 template <
int structdim2,
int dim2,
int spacedim2>
2108 vertex_kind (interior_vertex),
2109 global_vertex_index (
numbers::invalid_unsigned_int)
2116 template <
int spacedim>
2122 vertex_kind = t.vertex_kind;
2123 global_vertex_index = t.global_vertex_index;
2128 template <
int spacedim>
2137 template <
int spacedim>
2147 template <
int spacedim>
2152 return global_vertex_index;
2157 template <
int spacedim>
2166 template <
int spacedim>
2176 template <
int spacedim>
2181 const bool result = ((
tria == t.
tria)
2183 (global_vertex_index == t.global_vertex_index));
2195 template <
int spacedim>
2206 template <
int spacedim>
2215 template <
int spacedim>
2222 return global_vertex_index;
2227 template <
int spacedim>
2239 template <
int spacedim>
2244 return this->
tria->vertices[global_vertex_index];
2249 template <
int spacedim>
2251 typename ::internal::Triangulation::Iterators<1,spacedim>::line_iterator
2254 return typename ::internal::Triangulation::Iterators<1,spacedim>::line_iterator();
2258 template <
int spacedim>
2268 template <
int spacedim>
2270 typename ::internal::Triangulation::Iterators<1,spacedim>::quad_iterator
2273 return typename ::internal::Triangulation::Iterators<1,spacedim>::quad_iterator();
2278 template <
int spacedim>
2288 template <
int spacedim>
2293 return vertex_kind != interior_vertex;
2297 template <
int spacedim>
2302 switch (vertex_kind)
2307 Assert (
tria->vertex_to_boundary_id_map_1d->find (this->vertex_index())
2308 !=
tria->vertex_to_boundary_id_map_1d->end(),
2321 template <
int spacedim>
2330 template <
int spacedim>
2339 template <
int spacedim>
2348 template <
int spacedim>
2357 template <
int spacedim>
2366 template <
int spacedim>
2375 template <
int spacedim>
2384 template <
int spacedim>
2392 template <
int spacedim>
2401 template <
int spacedim>
2410 template <
int spacedim>
2417 template <
int spacedim>
2425 template <
int spacedim>
2433 template <
int spacedim>
2438 Assert (
tria->vertex_to_boundary_id_map_1d->find (this->vertex_index())
2439 !=
tria->vertex_to_boundary_id_map_1d->end(),
2447 template <
int spacedim>
2456 template <
int spacedim>
2460 return tria->vertex_used(global_vertex_index);
2466 template <
int dim,
int spacedim>
2474 TriaAccessor<dim, dim, spacedim> (parent, level, index, local_data)
2479 template <
int dim,
int spacedim>
2492 template <
int spacedim>
2494 ::TriaIterator<::TriaAccessor<0, 1, spacedim> >
2495 get_face (const ::CellAccessor<1,spacedim> &cell,
2496 const unsigned int i)
2499 a (&cell.get_triangulation(),
2500 ((i == 0) && cell.at_boundary(0)
2504 ((i == 1) && cell.at_boundary(1)
2509 cell.vertex_index(i));
2510 return ::TriaIterator<::TriaAccessor<0, 1, spacedim> >(a);
2514 template <
int spacedim>
2516 ::TriaIterator<::TriaAccessor<1, 2, spacedim> >
2517 get_face (const ::CellAccessor<2,spacedim> &cell,
2518 const unsigned int i)
2520 return cell.line(i);
2524 template <
int spacedim>
2526 ::TriaIterator<::TriaAccessor<2, 3, spacedim> >
2527 get_face (const ::CellAccessor<3,spacedim> &cell,
2528 const unsigned int i)
2530 return cell.quad(i);
2537 template <
int dim,
int spacedim>
2542 return ::internal::CellAccessor::get_face (*
this, i);
2547 template <
int dim,
int spacedim>
2572 template <
int dim,
int spacedim>
2584 template <
int dim,
int spacedim>
2596 template <
int dim,
int spacedim>
2601 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
2607 Assert (this->
active() || !this->
tria->levels[this->present_level]->refine_flags[this->present_index],
2608 ExcRefineCellNotActive());
2614 template <
int dim,
int spacedim>
2621 ExcCellFlaggedForCoarsening());
2628 template <
int dim,
int spacedim>
2640 template <
int dim,
int spacedim>
2658 new_ref_case = (old_ref_case
2667 return new_ref_case != old_ref_case;
2672 template <
int dim,
int spacedim>
2686 new_ref_case=old_ref_case
2691 return new_ref_case != old_ref_case;
2698 ::internal::SubfaceCase<1>
2701 return ::internal::SubfaceCase<1>::case_none;
2706 ::internal::SubfaceCase<1>
2709 return ::internal::SubfaceCase<1>::case_none;
2715 ::internal::SubfaceCase<1>
2718 return ::internal::SubfaceCase<1>::case_none;
2724 ::internal::SubfaceCase<2>
2727 Assert(
active(), TriaAccessorExceptions::ExcCellNotActive());
2737 ::internal::SubfaceCase<2>
2740 Assert(
active(), TriaAccessorExceptions::ExcCellNotActive());
2751 ::internal::SubfaceCase<3>
2754 Assert(
active(), TriaAccessorExceptions::ExcCellNotActive());
2760 return ::internal::SubfaceCase<3>::case_none;
2771 return ::internal::SubfaceCase<3>::case_x1y2y;
2774 return ::internal::SubfaceCase<3>::case_x1y;
2782 return ::internal::SubfaceCase<3>::case_x2y;
2785 return ::internal::SubfaceCase<3>::case_x;
2797 return ::internal::SubfaceCase<3>::case_y1x2x;
2800 return ::internal::SubfaceCase<3>::case_y1x;
2808 return ::internal::SubfaceCase<3>::case_y2x;
2811 return ::internal::SubfaceCase<3>::case_y;
2815 return ::internal::SubfaceCase<3>::case_xy;
2821 return ::internal::SubfaceCase<3>::case_none;
2826 template <
int dim,
int spacedim>
2831 Assert (this->
used(), TriaAccessorExceptions::ExcCellNotUsed());
2837 Assert (this->
active() || !this->
tria->levels[this->present_level]->coarsen_flags[this->present_index],
2838 ExcRefineCellNotActive());
2844 template <
int dim,
int spacedim>
2857 template <
int dim,
int spacedim>
2868 template <
int dim,
int spacedim>
2877 TriaAccessorExceptions::ExcUnusedCellAsNeighbor());
2884 template <
int dim,
int spacedim>
2893 TriaAccessorExceptions::ExcUnusedCellAsChild());
2900 template <
int dim,
int spacedim>
2910 template <
int dim,
int spacedim>
2916 #ifndef DEAL_II_WITH_P4EST 2933 template <
int dim,
int spacedim>
2938 #ifndef DEAL_II_WITH_P4EST 2952 template <
int dim,
int spacedim>
2958 #ifndef DEAL_II_WITH_P4EST 2976 template <
int dim,
int spacedim>
2982 #ifndef DEAL_II_WITH_P4EST 2991 template <
int dim,
int spacedim>
3007 template <
int dim,
int spacedim>
3012 Assert (this->
tria == other.
tria, TriaAccessorExceptions::ExcCantCompareIterators());
3026 DEAL_II_NAMESPACE_CLOSE
bool flag_for_line_refinement(const unsigned int line_no) const
const Triangulation< dim, spacedim > & get_triangulation() const
static const unsigned int invalid_unsigned_int
Iterator is invalid, probably due to an error.
unsigned int user_index() const
void set_user_index(const unsigned int p) const
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)
void set_user_pointer(void *p) const
void clear_children() const
void clear_user_flag() const
bool operator<(const TriaAccessorBase &other) const
TriaIterator< CellAccessor< dim, spacedim > > child(const unsigned int i) const
void clear_user_pointer() const
std::pair< unsigned int, unsigned int > neighbor_of_coarser_neighbor(const unsigned int neighbor) const
void recursively_set_user_pointer(void *p) const
static unsigned int vertex_index(const TriaAccessor< 1, dim, spacedim > &accessor, const unsigned int corner)
TriaAccessorBase & operator=(const TriaAccessorBase &)
::ExceptionBase & ExcMessage(std::string arg1)
unsigned int neighbor_of_neighbor_internal(const unsigned int neighbor) const
#define AssertIndexRange(index, range)
bool face_orientation(const unsigned int face) const
unsigned int neighbor_face_no(const unsigned int neighbor) const
TriaIterator< TriaAccessor< dim-1, dim, spacedim > > face(const unsigned int i) const
void copy_from(const TriaAccessorBase &)
::internal::SubfaceCase< dim > subface_case(const unsigned int face_no) const
TriaIterator< CellAccessor< dim, spacedim > > neighbor(const unsigned int i) const
void set_face_flip(const unsigned int face, const bool flip) const
bool line_orientation(const unsigned int line) const
int neighbor_level(const unsigned int i) const
double minimum_vertex_distance() const
const Boundary< dim, spacedim > & get_boundary() const
typename::internal::Triangulation::Iterators< dim, spacedim >::line_iterator line(const unsigned int i) const
types::subdomain_id level_subdomain_id() const
bool face_flip(const unsigned int face) const
void set_user_flag() const
bool has_children() const
bool is_locally_owned() const
static void set_face_rotation(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int, const bool)
types::subdomain_id locally_owned_subdomain() const
void copy_from(const InvalidAccessor &)
bool is_translation_of(const TriaIterator< TriaAccessor< structdim, dim, spacedim > > &o) const
static unsigned int quad_index(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int)
void recursively_clear_user_index() const
static void set_face_orientation(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int, const bool)
unsigned int max_refinement_depth() const
void clear_user_data() const
void clear_used_flag() const
bool has_children() const
void set_refinement_case(const RefinementCase< structdim > &ref_case) const
void set_used_flag() const
void set_parent(const unsigned int parent_index)
static bool face_rotation(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int)
static bool face_flip(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int)
#define Assert(cond, exc)
types::boundary_id boundary_indicator() const
void set_boundary_indicator(const types::boundary_id) const
TriaAccessor(const Triangulation< dim, spacedim > *parent=0, const int level=-1, const int index=-1, const AccessorData *local_data=0)
unsigned int vertex_index(const unsigned int i) const
real_type norm_square() const
bool user_flag_set() const
const Triangulation< dim, spacedim > * tria
void recursively_clear_user_flag() const
bool is_locally_owned_on_level() const
::internal::Triangulation::TriaObjects<::internal::Triangulation::TriaObject< structdim > > & objects() const
bool is_artificial() const
bool coarsen_flag_set() const
::ExceptionBase & ExcIndexRange(int arg1, int arg2, int arg3)
TriaIterator< TriaAccessor< structdim, dim, spacedim > > isotropic_child(const unsigned int i) const
void set_all_boundary_indicators(const types::boundary_id) const
typename::internal::TriaAccessor::PresentLevelType< structdim, dim >::type present_level
bool operator<(const CellAccessor< dim, spacedim > &other) const
::ExceptionBase & ExcImpossibleInDim(int arg1)
void clear_refine_flag() const
void set_refine_flag(const RefinementCase< dim > ref_case=RefinementCase< dim >::isotropic_refinement) const
IteratorState::IteratorStates state() const
bool operator==(const TriaAccessorBase &) const
unsigned int face_index(const unsigned int i) const
static void set_line_orientation(const TriaAccessor< 1, dim, spacedim > &, const unsigned int, const bool)
void clear_coarsen_flag() const
typename::internal::Triangulation::Iterators< dim, spacedim >::quad_iterator quad(const unsigned int i) const
Point< spacedim > center() const
int neighbor_index(const unsigned int i) const
static RefinementCase< dim > min_cell_refinement_case_for_line_refinement(const unsigned int line_no)
RefinementCase< dim > refine_flag_set() const
void set_face_orientation(const unsigned int face, const bool orientation) const
unsigned int number_of_children() const
TriaIterator< TriaAccessor< structdim, dim, spacedim > > child(const unsigned int i) const
static unsigned int n_children(const RefinementCase< dim > &refinement_case)
unsigned int quad_index(const unsigned int i) const
const types::subdomain_id artificial_subdomain_id
void clear_refinement_case() const
static bool line_orientation(const TriaAccessor< 1, dim, spacedim > &, const unsigned int)
static void set_face_flip(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int, const bool)
bool flag_for_face_refinement(const unsigned int face_no, const RefinementCase< dim-1 > &face_refinement_case=RefinementCase< dim-1 >::isotropic_refinement) const
unsigned int n_children() const
IteratorState::IteratorStates state() const
void recursively_set_user_index(const unsigned int p) const
void set_coarsen_flag() const
CellAccessor(const Triangulation< dim, spacedim > *parent=0, const int level=-1, const int index=-1, const AccessorData *local_data=0)
void set_face_rotation(const unsigned int face, const bool rotation) const
int isotropic_child_index(const unsigned int i) const
void set_children(const unsigned int i, const int index) const
void * user_pointer() const
void recursively_clear_user_pointer() const
int child_index(const unsigned int i) const
::ExceptionBase & ExcNotImplemented()
InvalidAccessor(const Triangulation< dim, spacedim > *parent=0, const int level=-1, const int index=-1, const AccessorData *local_data=0)
Iterator reached end of container.
Iterator points to a valid object.
unsigned char boundary_id
types::subdomain_id subdomain_id() const
const types::boundary_id internal_face_boundary_id
void recursively_set_user_flag() const
void clear_user_index() const
TriaAccessorBase(const Triangulation< dim, spacedim > *parent=0, const int level=-1, const int index=-1, const AccessorData *=0)
::ExceptionBase & ExcInternalError()
static bool face_orientation(const TriaAccessor< structdim, dim, spacedim > &, const unsigned int)
bool operator==(const InvalidAccessor &) const
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)
bool face_rotation(const unsigned int face) const
RefinementCase< structdim > refinement_case() const
void set_line_orientation(const unsigned int line, const bool orientation) const
static unsigned int line_index(const TriaAccessor< 1, dim, spacedim > &, const unsigned int)
bool operator!=(const TriaAccessorBase &) const
Point< spacedim > & vertex(const unsigned int i) const
unsigned int line_index(const unsigned int i) const