1#ifndef DUNE_FEM_GRIDPART_FILTER_FILTER_HH
2#define DUNE_FEM_GRIDPART_FILTER_FILTER_HH
22 template<
class >
struct DefaultFilterTraits;
23 template<
class >
class FilterInterface;
24 template<
class >
class FilterDefaultImplementation;
31 template <
class FilterImp >
58 template<
class FilterTraits >
63 friend class FilterDefaultImplementation< FilterTraits >;
65 typedef FilterTraits Traits;
75 typedef typename Traits::template Codim< cd >::EntityType EntityType;
93 bool contains (
const typename Codim< cd >::EntityType & entity )
const
95 CHECK_INTERFACE_IMPLEMENTATION( asImp().
contains( entity ) );
96 return asImp().template contains< cd >( entity );
100 template<
class Entity >
104 CHECK_INTERFACE_IMPLEMENTATION( asImp().contains< cc >( entity ) );
105 return asImp().template contains< cc >( entity );
110 template<
class Intersection >
113 return asImp().interiorIntersection( intersection );
117 template<
class Intersection >
120 return asImp().intersectionBoundary( intersection );
124 template<
class Intersection >
127 return asImp().intersectionBoundaryId( intersection );
131 template<
class Intersection >
134 return asImp().intersectionNeighbor( intersection );
145 return static_cast< const FilterType &
>( *this );
153 template<
class FilterTraits >
154 class FilterDefaultImplementation
155 :
public FilterInterface< FilterTraits >
157 typedef FilterDefaultImplementation< FilterTraits > ThisType;
158 typedef FilterInterface< FilterTraits > BaseType;
176 using BaseType::asImp;
178 FilterDefaultImplementation () =
default;
180 FilterDefaultImplementation (
const ThisType & ) =
default;
181 FilterDefaultImplementation (
ThisType && ) =
default;
190 template<
class Intersection >
191 bool interiorIntersection(
const Intersection &intersection )
const
195 return asImp().contains( outside );
203 template<
class Intersection >
204 bool intersectionBoundary(
const Intersection & )
const;
207 template<
class Intersection >
208 int intersectionBoundaryId (
const Intersection & )
const;
211 template<
class Intersection >
212 bool intersectionNeighbor (
const Intersection & )
const;
Provides check for implementation of interface methods when using static polymorphism,...
Wrapper class for entities.
Definition: entity.hh:66
static constexpr int codimension
Know your own codimension.
Definition: entity.hh:106
Interface class for filter to use with a Dune::FilteredGridPart.
Definition: filter.hh:60
Traits::FilterType FilterType
type of the filter implementation
Definition: filter.hh:69
Codim< 0 >::EntityType EntityType
type of entity with codim=0
Definition: filter.hh:79
bool intersectionNeighbor(const Intersection &intersection) const
returns true if for an intersection a neighbor exsits
Definition: filter.hh:132
bool contains(const Entity &entity) const
returns true if the given entity of the pointer in the domain
Definition: filter.hh:101
bool interiorIntersection(const Intersection &intersection) const
returns true if an intersection is interior
Definition: filter.hh:111
bool intersectionBoundary(const Intersection &intersection) const
returns true if an intersection is a boundary intersection
Definition: filter.hh:118
bool contains(const typename Codim< cd >::EntityType &entity) const
returns true if the given entity of the pointer in the domain
Definition: filter.hh:93
int intersectionBoundaryId(const Intersection &intersection) const
returns the boundary id for an intersection
Definition: filter.hh:125
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: intersection.hh:164
Entity outside() const
return Entity on the outside of this intersection. That is the neighboring Entity.
Definition: intersection.hh:261
GridImp::template Codim< 0 >::Entity Entity
Type of entity that this Intersection belongs to.
Definition: intersection.hh:192
Dune namespace.
Definition: alignedallocator.hh:13
constexpr std::bool_constant<((II==value)||...)> contains(std::integer_sequence< T, II... >, std::integral_constant< T, value >)
Checks whether or not a given sequence contains a value.
Definition: integersequence.hh:137
Static tag representing a codimension.
Definition: dimension.hh:24
entity types
Definition: filter.hh:40
FilterType::template Codim< cd >::EntityType EntityType
entity type for given codimension
Definition: filter.hh:42
type definitions
Definition: filter.hh:33
Codim< 0 >::EntityType EntityType
entity type for codimension 0
Definition: filter.hh:46
FilterImp FilterType
filter type
Definition: filter.hh:35
entity types
Definition: filter.hh:167
BaseType::template Codim< cd >::EntityType EntityType
type of codim cd
Definition: filter.hh:169
entity types
Definition: filter.hh:74