1#ifndef DUNE_FEM_SPACE_COMMON_UNIQUEFACETORIENTATION_HH
2#define DUNE_FEM_SPACE_COMMON_UNIQUEFACETORIENTATION_HH
7#include <dune/grid/common/rangegenerators.hh>
24 template<
class Gr
idPart >
28 typedef typename GridPartType::template Codim< 0 >::EntityType
EntityType;
52 unsigned int orientations = 0;
53 for(
auto intersection : intersections(
gridPart(), entity ) )
56 orientations |= (1 << intersection.indexInInside());
61 template <
class Entity>
65 parallelMapper_.
mapEach( entity, [ &index ] (
auto local,
auto global ) { assert( local == 0 ); index = global; } );
83 template<
class Gr
idPart >
87 typedef typename GridPart::template Codim< 0 >::EntityType
EntityType;
95 return orientations( std::make_index_sequence< GridPartType::dimension >() );
101 template< std::size_t... i >
102 static constexpr unsigned int orientations ( std::index_sequence< i... > )
115 template<
class Gr
idPart >
117 typename std::conditional< GridPartCapabilities::isCartesian< GridPart >::v,
Definition: bindguard.hh:11
typename std::conditional< GridPartCapabilities::isCartesian< GridPart >::v, CartesianUniqueFacetOrientation< GridPart >, DefaultUniqueFacetOrientation< GridPart > >::type UniqueFacetOrientation
Definition: uniquefacetorientation.hh:119
static constexpr std::decay_t< T > sum(T a)
Definition: utility.hh:33
int sequence() const
get index of the sequence in grid sequences
Definition: discretefunctionspace.hh:718
A vector valued function space.
Definition: functionspace.hh:60
Definition: uniquefacetorientation.hh:26
const GridPartType & gridPart_
Definition: uniquefacetorientation.hh:72
FiniteVolumeSpace< FunctionSpaceType, GridPartType, 0, SimpleStorage > SpaceType
Definition: uniquefacetorientation.hh:31
FunctionSpace< double, int, GridPartType::dimensionworld, 1 > FunctionSpaceType
Definition: uniquefacetorientation.hh:30
DefaultUniqueFacetOrientation(const GridPartType &gridPart)
Definition: uniquefacetorientation.hh:36
const GridPartType & gridPart() const
Definition: uniquefacetorientation.hh:69
unsigned int operator()(const EntityType &entity) const
Definition: uniquefacetorientation.hh:44
GlobalKeyType globallyUniqueIndex(const Entity &entity) const
Definition: uniquefacetorientation.hh:62
GridPartType::template Codim< 0 >::EntityType EntityType
Definition: uniquefacetorientation.hh:28
int sequence_
Definition: uniquefacetorientation.hh:75
SpaceType space_
Definition: uniquefacetorientation.hh:73
ParallelMapperType::GlobalKeyType GlobalKeyType
Definition: uniquefacetorientation.hh:34
ParallelDofMapper< GridPartType, typename SpaceType::BlockMapperType > ParallelMapperType
Definition: uniquefacetorientation.hh:33
GridPart GridPartType
Definition: uniquefacetorientation.hh:27
ParallelMapperType parallelMapper_
Definition: uniquefacetorientation.hh:74
Definition: uniquefacetorientation.hh:85
unsigned int operator()(const EntityType &entity) const
Definition: uniquefacetorientation.hh:93
GridPart GridPartType
Definition: uniquefacetorientation.hh:86
GridPart::template Codim< 0 >::EntityType EntityType
Definition: uniquefacetorientation.hh:87
const GridPartType & gridPart() const
Definition: uniquefacetorientation.hh:98
CartesianUniqueFacetOrientation(const GridPartType &gridPart)
Definition: uniquefacetorientation.hh:89
void mapEach(const ElementType &element, Functor f) const
Definition: parallel.hh:112
void update()
Definition: parallel.hh:173