|
dune-multidomaingrid 2.9
|
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> {};
413 const typename MapEntry<EntityType::codimension>::SubDomainSet& subDomains(const EntityType& e) const {
420 const typename MapEntry<cc>::SubDomainSet& subDomains(const typename Grid::Traits::template Codim<cc>::Entity& e) const {
433 IndexType index(SubDomainIndex subDomain, const typename Grid::Traits::template Codim<cc>::Entity& e) const {
456 typename MapEntry<cc>::SubDomainSet& subDomains(const typename Grid::Traits::template Codim<cc>::Entity& e) {
462 typename MapEntry<HostEntity::codimension>::SubDomainSet& subDomainsForHostEntity(const HostEntity& e) {
469 typename MapEntry<cc>::SubDomainSet& subDomainsForHostEntity(const typename Grid::HostGrid::Traits::template Codim<cc>::Entity& he) {
470 return indexMap<cc>()[LocalGeometryTypeIndex::index(he.type())][_hostGridView.indexSet().index(he)].domains;
475 const typename MapEntry<HostEntity::codimension>::SubDomainSet& subDomainsForHostEntity(const HostEntity& e) const {
482 const typename MapEntry<cc>::SubDomainSet& subDomainsForHostEntity(const typename Grid::HostGrid::Traits::template Codim<cc>::Entity& he) const {
483 return indexMap<cc>()[LocalGeometryTypeIndex::index(he.type())][_hostGridView.indexSet().index(he)].domains;
487 IndexType indexForSubDomain(SubDomainIndex subDomain, const typename Grid::HostGrid::Traits::template Codim<cc>::Entity& he) const {
504 const MapEntry<codim>& me = _indexSet.indexMap<codim>()[LocalGeometryTypeIndex::index(_gt)][_hostIndex];
518 getSubIndexForSubDomain(SubDomainIndex subDomain, GeometryType gt, IndexType hostIndex, const ThisType& indexSet) :
528 IndexType subIndexForSubDomain(SubDomainIndex subDomain, const HostEntity& he, int i, int codim) const {
539 struct getGeometryTypeSizeForSubDomain : public dispatchToCodim<getGeometryTypeSizeForSubDomain,IndexType,true,true> {
555 getGeometryTypeSizeForSubDomain(SubDomainIndex subDomain, GeometryType gt, const ThisType& indexSet) :
567 struct getCodimSizeForSubDomain : public dispatchToCodim<getCodimSizeForSubDomain,IndexType,true,true> {
597 const MapEntry<EntityType::codimension>& me = indexMap<EntityType::codimension>()[LocalGeometryTypeIndex::index(gt)][hostIndex];
664 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));
842 levelIndexSets[he.level()]->template indexMap<0>()[hgt_index][hostLvlIndex].domains.addAll(me.domains);
884 void updateMapEntry(MapEntry<codim>& me, SizeContainer& sizes, std::vector<MultiIndexContainer>& multiIndexMap) {
901 void markAncestors(LevelIndexSets& levelIndexSets, HostEntity he, const SubDomainSet& domains) {
905 levelIndexSets[he.level()]->template indexMap<0>()[LocalGeometryTypeIndex::index(he.type())][levelIndexSets[he.level()]->_hostGridView.indexSet().index(he)].domains;
933 markSubIndices(const HostEntity& he, DomainSet& domains, const HostIndexSet& his, const typename HostEntity::Geometry& geo) :
968 return MDGridTraits::template Codim<codim>::supported && Dune::Capabilities::hasEntity<HostGrid,codim>::v;
995 return MapEntry<Entity::codimension>::SubDomainSet::DataHandle::size(_indexSet.subDomainsForHostEntity(e));
1001 MapEntry<Entity::codimension>::SubDomainSet::DataHandle::gather(buf,_indexSet.subDomainsForHostEntity(e));
1007 MapEntry<Entity::codimension>::SubDomainSet::DataHandle::scatter(buf,_indexSet.subDomainsForHostEntity(e),n);
1052 _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:247
Definition indexsets.hh:236
IndexSetWrapper(const GridImp &grid, HostGridView hostGridView)
Definition indexsets.hh:674
IndexType size(GeometryType type) const
Returns the number of entities with GeometryType type in the grid.
Definition indexsets.hh:396
const MapEntry< EntityType::codimension >::SubDomainSet & subDomains(const EntityType &e) const
Returns a constant reference to the SubDomainSet of the given entity.
Definition indexsets.hh:413
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:433
IndexType index(SubDomainIndex subDomain, const EntityType &e) const
Returns the index of the entity in a specific subdomain.
Definition indexsets.hh:426
Types types(int codim) const
Returns a list of all geometry types with codimension codim contained in the grid.
Definition indexsets.hh:391
IndexType size(SubDomainIndex subDomain, int codim) const
Definition indexsets.hh:616
const MapEntry< cc >::SubDomainSet & subDomains(const typename Grid::Traits::template Codim< cc >::Entity &e) const
Definition indexsets.hh:420
bool contains(const EntityType &e) const
Returns true if the entity is contained in the grid.
Definition indexsets.hh:407
IndexType size(int codim) const
Returns the number of entities with codimension codim in the grid.
Definition indexsets.hh:401
IndexType subIndex(const typename Grid::Traits::template Codim< codim >::Entity &e, int i, unsigned int cd) const
Returns the subdindex of the i-th subentity of e with codimension codim.
Definition indexsets.hh:380
IndexType subIndex(SubDomainIndex subDomain, const SubDomainEntity &e, int i, int codim) const
Definition indexsets.hh:604
IndexType subIndex(const Entity &e, int i, unsigned int cd) const
Returns the subdindex of the i-th subentity of e with codimension codim.
Definition indexsets.hh:386
typename Grid::MDGridTraits MDGridTraits
Definition indexsets.hh:280
IndexType size(SubDomainIndex subDomain, GeometryType type) const
Definition indexsets.hh:612
Types types(SubDomainIndex subDomain, int codim) const
Definition indexsets.hh:608
HostIndexSet::IndexType IndexType
Definition indexsets.hh:285
friend class IndexSetWrapper
Definition indexsets.hh:241
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:622
TypesImp Types
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 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