Reference documentation for deal.II version 9.0.0
dof_accessor.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1998 - 2018 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE at
12 // the top level of the deal.II distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_dof_accessor_h
17 #define dealii_dof_accessor_h
18 
19 
20 #include <deal.II/base/config.h>
21 #include <deal.II/grid/tria_accessor.h>
22 #include <deal.II/dofs/dof_handler.h>
23 #include <deal.II/hp/dof_handler.h>
24 
25 #include <vector>
26 
27 DEAL_II_NAMESPACE_OPEN
28 
29 template <typename number> class FullMatrix;
30 template <typename number> class Vector;
31 class ConstraintMatrix;
32 
33 template <typename Accessor> class TriaRawIterator;
34 
35 template <int, int> class FiniteElement;
36 
37 
38 namespace internal
39 {
40  namespace DoFCellAccessorImplementation
41  {
42  struct Implementation;
43  }
44 
45  namespace DoFHandlerImplementation
46  {
47  struct Implementation;
48  namespace Policy
49  {
50  struct Implementation;
51  }
52  }
53 
54  namespace hp
55  {
56  namespace DoFHandlerImplementation
57  {
58  struct Implementation;
59  }
60  }
61 }
62 
63 // note: the file dof_accessor.templates.h is included at the end of
64 // this file. this includes a lot of templates and thus makes
65 // compilation slower, but at the same time allows for more aggressive
66 // inlining and thus faster code.
67 
68 
69 namespace internal
70 {
71  namespace DoFAccessorImplementation
72  {
90  template <int structdim, int dim, int spacedim>
91  struct Inheritance
92  {
97  typedef ::TriaAccessor<structdim,dim,spacedim> BaseClass;
98  };
99 
100 
106  template <int dim, int spacedim>
107  struct Inheritance<dim,dim,spacedim>
108  {
113  typedef ::CellAccessor<dim,spacedim> BaseClass;
114  };
115  }
116 }
117 
118 
119 /* -------------------------------------------------------------------------- */
120 
121 
122 
200 template <int structdim, typename DoFHandlerType, bool level_dof_access>
201 class DoFAccessor : public ::internal::DoFAccessorImplementation::Inheritance<structdim, DoFHandlerType::dimension, DoFHandlerType::space_dimension>::BaseClass
202 {
203 public:
204 
209  static const unsigned int dimension=DoFHandlerType::dimension;
210 
215  static const unsigned int space_dimension=DoFHandlerType::space_dimension;
216 
221  typedef
222  typename ::internal::DoFAccessorImplementation::Inheritance<structdim, dimension, space_dimension>::BaseClass
224 
228  typedef DoFHandlerType AccessorData;
229 
240  DoFAccessor ();
241 
259  const int level,
260  const int index,
261  const DoFHandlerType *dof_handler);
262 
275  template <int structdim2, int dim2, int spacedim2>
277 
282  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
284 
288  template <bool level_dof_access2>
290 
301 
309  const DoFHandlerType &
310  get_dof_handler () const;
311 
315  template <bool level_dof_access2>
317 
323 
328  static bool is_level_cell();
329 
341  child (const unsigned int c) const;
342 
348  typename ::internal::DoFHandlerImplementation::Iterators<DoFHandlerType, level_dof_access>::line_iterator
349  line (const unsigned int i) const;
350 
356  typename ::internal::DoFHandlerImplementation::Iterators<DoFHandlerType, level_dof_access>::quad_iterator
357  quad (const unsigned int i) const;
358 
404  void get_dof_indices (std::vector<types::global_dof_index> &dof_indices,
405  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
406 
413  void get_mg_dof_indices (const int level,
414  std::vector<types::global_dof_index> &dof_indices,
415  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
416 
420  void set_mg_dof_indices (const int level,
421  const std::vector<types::global_dof_index> &dof_indices,
422  const unsigned int fe_index = DoFHandlerType::default_fe_index);
423 
442  (const unsigned int vertex,
443  const unsigned int i,
444  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
445 
452  (const int level,
453  const unsigned int vertex,
454  const unsigned int i,
455  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
456 
485  (const unsigned int i,
486  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
487 
491  types::global_dof_index mg_dof_index (const int level, const unsigned int i) const;
492 
514  unsigned int
515  n_active_fe_indices () const;
516 
524  unsigned int
525  nth_active_fe_index (const unsigned int n) const;
526 
535  bool
536  fe_index_is_active (const unsigned int fe_index) const;
537 
544  get_fe (const unsigned int fe_index) const;
545 
555  DeclExceptionMsg (ExcInvalidObject, "This accessor object has not been "
556  "associated with any DoFHandler object.");
589 
590 protected:
591 
595  DoFHandlerType *dof_handler;
596 public:
610  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
612 
616  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
618 protected:
622  void set_dof_handler (DoFHandlerType *dh);
623 
641  void set_dof_index (const unsigned int i,
643  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
644 
645  void set_mg_dof_index (const int level, const unsigned int i, const types::global_dof_index index) const;
646 
665  (const unsigned int vertex,
666  const unsigned int i,
668  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
669 
670  void set_mg_vertex_dof_index
671  (const int level,
672  const unsigned int vertex,
673  const unsigned int i,
675  const unsigned int fe_index = DoFHandlerType::default_fe_index) const;
676 
681  template <typename> friend class TriaRawIterator;
682  template <int, class, bool> friend class DoFAccessor;
683 
684 private:
685 
690  template <int dim, int spacedim> friend class DoFHandler;
691  template <int dim, int spacedim> friend class hp::DoFHandler;
692 
693  friend struct ::internal::DoFHandlerImplementation::Policy::Implementation;
694  friend struct ::internal::DoFHandlerImplementation::Implementation;
695  friend struct ::internal::hp::DoFHandlerImplementation::Implementation;
696  friend struct ::internal::DoFCellAccessorImplementation::Implementation;
697  friend struct ::internal::DoFAccessorImplementation::Implementation;
698 };
699 
700 
701 
711 template <template <int, int> class DoFHandlerType, int spacedim, bool level_dof_access>
712 class DoFAccessor<0,DoFHandlerType<1,spacedim>, level_dof_access> : public TriaAccessor<0,1,spacedim>
713 {
714 public:
715 
720  static const unsigned int dimension=1;
721 
726  static const unsigned int space_dimension=spacedim;
727 
733 
737  typedef DoFHandlerType<1,spacedim> AccessorData;
738 
749  DoFAccessor ();
750 
768  const typename TriaAccessor<0,1,spacedim>::VertexKind vertex_kind,
769  const unsigned int vertex_index,
770  const DoFHandlerType<1,spacedim> *dof_handler);
771 
778  const int = 0,
779  const int = 0,
780  const DoFHandlerType<1,spacedim> *dof_handler = 0);
781 
794  template <int structdim2, int dim2, int spacedim2>
796 
801  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
803 
812  DoFAccessor<0,DoFHandlerType<1,spacedim>, level_dof_access> &
813  operator = (const DoFAccessor<0,DoFHandlerType<1,spacedim>, level_dof_access> &da) = delete;
814 
822  const DoFHandlerType<1,spacedim> &
823  get_dof_handler () const;
824 
828  template <bool level_dof_access2>
829  void copy_from (const DoFAccessor<0, DoFHandlerType<1,spacedim>, level_dof_access2> &a);
830 
836 
850  child (const unsigned int c) const;
851 
858  typename ::internal::DoFHandlerImplementation::Iterators<DoFHandlerType<1,spacedim>, level_dof_access>::line_iterator
859  line (const unsigned int i) const;
860 
867  typename ::internal::DoFHandlerImplementation::Iterators<DoFHandlerType<1,spacedim>, level_dof_access>::quad_iterator
868  quad (const unsigned int i) const;
869 
912  void get_dof_indices (std::vector<types::global_dof_index> &dof_indices,
913  const unsigned int fe_index = AccessorData::default_fe_index) const;
914 
921  void get_mg_dof_indices (const int level,
922  std::vector<types::global_dof_index> &dof_indices,
923  const unsigned int fe_index = AccessorData::default_fe_index) const;
924 
942  types::global_dof_index vertex_dof_index (const unsigned int vertex,
943  const unsigned int i,
944  const unsigned int fe_index = AccessorData::default_fe_index) const;
945 
960  types::global_dof_index dof_index (const unsigned int i,
961  const unsigned int fe_index = AccessorData::default_fe_index) const;
962 
981  unsigned int
982  n_active_fe_indices () const;
983 
991  unsigned int
992  nth_active_fe_index (const unsigned int n) const;
993 
1002  bool
1003  fe_index_is_active (const unsigned int fe_index) const;
1004 
1010  const FiniteElement<DoFHandlerType<1,spacedim>::dimension,DoFHandlerType<1,spacedim>::space_dimension> &
1011  get_fe (const unsigned int fe_index) const;
1012 
1022  DeclExceptionMsg (ExcInvalidObject, "This accessor object has not been "
1023  "associated with any DoFHandler object.");
1056 
1057 protected:
1058 
1062  DoFHandlerType<1,spacedim> *dof_handler;
1063 
1067  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
1069 
1073  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
1075 
1079  void set_dof_handler (DoFHandlerType<1,spacedim> *dh);
1080 
1098  void set_dof_index (const unsigned int i,
1100  const unsigned int fe_index = AccessorData::default_fe_index) const;
1101 
1119  void set_vertex_dof_index (const unsigned int vertex,
1120  const unsigned int i,
1122  const unsigned int fe_index = AccessorData::default_fe_index) const;
1123 
1128  template <typename> friend class TriaRawIterator;
1129 
1130 
1135  template <int, int> friend class DoFHandler;
1136  template <int, int> friend class hp::DoFHandler;
1137 
1138  friend struct ::internal::DoFHandlerImplementation::Policy::Implementation;
1139  friend struct ::internal::DoFHandlerImplementation::Implementation;
1140  friend struct ::internal::hp::DoFHandlerImplementation::Implementation;
1141  friend struct ::internal::DoFCellAccessorImplementation::Implementation;
1142 };
1143 
1144 
1145 
1146 /* -------------------------------------------------------------------------- */
1147 
1148 
1170 template <int structdim, int dim, int spacedim=dim>
1171 class DoFInvalidAccessor : public InvalidAccessor<structdim,dim,spacedim>
1172 {
1173 public:
1178 
1187  const int level = -1,
1188  const int index = -1,
1189  const AccessorData *local_data = 0);
1190 
1199 
1204  template <typename OtherAccessor>
1205  DoFInvalidAccessor (const OtherAccessor &);
1206 
1212  void set_dof_index (const unsigned int i,
1214  const unsigned int fe_index = DoFHandler<dim,spacedim>::default_fe_index) const;
1215 };
1216 
1217 
1218 
1219 
1220 /* -------------------------------------------------------------------------- */
1221 
1222 
1235 template <typename DoFHandlerType, bool level_dof_access>
1236 class DoFCellAccessor : public DoFAccessor<DoFHandlerType::dimension,DoFHandlerType, level_dof_access>
1237 {
1238 public:
1242  static const unsigned int dim = DoFHandlerType::dimension;
1243 
1247  static const unsigned int spacedim = DoFHandlerType::space_dimension;
1248 
1249 
1253  typedef DoFHandlerType AccessorData;
1254 
1260 
1264  typedef DoFHandlerType Container;
1265 
1270  typedef
1271  TriaIterator<DoFAccessor<DoFHandlerType::dimension-1, DoFHandlerType, level_dof_access> >
1273 
1285  const int level,
1286  const int index,
1287  const AccessorData *local_data);
1288 
1301  template <int structdim2, int dim2, int spacedim2>
1303 
1308  template <int dim2, class DoFHandlerType2, bool level_dof_access2>
1309  explicit
1311 
1322 
1337  parent () const;
1338 
1352  neighbor (const unsigned int i) const;
1353 
1360  periodic_neighbor (const unsigned int i) const;
1361 
1368  neighbor_or_periodic_neighbor (const unsigned int i) const;
1369 
1376  child (const unsigned int i) const;
1377 
1385  face (const unsigned int i) const;
1386 
1394  neighbor_child_on_subface (const unsigned int face_no,
1395  const unsigned int subface_no) const;
1396 
1404  periodic_neighbor_child_on_subface (const unsigned int face_no,
1405  const unsigned int subface_no) const;
1406 
1432  template <class InputVector, typename number>
1433  void get_dof_values (const InputVector &values,
1434  Vector<number> &local_values) const;
1435 
1450  template <class InputVector, typename ForwardIterator>
1451  void get_dof_values (const InputVector &values,
1452  ForwardIterator local_values_begin,
1453  ForwardIterator local_values_end) const;
1454 
1471  template <class InputVector, typename ForwardIterator>
1472  void get_dof_values (const ConstraintMatrix &constraints,
1473  const InputVector &values,
1474  ForwardIterator local_values_begin,
1475  ForwardIterator local_values_end) const;
1476 
1498  template <class OutputVector, typename number>
1499  void set_dof_values (const Vector<number> &local_values,
1500  OutputVector &values) const;
1501 
1533  template <class InputVector, typename number>
1534  void get_interpolated_dof_values (const InputVector &values,
1535  Vector<number> &interpolated_values,
1536  const unsigned int fe_index
1537  = DoFHandlerType::default_fe_index) const;
1538 
1591  template <class OutputVector, typename number>
1592  void set_dof_values_by_interpolation (const Vector<number> &local_values,
1593  OutputVector &values,
1594  const unsigned int fe_index
1595  = DoFHandlerType::default_fe_index) const;
1596 
1605  template <typename number, typename OutputVector>
1606  void
1607  distribute_local_to_global (const Vector<number> &local_source,
1608  OutputVector &global_destination) const;
1609 
1618  template <typename ForwardIterator, typename OutputVector>
1619  void
1620  distribute_local_to_global (ForwardIterator local_source_begin,
1621  ForwardIterator local_source_end,
1622  OutputVector &global_destination) const;
1623 
1634  template <typename ForwardIterator, typename OutputVector>
1635  void
1636  distribute_local_to_global (const ConstraintMatrix &constraints,
1637  ForwardIterator local_source_begin,
1638  ForwardIterator local_source_end,
1639  OutputVector &global_destination) const;
1640 
1647  template <typename number, typename OutputMatrix>
1648  void
1649  distribute_local_to_global (const FullMatrix<number> &local_source,
1650  OutputMatrix &global_destination) const;
1651 
1656  template <typename number, typename OutputMatrix, typename OutputVector>
1657  void
1658  distribute_local_to_global (const FullMatrix<number> &local_matrix,
1659  const Vector<number> &local_vector,
1660  OutputMatrix &global_matrix,
1661  OutputVector &global_vector) const;
1662 
1687  void get_active_or_mg_dof_indices (std::vector<types::global_dof_index> &dof_indices) const;
1688 
1724  void get_dof_indices (std::vector<types::global_dof_index> &dof_indices) const;
1725 
1733  void get_mg_dof_indices (std::vector<types::global_dof_index> &dof_indices) const;
1734 
1760  get_fe () const;
1761 
1783  unsigned int active_fe_index () const;
1784 
1812  void set_active_fe_index (const unsigned int i) const;
1821  void set_dof_indices (const std::vector<types::global_dof_index> &dof_indices);
1822 
1826  void set_mg_dof_indices (const std::vector<types::global_dof_index> &dof_indices);
1827 
1831  void update_cell_dof_indices_cache () const;
1832 
1833 private:
1834 
1839  template <int dim, int spacedim> friend class DoFHandler;
1840  friend struct ::internal::DoFCellAccessorImplementation::Implementation;
1841 };
1842 
1843 
1844 template <int sd, typename DoFHandlerType, bool level_dof_access>
1845 inline
1846 bool
1848 {
1849  return level_dof_access;
1850 }
1851 
1852 
1853 
1854 template <int structdim, int dim, int spacedim>
1855 template <typename OtherAccessor>
1857 DoFInvalidAccessor (const OtherAccessor &)
1858 {
1859  Assert (false,
1860  ExcMessage ("You are attempting an illegal conversion between "
1861  "iterator/accessor types. The constructor you call "
1862  "only exists to make certain template constructs "
1863  "easier to write as dimension independent code but "
1864  "the conversion is not valid in the current context."));
1865 }
1866 
1867 
1868 
1869 DEAL_II_NAMESPACE_CLOSE
1870 
1871 // include more templates
1872 #include "dof_accessor.templates.h"
1873 
1874 
1875 #endif
DoFHandlerType * dof_handler
Definition: dof_accessor.h:595
DoFCellAccessor< DoFHandlerType, level_dof_access > & operator=(const DoFCellAccessor< DoFHandlerType, level_dof_access > &da)=delete
void get_dof_indices(std::vector< types::global_dof_index > &dof_indices) const
void set_dof_index(const unsigned int i, const types::global_dof_index index, const unsigned int fe_index=DoFHandler< dim, spacedim >::default_fe_index) const
Definition: dof_accessor.cc:77
static bool is_level_cell()
face_iterator face(const unsigned int i) const
static const unsigned int spacedim
DoFHandlerType Container
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > parent() const
void copy_from(const DoFAccessor< structdim, DoFHandlerType, level_dof_access2 > &a)
DoFAccessor< structdim, DoFHandlerType, level_dof_access > & operator=(const DoFAccessor< structdim, DoFHandlerType, level_dof_access > &da)=delete
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > neighbor(const unsigned int i) const
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > periodic_neighbor(const unsigned int i) const
void set_dof_values_by_interpolation(const Vector< number > &local_values, OutputVector &values, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
bool operator==(const DoFAccessor< dim2, DoFHandlerType2, level_dof_access2 > &) const
TriaIterator< DoFAccessor< DoFHandlerType::dimension-1, DoFHandlerType, level_dof_access > > face_iterator
void set_mg_dof_indices(const int level, const std::vector< types::global_dof_index > &dof_indices, const unsigned int fe_index=DoFHandlerType::default_fe_index)
void set_dof_handler(DoFHandlerType *dh)
int level() const
void get_mg_dof_indices(std::vector< types::global_dof_index > &dof_indices) const
void get_interpolated_dof_values(const InputVector &values, Vector< number > &interpolated_values, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
unsigned int vertex_index(const unsigned int i) const
types::global_dof_index dof_index(const unsigned int i, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
DoFHandlerType AccessorData
Definition: dof_accessor.h:228
void update_cell_dof_indices_cache() const
Definition: dof_accessor.cc:93
void get_dof_indices(std::vector< types::global_dof_index > &dof_indices, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
unsigned int active_fe_index() const
TriaAccessorBase< structdim, dim, spacedim >::AccessorData AccessorData
static ::ExceptionBase & ExcMessage(std::string arg1)
void get_mg_dof_indices(const int level, std::vector< types::global_dof_index > &dof_indices, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
static ::ExceptionBase & ExcCantCompareIterators()
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > child(const unsigned int i) const
unsigned int global_dof_index
Definition: types.h:88
static ::ExceptionBase & ExcMatrixDoesNotMatch()
#define Assert(cond, exc)
Definition: exceptions.h:1142
typename ::internal::DoFHandlerImplementation::Iterators< DoFHandlerType, level_dof_access >::line_iterator line(const unsigned int i) const
Point< spacedim > & vertex(const unsigned int i) const
void set_mg_dof_indices(const std::vector< types::global_dof_index > &dof_indices)
static const unsigned int dimension
Definition: dof_accessor.h:209
const Triangulation< dim, spacedim > * tria
#define DeclExceptionMsg(Exception, defaulttext)
Definition: exceptions.h:335
::TriaAccessor< structdim, dim, spacedim > BaseClass
Definition: dof_accessor.h:97
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > neighbor_child_on_subface(const unsigned int face_no, const unsigned int subface_no) const
#define DeclException0(Exception0)
Definition: exceptions.h:323
void set_dof_indices(const std::vector< types::global_dof_index > &dof_indices)
void set_active_fe_index(const unsigned int i) const
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > neighbor_or_periodic_neighbor(const unsigned int i) const
static ::ExceptionBase & ExcVectorNotEmpty()
typename ::internal::DoFAccessorImplementation::Inheritance< structdim, dimension, space_dimension >::BaseClass BaseClass
Definition: dof_accessor.h:223
int index() const
void get_dof_values(const InputVector &values, Vector< number > &local_values) const
Definition: hp.h:102
types::global_dof_index mg_vertex_dof_index(const int level, const unsigned int vertex, const unsigned int i, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
bool operator!=(const DoFAccessor< dim2, DoFHandlerType2, level_dof_access2 > &) const
void set_dof_values(const Vector< number > &local_values, OutputVector &values) const
unsigned int n_active_fe_indices() const
InvalidAccessor< structdim, dim, spacedim >::AccessorData AccessorData
static const unsigned int dim
void distribute_local_to_global(const Vector< number > &local_source, OutputVector &global_destination) const
void set_dof_index(const unsigned int i, const types::global_dof_index index, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
DoFHandlerType AccessorData
static ::ExceptionBase & ExcNotActive()
types::global_dof_index vertex_dof_index(const unsigned int vertex, const unsigned int i, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
DoFInvalidAccessor(const Triangulation< dim, spacedim > *parent=0, const int level=-1, const int index=-1, const AccessorData *local_data=0)
Definition: dof_accessor.cc:43
static ::ExceptionBase & ExcInvalidObject()
DoFCellAccessor(const Triangulation< DoFHandlerType::dimension, DoFHandlerType::space_dimension > *tria, const int level, const int index, const AccessorData *local_data)
static const unsigned int space_dimension
Definition: dof_accessor.h:215
unsigned int nth_active_fe_index(const unsigned int n) const
void get_active_or_mg_dof_indices(std::vector< types::global_dof_index > &dof_indices) const
void set_vertex_dof_index(const unsigned int vertex, const unsigned int i, const types::global_dof_index index, const unsigned int fe_index=DoFHandlerType::default_fe_index) const
TriaIterator< DoFCellAccessor< DoFHandlerType, level_dof_access > > periodic_neighbor_child_on_subface(const unsigned int face_no, const unsigned int subface_no) const
const FiniteElement< DoFHandlerType::dimension, DoFHandlerType::space_dimension > & get_fe() const
const DoFHandlerType & get_dof_handler() const
const FiniteElement< DoFHandlerType::dimension, DoFHandlerType::space_dimension > & get_fe(const unsigned int fe_index) const
typename ::internal::DoFHandlerImplementation::Iterators< DoFHandlerType, level_dof_access >::quad_iterator quad(const unsigned int i) const
types::global_dof_index mg_dof_index(const int level, const unsigned int i) const
bool fe_index_is_active(const unsigned int fe_index) const
static ::ExceptionBase & ExcVectorDoesNotMatch()
TriaIterator< DoFAccessor< structdim, DoFHandlerType, level_dof_access > > child(const unsigned int c) const
DoFAccessor< DoFHandlerType::dimension, DoFHandlerType, level_dof_access > BaseClass