dune-pdelab 2.10-git
Loading...
Searching...
No Matches
intersectiontype.hh
Go to the documentation of this file.
1#ifndef DUNE_PDELAB_COMMON_INTERSECTIONTYPE_HH
2#define DUNE_PDELAB_COMMON_INTERSECTIONTYPE_HH
3
4#include <utility>
5#include <tuple>
6
9
10namespace Dune {
11 namespace PDELab {
12
15 {
16
17 processor = 0,
18 skeleton = 1,
19 boundary = 2,
20 periodic = 3
21
22 };
23
25
36 template<typename EntitySet, typename Intersection>
38 {
39 auto type = static_cast<IntersectionType>(1* is.neighbor() + 2*is.boundary());
41 if (entity_set.partitions() == Partitions::all)
42 return std::make_tuple(type,is.outside());
43 else
44 {
45 auto outside_entity = is.outside();
46 if (entity_set.partitions().contains(outside_entity.partitionType()))
47 return std::make_tuple(type,outside_entity);
48 else
49 return std::make_tuple(IntersectionType::processor,std::move(outside_entity));
50 }
51 else
52 return std::make_tuple(type,decltype(is.outside()){});
53 }
54
55
56 } // namespace PDELab
57} // namespace Dune
58
59#endif // DUNE_PDELAB_COMMON_INTERSECTIONTYPE_HH
IntersectionType
Enum describing the type of an intersection.
Definition intersectiontype.hh:15
@ processor
processor boundary intersection (neighbor() == false && boundary() == false) or outside entity not in...
@ boundary
domain boundary intersection (neighbor() == false && boundary() == true)
@ skeleton
skeleton intersection (neighbor() == true && boundary() == false)
@ periodic
periodic boundary intersection (neighbor() == true && boundary() == true)
std::tuple< IntersectionType, typename EntitySet::Element > classifyIntersection(const EntitySet &entity_set, const Intersection &is)
Classifies the type of an intersection wrt to the passed EntitySet.
Definition intersectiontype.hh:37
For backward compatibility – Do not use this!
constexpr All all
Entity outside() const
bool neighbor() const
bool boundary() const
T make_tuple(T... args)