1#ifndef DUNE_FEM_COMMON_INTERSECTIONSIDE_HH
2#define DUNE_FEM_COMMON_INTERSECTIONSIDE_HH
4#include <dune/common/typelist.hh>
11 enum class IntersectionSide : std::size_t { in = 0u, out = 1u };
13 template<
class GF,
class Intersection>
14 auto bindIntersection(GF& gf,
const Intersection& intersection, IntersectionSide side, PriorityTag<2>)
15 ->
decltype(gf.bind(intersection, side))
17 gf.bind(intersection, side);
20 template<
class GF,
class Intersection>
21 auto bindIntersection(GF& gf,
const Intersection& intersection, IntersectionSide side, PriorityTag<1>)
22 ->
decltype(gf.bind(intersection.impl().hostIntersection(), side))
24 gf.bind(intersection.impl().hostIntersection(), side);
27 template<
class GF,
class Intersection>
28 auto bindIntersection(GF& gf,
const Intersection& intersection, IntersectionSide side, PriorityTag<0>)
29 ->
decltype(gf.bind(intersection.inside()))
32 const auto entity = (side == IntersectionSide::in) ? intersection.inside() : intersection.outside();
37 template<
class GF,
class Intersection>
38 void defaultIntersectionBind(GF &gf,
const Intersection &intersection, IntersectionSide side)
40 bindIntersection(gf, intersection, side, PriorityTag<2>{});
Dune namespace.
Definition: alignedallocator.hh:13
Utilities for type computations, constraining overloads, ...