|
dune-multidomaingrid 2.8
|
Loading...
Searching...
No Matches
indexsets.hh
Go to the documentation of this file.
124template<typename Impl, typename resulttype, typename MDGridTraits, int codim, bool protect = true, bool alternate_dispatch = false>
132 return invokeIf<MDGridTraits::template Codim<codim>::supported,Impl,result_type,alternate_dispatch>(static_cast<Impl&>(*this)).template invoke<codim>();
133 return static_cast<dispatchToCodim<Impl,result_type,MDGridTraits,codim-1,protect,alternate_dispatch>&>(*this).dispatch(cc);
146 return invokeIf<MDGridTraits::template Codim<0>::supported,Impl,result_type,alternate_dispatch>(static_cast<Impl&>(*this)).template invoke<0>();
153template<typename Impl, typename resulttype, typename MDGridTraits, int codim, bool alternate_dispatch>
162 return static_cast<dispatchToCodim<Impl,result_type,MDGridTraits,codim-1,false,alternate_dispatch>&>(*this).dispatch(cc);
264 using CellReferenceElement = Dune::ReferenceElement<typename HostGrid::template Codim<0>::Entity::Geometry>;
358 typedef std::vector<std::shared_ptr<IndexSetWrapper<GridImp, typename HostGridView::Grid::LevelGridView> > > LevelIndexSets;
361 template<typename Impl,typename result_type, bool protect = true, bool alternate_dispatch = false>
362 struct dispatchToCodim : public detail::dispatchToCodim<Impl,result_type,MDGridTraits,dimension,protect,alternate_dispatch> {};
414 const typename MapEntry<EntityType::codimension>::SubDomainSet& subDomains(const EntityType& e) const {
421 const typename MapEntry<cc>::SubDomainSet& subDomains(const typename Grid::Traits::template Codim<cc>::Entity& e) const {
434 IndexType index(SubDomainIndex subDomain, const typename Grid::Traits::template Codim<cc>::Entity& e) const {
457 typename MapEntry<cc>::SubDomainSet& subDomains(const typename Grid::Traits::template Codim<cc>::Entity& e) {
463 typename MapEntry<HostEntity::codimension>::SubDomainSet& subDomainsForHostEntity(const HostEntity& e) {
470 typename MapEntry<cc>::SubDomainSet& subDomainsForHostEntity(const typename Grid::HostGrid::Traits::template Codim<cc>::Entity& he) {
471 return indexMap<cc>()[LocalGeometryTypeIndex::index(he.type())][_hostGridView.indexSet().index(he)].domains;
476 const typename MapEntry<HostEntity::codimension>::SubDomainSet& subDomainsForHostEntity(const HostEntity& e) const {
483 const typename MapEntry<cc>::SubDomainSet& subDomainsForHostEntity(const typename Grid::HostGrid::Traits::template Codim<cc>::Entity& he) const {
484 return indexMap<cc>()[LocalGeometryTypeIndex::index(he.type())][_hostGridView.indexSet().index(he)].domains;
488 IndexType indexForSubDomain(SubDomainIndex subDomain, const typename Grid::HostGrid::Traits::template Codim<cc>::Entity& he) const {
505 const MapEntry<codim>& me = _indexSet.indexMap<codim>()[LocalGeometryTypeIndex::index(_gt)][_hostIndex];
519 getSubIndexForSubDomain(SubDomainIndex subDomain, GeometryType gt, IndexType hostIndex, const ThisType& indexSet) :
529 IndexType subIndexForSubDomain(SubDomainIndex subDomain, const HostEntity& he, int i, int codim) const {
540 struct getGeometryTypeSizeForSubDomain : public dispatchToCodim<getGeometryTypeSizeForSubDomain,IndexType,true,true> {
556 getGeometryTypeSizeForSubDomain(SubDomainIndex subDomain, GeometryType gt, const ThisType& indexSet) :
568 struct getCodimSizeForSubDomain : public dispatchToCodim<getCodimSizeForSubDomain,IndexType,true,true> {
598 const MapEntry<EntityType::codimension>& me = indexMap<EntityType::codimension>()[LocalGeometryTypeIndex::index(gt)][hostIndex];
665 void addToSubDomains(const typename MDGridTraits::template Codim<0>::SubDomainSet& subDomains, const Codim0Entity& e) {
752 detail::applyIf<MDGridTraits::template Codim<codim>::supported,const Impl>(static_cast<const Impl&>(*this)).template apply<codim>(std::forward<T>(t));
823 for (typename LevelIndexSets::iterator it = levelIndexSets.begin(); it != levelIndexSets.end(); ++it) {
839 levelIndexSets[he.level()]->template indexMap<0>()[hgt_index][levelIndexSets[he.level()]->_hostGridView.indexSet().index(he)].domains.addAll(me.domains);
850 for(typename LevelIndexSets::iterator it = levelIndexSets.begin(); it != levelIndexSets.end(); ++it) {
880 void updateMapEntry(MapEntry<codim>& me, SizeContainer& sizes, std::vector<MultiIndexContainer>& multiIndexMap) {
898 void markAncestors(LevelIndexSets& levelIndexSets, HostEntity he, const SubDomainSet& domains) {
902 levelIndexSets[he.level()]->template indexMap<0>()[LocalGeometryTypeIndex::index(he.type())][levelIndexSets[he.level()]->_hostGridView.indexSet().index(he)].domains;
930 markSubIndices(const HostEntity& he, DomainSet& domains, const HostIndexSet& his, const typename HostEntity::Geometry& geo) :
965 return MDGridTraits::template Codim<codim>::supported && Dune::Capabilities::hasEntity<HostGrid,codim>::v;
992 return MapEntry<Entity::codimension>::SubDomainSet::DataHandle::size(_indexSet.subDomainsForHostEntity(e));
998 MapEntry<Entity::codimension>::SubDomainSet::DataHandle::gather(buf,_indexSet.subDomainsForHostEntity(e));
1004 MapEntry<Entity::codimension>::SubDomainSet::DataHandle::scatter(buf,_indexSet.subDomainsForHostEntity(e),n);
1049 _hostGridView.template communicate<SelectionDataHandle>(dh,Dune::InteriorBorder_All_Interface,Dune::ForwardCommunication);
STL namespace.
bool setContains(const ArrayBasedSet< SI, capacity > &a, const ArrayBasedSet< SI, capacity > &b)
collect_elementwise_struct< T, binary_function > collect_elementwise(T &result, binary_function f=binary_function())
Definition utility.hh:41
std::size_t fixedSize
unspecified value type referenceElement(T &&... t)
unspecified-type ReferenceElement
int size() const
void clear()
SLList< T, A > & operator=(const SLList< T, A > &other)
static StaticIntegralRange< T, to > range(std::integral_constant< T, to >) noexcept
static Type apply(T &t)
constexpr void forEach(Range &&range, F &&f)
bool gt(const T &first, const T &second, typename EpsilonType< T >::Type epsilon=DefaultEpsilon< T, style >::value())
size_type dim() const
std::ptrdiff_t index() const
virtual void operator()()=0
#define DUNE_THROW(E, m)
ForwardCommunication
InteriorBorder_All_Interface
const IndexSet & indexSet() const
Implementation & impl()
bool contains(const EntityType &e) const
IteratorRange<... > elements(const GV &gv)
GeometryType
static constexpr std::size_t size(std::size_t dim)
static constexpr std::size_t index(const GeometryType >)
Definition allsubdomaininterfacesiterator.hh:21
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
Definition indexsets.hh:236
IndexSetWrapper(const GridImp &grid, HostGridView hostGridView)
Definition indexsets.hh:675
IndexType size(GeometryType type) const
Returns the number of entities with GeometryType type in the grid.
Definition indexsets.hh:397
const MapEntry< EntityType::codimension >::SubDomainSet & subDomains(const EntityType &e) const
Returns a constant reference to the SubDomainSet of the given entity.
Definition indexsets.hh:414
IndexType index(const typename Grid::Traits::template Codim< codim >::Entity &e) const
Returns the index of the entity with codimension codim.
Definition indexsets.hh:368
IndexType index(const Entity &e) const
Returns the index of the entity.
Definition indexsets.hh:374
MDGridTraits::SubDomainIndex SubDomainIndex
Definition indexsets.hh:282
static const std::size_t maxSubDomains
Definition indexsets.hh:287
IndexType index(SubDomainIndex subDomain, const typename Grid::Traits::template Codim< cc >::Entity &e) const
Definition indexsets.hh:434
IndexType subIndex(const Entity &e, int i, unsigned int codim) const
Returns the subdindex of the i-th subentity of e with codimension codim.
Definition indexsets.hh:386
IndexType index(SubDomainIndex subDomain, const EntityType &e) const
Returns the index of the entity in a specific subdomain.
Definition indexsets.hh:427
TypesImp Types
Types types(int codim) const
Returns a list of all geometry types with codimension codim contained in the grid.
Definition indexsets.hh:392
IndexType size(SubDomainIndex subDomain, int codim) const
Definition indexsets.hh:617
const MapEntry< cc >::SubDomainSet & subDomains(const typename Grid::Traits::template Codim< cc >::Entity &e) const
Definition indexsets.hh:421
bool contains(const EntityType &e) const
Returns true if the entity is contained in the grid.
Definition indexsets.hh:408
IndexType size(int codim) const
Returns the number of entities with codimension codim in the grid.
Definition indexsets.hh:402
IndexType subIndex(SubDomainIndex subDomain, const SubDomainEntity &e, int i, int codim) const
Definition indexsets.hh:605
typename Grid::MDGridTraits MDGridTraits
Definition indexsets.hh:280
IndexType size(SubDomainIndex subDomain, GeometryType type) const
Definition indexsets.hh:613
IndexType subIndex(const Entity &e, int i) const
Returns the subdindex of the i-th subentity of e with codimension codim.
Definition indexsets.hh:380
IndexSetWrapper(const ThisType &rhs)
Definition indexsets.hh:680
Types types(SubDomainIndex subDomain, int codim) const
Definition indexsets.hh:609
HostIndexSet::IndexType IndexType
Definition indexsets.hh:285
MDGridTraits::template Codim< 0 >::SubDomainSet SubDomainSet
Definition indexsets.hh:281
bool contains(SubDomainIndex subDomain, const EntityType &e) const
Returns true if the entity is contained in a specific subdomain.
Definition indexsets.hh:623
Definition subdomaingrid/indexsets.hh:31
Definition subdomaintosubdomaininterfaceiterator.hh:19
An intersection that forms part of the interface between two subdomains.
Definition subdomaininterfaceiterator.hh:32
HostGrid::template Codim< codim >::Entity HostEntity
T apply(T... args)
T back(T... args)
T fill(T... args)
T for_each(T... args)
T invoke(T... args)
T push_back(T... args)
T size(T... args)
T swap(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8