|
dune-multidomaingrid 2.10-git
|
Loading...
Searching...
No Matches
multidomaingrid/multidomaingrid.hh
Go to the documentation of this file.
176 using LeafSubDomainInterfaceIterator = Dune::mdgrid::LeafSubDomainInterfaceIterator<const Grid>;
177 using LevelSubDomainInterfaceIterator = Dune::mdgrid::LevelSubDomainInterfaceIterator<const Grid>;
179 using LeafAllSubDomainInterfacesIterator = Dune::mdgrid::LeafAllSubDomainInterfacesIterator<const Grid>;
337 enum State { stateFixed, stateMarking, statePreUpdate, statePostUpdate, statePreAdapt, statePostAdapt };
363 typedef std::map<typename Traits::LocalIdSet::IdType,typename MDGridTraits::template Codim<0>::SubDomainSet> AdaptationStateMap;
365 typedef std::map<typename Traits::GlobalIdSet::IdType,typename MDGridTraits::template Codim<0>::SubDomainSet> LoadBalanceStateMap;
420 typedef typename Traits::LevelAllSubDomainInterfacesIterator LevelAllSubDomainInterfacesIterator;
430 explicit MultiDomainGrid(const std::shared_ptr<HostGrid>& hostGridPtr, bool supportLevelIndexSets = true) :
451 explicit MultiDomainGrid(const std::shared_ptr<HostGrid>& hostGridPtr, const MDGridTraitsType& traits, bool supportLevelIndexSets = true) :
485 explicit MultiDomainGrid(HostGrid& hostGrid, const MDGridTraitsType& traits, bool supportLevelIndexSets = true)
498 return {EntityWrapper<EntitySeed::codimension,dimension,const GridImp>(hostGrid().entity(entitySeed.hostEntitySeed()))};
531 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lbegin(int level) const {
543 typename Traits::template Codim<codim>::template Partition<pitype>::LevelIterator lend(int level) const {
579 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafbegin() const {
591 typename Traits::template Codim<codim>::template Partition<pitype>::LeafIterator leafend() const {
615 LeafSubDomainInterfaceIterator leafSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const {
620 LeafSubDomainInterfaceIterator leafSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const {
635 LevelSubDomainInterfaceIterator levelSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const {
643 LevelSubDomainInterfaceIterator levelSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const {
894 _tmpLevelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,hostGrid().levelGridView(l)));
925 void addToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
934 void removeFromSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
942 void assignToSubDomain(SubDomainIndex subDomain, const typename Traits::template Codim<0>::Entity& e) {
1011 static const typename MultiDomainEntity<EntityType>::type& multiDomainEntity(const EntityType& e)
1065 _levelIndexSets.push_back(std::make_shared<LevelIndexSetImp>(*this,hostGrid().levelGridView(_levelIndexSets.size())));
1099 if (!_adaptationStateMap.insert(typename AdaptationStateMap::value_type(id,subDomains)).second) {
1131 static typename GridView::IntersectionIterator multiDomainIntersectionIterator(typename HostGridView::IntersectionIterator iit) {
1132 typedef decltype(std::declval<typename GridView::IntersectionIterator>().impl()) Implementation;
1139 typename Traits::template Codim<Entity::codimension>::Entity wrapHostEntity(const Entity& e) const {
1144 typename Traits::template Codim<codim>::Entity wrapHostEntity(const typename HostGrid::template Codim<codim>::Entity& e) const
1212 "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:1317
std::size_t fixedSize
int size() const
size_type dim() const
#define DUNE_THROW(E,...)
std::shared_ptr< T > stackobject_to_shared_ptr(T &t)
constexpr std::bool_constant<((II==value)||...)> contains(std::integer_sequence< T, II... >, std::integral_constant< T, value >)
CommunicationDirection
InterfaceType
All_Partition
InteriorEntity
const Grid & grid() const
Implementation & impl()
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
A meta grid for dividing an existing DUNE grid into subdomains that can be accessed as a grid in thei...
Definition multidomaingrid/multidomaingrid.hh:243
static const MultiDomainEntity< EntityType >::type & multiDomainEntity(const EntityType &e)
Definition multidomaingrid/multidomaingrid.hh:1011
Traits::LeafAllSubDomainInterfacesIterator LeafAllSubDomainInterfacesIterator
The type of the iterators over the codim 1 interfaces between all subdomains on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:417
const Traits::GlobalIdSet & globalIdSet() const
Definition multidomaingrid/multidomaingrid.hh:719
Traits::LevelAllSubDomainInterfacesIterator LevelAllSubDomainInterfacesIterator
The type of the iterators over the codim 1 interfaces between all subdomains on a level view.
Definition multidomaingrid/multidomaingrid.hh:420
LevelAllSubDomainInterfacesIterator levelAllSubDomainInterfacesBegin(int level) const
Returns an iterator over all subdomain interfaces on the requested level view.
Definition multidomaingrid/multidomaingrid.hh:688
void postAdapt()
Definition multidomaingrid/multidomaingrid.hh:773
const Traits::LeafIndexSet & leafIndexSet() const
Definition multidomaingrid/multidomaingrid.hh:735
MultiDomainGrid(HostGrid &hostGrid, const MDGridTraitsType &traits, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:485
int ghostSize(int codim) const
Definition multidomaingrid/multidomaingrid.hh:791
Traits::LevelSubDomainInterfaceIterator LevelSubDomainInterfaceIterator
The type of the iterators over the codim 1 interface between two subdomains on a level view.
Definition multidomaingrid/multidomaingrid.hh:414
static const HostEntity< EntityType >::type & hostEntity(const EntityType &e)
Returns a reference to the corresponding host entity.
Definition multidomaingrid/multidomaingrid.hh:1005
void startSubDomainMarking()
Prepares the grid for (re-)assigning cells to subdomains.
Definition multidomaingrid/multidomaingrid.hh:875
void updateSubDomains()
Switches the subdomain layout over to the new layout.
Definition multidomaingrid/multidomaingrid.hh:905
const MDGridTraits & traits() const
Definition multidomaingrid/multidomaingrid.hh:1022
bool loadBalance()
Definition multidomaingrid/multidomaingrid.hh:851
int size(int codim) const
Definition multidomaingrid/multidomaingrid.hh:707
int overlapSize(int codim) const
Definition multidomaingrid/multidomaingrid.hh:783
int size(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:703
const Traits::LocalIdSet & localIdSet() const
Definition multidomaingrid/multidomaingrid.hh:723
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lend(int level) const
Definition multidomaingrid/multidomaingrid.hh:543
const SubDomainIndex maxSubDomainIndex() const
The largest allowed index for a subdomain.
Definition multidomaingrid/multidomaingrid.hh:395
void postUpdateSubDomains()
clears the saved state of the subdomain layout that was active before the last call to updateSubDomai...
Definition multidomaingrid/multidomaingrid.hh:917
int maxLevel() const
The current maximum level of the grid.
Definition multidomaingrid/multidomaingrid.hh:502
static const auto & multiDomainIntersection(const IntersectionType &is)
Definition multidomaingrid/multidomaingrid.hh:1017
MDGridTraitsType MDGridTraits
Definition multidomaingrid/multidomaingrid.hh:358
MDGridTraits::SubDomainIndex SubDomainIndex
The (integer) type used to identify subdomains.
Definition multidomaingrid/multidomaingrid.hh:384
HostGrid & hostGrid()
Definition multidomaingrid/multidomaingrid.hh:1032
HostGrid::ctype ctype
Definition multidomaingrid/multidomaingrid.hh:359
bool supportLevelIndexSets() const
Indicates whether this MultiDomainGrid instance supports level index sets on its SubDomainGrids.
Definition multidomaingrid/multidomaingrid.hh:992
LeafSubDomainInterfaceIterator leafSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const
Returns the corresponding end iterator for leafSubDomainInterfaceBegin().
Definition multidomaingrid/multidomaingrid.hh:620
LevelAllSubDomainInterfacesIterator levelAllSubDomainInterfacesEnd(int level) const
Returns the corresponding end iterator for levelAllSubDomainInterfacesBegin().
Definition multidomaingrid/multidomaingrid.hh:696
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir) const
Definition multidomaingrid/multidomaingrid.hh:810
size_t numBoundarySegments() const
Definition multidomaingrid/multidomaingrid.hh:857
int size(int level, GeometryType type) const
Definition multidomaingrid/multidomaingrid.hh:711
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafbegin() const
Definition multidomaingrid/multidomaingrid.hh:579
Traits::template Codim< codim >::LeafIterator leafend() const
Definition multidomaingrid/multidomaingrid.hh:567
Traits::template Codim< codim >::LeafIterator leafbegin() const
Definition multidomaingrid/multidomaingrid.hh:555
MultiDomainGrid(const std::shared_ptr< HostGrid > &hostGridPtr, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:430
SubDomainIndex maxAssignedSubDomainIndex() const
Returns the largest subdomain index that was ever assigned to a cell in this grid.
Definition multidomaingrid/multidomaingrid.hh:986
const Traits::LevelIndexSet & levelIndexSet(int level) const
Definition multidomaingrid/multidomaingrid.hh:727
int getMark(const typename Traits::template Codim< 0 >::Entity &e)
Definition multidomaingrid/multidomaingrid.hh:751
int overlapSize(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:779
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator lbegin(int level) const
Definition multidomaingrid/multidomaingrid.hh:531
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator leafend() const
Definition multidomaingrid/multidomaingrid.hh:591
int ghostSize(int level, int codim) const
Definition multidomaingrid/multidomaingrid.hh:787
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:942
bool mark(int refCount, const typename Traits::template Codim< 0 >::Entity &e)
Definition multidomaingrid/multidomaingrid.hh:746
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:635
int size(GeometryType type) const
Definition multidomaingrid/multidomaingrid.hh:715
LeafSubDomainInterfaceIterator leafSubDomainInterfaceBegin(SubDomainIndex subDomain1, SubDomainIndex subDomain2) const
Returns an iterator over the leaf interface of two subdomains.
Definition multidomaingrid/multidomaingrid.hh:615
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:934
Traits::template Codim< codim >::LevelIterator lbegin(int level) const
Definition multidomaingrid/multidomaingrid.hh:507
Traits::template Codim< codim >::Entity wrapHostEntity(const typename HostGrid::template Codim< codim >::Entity &e) const
Definition multidomaingrid/multidomaingrid.hh:1144
SubDomainGrid & subDomain(SubDomainIndex subDomain)
Returns a reference to the SubDomainGrid associated with the given subdomain.
Definition multidomaingrid/multidomaingrid.hh:971
static const std::size_t maxNumberOfSubDomains
The largest number of subdomains any given grid cell may belong to.
Definition multidomaingrid/multidomaingrid.hh:387
friend class LeafGridView
Definition multidomaingrid/multidomaingrid.hh:316
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:407
Traits::template Codim< codim >::LevelIterator lend(int level) const
Definition multidomaingrid/multidomaingrid.hh:519
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:925
void globalRefine(int refCount)
Definition multidomaingrid/multidomaingrid.hh:739
Traits::template Codim< Entity::codimension >::Entity wrapHostEntity(const Entity &e) const
Definition multidomaingrid/multidomaingrid.hh:1139
Traits::LeafSubDomainInterfaceIterator LeafSubDomainInterfaceIterator
The type of the iterators over the codim 1 interface between two subdomains on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:411
LeafAllSubDomainInterfacesIterator leafAllSubDomainInterfacesEnd() const
Returns the corresponding end iterator for leafAllSubDomainInterfacesBegin().
Definition multidomaingrid/multidomaingrid.hh:667
void preUpdateSubDomains()
Calculates the new subdomain layout, but does not update the current subdomains yet.
Definition multidomaingrid/multidomaingrid.hh:890
GridFamily::Traits Traits
Definition multidomaingrid/multidomaingrid.hh:357
const HostGrid & hostGrid() const
Definition multidomaingrid/multidomaingrid.hh:1027
void communicate(CommDataHandleIF< DataHandleImp, DataTypeImp > &data, InterfaceType iftype, CommunicationDirection dir, int level) const
Definition multidomaingrid/multidomaingrid.hh:800
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:951
bool preAdapt()
Definition multidomaingrid/multidomaingrid.hh:756
const SubDomainGrid & subDomain(SubDomainIndex subDomain) const
Returns a reference to the SubDomainGrid associated with the given subdomain.
Definition multidomaingrid/multidomaingrid.hh:962
HostGrid_ HostGrid
Definition multidomaingrid/multidomaingrid.hh:247
MultiDomainGrid(const std::shared_ptr< HostGrid > &hostGridPtr, const MDGridTraitsType &traits, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:451
MultiDomainGridFamily< HostGrid, MDGridTraitsType > GridFamily
Definition multidomaingrid/multidomaingrid.hh:356
const Traits::Communication & comm() const
Definition multidomaingrid/multidomaingrid.hh:795
bool loadBalance(DataHandle &dataHandle)
Definition multidomaingrid/multidomaingrid.hh:819
LevelSubDomainInterfaceIterator levelSubDomainInterfaceEnd(SubDomainIndex subDomain1, SubDomainIndex subDomain2, int level) const
Returns the corresponding end iterator for levelSubDomainInterfaceBegin().
Definition multidomaingrid/multidomaingrid.hh:643
MultiDomainGrid(HostGrid &hostGrid, bool supportLevelIndexSets=true)
Constructs a new MultiDomainGrid from the given host grid.
Definition multidomaingrid/multidomaingrid.hh:474
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &entitySeed) const
Definition multidomaingrid/multidomaingrid.hh:496
LeafAllSubDomainInterfacesIterator leafAllSubDomainInterfacesBegin() const
Returns an iterator over all subdomain interfaces on the leaf view.
Definition multidomaingrid/multidomaingrid.hh:662
static constexpr bool maxSubDomainIndexIsStatic()
Definition multidomaingrid/multidomaingrid.hh:401
Definition entity.hh:38
Definition geometry.hh:12
Definition idsets.hh:19
Definition indexsets.hh:118
Definition intersection.hh:18
Definition iterator.hh:19
Definition localgeometry.hh:13
void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
void gather(MessageBufferImp &buff, const EntityType &e) const
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:174
PartitionType partitionType() const
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:1206
WrappedDataHandle::DataType buffer
Definition multidomaingrid/multidomaingrid.hh:1208
SubDomainIndex data
Definition multidomaingrid/multidomaingrid.hh:1207
Traits::LeafGridView leafGridView() const
Traits::LevelGridView levelGridView(int level) const
Definition multidomaingrid/multidomaingrid.hh:1320
static const MultiDomainGridType v
Definition multidomaingrid/multidomaingrid.hh:1321
IdType id(const Entity &e) const
static constexpr int dimension
GridFamily::Traits::LevelGridView LevelGridView
static constexpr int dimensionworld
GridFamily::Traits::LeafGridView LeafGridView
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:638
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