|
dune-multidomaingrid 2.9
|
Loading...
Searching...
No Matches
multidomaingrid/multidomaingrid.hh
Go to the documentation of this file.
180 using LeafSubDomainInterfaceIterator = Dune::mdgrid::LeafSubDomainInterfaceIterator<const Grid>;
181 using LevelSubDomainInterfaceIterator = Dune::mdgrid::LevelSubDomainInterfaceIterator<const Grid>;
183 using LeafAllSubDomainInterfacesIterator = Dune::mdgrid::LeafAllSubDomainInterfacesIterator<const Grid>;
341 enum State { stateFixed, stateMarking, statePreUpdate, statePostUpdate, statePreAdapt, statePostAdapt };
367 typedef std::map<typename Traits::LocalIdSet::IdType,typename MDGridTraits::template Codim<0>::SubDomainSet> AdaptationStateMap;
369 typedef std::map<typename Traits::GlobalIdSet::IdType,typename MDGridTraits::template Codim<0>::SubDomainSet> LoadBalanceStateMap;
424 typedef typename Traits::LevelAllSubDomainInterfacesIterator LevelAllSubDomainInterfacesIterator;
434 explicit MultiDomainGrid(const std::shared_ptr<HostGrid>& hostGrid, bool supportLevelIndexSets = true) :
456 explicit MultiDomainGrid(const std::shared_ptr<HostGrid>& hostGrid, const MDGridTraitsType& traits, bool supportLevelIndexSets = true) :
491 explicit MultiDomainGrid(HostGrid& hostGrid, const MDGridTraitsType& traits, bool supportLevelIndexSets = true)
504 return {EntityWrapper<EntitySeed::codimension,dimension,const GridImp>(_hostGrid.entity(entitySeed.hostEntitySeed()))};
537 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lbegin(int level) const {
549 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lend(int level) const {
585 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafbegin() const {
597 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafend() const {
621 LeafSubDomainInterfaceIterator leafSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const {
626 LeafSubDomainInterfaceIterator leafSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const {
641 LevelSubDomainInterfaceIterator levelSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const {
649 LevelSubDomainInterfaceIterator levelSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const {
900 _tmpLevelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,_hostGrid.levelGridView(l)));
931 void addToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
940 void removeFromSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
948 void assignToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
1017 static const typename MultiDomainEntity<EntityType>::type& multiDomainEntity(const EntityType& e)
1072 _levelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,_hostGrid.levelGridView(_levelIndexSets.size())));
1106 if (!_adaptationStateMap.insert(typename AdaptationStateMap::value_type(id,subDomains)).second) {
1138 static typename GridView::IntersectionIterator multiDomainIntersectionIterator(typename HostGridView::IntersectionIterator iit) {
1139 typedef decltype(std::declval<typename GridView::IntersectionIterator>().impl()) Implementation;
1146 typename Traits::template Codim<Entity::codimension>::Entity wrapHostEntity(const Entity& e) const {
1151 typename Traits::template Codim<codim>::Entity wrapHostEntity(const typename HostGrid::template Codim<codim>::Entity& e) const
1219 "During load balancing, the data type has to be large enough to contain MultiDomaingrid::SubDomainIndex");
bool setContains(const ArrayBasedSet< SI, capacity > &a, const ArrayBasedSet< SI, capacity > &b)
MultiDomainGridType
Definition multidomaingrid/multidomaingrid.hh:1324
std::size_t fixedSize
int size() const
size_type dim() const
#define DUNE_THROW(E, m)
std::shared_ptr< T > stackobject_to_shared_ptr(T &t)
CommunicationDirection
InterfaceType
All_Partition
InteriorEntity
const Grid & grid() const
Implementation & impl()
bool contains(const EntityType &e) const
IteratorRange<... > elements(const GV &gv)
Definition allsubdomaininterfacesiterator.hh:149
Definition allsubdomaininterfacesiterator.hh:182
Definition entity.hh:142
Definition hierarchiciterator.hh:13
Definition intersectioniterator.hh:16
void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
void gather(MessageBufferImp &buff, const EntityType &e) const
A meta grid for dividing an existing DUNE grid into subdomains that can be accessed as a grid in thei...
Definition multidomaingrid/multidomaingrid.hh:247
static const MultiDomainEntity< EntityType >::type & multiDomainEntity(const EntityType &e)
Definition multidomaingrid/multidomaingrid.hh:1017
Traits::LeafAllSubDomainInterfacesIterator LeafAllSubDomainInterfacesIterator
The type of the iterators over the codim 1 interfaces between all subdomains on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:421
const Traits::GlobalIdSet & globalIdSet() const
Definition multidomaingrid/multidomaingrid.hh:725
Traits::LevelAllSubDomainInterfacesIterator LevelAllSubDomainInterfacesIterator
The type of the iterators over the codim 1 interfaces between all subdomains on a level view.
Definition multidomaingrid/multidomaingrid.hh:424
LevelAllSubDomainInterfacesIterator levelAllSubDomainInterfacesBegin(int level) const
Returns an iterator over all subdomain interfaces on the requested level view.
Definition multidomaingrid/multidomaingrid.hh:694
void postAdapt()
Definition multidomaingrid/multidomaingrid.hh:779
const Traits::LeafIndexSet & leafIndexSet() const
Definition multidomaingrid/multidomaingrid.hh:741
MultiDomainGrid(HostGrid &hostGrid, const MDGridTraitsType &traits, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:491
int ghostSize(int codim) const
Definition multidomaingrid/multidomaingrid.hh:797
Traits::LevelSubDomainInterfaceIterator LevelSubDomainInterfaceIterator
The type of the iterators over the codim 1 interface between two subdomains on a level view.
Definition multidomaingrid/multidomaingrid.hh:418
static const HostEntity< EntityType >::type & hostEntity(const EntityType &e)
Returns a reference to the corresponding host entity.
Definition multidomaingrid/multidomaingrid.hh:1011
void startSubDomainMarking()
Prepares the grid for (re-)assigning cells to subdomains.
Definition multidomaingrid/multidomaingrid.hh:881
void updateSubDomains()
Switches the subdomain layout over to the new layout.
Definition multidomaingrid/multidomaingrid.hh:911
const MDGridTraits & traits() const
Definition multidomaingrid/multidomaingrid.hh:1028
bool loadBalance()
Definition multidomaingrid/multidomaingrid.hh:857
int size(int codim) const
Definition multidomaingrid/multidomaingrid.hh:713
int overlapSize(int codim) const
Definition multidomaingrid/multidomaingrid.hh:789
int size(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:709
const Traits::LocalIdSet & localIdSet() const
Definition multidomaingrid/multidomaingrid.hh:729
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lend(int level) const
Definition multidomaingrid/multidomaingrid.hh:549
const SubDomainIndex maxSubDomainIndex() const
The largest allowed index for a subdomain.
Definition multidomaingrid/multidomaingrid.hh:399
void postUpdateSubDomains()
clears the saved state of the subdomain layout that was active before the last call to updateSubDomai...
Definition multidomaingrid/multidomaingrid.hh:923
int maxLevel() const
The current maximum level of the grid.
Definition multidomaingrid/multidomaingrid.hh:508
static const auto & multiDomainIntersection(const IntersectionType &is)
Definition multidomaingrid/multidomaingrid.hh:1023
MDGridTraitsType MDGridTraits
Definition multidomaingrid/multidomaingrid.hh:362
MDGridTraits::SubDomainIndex SubDomainIndex
The (integer) type used to identify subdomains.
Definition multidomaingrid/multidomaingrid.hh:388
HostGrid::ctype ctype
Definition multidomaingrid/multidomaingrid.hh:363
bool supportLevelIndexSets() const
Indicates whether this MultiDomainGrid instance supports level index sets on its SubDomainGrids.
Definition multidomaingrid/multidomaingrid.hh:998
LeafSubDomainInterfaceIterator leafSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const
Returns the corresponding end iterator for leafSubDomainInterfaceBegin().
Definition multidomaingrid/multidomaingrid.hh:626
LevelAllSubDomainInterfacesIterator levelAllSubDomainInterfacesEnd(int level) const
Returns the corresponding end iterator for levelAllSubDomainInterfacesBegin().
Definition multidomaingrid/multidomaingrid.hh:702
MultiDomainGrid(const std::shared_ptr< HostGrid > &hostGrid, const MDGridTraitsType &traits, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:456
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition multidomaingrid/multidomaingrid.hh:816
size_t numBoundarySegments() const
Definition multidomaingrid/multidomaingrid.hh:863
int size(int level, GeometryType type) const
Definition multidomaingrid/multidomaingrid.hh:717
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
Definition multidomaingrid/multidomaingrid.hh:585
Traits::template Codim< codim >::LeafIterator leafend() const
Definition multidomaingrid/multidomaingrid.hh:573
Traits::template Codim< codim >::LeafIterator leafbegin() const
Definition multidomaingrid/multidomaingrid.hh:561
SubDomainIndex maxAssignedSubDomainIndex() const
Returns the largest subdomain index that was ever assigned to a cell in this grid.
Definition multidomaingrid/multidomaingrid.hh:992
const Traits::LevelIndexSet & levelIndexSet(int level) const
Definition multidomaingrid/multidomaingrid.hh:733
int getMark(const typename Traits::template Codim< 0 >::Entity &e)
Definition multidomaingrid/multidomaingrid.hh:757
int overlapSize(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:785
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lbegin(int level) const
Definition multidomaingrid/multidomaingrid.hh:537
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
Definition multidomaingrid/multidomaingrid.hh:597
int ghostSize(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:793
void assignToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim< 0 >::Entity &e)
Assigns the given leaf entity to the specified subdomain, clearing any previous subdomain assignments...
Definition multidomaingrid/multidomaingrid.hh:948
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition multidomaingrid/multidomaingrid.hh:752
LevelSubDomainInterfaceIterator levelSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const
Returns an iterator over the interface of two subdomains at the given level.
Definition multidomaingrid/multidomaingrid.hh:641
int size(GeometryType type) const
Definition multidomaingrid/multidomaingrid.hh:721
LeafSubDomainInterfaceIterator leafSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const
Returns an iterator over the leaf interface of two subdomains.
Definition multidomaingrid/multidomaingrid.hh:621
void removeFromSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim< 0 >::Entity &e)
Removes the given leaf entity from the specified subdomain.
Definition multidomaingrid/multidomaingrid.hh:940
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Definition multidomaingrid/multidomaingrid.hh:513
Traits::template Codim< codim >::Entity wrapHostEntity(const typename HostGrid::template Codim< codim >::Entity &e) const
Definition multidomaingrid/multidomaingrid.hh:1151
SubDomainGrid & subDomain(SubDomainIndex subDomain)
Returns a reference to the SubDomainGrid associated with the given subdomain.
Definition multidomaingrid/multidomaingrid.hh:977
static const std::size_t maxNumberOfSubDomains
The largest number of subdomains any given grid cell may belong to.
Definition multidomaingrid/multidomaingrid.hh:391
subdomain::SubDomainGrid< ThisType > SubDomainGrid
The type used for representing the grid of a subdomain, always a specialization of Dune::mdgrid::subd...
Definition multidomaingrid/multidomaingrid.hh:411
Traits::template Codim< codim >::LevelIterator lend(int level) const
Definition multidomaingrid/multidomaingrid.hh:525
void addToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim< 0 >::Entity &e)
Adds the given leaf entity to the specified subdomain.
Definition multidomaingrid/multidomaingrid.hh:931
void globalRefine(int refCount)
Definition multidomaingrid/multidomaingrid.hh:745
Traits::template Codim< Entity::codimension >::Entity wrapHostEntity(const Entity &e) const
Definition multidomaingrid/multidomaingrid.hh:1146
Traits::LeafSubDomainInterfaceIterator LeafSubDomainInterfaceIterator
The type of the iterators over the codim 1 interface between two subdomains on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:415
LeafAllSubDomainInterfacesIterator leafAllSubDomainInterfacesEnd() const
Returns the corresponding end iterator for leafAllSubDomainInterfacesBegin().
Definition multidomaingrid/multidomaingrid.hh:673
void preUpdateSubDomains()
Calculates the new subdomain layout, but does not update the current subdomains yet.
Definition multidomaingrid/multidomaingrid.hh:896
GridFamily::Traits Traits
Definition multidomaingrid/multidomaingrid.hh:361
MultiDomainGrid(const std::shared_ptr< HostGrid > &hostGrid, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:434
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition multidomaingrid/multidomaingrid.hh:806
void removeFromAllSubDomains(const typename Traits::template Codim< 0 >::Entity &e)
Removes the given leaf entity from all subdomains it currently belongs to.
Definition multidomaingrid/multidomaingrid.hh:957
bool preAdapt()
Definition multidomaingrid/multidomaingrid.hh:762
const SubDomainGrid & subDomain(SubDomainIndex subDomain) const
Returns a reference to the SubDomainGrid associated with the given subdomain.
Definition multidomaingrid/multidomaingrid.hh:968
HostGrid_ HostGrid
Definition multidomaingrid/multidomaingrid.hh:251
MultiDomainGridFamily< HostGrid, MDGridTraitsType > GridFamily
Definition multidomaingrid/multidomaingrid.hh:360
const Traits::Communication & comm() const
Definition multidomaingrid/multidomaingrid.hh:801
bool loadBalance(DataHandle &dataHandle)
Definition multidomaingrid/multidomaingrid.hh:825
LevelSubDomainInterfaceIterator levelSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const
Returns the corresponding end iterator for levelSubDomainInterfaceBegin().
Definition multidomaingrid/multidomaingrid.hh:649
MultiDomainGrid(HostGrid &hostGrid, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:480
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &entitySeed) const
Definition multidomaingrid/multidomaingrid.hh:502
LeafAllSubDomainInterfacesIterator leafAllSubDomainInterfacesBegin() const
Returns an iterator over all subdomain interfaces on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:668
static constexpr bool maxSubDomainIndexIsStatic()
Definition multidomaingrid/multidomaingrid.hh:405
Definition entity.hh:38
Definition geometry.hh:12
Definition idsets.hh:19
Definition indexsets.hh:236
PartitionType partitionType() const
Traits::LeafGridView leafGridView() const
IdType id(const Entity &e) const
Definition intersection.hh:18
static constexpr int dimension
GridFamily::Traits::LevelGridView LevelGridView
static constexpr int dimensionworld
GridFamily::Traits::LeafGridView LeafGridView
Definition iterator.hh:19
Definition localgeometry.hh:13
Definition multidomaingrid/multidomaingrid.hh:39
Definition multidomaingrid/multidomaingrid.hh:49
MultiDomainGrid< HostGrid, MDGridTraits > Grid
The type that implementing the grid.
Definition multidomaingrid/multidomaingrid.hh:51
typename HostGrid::Communication Communication
Definition multidomaingrid/multidomaingrid.hh:178
typename HostGrid::CollectiveCommunication CollectiveCommunication
Definition multidomaingrid/multidomaingrid.hh:176
Definition multidomaingrid/multidomaingrid.hh:106
typename Partition< All_Partition >::LevelIterator LevelIterator
Definition multidomaingrid/multidomaingrid.hh:143
typename Partition< All_Partition >::LeafIterator LeafIterator
Definition multidomaingrid/multidomaingrid.hh:142
Definition multidomaingrid/multidomaingrid.hh:117
Definition multidomaingrid/multidomaingrid.hh:1213
WrappedDataHandle::DataType buffer
Definition multidomaingrid/multidomaingrid.hh:1215
SubDomainIndex data
Definition multidomaingrid/multidomaingrid.hh:1214
Definition multidomaingrid/multidomaingrid.hh:1327
static const MultiDomainGridType v
Definition multidomaingrid/multidomaingrid.hh:1328
Definition subdomaingrid/entity.hh:157
Definition subdomaingrid/intersectioniterator.hh:19
Definition subdomaingrid.hh:207
static const auto & multiDomainIntersection(const typename Traits::LeafIntersection &is)
Definition subdomaingrid.hh:642
Definition subdomaingrid/entity.hh:79
Definition subdomaingrid/intersection.hh:19
Definition subdomaingrid.hh:39
An intersection that forms part of the interface between two subdomains.
Definition subdomaininterfaceiterator.hh:32
Definition subdomaintosubdomaininterfaceiterator.hh:113
Definition subdomaintosubdomaininterfaceiterator.hh:148
HostGrid::template Codim< codim >::Entity HostEntity
T clear(T... args)
T max(T... args)
T push_back(T... args)
T resize(T... args)
T size(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8