![]() |
Dune-Functions 2.12-git
|
Loading...
Searching...
No Matches
subdomain.hh
Go to the documentation of this file.
37 : public Dune::IteratorFacade<GlobalIntersectionIt<GV, ContainsCallback>, std::forward_iterator_tag, const typename GV::Intersection>
39 using Facade = Dune::IteratorFacade<GlobalIntersectionIt<GV, ContainsCallback>, std::forward_iterator_tag, const typename GV::Intersection>;
50 static constexpr bool cacheIntersection = not std::is_lvalue_reference_v<decltype(std::declval<IntersectionIterator>().operator*())>;
51 static constexpr bool cacheElement = not std::is_lvalue_reference_v<decltype(std::declval<ElementIterator>().operator*())>;
54 using IntersectionStorage = std::conditional_t<cacheIntersection, std::optional<Intersection>, std::monostate>;
89 GlobalIntersectionIt(const GridView& gridView, const ContainsCallback& contains, ElementIterator elementIt, ElementIterator elementEnd)
105 GlobalIntersectionIt(const GridView& gridView, const ContainsCallback& contains, ElementIterator elementIt)
255 DUNE_THROW(Dune::InvalidStateException, "Accessing nonexisting entry using SubDomainIndexSet::index()!");
270 DUNE_THROW(Dune::InvalidStateException, "Accessing nonexisting entry using SubDomainIndexSet::subIndex()!");
275 IndexType subIndex(const typename Codim<cc>::Entity& entity, int subEntity, unsigned int codim) const
376 static_assert(codim==0, "SubDomainGridView::Codim::Iterator<codim> is only implemented for codim=0");
388 ElementIterator(const SubDomainIndexSet<HGV>& indexSet, HostElementIterator&& it, HostElementIterator&& endIt)
439 using Iterator = std::conditional_t<codim==0, ElementIterator<All_Partition>, NonImplementedIterator<codim>>;
444 using Iterator = std::conditional_t<codim==0, ElementIterator<pit>, NonImplementedIterator<codim>>;
488 return {indexSet(), hostGridView().template begin<codim, pit>(), hostGridView().template end<codim, pit>()};
496 return {indexSet(), hostGridView().template end<codim, pit>(), hostGridView().template end<codim, pit>()};
534 return Dune::IteratorRange(subDomainGridView.template begin<0>(), subDomainGridView.template end<0>());
543 auto elements(const SubDomainGridView<HostGridView>& subDomainGridView, Dune::PartitionSet<partitions> partitionSet)
546 return Dune::IteratorRange(subDomainGridView.template begin<0, pit>(), subDomainGridView.template end<0, pit>());
555 auto intersections(const SubDomainGridView<HostGridView>& subDomainGridView, const Element& element)
648 std::is_same_v<typename SubDomainA::GridView::Intersection, typename SubDomainB::GridView::Intersection>,
#define DUNE_NO_UNIQUE_ADDRESS
unspecified value type referenceElement(T &&... t)
auto elements(const SubDomainGridView< HostGridView > &subDomainGridView)
ADL findable access to element range for a SubDomainGridView.
Definition subdomain.hh:532
auto intersections(const SubDomainGridView< HostGridView > &subDomainGridView, const Element &element)
ADL findable access to intersection range for an element of a SubDomainGridView.
Definition subdomain.hh:555
Definition subdomain.hh:31
int size() const
Indent & operator++()
static constexpr IntegralRange< std::decay_t< T > > range(T &&from, U &&to) noexcept
bigunsignedint< k > operator*(const bigunsignedint< k > &x, std::uintmax_t y)
std::ptrdiff_t index() const
#define DUNE_THROW(E,...)
constexpr EnableIfInterOperable< T1, T2, bool >::type operator==(const ForwardIteratorFacade< T1, V1, R1, D > &lhs, const ForwardIteratorFacade< T2, V2, R2, D > &rhs)
constexpr std::bool_constant<((II==value)||...)> contains(std::integer_sequence< T, II... >, std::integral_constant< T, value >)
PartitionSet<(1<< p)> partitionSet()
R reference
static constexpr std::size_t index(const GeometryType >)
static constexpr std::size_t size(std::size_t maxdim)
size_type size() const
Index subIndex(const typename GV::template Codim< 0 >::Entity &e, int i, unsigned int codim) const
Index index(const EntityType &e) const
An IndexSet for a sub-domain.
Definition subdomain.hh:190
SubDomainIndexSet(const HostGridView &hostGridView)
Construct SubDomainIndexSet for underlying host grid view.
Definition subdomain.hh:226
std::array< std::size_t, typeIndexSize > sizePerGT_
Definition subdomain.hh:342
std::vector< IndexType > indices_
Definition subdomain.hh:349
IndexType index(const typename Codim< cc >::Entity &entity) const
Definition subdomain.hh:260
IndexType index(const Entity &entity) const
Definition subdomain.hh:251
IndexType size(int codim) const
Definition subdomain.hh:245
AllEntityMapper allEntityMapper_
Definition subdomain.hh:346
IndexType size(Dune::GeometryType gt) const
Definition subdomain.hh:237
void insertElement(const typename Codim< 0 >::Entity &element)
Insert element and all its sub-entities into SubDomainIndexSet.
Definition subdomain.hh:302
Types types(int codim) const
Definition subdomain.hh:286
IndexType subIndex(const typename Codim< cc >::Entity &entity, int subEntity, unsigned int codim) const
Definition subdomain.hh:275
HostGridView hostGridView_
Definition subdomain.hh:339
std::array< std::size_t, dimension+1 > sizePerCodim_
Definition subdomain.hh:343
typename HostGridView::Grid Grid
Definition subdomain.hh:195
const HostGridView & hostGridView() const
Access underlying host grid view.
Definition subdomain.hh:296
bool contains(const Entity &entity) const
Definition subdomain.hh:281
std::array< Types, dimension+1 > typesPerCodim_
Definition subdomain.hh:344
IndexType subIndex(const Entity &entity, int subEntity, unsigned int codim) const
Definition subdomain.hh:266
Codim specific typedefs.
Definition subdomain.hh:202
typename Grid::template Codim< codim >::EntitySeed EntitySeed
Definition subdomain.hh:204
typename Grid::template Codim< codim >::Geometry Geometry
Definition subdomain.hh:205
typename Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition subdomain.hh:206
typename Grid::template Codim< codim >::Entity Entity
Definition subdomain.hh:203
A GridView for a sub-domain.
Definition subdomain.hh:368
typename HostGridView::Grid Grid
Definition subdomain.hh:425
Codim< codim >::template Partition< pit >::Iterator end() const
Create an iterator pointing to the end of the range.
Definition subdomain.hh:493
bool contains(const Entity &entity) const
Definition subdomain.hh:478
const IndexSet * indexSet_
Definition subdomain.hh:521
const IndexSet & indexSet() const
Definition subdomain.hh:462
SubDomainGridView(const SubDomainGridView &other)=default
const Grid & grid() const
Definition subdomain.hh:457
typename Grid::ctype ctype
Definition subdomain.hh:426
typename HostGridView::IntersectionIterator IntersectionIterator
Definition subdomain.hh:429
const HostGridView & hostGridView() const
Access underlying host grid view.
Definition subdomain.hh:515
@ dimensionworld
Definition subdomain.hh:449
typename HostGridView::Intersection Intersection
Definition subdomain.hh:428
decltype(auto) comm() const
Definition subdomain.hh:499
int size(int codim) const
Definition subdomain.hh:467
decltype(auto) ibegin(const typename Codim< 0 >::Entity &element) const
Definition subdomain.hh:504
int size(Dune::GeometryType gt) const
Definition subdomain.hh:472
decltype(auto) iend(const typename Codim< 0 >::Entity &element) const
Definition subdomain.hh:509
HGV HostGridView
Definition subdomain.hh:423
Codim< codim >::template Partition< pit >::Iterator begin() const
Create an iterator pointing to the begin of the range.
Definition subdomain.hh:485
SubDomainGridView(const IndexSet &indexSet)
Definition subdomain.hh:451
Codim specific typedefs.
Definition subdomain.hh:434
typename Grid::template Codim< codim >::Entity Entity
Definition subdomain.hh:435
typename Grid::template Codim< codim >::Geometry Geometry
Definition subdomain.hh:437
typename Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition subdomain.hh:438
typename Grid::template Codim< codim >::EntitySeed EntitySeed
Definition subdomain.hh:436
Definition subdomain.hh:443
Class representing a sub-domain of a GridView.
Definition subdomain.hh:579
void insertElement(const typename Codim< 0 >::Entity &element)
Insert element and all its sub-entities into SubDomain.
Definition subdomain.hh:622
GridView gridView() const
Create grid view representing the SubDomain.
Definition subdomain.hh:610
const IndexSet & indexSet() const
Definition subdomain.hh:604
SubDomainGridView< HostGridView > GridView
Definition subdomain.hh:585
HostGridView hostGridView() const
Access underlying host grid view.
Definition subdomain.hh:616
SubDomain(const HostGridView &hostGridView)
Construct SubDomain for underlying host grid view.
Definition subdomain.hh:600
typename HostGridView::Grid Grid
Definition subdomain.hh:583
bool contains(const typename Codim< 0 >::Entity &element) const
Check if element is contained in SubDomain.
Definition subdomain.hh:628
typename Grid::template Codim< codim >::Geometry Geometry
Definition subdomain.hh:593
typename Grid::template Codim< codim >::Entity Entity
Definition subdomain.hh:591
typename Grid::template Codim< codim >::LocalGeometry LocalGeometry
Definition subdomain.hh:594
typename Grid::template Codim< codim >::EntitySeed EntitySeed
Definition subdomain.hh:592
Class representing the intersection between two subdomains.
Definition subdomain.hh:646
const auto end() const
End iterator (sentinel)
Definition subdomain.hh:715
bool contains(const Intersection &is) const
Check if intersection is contained in the interface between the subdomains.
Definition subdomain.hh:676
const auto begin() const
Begin iterator over all intersection between the subdomains.
Definition subdomain.hh:705
SubDomainInterface(const SubDomainA &subDomainA, const SubDomainB &subDomainB)
Create interface between two subdomains.
Definition subdomain.hh:662
bool isOriented(const Intersection &is) const
Check if intersection is oriented.
Definition subdomain.hh:692
typename SubDomainA::GridView::Intersection Intersection
Definition subdomain.hh:653
Class representing the skeleton of a subdomain.
Definition subdomain.hh:734
SubDomainSkeleton(const SubDomain &subDomain)
Create skeleton of a subdomain.
Definition subdomain.hh:740
bool contains(const Intersection &is) const
Check if intersection is contained in the skeleton of the subdomain.
Definition subdomain.hh:745
typename SubDomain::GridView::Intersection Intersection
Definition subdomain.hh:737
T clear(T... args)
T max(T... args)
