dune-multidomaingrid 2.10-git
Loading...
Searching...
No Matches
subdomaingrid.hh
Go to the documentation of this file.
1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_HH
2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_HH
3
4#include <memory>
5#include <string>
6
8
11
22
23
24namespace Dune {
25
26namespace mdgrid {
27
28
29// forward declaration in correct namespace
30template<typename,typename>
31class MultiDomainGrid;
32
33namespace subdomain {
34
35template<typename MDGrid>
36class SubDomainGrid;
37
38template<typename MDGrid>
40
41private:
42
43 static const int dim = MDGrid::dimension;
44 static const int dimw = MDGrid::dimensionworld;
45
46public:
47
48 struct Traits
49 {
52
53
55 const Grid,
57 const Grid,
59 const Grid,
60 typename MDGrid::LeafIndexSetImp
61 >,
62 typename MDGrid::LeafGridView::Intersection
63 >
64 >;
65
67 const Grid,
69 const Grid,
71 const Grid,
72 typename MDGrid::LevelIndexSetImp
73 >,
74 typename MDGrid::LevelGridView::Intersection
75 >
76 >;
77
79 const Grid,
81 const Grid,
83 const Grid,
84 typename MDGrid::LeafIndexSetImp
85 >,
86 typename MDGrid::LeafGridView::IntersectionIterator
87 >,
89 const Grid,
91 const Grid,
92 typename MDGrid::LeafIndexSetImp
93 >,
94 typename MDGrid::LeafGridView::Intersection
95 >
96 >;
97
99 const Grid,
101 const Grid,
103 const Grid,
104 typename MDGrid::LevelIndexSetImp
105 >,
106 typename MDGrid::LevelGridView::IntersectionIterator
107 >,
109 const Grid,
111 const Grid,
112 typename MDGrid::LevelIndexSetImp
113 >,
114 typename MDGrid::LevelGridView::Intersection
115 >
116 >;
117
119
122
123 template <int cd>
124 struct Codim
125 {
126
129
131
133
134 template <PartitionIteratorType pitype>
136 {
137
139 cd,
140 const Grid,
142 typename Traits::LevelGridView,
143 typename MDGrid::LevelGridView::template Codim<cd>::template Partition<pitype>::Iterator,
144 cd,
145 pitype,
146 const Grid
147 >
148 >;
149
151 cd,
152 const Grid,
154 typename Traits::LeafGridView,
155 typename MDGrid::LeafGridView::template Codim<cd>::template Partition<pitype>::Iterator,
156 cd,
157 pitype,
158 const Grid
159 >
160 >;
161 };
162
165
166 private:
167 friend class Dune::Entity<cd, dim, const Grid, EntityWrapper>;
168
169 };
170
173
175 const Grid,
177 const Grid,
178 typename MDGrid::HostGrid::Traits::GlobalIdSet
179 >,
180 typename MDGrid::HostGrid::Traits::GlobalIdSet::IdType
181 >;
182
184 const Grid,
186 const Grid,
187 typename MDGrid::HostGrid::Traits::LocalIdSet
188 >,
189 typename MDGrid::HostGrid::Traits::LocalIdSet::IdType
190 >;
191
192 using Communication = typename MDGrid::Communication;
193 };
194
195};
196
197
198template<typename MDGrid>
200 public GridDefaultImplementation<MDGrid::dimension,
201 MDGrid::dimensionworld,
202 typename MDGrid::ctype,
203 SubDomainGridFamily<MDGrid> > {
204
205 template<typename,typename>
206 friend class ::Dune::mdgrid::MultiDomainGrid;
207
208 template<int codim, int dim, typename GridImp>
209 friend class EntityWrapperBase;
210
211 template<int codim, int dim, typename GridImp>
212 friend class EntityWrapper;
213
214 template<typename, typename, int codim, PartitionIteratorType pitype, typename GridImp>
215 friend class IteratorWrapper;
216
217 template<typename GridImp>
219
220 template<int mydim, int coorddim, typename GridImp>
221 friend class GeometryWrapper;
222
223 template<int mydim, int coorddim, typename GridImp>
225
226 template<typename GridImp, typename WrappedIndexSet>
227 friend class IndexSetWrapper;
228
229 template<typename GridImp, typename WrappedIdSet>
230 friend class IdSetWrapper;
231
232 template<typename GridImp>
233 friend struct ::Dune::mdgrid::detail::HostGridAccessor;
234
235 template<typename,typename,typename>
237
238 template<typename,typename,typename>
240
241 template<typename>
242 friend class LevelGridView;
243
244 template<typename>
245 friend class LeafGridView;
246
247 typedef GridDefaultImplementation<MDGrid::dimension,
248 MDGrid::dimensionworld,
249 typename MDGrid::ctype,
251 > BaseT;
252
254
255public:
256
257 using MultiDomainGrid = MDGrid;
258
259 using HostGrid = typename MDGrid::HostGrid;
260
261private:
262
263 typedef IndexSetWrapper<const SubDomainGrid<MDGrid>, typename MDGrid::LevelIndexSetImp> LevelIndexSetImp;
264
265 typedef IndexSetWrapper<const SubDomainGrid<MDGrid>, typename MDGrid::LeafIndexSetImp> LeafIndexSetImp;
266
267 typedef IdSetWrapper<const SubDomainGrid<MDGrid>, typename HostGrid::Traits::GlobalIdSet> GlobalIdSetImp;
268
269 typedef IdSetWrapper<const SubDomainGrid<MDGrid>, typename HostGrid::Traits::LocalIdSet> LocalIdSetImp;
270
271public:
272
274 typedef typename GridFamily::Traits Traits;
275
277 typedef typename MDGrid::ctype ctype;
278
280 typedef typename MDGrid::SubDomainIndex SubDomainIndex;
281
283
284 using BaseT::dimension;
286
289
290 template<typename EntitySeed>
291 typename Traits::template Codim<EntitySeed::codimension>::Entity
293 {
294 return
296 this,
297 typename MDGrid::template Codim<EntitySeed::codimension>::Entity(
298 _grid.entity(entitySeed)
299 )
300 );
301 }
302
303 int maxLevel() const {
304 return _grid.maxLevel();
305 }
306
307 template<int codim>
308 typename Traits::template Codim<codim>::LevelIterator lbegin(int level) const {
309 return IteratorWrapper<
310 typename Traits::LevelGridView,
311 typename MultiDomainGrid::LevelGridView::template Codim<codim>::template Partition<All_Partition>::Iterator,
312 codim,
314 const GridImp>(
315 this,
316 &this->levelGridView(level).indexSet(),
317 _grid.levelGridView(level).template begin<codim>(),
318 _grid.levelGridView(level).template end<codim>()
319 );
320 }
321
322 template<int codim>
323 typename Traits::template Codim<codim>::LevelIterator lend(int level) const {
324 return IteratorWrapper<
325 typename Traits::LevelGridView,
326 typename MultiDomainGrid::LevelGridView::template Codim<codim>::template Partition<All_Partition>::Iterator,
327 codim,
329 const GridImp>(
330 this,
331 &this->levelGridView(level).indexSet(),
332 _grid.levelGridView(level).template end<codim>(),
333 _grid.levelGridView(level).template end<codim>()
334 );
335 }
336
337 template<int codim, PartitionIteratorType pitype>
338 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lbegin(int level) const {
339 return IteratorWrapper<
340 typename Traits::LevelGridView,
341 typename MultiDomainGrid::LevelGridView::template Codim<codim>::template Partition<pitype>::Iterator,
342 codim,
343 pitype,
344 const GridImp>(
345 this,
346 &this->levelGridView(level).indexSet(),
347 _grid.levelGridView(level).template begin<codim,pitype>(),
348 _grid.levelGridView(level).template end<codim,pitype>()
349 );
350 }
351
352 template<int codim, PartitionIteratorType pitype>
353 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lend(int level) const {
354 return IteratorWrapper<
355 typename Traits::LevelGridView,
356 typename MultiDomainGrid::LevelGridView::template Codim<codim>::template Partition<pitype>::Iterator,
357 codim,
358 pitype,
359 const GridImp>(
360 this,
361 &this->levelGridView(level).indexSet(),
362 _grid.levelGridView(level).template end<codim,pitype>(),
363 _grid.levelGridView(level).template end<codim,pitype>()
364 );
365 }
366
367 template<int codim>
368 typename Traits::template Codim<codim>::LeafIterator leafbegin() const {
369 return IteratorWrapper<
370 typename Traits::LeafGridView,
371 typename MultiDomainGrid::LeafGridView::template Codim<codim>::template Partition<All_Partition>::Iterator,
372 codim,
374 const GridImp>(
375 this,
376 &this->leafGridView().indexSet(),
377 _grid.leafGridView().template begin<codim>(),
378 _grid.leafGridView().template end<codim>()
379 );
380 }
381
382 template<int codim>
383 typename Traits::template Codim<codim>::LeafIterator leafend() const {
384 return IteratorWrapper<
385 typename Traits::LeafGridView,
386 typename MultiDomainGrid::LeafGridView::template Codim<codim>::template Partition<All_Partition>::Iterator,
387 codim,
389 const GridImp>(
390 this,
391 &this->leafGridView().indexSet(),
392 _grid.leafGridView().template end<codim>(),
393 _grid.leafGridView().template end<codim>()
394 );
395 }
396
397 template<int codim, PartitionIteratorType pitype>
398 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafbegin() const {
399 return IteratorWrapper<
400 typename Traits::LeafGridView,
401 typename MultiDomainGrid::LeafGridView::template Codim<codim>::template Partition<pitype>::Iterator,
402 codim,
403 pitype,
404 const GridImp>(
405 this,
406 &this->leafGridView().indexSet(),
407 _grid.leafGridView().template begin<codim,pitype>(),
408 _grid.leafGridView().template end<codim,pitype>()
409 );
410 }
411
412 template<int codim, PartitionIteratorType pitype>
413 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafend() const {
414 return IteratorWrapper<
415 typename Traits::LeafGridView,
416 typename MultiDomainGrid::LeafGridView::template Codim<codim>::template Partition<pitype>::Iterator,
417 codim,
418 pitype,
419 const GridImp>(
420 this,
421 &this->leafGridView().indexSet(),
422 _grid.leafGridView().template end<codim,pitype>(),
423 _grid.leafGridView().template end<codim,pitype>()
424 );
425 }
426
427 int size(int level, int codim) const {
428 assert(level <= maxLevel());
429 return _levelIndexSets[level]->size(codim);
430 }
431
432 int size(int codim) const {
433 return _leafIndexSet.size(codim);
434 }
435
436 int size(int level, GeometryType type) const {
437 assert(level <= maxLevel());
438 return _levelIndexSets[level]->size(type);
439 }
440
441 int size(GeometryType type) const {
442 // TODO: check this (perhaps return sum over levelindexsets?)
443 return _leafIndexSet.size(type);
444 }
445
446 const typename Traits::GlobalIdSet& globalIdSet() const {
447 return _globalIdSet;
448 }
449
450 const typename Traits::LocalIdSet& localIdSet() const {
451 return _localIdSet;
452 }
453
454 const typename Traits::LevelIndexSet& levelIndexSet(int level) const {
455 if (!_grid.supportLevelIndexSets()) {
456 DUNE_THROW(GridError,"level index set support not enabled for this grid");
457 }
458 assert(level <= maxLevel());
459 assert(_levelIndexSets[level]);
460 return *_levelIndexSets[level];
461 }
462
463 const typename Traits::LeafIndexSet& leafIndexSet() const {
464 return _leafIndexSet;
465 }
466
468
474 void globalRefine(int refCount) {
475 DUNE_THROW(NotImplemented,"grid modification only allowed on the MultiDomainGrid");
476 }
477
479
489 bool mark(int refCount, const typename Traits::template Codim<0>::Entity& e) {
490 return _grid.mark(refCount,multiDomainEntity(e));
491 }
492
494
501 int getMark(const typename Traits::template Codim<0>::Entity& e) {
502 return _grid.getMark(multiDomainEntity(e));
503 }
504
506
512 bool preAdapt() {
513 DUNE_THROW(NotImplemented,"grid modification only allowed on the MultiDomainGrid");
514 }
515
517
523 bool adapt() {
524 DUNE_THROW(NotImplemented,"grid modification only allowed on the MultiDomainGrid");
525 }
526
528
534 void postAdapt() {
535 DUNE_THROW(NotImplemented,"grid modification only allowed on the MultiDomainGrid");
536 }
537
538 int overlapSize(int level, int codim) const {
539 return _grid.overlapSize(level,codim);
540 }
541
542 int overlapSize(int codim) const {
543 return _grid.overlapSize(codim);
544 }
545
546 int ghostSize(int level, int codim) const {
547 return _grid.ghostSize(level,codim);
548 }
549
550 int ghostSize(int codim) const {
551 return _grid.ghostSize(codim);
552 }
553
554 const typename Traits::Communication& comm() const {
555 return _grid.comm();
556 }
557
558 template<typename DataHandleImp, typename DataTypeImp>
562 int level) const
563 {
565 _grid.hostGrid().levelGridView(level).communicate(datahandle,iftype,dir);
566 }
567
568 template<typename DataHandleImp, typename DataTypeImp>
576
577 size_t numBoundarySegments() const
578 {
579 return _grid.numBoundarySegments();
580 }
581
585 const MDGrid& multiDomainGrid() const {
586 return _grid;
587 }
588
591 return _subDomain;
592 }
593
594 void update() {
595 if (_grid.supportLevelIndexSets()) {
596 while (_levelIndexSets.size() <= static_cast<std::size_t>(maxLevel())) {
597 _levelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,_grid.levelIndexSet(_levelIndexSets.size())));
598 }
599 }
600 }
601
602 bool operator==(const SubDomainGrid& rhs) const {
603 return (&_grid == &rhs._grid && _subDomain == rhs._subDomain);
604 }
605
608
609 template <
610 class EntityType,
615
617 template <
618 class EntityType,
620 static const EntityType&
622 return e;
623 }
624
625 template <
626 class EntityType,
628 static const typename MDGrid::Traits::template Codim<EntityType::codimension>::Entity &
630 return e.impl().multiDomainEntity();
631 }
632
633 template<typename EntityType>
634 static const typename MDGrid::template HostEntity<EntityType>::type& hostEntity(const EntityType& e) {
635 return e.impl().hostEntity();
636 }
637
638 static const auto& multiDomainIntersection(const typename Traits::LeafIntersection& is) {
639 return is.impl().multiDomainIntersection();
640 }
641
642 static const auto& multiDomainIntersection(const typename Traits::LevelIntersection& is) {
643 return is.impl().multiDomainIntersection();
644 }
645
648 typename Traits::LeafIntersectionIterator subDomainIntersectionIterator(const typename MDGrid::LeafSubDomainInterfaceIterator it) const {
649 assert(_subDomain == it->subDomain1() || _subDomain == it->subDomain2());
650 if (_subDomain == it->subDomain1())
652 const GridImp,
653 typename GridImp::LeafGridView::IndexSet,
654 typename MDGrid::LeafGridView::IntersectionIterator
655 >(
656 &this->leafGridView().indexSet(),
657 it->firstMultiDomainIntersectionIterator()
658 );
659 else
661 const GridImp,
662 typename GridImp::LeafGridView::IndexSet,
663 typename MDGrid::LeafGridView::IntersectionIterator
664 >(
665 &this->leafGridView().indexSet(),
666 it->secondMultiDomainIntersectionIterator()
667 );
668 }
669
670 typename Traits::LevelIntersectionIterator subDomainIntersectionIterator(const typename MDGrid::LevelSubDomainInterfaceIterator it) const {
671 assert(_subDomain == it->subDomain1() || _subDomain == it->subDomain2());
672 if (_subDomain == it->subDomain1())
674 const GridImp,
675 typename GridImp::LevelGridView::IndexSet,
676 typename MDGrid::LevelGridView::IntersectionIterator
677 >(
678 &this->levelGridView(it->firstMultiDomainIntersectionIterator()->inside().level()).indexSet(),
679 it->firstMultiDomainIntersectionIterator()
680 );
681 else
683 const GridImp,
684 typename GridImp::LevelGridView::IndexSet,
685 typename MDGrid::LevelGridView::IntersectionIterator
686 >(
687 &this->levelGridView(it->secondMultiDomainIntersectionIterator()->inside().level()).indexSet(),
688 it->secondMultiDomainIntersectionIterator()
689 );
690 }
691
692 template<typename Intersection>
693 IntersectionType intersectionType(const Intersection& intersection) const {
694 return intersection.impl().intersectionType();
695 }
696
697private:
698
699 MDGrid& _grid;
700 SubDomainIndex _subDomain;
701 GlobalIdSetImp _globalIdSet;
702 LocalIdSetImp _localIdSet;
703 LeafIndexSetImp _leafIndexSet;
705
706 SubDomainGrid(MDGrid& grid, SubDomainIndex subDomain) :
707 _grid(grid),
708 _subDomain(subDomain),
709 _globalIdSet(*this,grid.hostGrid().globalIdSet()),
710 _localIdSet(*this,grid.hostGrid().localIdSet()),
711 _leafIndexSet(*this,grid.leafIndexSet())
712 {
713 update();
714 }
715
716 template<typename EntityType>
717 bool containsMultiDomainEntity(const EntityType& e) const {
718 if (_grid.supportLevelIndexSets())
719 return levelIndexSet(e.level()).containsMultiDomainEntity(e);
720 else
721 return leafIndexSet().containsMultiDomainEntity(e);
722 }
723
724 template<typename EntityType>
725 bool containsHostEntity(const EntityType& e) const {
726 if (_grid.supportLevelIndexSets())
727 return levelIndexSet(e.level()).containsHostEntity(e);
728 else
729 return leafIndexSet().containsHostEntity(e);
730 }
731
732 SubDomainGrid(const SubDomainGrid& rv);
733 SubDomainGrid& operator=(const SubDomainGrid& rv);
734
735
736 template<typename Impl>
737 struct DataHandleWrapper
738 : public Dune::CommDataHandleIF<DataHandleWrapper<Impl>,
739 typename Impl::DataType
740 >
741 {
742
743 bool contains(int dim, int codim) const
744 {
745 return _impl.contains(dim,codim); // TODO: check if codim supported
746 }
747
748 bool fixedSize(int dim, int codim) const
749 {
750 //_impl.fixedSize(dim,codim); // TODO: warning if true?
751 return false;
752 }
753
754 template<typename Entity>
755 std::size_t size(const Entity& e) const
756 {
757 if (_grid.containsHostEntity(e))
758 return _impl.size(_grid.subDomainEntity(_grid._grid.wrapHostEntity(e)));
759 else
760 return 0;
761 }
762
763 template<typename MessageBufferImp, typename Entity>
764 void gather(MessageBufferImp& buf, const Entity& e) const
765 {
766 if (_grid.containsHostEntity(e))
767 _impl.gather(buf,_grid.subDomainEntity(_grid._grid.wrapHostEntity(e)));
768 }
769
770 template<typename MessageBufferImp, typename Entity>
771 void scatter(MessageBufferImp& buf, const Entity& e, std::size_t n)
772 {
773 if (_grid.containsHostEntity(e))
774 _impl.scatter(buf,_grid.subDomainEntity(_grid._grid.wrapHostEntity(e)),n);
775 }
776
777 DataHandleWrapper(Impl& impl, const SubDomainGrid<MDGrid>& grid)
778 : _impl(impl)
779 , _grid(grid)
780 {}
781
782 Impl& _impl;
783 const SubDomainGrid<MDGrid>& _grid;
784
785 };
786
787};
788
789} // namespace subdomain
790
791} // namespace mdgrid
792
793} // namespace Dune
794
795#endif // DUNE_MULTIDOMAINGRID_MULTIDOMAINGRID_HH
bool setContains(const ArrayBasedSet< SI, capacity > &a, const ArrayBasedSet< SI, capacity > &b)
std::size_t fixedSize
int size() const
SLList< T, A > & operator=(const SLList< T, A > &other)
size_type dim() const
#define DUNE_THROW(E,...)
CommunicationDirection
InterfaceType
All_Partition
const IndexSet & indexSet() const
const Grid & grid() const
Implementation & impl()
Implementation & impl()
Implementation & impl()
GridImp::template Codim< cd >::Entity Entity
Definition subdomaingrid/entity.hh:168
static constexpr int dimension
static constexpr int dimensionworld
Definition subdomaingrid/entity.hh:157
Definition subdomaingrid/intersectioniterator.hh:19
Definition subdomaingrid/hierarchiciterator.hh:17
Definition subdomaingrid.hh:203
Traits::template Codim< codim >::LevelIterator lend(int level) const
Definition subdomaingrid.hh:323
MDGrid MultiDomainGrid
Definition subdomaingrid.hh:257
bool preAdapt()
Use MultiDomainGrid::preAdapt() instead of this method.
Definition subdomaingrid.hh:512
Traits::template Codim< EntityType::codimension >::Entity subDomainEntity(const EntityType &mdEntity) const
Definition subdomaingrid.hh:612
int overlapSize(int codim) const
Definition subdomaingrid.hh:542
bool adapt()
Use MultiDomainGrid::adapt() instead of this method.
Definition subdomaingrid.hh:523
size_t numBoundarySegments() const
Definition subdomaingrid.hh:577
static const MDGrid::Traits::template Codim< EntityType::codimension >::Entity & multiDomainEntity(const EntityType &e)
Definition subdomaingrid.hh:629
Traits::template Codim< codim >::LeafIterator leafbegin() const
Definition subdomaingrid.hh:368
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lend(int level) const
Definition subdomaingrid.hh:353
const Traits::LocalIdSet & localIdSet() const
Definition subdomaingrid.hh:450
int size(GeometryType type) const
Definition subdomaingrid.hh:441
Traits::LeafIntersectionIterator subDomainIntersectionIterator(const typename MDGrid::LeafSubDomainInterfaceIterator it) const
Definition subdomaingrid.hh:648
static const EntityType & multiDomainEntity(const EntityType &e)
specialization for -parent- multidomain entity
Definition subdomaingrid.hh:621
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
Definition subdomaingrid.hh:398
static const auto & multiDomainIntersection(const typename Traits::LevelIntersection &is)
Definition subdomaingrid.hh:642
int ghostSize(int codim) const
Definition subdomaingrid.hh:550
IntersectionType
Definition subdomaingrid.hh:282
@ foreign
Definition subdomaingrid.hh:282
@ neighbor
Definition subdomaingrid.hh:282
@ processor
Definition subdomaingrid.hh:282
@ boundary
Definition subdomaingrid.hh:282
Traits::template Codim< codim >::LeafIterator leafend() const
Definition subdomaingrid.hh:383
void update()
Definition subdomaingrid.hh:594
SubDomainIndex domain() const
Return our subdomain number.
Definition subdomaingrid.hh:590
int size(int codim) const
Definition subdomaingrid.hh:432
typename MDGrid::HostGrid HostGrid
Definition subdomaingrid.hh:259
int size(int level, int codim) const
Definition subdomaingrid.hh:427
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lbegin(int level) const
Definition subdomaingrid.hh:338
Traits::LevelIntersectionIterator subDomainIntersectionIterator(const typename MDGrid::LevelSubDomainInterfaceIterator it) const
Definition subdomaingrid.hh:670
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition subdomaingrid.hh:569
int size(int level, GeometryType type) const
Definition subdomaingrid.hh:436
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition subdomaingrid.hh:559
const Traits::Communication & comm() const
Definition subdomaingrid.hh:554
const Traits::LeafIndexSet & leafIndexSet() const
Definition subdomaingrid.hh:463
bool operator==(const SubDomainGrid &rhs) const
Definition subdomaingrid.hh:602
GridFamily::Traits Traits
Definition subdomaingrid.hh:274
const Traits::GlobalIdSet & globalIdSet() const
Definition subdomaingrid.hh:446
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Definition subdomaingrid.hh:308
IntersectionType intersectionType(const Intersection &intersection) const
Definition subdomaingrid.hh:693
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Mark the entity e for grid refinement across ALL subdomains.
Definition subdomaingrid.hh:489
MDGrid::SubDomainIndex SubDomainIndex
The type used for subdomain numbers.
Definition subdomaingrid.hh:280
MDGrid::ctype ctype
The type used for coordinates.
Definition subdomaingrid.hh:277
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
Definition subdomaingrid.hh:413
SubDomainGridFamily< MDGrid > GridFamily
Definition subdomaingrid.hh:273
const MDGrid & multiDomainGrid() const
Get the MultiDomainGrid that we are part of.
Definition subdomaingrid.hh:585
int maxLevel() const
Definition subdomaingrid.hh:303
int overlapSize(int level, int codim) const
Definition subdomaingrid.hh:538
void postAdapt()
Use MultiDomainGrid::postAdapt() instead of this method.
Definition subdomaingrid.hh:534
const Traits::LevelIndexSet & levelIndexSet(int level) const
Definition subdomaingrid.hh:454
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &entitySeed) const
Definition subdomaingrid.hh:292
void globalRefine(int refCount)
Use MultiDomainGrid::globalRefine() instead of this method.
Definition subdomaingrid.hh:474
static const MDGrid::template HostEntity< EntityType >::type & hostEntity(const EntityType &e)
Definition subdomaingrid.hh:634
int getMark(const typename Traits::template Codim< 0 >::Entity &e)
Retrieve the refinement mark of entity e.
Definition subdomaingrid.hh:501
static const auto & multiDomainIntersection(const typename Traits::LeafIntersection &is)
Definition subdomaingrid.hh:638
int ghostSize(int level, int codim) const
Definition subdomaingrid.hh:546
Definition subdomaingrid/entity.hh:38
Definition subdomaingrid/entity.hh:79
Definition subdomaingrid/geometry.hh:14
Definition subdomaingrid/idsets.hh:21
Definition subdomaingrid/indexsets.hh:31
IndexType size(GeometryType type) const
Definition subdomaingrid/indexsets.hh:89
Definition subdomaingrid/intersection.hh:19
Definition subdomaingrid/iterator.hh:28
Definition subdomaingrid/localgeometry.hh:14
Definition subdomaingrid.hh:39
typename MDGrid::Communication Communication
Definition subdomaingrid.hh:192
Dune::GridView< LeafGridViewTraits< const Grid > > LeafGridView
Definition subdomaingrid.hh:121
SubDomainGrid< MDGrid > Grid
The type that is implementing the grid.
Definition subdomaingrid.hh:51
Dune::GridView< LevelGridViewTraits< const Grid > > LevelGridView
Definition subdomaingrid.hh:120
typename Partition< All_Partition >::LevelIterator LevelIterator
Definition subdomaingrid.hh:164
typename Partition< All_Partition >::LeafIterator LeafIterator
Definition subdomaingrid.hh:163
HostGrid::template Codim< codim >::Entity HostEntity