dune-fem  2.4.1-rc
adaptiveleafgridpart.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_ADAPTIVELEAFGRIDPART_HH
2 #define DUNE_FEM_ADAPTIVELEAFGRIDPART_HH
3 
4 //- dune-common includes
5 #include <dune/common/typetraits.hh>
6 
7 //- dune-grid includes
8 #include <dune/grid/common/gridview.hh>
9 
10 //- dune-fem includes
17 
18 namespace Dune
19 {
20 
21  namespace Fem
22  {
23 
24  /*- see dune/grid/common/gridenums.hh
25  enum InterfaceType {
26  InteriorBorder_InteriorBorder_Interface=0, //!< send/receive interior and border entities
27  InteriorBorder_All_Interface=1, //!< send interior and border, receive all entities
28  Overlap_OverlapFront_Interface=2, //!< send overlap, receive overlap and front entities
29  Overlap_All_Interface=3, //!< send overlap, receive all entities
30  All_All_Interface=4 //!< send all and receive all entities
31  };
32  enum PartitionIteratorType {
33  Interior_Partition=0, //!< only interior entities
34  InteriorBorder_Partition=1, //!< interior and border entities
35  Overlap_Partition=2, //!< only overlap entities
36  OverlapFront_Partition=3, //!< overlap and front entities
37  All_Partition=4, //!< all entities
38  Ghost_Partition=5 //!< only ghost entities
39  };
40  */
41 
42  template <PartitionIteratorType ittype>
44  {
45  static const InterfaceType value = InteriorBorder_All_Interface;
46  };
47  template <>
48  struct IteratorToInterface< InteriorBorder_Partition >
49  {
50  static const InterfaceType value = InteriorBorder_InteriorBorder_Interface;
51  };
52 
54  //
55  // --AdaptiveLeafIndexGridPart
56  //
58 
66  template< class TraitsImp >
68  : public GridPartDefault< TraitsImp >
69  {
72 
73  public:
75  typedef TraitsImp Traits;
76 
80  typedef typename Traits :: GridType GridType;
83 
85  template< int codim >
86  struct Codim
87  : public BaseType :: template Codim< codim >
88  {};
89 
90  private:
91  typedef typename GridType::LeafGridView LeafGridView;
92 
93  public:
96 
98  typedef typename IntersectionIteratorType::Intersection IntersectionType;
99 
100  private:
101  struct Key
102  {
103  const GridPartType& gridPart_;
104  const GridType& grid_;
105  Key(const GridPartType& gridPart, const GridType& grid)
106  : gridPart_( gridPart ), grid_( grid )
107  {}
108 
109  bool operator ==( const Key& other ) const
110  {
111  // compare grid pointers
112  return (&grid_) == (& other.grid_ );
113  }
114  operator const GridPartType& () const { return gridPart_; }
115  };
116  typedef Key KeyType;
117 
119 
120  // type of entity with codimension zero
121  typedef typename Codim< 0 > :: EntityType ElementType;
122 
123  // the leaf grid view
124  LeafGridView leafGridView_ ;
125 
126  // reference to index set
127  const IndexSetType& indexSet_;
128 
129  // method to get DofManager instance to make sure the DofManager is delete after
130  // the index set provider
131  GridType &initDofManager(GridType &grid ) const
132  {
134  return grid ;
135  }
136 
137  public:
139  explicit AdaptiveGridPartBase ( GridType &grid )
140  : BaseType( initDofManager( grid ) ), // dofManager needs to be initialized before index set provider
141  leafGridView_( grid.leafGridView() ),
142  indexSet_( IndexSetProviderType::getObject( KeyType( asImp(), grid ) ) )
143  {}
144 
146  AdaptiveGridPartBase ( const ThisType &other )
147  : BaseType( other ),
148  leafGridView_( other.leafGridView_ ),
149  indexSet_( IndexSetProviderType::getObject( KeyType( asImp(), other.grid() ) ) )
150  {}
151 
155  {
156  IndexSetProviderType::removeObject( indexSet() );
157  }
158 
159  using BaseType::grid;
160 
162  const IndexSetType &indexSet () const
163  {
164  return indexSet_;
165  }
166 
168  template< int codim >
169  typename Codim< codim > :: IteratorType
170  begin () const
171  {
172  return begin< codim, InteriorBorder_Partition >();
173  }
174 
176  template< int codim, PartitionIteratorType pitype >
177  typename Codim< codim > :: template Partition< pitype > :: IteratorType
178  begin () const
179  {
180  return leafGridView_.template begin< codim, pitype >();
181  }
182 
184  template< int codim >
185  typename Codim< codim > :: IteratorType
186  end () const
187  {
188  return end< codim, InteriorBorder_Partition >();
189  }
190 
192  template< int codim, PartitionIteratorType pitype >
193  typename Codim< codim > :: template Partition< pitype > :: IteratorType
194  end () const
195  {
196  return leafGridView_.template end< codim, pitype >();
197  }
198 
200  inline IntersectionIteratorType
201  ibegin ( const ElementType &entity ) const
202  {
203  return leafGridView_.ibegin( entity );
204  }
205 
207  inline IntersectionIteratorType
208  iend ( const ElementType &entity ) const
209  {
210  return leafGridView_.iend( entity );
211  }
212 
213  int boundaryId ( const IntersectionType &intersection ) const
214  {
215  return intersection.boundaryId();
216  }
217 
219  inline int level () const
220  {
221  return grid().maxLevel();
222  }
223 
225  template< class DataHandle, class Data >
226  inline void communicate ( CommDataHandleIF< DataHandle, Data > &data,
227  InterfaceType iftype,
228  CommunicationDirection dir ) const
229  {
230  this->grid().communicate( data, iftype, dir );
231  }
232 
233  protected:
234  const GridPartType& asImp() const
235  {
236  return static_cast<const GridPartType &> (*this);
237  }
238  };
239 
247  template< class Grid, PartitionIteratorType idxpitype = All_Partition, bool onlyCodimensionZero = false >
249 
251  template< class Grid, PartitionIteratorType idxpitype , bool onlyCodimensionZero >
253  {
254  public:
256  typedef Grid GridType;
257 
260 
263 
264  typedef typename GridType::CollectiveCommunication CollectiveCommunicationType;
265 
266  protected:
267  // choose the AdaptiveIndexSet (based on the HierarchicIndexSet)
268  // to be revised
269  template < int dummy, bool onlyCodimZero >
271  {
272  static const PartitionIteratorType indexSetPartitionType = idxpitype;
273  static const InterfaceType indexSetInterfaceType = IteratorToInterface<idxpitype>::value;
275  };
276 
277  template <int dummy>
278  struct AdaptiveLeafIndexSetChooser<dummy, true >
279  {
280  static const PartitionIteratorType indexSetPartitionType = idxpitype;
281  static const InterfaceType indexSetInterfaceType = IteratorToInterface<idxpitype>::value;
283  };
284 
285  // also for Cartesian grids (e.g. YaspGrid) use adaptive leaf index set in parallel
286  typedef AdaptiveLeafIndexSetChooser<-1, onlyCodimensionZero > IndexSetChooserType;
287 
288  public:
290  typedef typename IndexSetChooserType::IndexSetType IndexSetType;
291 
292  static const PartitionIteratorType indexSetPartitionType = IndexSetChooserType::indexSetPartitionType;
293  static const InterfaceType indexSetInterfaceType = IndexSetChooserType::indexSetInterfaceType;
294 
295  // type of intersection iterator
296  typedef typename GridType::LeafGridView::IntersectionIterator IntersectionIteratorType;
297 
298  template< int codim >
299  struct Codim
300  {
301  typedef typename GridType::template Codim< codim >::Geometry GeometryType;
302  typedef typename GridType::template Codim< codim >::LocalGeometry LocalGeometryType;
303 
304  typedef typename GridType::template Codim< codim >::EntityPointer EntityPointerType;
305  typedef typename GridType::template Codim< codim >::Entity EntityType;
306 
307  typedef typename GridType::template Codim< codim >::EntitySeed EntitySeedType;
308 
309  template< PartitionIteratorType pitype >
310  struct Partition
311  {
313  };
314  };
315 
317  static const bool conforming = Dune::Capabilities::isLeafwiseConforming< GridType > :: v;
318  };
319 
320  template< class Grid, PartitionIteratorType idxpitype , bool onlyCodimensionZero >
322  : public AdaptiveGridPartBase< AdaptiveLeafGridPartTraits< Grid, idxpitype, onlyCodimensionZero > >
323  {
325  public:
326  typedef typename BaseType :: GridType GridType;
328  inline explicit AdaptiveLeafGridPart ( GridType &grid )
329  : BaseType( grid )
330  {
331  }
332 
335  : BaseType( other )
336  {
337  }
338  };
339 
347  template< class Grid, PartitionIteratorType idxpitype = All_Partition >
349  : public AdaptiveGridPartBase< AdaptiveLeafGridPartTraits< Grid, idxpitype, true > >
350  {
352  public:
353  typedef typename BaseType :: GridType GridType;
355  inline explicit DGAdaptiveLeafGridPart ( GridType &grid )
356  : BaseType( grid )
357  {
358  }
359 
362  : BaseType( other )
363  {
364  }
365  };
366 
367  template< class Grid, PartitionIteratorType idxpitype = All_Partition >
369 
371  template< class Grid, PartitionIteratorType idxpitype >
373  {
374  public:
377 
380  };
381 
389  template< class Grid, PartitionIteratorType idxpitype >
391  : public AdaptiveGridPartBase< IntersectionAdaptiveLeafGridPartTraits< Grid, idxpitype > >
392  {
394  public:
395  typedef typename BaseType :: GridType GridType;
397  inline explicit IntersectionAdaptiveLeafGridPart( GridType &grid )
398  : BaseType( grid )
399  {
400  }
401 
404  : BaseType( other )
405  {
406  }
407  };
408 
409 
410 
411  // Capabilities
412  // ------------
413 
414  namespace GridPartCapabilities
415  {
416 
417  // Capabilities for AdaptiveLeafGridPart
418  // -------------------------------------
419 
420  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero >
421  struct hasGrid< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero > >
422  {
423  static const bool v = true;
424  };
425 
426  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero >
427  struct hasSingleGeometryType< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero > >
428  {
429  static const bool v = Dune::Capabilities::hasSingleGeometryType< Grid >::v;
430  static const unsigned int topologyId
431  = Dune::Capabilities::hasSingleGeometryType< Grid >::topologyId;
432  };
433 
434  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero >
435  struct isCartesian< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero > >
436  {
437  static const bool v = Dune::Capabilities::isCartesian< Grid >::v;
438  };
439 
440  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero, int codim >
441  struct hasEntity< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero >, codim >
442  {
443  static const bool v = Dune::Capabilities::hasEntity< Grid, codim >::v;
444  };
445 
446  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero >
447  struct isParallel< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero > >
448  {
449  static const bool v = Dune::Capabilities::isParallel< Grid >::v;
450  };
451 
452  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero, int codim >
453  struct canCommunicate< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero >, codim >
454  {
455  static const bool v = Dune::Capabilities::canCommunicate< Grid, codim >::v;
456  };
457 
458  template< class Grid, PartitionIteratorType idxpitype, bool onlyCodimensionZero >
459  struct isConforming< AdaptiveLeafGridPart< Grid, idxpitype, onlyCodimensionZero > >
460  {
461  static const bool v = Dune::Capabilities::isLeafwiseConforming< Grid >::v;
462  };
463 
464 
465  // Capabilities for DGAdaptiveLeafGridPart
466  // ---------------------------------------
467 
468  template< class Grid, PartitionIteratorType idxpitype >
469  struct hasGrid< DGAdaptiveLeafGridPart< Grid, idxpitype > >
470  {
471  static const bool v = true;
472  };
473 
474  template< class Grid, PartitionIteratorType idxpitype >
475  struct hasSingleGeometryType< DGAdaptiveLeafGridPart< Grid, idxpitype > >
476  {
477  static const bool v = Dune::Capabilities::hasSingleGeometryType< Grid >::v;
478  static const unsigned int topologyId
479  = Dune::Capabilities::hasSingleGeometryType< Grid >::topologyId;
480  };
481 
482  template< class Grid, PartitionIteratorType idxpitype >
483  struct isCartesian< DGAdaptiveLeafGridPart< Grid, idxpitype > >
484  {
485  static const bool v = Dune::Capabilities::isCartesian< Grid >::v;
486  };
487 
488  template< class Grid, PartitionIteratorType idxpitype, int codim >
489  struct hasEntity< DGAdaptiveLeafGridPart< Grid, idxpitype >, codim >
490  {
491  static const bool v = Dune::Capabilities::hasEntity< Grid, codim >::v;
492  };
493 
494  template< class Grid, PartitionIteratorType idxpitype >
495  struct isParallel< DGAdaptiveLeafGridPart< Grid, idxpitype > >
496  {
497  static const bool v = Dune::Capabilities::isParallel< Grid >::v;
498  };
499 
500  template< class Grid, PartitionIteratorType idxpitype, int codim >
501  struct canCommunicate< DGAdaptiveLeafGridPart< Grid, idxpitype >, codim >
502  {
503  static const bool v = Dune::Capabilities::canCommunicate< Grid, codim >::v;
504  };
505 
506  template< class Grid, PartitionIteratorType idxpitype >
507  struct isConforming< DGAdaptiveLeafGridPart< Grid, idxpitype > >
508  {
509  static const bool v = Dune::Capabilities::isLeafwiseConforming< Grid >::v;
510  };
511 
512 
513  // Capbilities for IntersectionAdaptiveLeafGridPart
514  // ------------------------------------------------
515 
516  template< class Grid, PartitionIteratorType idxpitype >
517  struct hasGrid< IntersectionAdaptiveLeafGridPart< Grid, idxpitype > >
518  {
519  static const bool v = true;
520  };
521 
522  template< class Grid, PartitionIteratorType idxpitype >
524  {
525  static const bool v = Dune::Capabilities::hasSingleGeometryType< Grid >::v;
526  static const unsigned int topologyId
527  = Dune::Capabilities::hasSingleGeometryType< Grid >::topologyId;
528  };
529 
530  template< class Grid, PartitionIteratorType idxpitype >
531  struct isCartesian< IntersectionAdaptiveLeafGridPart< Grid, idxpitype > >
532  {
533  static const bool v = Dune::Capabilities::isCartesian< Grid >::v;
534  };
535 
536  template< class Grid, PartitionIteratorType idxpitype, int codim >
537  struct hasEntity< IntersectionAdaptiveLeafGridPart< Grid, idxpitype >, codim >
538  {
539  static const bool v = Dune::Capabilities::hasEntity< Grid, codim >::v;
540  };
541 
542  template< class Grid, PartitionIteratorType idxpitype >
543  struct isParallel< IntersectionAdaptiveLeafGridPart< Grid, idxpitype > >
544  {
545  static const bool v = Dune::Capabilities::isParallel< Grid >::v;
546  };
547 
548  template< class Grid, PartitionIteratorType idxpitype, int codim >
549  struct canCommunicate< IntersectionAdaptiveLeafGridPart< Grid, idxpitype >, codim >
550  {
551  static const bool v = Dune::Capabilities::canCommunicate< Grid, codim >::v;
552  };
553 
554  template< class Grid, PartitionIteratorType idxpitype >
555  struct isConforming< IntersectionAdaptiveLeafGridPart< Grid, idxpitype > >
556  {
557  static const bool v = Dune::Capabilities::isLeafwiseConforming< Grid >::v;
558  };
559 
560  } // namespace GridPartCapabilities
561 
562  } // namespace Fem
563 
564 } // namespace Dune
565 
566 #endif // #ifndef DUNE_FEM_ADAPTIVELEAFGRIDPART_HH
Default implementation for the GridPart classes.
Definition: gridpart.hh:307
GridType::template Codim< codim >::LocalGeometry LocalGeometryType
Definition: adaptiveleafgridpart.hh:302
Utility to get twist from IntersectionIterator, if provided by grid (i.e. AlbertaGrid, ALUGrid) otherwise return default values (correct for YASP/SGRID).
Definition: twistutility.hh:83
IntersectionAdaptiveLeafGridPart(GridType &grid)
Constructor.
Definition: adaptiveleafgridpart.hh:397
AdaptiveLeafGridPart< GridType, idxpitype, onlyCodimensionZero > GridPartType
type of the grid part , i.e. this type
Definition: adaptiveleafgridpart.hh:259
~AdaptiveGridPartBase()
Destrcutor removeing index set, if only one reference left, index set removed.
Definition: adaptiveleafgridpart.hh:154
Traits::IntersectionIteratorType IntersectionIteratorType
type of intersection iterator
Definition: adaptiveleafgridpart.hh:95
GridType::template Codim< codim >::EntitySeed EntitySeedType
Definition: adaptiveleafgridpart.hh:307
BaseType::GridType GridType
Definition: adaptiveleafgridpart.hh:395
GridType::template Codim< codim >::EntityPointer EntityPointerType
Definition: adaptiveleafgridpart.hh:304
Traits::GridType GridType
Grid implementation type.
Definition: adaptiveleafgridpart.hh:80
AdaptiveLeafGridPart(GridType &grid)
Constructor.
Definition: adaptiveleafgridpart.hh:328
IntersectionIteratorType iend(const ElementType &entity) const
iend of corresponding intersection iterator for given entity
Definition: adaptiveleafgridpart.hh:208
IntersectionIteratorType::Intersection IntersectionType
type of intersection
Definition: adaptiveleafgridpart.hh:98
specialize with &#39;true&#39; if implementation supports parallelism (default=false)
Definition: gridpart/common/capabilities.hh:59
Codim< codim >::template Partition< pitype >::IteratorType end() const
End iterator on the leaf level.
Definition: adaptiveleafgridpart.hh:194
BaseType::GridType GridType
Definition: adaptiveleafgridpart.hh:353
Singleton list for key/object pairs.
Definition: singletonlist.hh:49
GridType::LeafGridView::IntersectionIterator IntersectionIteratorType
Definition: adaptiveleafgridpart.hh:296
specialize with &#39;true&#39; for all codims that a grid implements entities for (default=false) ...
Definition: gridpart/common/capabilities.hh:49
GridType::CollectiveCommunication CollectiveCommunicationType
Definition: adaptiveleafgridpart.hh:264
specialize with &#39;true&#39; if implementation guarantees conforming level grids. (default=false) ...
Definition: gridpart/common/capabilities.hh:79
GridType::template Codim< codim >::Entity EntityType
Definition: adaptiveleafgridpart.hh:305
specialize with &#39;false&#39; if grid part has no underlying dune grid (default=true)
Definition: gridpart/common/capabilities.hh:17
AdaptiveLeafIndexSet< GridPartType > IndexSetType
Definition: adaptiveleafgridpart.hh:274
IntersectionAdaptiveLeafIndexSet< GridPartType > IndexSetType
type of the index set
Definition: adaptiveleafgridpart.hh:379
DGAdaptiveLeafIndexSet< GridPartType > IndexSetType
Definition: adaptiveleafgridpart.hh:282
static const InterfaceType value
Definition: adaptiveleafgridpart.hh:45
Codim< codim >::IteratorType end() const
Begin iterator on the leaf level.
Definition: adaptiveleafgridpart.hh:186
IntersectionAdaptiveLeafGridPart(const IntersectionAdaptiveLeafGridPart &other)
copy constructor
Definition: adaptiveleafgridpart.hh:403
consecutive, persistent index set for the leaf level based on the grid&#39;s hierarchy index set ...
Definition: adaptiveleafindexset.hh:35
AdaptiveLeafGridPart(const AdaptiveLeafGridPart &other)
copy constructor
Definition: adaptiveleafgridpart.hh:334
specialize with &#39;true&#39; for all codims that a grid can communicate data on (default=false) ...
Definition: gridpart/common/capabilities.hh:69
GridType::template Codim< codim >::Geometry GeometryType
Definition: adaptiveleafgridpart.hh:301
bool operator==(const Double &a, const Double &b)
Definition: double.hh:589
GridType::template Codim< codim >::template Partition< pitype >::LeafIterator IteratorType
Definition: adaptiveleafgridpart.hh:312
const IndexSetType & indexSet() const
Returns reference to index set of the underlying grid.
Definition: adaptiveleafgridpart.hh:162
Definition: coordinate.hh:4
Type definitions for the LeafGridPart class.
Definition: adaptiveleafgridpart.hh:252
TwistUtility< GridType > TwistUtilityType
The type of the corresponding TwistUtility.
Definition: adaptiveleafgridpart.hh:262
const GridPartType & asImp() const
Definition: adaptiveleafgridpart.hh:234
AdaptiveGridPartBase(const ThisType &other)
Copy Constructor.
Definition: adaptiveleafgridpart.hh:146
AdaptiveGridPartBase(GridType &grid)
constructor
Definition: adaptiveleafgridpart.hh:139
AdaptiveLeafIndexSetChooser<-1, onlyCodimensionZero > IndexSetChooserType
Definition: adaptiveleafgridpart.hh:286
A grid part with an index set specially designed for adaptive calculations.
Definition: adaptiveleafgridpart.hh:348
specialize with &#39;true&#39; for if the codimension 0 entity of the grid part has only one possible geometr...
Definition: gridpart/common/capabilities.hh:28
A grid part with an index set specially designed for adaptive calculations.
Definition: adaptiveleafgridpart.hh:67
Traits::IndexSetType IndexSetType
The leaf index set of the grid implementation.
Definition: adaptiveleafgridpart.hh:82
TraitsImp Traits
Type definitions.
Definition: adaptiveleafgridpart.hh:75
IndexSetChooserType::IndexSetType IndexSetType
type of the index set
Definition: adaptiveleafgridpart.hh:290
Definition: adaptiveleafgridpart.hh:310
Struct providing types of the leaf iterators on codimension codim.
Definition: adaptiveleafgridpart.hh:86
Type definitions for the LeafGridPart class.
Definition: adaptiveleafgridpart.hh:372
int level() const
Returns maxlevel of the grid.
Definition: adaptiveleafgridpart.hh:219
IntersectionAdaptiveLeafGridPart< Grid, idxpitype > GridPartType
type of the grid part , i.e. this type
Definition: adaptiveleafgridpart.hh:376
specialize with &#39;true&#39; if the grid part is cartesian (default=false)
Definition: gridpart/common/capabilities.hh:39
int boundaryId(const IntersectionType &intersection) const
Definition: adaptiveleafgridpart.hh:213
consecutive, persistent index set for the leaf level based on the grid&#39;s hierarchy index set ...
Definition: adaptiveleafindexset.hh:31
Codim< codim >::template Partition< pitype >::IteratorType begin() const
Begin iterator on the leaf level.
Definition: adaptiveleafgridpart.hh:178
Definition: adaptiveleafgridpart.hh:248
BaseType::GridType GridType
Definition: adaptiveleafgridpart.hh:326
Grid GridType
type of the grid
Definition: adaptiveleafgridpart.hh:256
Definition: adaptiveleafgridpart.hh:43
IntersectionIteratorType ibegin(const ElementType &entity) const
ibegin of corresponding intersection iterator for given entity
Definition: adaptiveleafgridpart.hh:201
DGAdaptiveLeafGridPart(const DGAdaptiveLeafGridPart &other)
copy constructor
Definition: adaptiveleafgridpart.hh:361
Definition: adaptiveleafgridpart.hh:299
Codim< codim >::IteratorType begin() const
Begin iterator on the leaf level.
Definition: adaptiveleafgridpart.hh:170
Definition: adaptiveleafindexset.hh:33
A grid part with an index set specially designed for adaptive calculations.
Definition: adaptiveleafgridpart.hh:368
void communicate(CommDataHandleIF< DataHandle, Data > &data, InterfaceType iftype, CommunicationDirection dir) const
corresponding communication method for this grid part
Definition: adaptiveleafgridpart.hh:226
Traits::GridPartType GridPartType
Grid implementation type.
Definition: adaptiveleafgridpart.hh:78
DGAdaptiveLeafGridPart(GridType &grid)
Constructor.
Definition: adaptiveleafgridpart.hh:355
static ThisType & instance(const GridType &grid)
obtain a reference to the DofManager for a given grid
Definition: dofmanager.hh:1319