1#ifndef DUNE_FEM_HPDG_SPACE_BASISFUNCTIONSETS_BASISFUNCTIONSETS_HH
2#define DUNE_FEM_HPDG_SPACE_BASISFUNCTIONSETS_BASISFUNCTIONSETS_HH
6#include <dune/common/bartonnackmanifcheck.hh>
8#include <dune/geometry/type.hh>
44 using EntityType =
typename BasisFunctionSetType::EntityType;
47 using Types =
typename Traits::Types;
66 CHECK_INTERFACE_IMPLEMENTATION(
impl().
types() );
67 return impl().types();
80 return impl().maxBlocks();
87 return impl().maxBlocks( type );
93 CHECK_INTERFACE_IMPLEMENTATION(
impl().
blocks( type, key ) );
94 return impl().blocks( type, key );
106 CHECK_INTERFACE_IMPLEMENTATION(
impl().
encode( key ) );
107 return impl().encode( key );
113 CHECK_INTERFACE_IMPLEMENTATION(
impl().
decode( data ) );
114 return impl().decode( data );
126 return Traits::ImplementationType::orthogonal();
132 CHECK_INTERFACE_IMPLEMENTATION(
impl().
order() );
133 return impl().order();
137 int order ( GeometryType type )
const
139 CHECK_INTERFACE_IMPLEMENTATION(
impl().
order( type ) );
140 return impl().order( type );
146 CHECK_INTERFACE_IMPLEMENTATION(
impl().
order( type, key ) );
147 return impl().order( type, key );
154 return impl().basisFunctionSet( entity, key );
160 const typename Traits::ImplementationType &
impl ()
const
162 return static_cast< const typename Traits::ImplementationType &
>( *this );
Definition: bindguard.hh:11
abstract interface class for a family of local basis function sets
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:30
BasisFunctionSetType basisFunctionSet(const EntityType &entity, const KeyType &key) const
return basis function set
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:151
int order(GeometryType type, const KeyType &key) const
return polynomial order
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:144
T Traits
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:32
DataType encode(const KeyType &key) const
map key to data type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:104
int order(GeometryType type) const
return maximum polynomial order per geometry type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:137
typename Traits::DataType DataType
data type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:53
const Traits::ImplementationType & impl() const
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:160
std::size_t maxBlocks() const
return maximum number of blocks used
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:77
std::size_t blocks(GeometryType type, const KeyType &key) const
return number of blocks used
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:91
typename Traits::Types Types
a range of geometry types
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:47
typename Traits::BasisFunctionSetType BasisFunctionSetType
basis function set type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:42
static const int localBlockSize
block size
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:50
Types types() const
return range of supported geometry types
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:64
typename BasisFunctionSetType::EntityType EntityType
entity type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:44
int order() const
return maximum polynomial order
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:130
std::size_t maxBlocks(GeometryType type) const
return maximum number of blocks used per geometry type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:84
KeyType decode(const DataType &data) const
map data to key type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:111
static constexpr bool orthogonal() noexcept
return true if basis function sets are always orthogonal, false otherwise
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:124
typename Traits::KeyType KeyType
key type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:39
typename Traits::GridPartType GridPartType
grid part type
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:36
BasisFunctionSets()=default