|
dune-multidomaingrid 2.8
|
Loading...
Searching...
No Matches
multidomaingrid/multidomaingrid.hh
Go to the documentation of this file.
174 using LeafSubDomainInterfaceIterator = Dune::mdgrid::LeafSubDomainInterfaceIterator<const Grid>;
175 using LevelSubDomainInterfaceIterator = Dune::mdgrid::LevelSubDomainInterfaceIterator<const Grid>;
177 using LeafAllSubDomainInterfacesIterator = Dune::mdgrid::LeafAllSubDomainInterfacesIterator<const Grid>;
335 enum State { stateFixed, stateMarking, statePreUpdate, statePostUpdate, statePreAdapt, statePostAdapt };
361 typedef std::map<typename Traits::LocalIdSet::IdType,typename MDGridTraits::template Codim<0>::SubDomainSet> AdaptationStateMap;
363 typedef std::map<typename Traits::GlobalIdSet::IdType,typename MDGridTraits::template Codim<0>::SubDomainSet> LoadBalanceStateMap;
418 typedef typename Traits::LevelAllSubDomainInterfacesIterator LevelAllSubDomainInterfacesIterator;
449 explicit MultiDomainGrid(HostGrid& hostGrid, const MDGridTraitsType& traits, bool supportLevelIndexSets = true) :
472 return {EntityWrapper<EntitySeed::codimension,dimension,const GridImp>(_hostGrid.entity(entitySeed.hostEntitySeed()))};
505 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lbegin(int level) const {
517 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lend(int level) const {
553 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafbegin() const {
565 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafend() const {
589 LeafSubDomainInterfaceIterator leafSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const {
594 LeafSubDomainInterfaceIterator leafSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const {
609 LevelSubDomainInterfaceIterator levelSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const {
617 LevelSubDomainInterfaceIterator levelSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const {
868 _tmpLevelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,_hostGrid.levelGridView(l)));
899 void addToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
908 void removeFromSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
916 void assignToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
985 static const typename MultiDomainEntity<EntityType>::type& multiDomainEntity(const EntityType& e)
1039 _levelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,_hostGrid.levelGridView(_levelIndexSets.size())));
1073 if (!_adaptationStateMap.insert(typename AdaptationStateMap::value_type(id,subDomains)).second) {
1105 static typename GridView::IntersectionIterator multiDomainIntersectionIterator(typename HostGridView::IntersectionIterator iit) {
1106 typedef decltype(std::declval<typename GridView::IntersectionIterator>().impl()) Implementation;
1113 typename Traits::template Codim<Entity::codimension>::Entity wrapHostEntity(const Entity& e) const {
1118 typename Traits::template Codim<codim>::Entity wrapHostEntity(const typename HostGrid::template Codim<codim>::Entity& e) const
1186 "During load balancing, the data type has to be large enough to contain MultiDomaingrid::SubDomainIndex");
1218 for (typename SubDomainSet::const_iterator it = subDomains.begin(); it != subDomains.end(); ++it)
bool setContains(const ArrayBasedSet< SI, capacity > &a, const ArrayBasedSet< SI, capacity > &b)
MultiDomainGridType
Definition multidomaingrid/multidomaingrid.hh:1292
std::size_t fixedSize
int size() const
size_type dim() const
#define DUNE_THROW(E, m)
CommunicationDirection
InterfaceType
All_Partition
InteriorEntity
const Grid & grid() const
Implementation & impl()
bool contains(const EntityType &e) const
IteratorRange<... > elements(const GV &gv)
void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
void gather(MessageBufferImp &buff, const EntityType &e) const
Definition allsubdomaininterfacesiterator.hh:149
Definition allsubdomaininterfacesiterator.hh:182
Definition entity.hh:144
PartitionType partitionType() const
Definition hierarchiciterator.hh:13
Definition intersectioniterator.hh:16
A meta grid for dividing an existing DUNE grid into subdomains that can be accessed as a grid in thei...
Definition multidomaingrid/multidomaingrid.hh:241
static const MultiDomainEntity< EntityType >::type & multiDomainEntity(const EntityType &e)
Definition multidomaingrid/multidomaingrid.hh:985
Traits::LeafAllSubDomainInterfacesIterator LeafAllSubDomainInterfacesIterator
The type of the iterators over the codim 1 interfaces between all subdomains on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:415
const Traits::GlobalIdSet & globalIdSet() const
Definition multidomaingrid/multidomaingrid.hh:693
Traits::LevelAllSubDomainInterfacesIterator LevelAllSubDomainInterfacesIterator
The type of the iterators over the codim 1 interfaces between all subdomains on a level view.
Definition multidomaingrid/multidomaingrid.hh:418
LevelAllSubDomainInterfacesIterator levelAllSubDomainInterfacesBegin(int level) const
Returns an iterator over all subdomain interfaces on the requested level view.
Definition multidomaingrid/multidomaingrid.hh:662
void postAdapt()
Definition multidomaingrid/multidomaingrid.hh:747
const Traits::LeafIndexSet & leafIndexSet() const
Definition multidomaingrid/multidomaingrid.hh:709
MultiDomainGrid(HostGrid &hostGrid, const MDGridTraitsType &traits, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:449
int ghostSize(int codim) const
Definition multidomaingrid/multidomaingrid.hh:765
Traits::LevelSubDomainInterfaceIterator LevelSubDomainInterfaceIterator
The type of the iterators over the codim 1 interface between two subdomains on a level view.
Definition multidomaingrid/multidomaingrid.hh:412
static const HostEntity< EntityType >::type & hostEntity(const EntityType &e)
Returns a reference to the corresponding host entity.
Definition multidomaingrid/multidomaingrid.hh:979
void startSubDomainMarking()
Prepares the grid for (re-)assigning cells to subdomains.
Definition multidomaingrid/multidomaingrid.hh:849
void updateSubDomains()
Switches the subdomain layout over to the new layout.
Definition multidomaingrid/multidomaingrid.hh:879
const MDGridTraits & traits() const
Definition multidomaingrid/multidomaingrid.hh:996
bool loadBalance()
Definition multidomaingrid/multidomaingrid.hh:825
int size(int codim) const
Definition multidomaingrid/multidomaingrid.hh:681
int overlapSize(int codim) const
Definition multidomaingrid/multidomaingrid.hh:757
int size(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:677
const Traits::LocalIdSet & localIdSet() const
Definition multidomaingrid/multidomaingrid.hh:697
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lend(int level) const
Definition multidomaingrid/multidomaingrid.hh:517
const SubDomainIndex maxSubDomainIndex() const
The largest allowed index for a subdomain.
Definition multidomaingrid/multidomaingrid.hh:393
void postUpdateSubDomains()
clears the saved state of the subdomain layout that was active before the last call to updateSubDomai...
Definition multidomaingrid/multidomaingrid.hh:891
int maxLevel() const
The current maximum level of the grid.
Definition multidomaingrid/multidomaingrid.hh:476
static const auto & multiDomainIntersection(const IntersectionType &is)
Definition multidomaingrid/multidomaingrid.hh:991
MDGridTraitsType MDGridTraits
Definition multidomaingrid/multidomaingrid.hh:356
MDGridTraits::SubDomainIndex SubDomainIndex
The (integer) type used to identify subdomains.
Definition multidomaingrid/multidomaingrid.hh:382
HostGrid::ctype ctype
Definition multidomaingrid/multidomaingrid.hh:357
bool supportLevelIndexSets() const
Indicates whether this MultiDomainGrid instance supports level index sets on its SubDomainGrids.
Definition multidomaingrid/multidomaingrid.hh:966
LeafSubDomainInterfaceIterator leafSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const
Returns the corresponding end iterator for leafSubDomainInterfaceBegin().
Definition multidomaingrid/multidomaingrid.hh:594
LevelAllSubDomainInterfacesIterator levelAllSubDomainInterfacesEnd(int level) const
Returns the corresponding end iterator for levelAllSubDomainInterfacesBegin().
Definition multidomaingrid/multidomaingrid.hh:670
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition multidomaingrid/multidomaingrid.hh:784
size_t numBoundarySegments() const
Definition multidomaingrid/multidomaingrid.hh:831
int size(int level, GeometryType type) const
Definition multidomaingrid/multidomaingrid.hh:685
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
Definition multidomaingrid/multidomaingrid.hh:553
Traits::template Codim< codim >::LeafIterator leafend() const
Definition multidomaingrid/multidomaingrid.hh:541
Traits::template Codim< codim >::LeafIterator leafbegin() const
Definition multidomaingrid/multidomaingrid.hh:529
SubDomainIndex maxAssignedSubDomainIndex() const
Returns the largest subdomain index that was ever assigned to a cell in this grid.
Definition multidomaingrid/multidomaingrid.hh:960
const Traits::LevelIndexSet & levelIndexSet(int level) const
Definition multidomaingrid/multidomaingrid.hh:701
int getMark(const typename Traits::template Codim< 0 >::Entity &e)
Definition multidomaingrid/multidomaingrid.hh:725
int overlapSize(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:753
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lbegin(int level) const
Definition multidomaingrid/multidomaingrid.hh:505
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
Definition multidomaingrid/multidomaingrid.hh:565
const Traits::CollectiveCommunication & comm() const
Definition multidomaingrid/multidomaingrid.hh:769
int ghostSize(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:761
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:916
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition multidomaingrid/multidomaingrid.hh:720
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:609
int size(GeometryType type) const
Definition multidomaingrid/multidomaingrid.hh:689
LeafSubDomainInterfaceIterator leafSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const
Returns an iterator over the leaf interface of two subdomains.
Definition multidomaingrid/multidomaingrid.hh:589
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:908
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Definition multidomaingrid/multidomaingrid.hh:481
Traits::template Codim< codim >::Entity wrapHostEntity(const typename HostGrid::template Codim< codim >::Entity &e) const
Definition multidomaingrid/multidomaingrid.hh:1118
SubDomainGrid & subDomain(SubDomainIndex subDomain)
Returns a reference to the SubDomainGrid associated with the given subdomain.
Definition multidomaingrid/multidomaingrid.hh:945
static const std::size_t maxNumberOfSubDomains
The largest number of subdomains any given grid cell may belong to.
Definition multidomaingrid/multidomaingrid.hh:385
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:405
Traits::template Codim< codim >::LevelIterator lend(int level) const
Definition multidomaingrid/multidomaingrid.hh:493
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:899
void globalRefine(int refCount)
Definition multidomaingrid/multidomaingrid.hh:713
Traits::template Codim< Entity::codimension >::Entity wrapHostEntity(const Entity &e) const
Definition multidomaingrid/multidomaingrid.hh:1113
Traits::LeafSubDomainInterfaceIterator LeafSubDomainInterfaceIterator
The type of the iterators over the codim 1 interface between two subdomains on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:409
LeafAllSubDomainInterfacesIterator leafAllSubDomainInterfacesEnd() const
Returns the corresponding end iterator for leafAllSubDomainInterfacesBegin().
Definition multidomaingrid/multidomaingrid.hh:641
void preUpdateSubDomains()
Calculates the new subdomain layout, but does not update the current subdomains yet.
Definition multidomaingrid/multidomaingrid.hh:864
GridFamily::Traits Traits
Definition multidomaingrid/multidomaingrid.hh:355
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition multidomaingrid/multidomaingrid.hh:774
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:925
bool preAdapt()
Definition multidomaingrid/multidomaingrid.hh:730
const SubDomainGrid & subDomain(SubDomainIndex subDomain) const
Returns a reference to the SubDomainGrid associated with the given subdomain.
Definition multidomaingrid/multidomaingrid.hh:936
HostGrid_ HostGrid
Definition multidomaingrid/multidomaingrid.hh:245
MultiDomainGridFamily< HostGrid, MDGridTraitsType > GridFamily
Definition multidomaingrid/multidomaingrid.hh:354
bool loadBalance(DataHandle &dataHandle)
Definition multidomaingrid/multidomaingrid.hh:793
LevelSubDomainInterfaceIterator levelSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const
Returns the corresponding end iterator for levelSubDomainInterfaceBegin().
Definition multidomaingrid/multidomaingrid.hh:617
MultiDomainGrid(HostGrid &hostGrid, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:428
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &entitySeed) const
Definition multidomaingrid/multidomaingrid.hh:470
LeafAllSubDomainInterfacesIterator leafAllSubDomainInterfacesBegin() const
Returns an iterator over all subdomain interfaces on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:636
static constexpr bool maxSubDomainIndexIsStatic()
Definition multidomaingrid/multidomaingrid.hh:399
Definition entity.hh:40
Traits::LeafGridView leafGridView() const
Definition indexsets.hh:236
IdType id(const Entity &e) const
GridFamily::Traits::LevelGridView LevelGridView
dimensionworld
GridFamily::Traits::LeafGridView LeafGridView
Definition intersection.hh:18
Definition iterator.hh:19
Definition localgeometry.hh:13
Definition multidomaingrid/multidomaingrid.hh:37
Definition multidomaingrid/multidomaingrid.hh:47
MultiDomainGrid< HostGrid, MDGridTraits > Grid
The type that implementing the grid.
Definition multidomaingrid/multidomaingrid.hh:49
typename HostGrid::CollectiveCommunication CollectiveCommunication
Definition multidomaingrid/multidomaingrid.hh:172
Definition multidomaingrid/multidomaingrid.hh:104
typename Partition< All_Partition >::LevelIterator LevelIterator
Definition multidomaingrid/multidomaingrid.hh:141
typename Partition< All_Partition >::LeafIterator LeafIterator
Definition multidomaingrid/multidomaingrid.hh:140
Definition multidomaingrid/multidomaingrid.hh:115
Definition multidomaingrid/multidomaingrid.hh:1180
WrappedDataHandle::DataType buffer
Definition multidomaingrid/multidomaingrid.hh:1182
SubDomainIndex data
Definition multidomaingrid/multidomaingrid.hh:1181
Definition multidomaingrid/multidomaingrid.hh:1295
static const MultiDomainGridType v
Definition multidomaingrid/multidomaingrid.hh:1296
Definition subdomaingrid/entity.hh:157
Definition subdomaingrid/intersectioniterator.hh:19
Definition subdomaingrid.hh:203
static const auto & multiDomainIntersection(const typename Traits::LeafIntersection &is)
Definition subdomaingrid.hh:636
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