1#ifndef DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_LEGENDRE_HH
2#define DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_LEGENDRE_HH
4#include <dune/grid/common/gridenums.hh>
31 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage = Fem::CachingStorage >
32 class LegendreDiscontinuousGalerkinSpace;
34 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage = Fem::CachingStorage >
35 class HierarchicLegendreDiscontinuousGalerkinSpace;
43 template<
class FunctionSpace,
class Gr
idPart,
int order,
bool hierarchicalOrdering,
class Storage >
44 struct LegendreDiscontinuousGalerkinSpaceTraits
47 typedef typename std::conditional< hierarchicalOrdering,
48 HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >,
49 LegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage > >::type DiscreteFunctionSpaceType;
51 using FunctionSpaceType = FunctionSpace;
53 using GridPartType = GridPart;
55 using BasisFunctionSetsType = hpDG::LegendreBasisFunctionSets< FunctionSpaceType, GridPartType, order, hierarchicalOrdering, Storage >;
56 using BasisFunctionSetType =
typename BasisFunctionSetsType::BasisFunctionSetType;
58 static const int codimension = BasisFunctionSetType::EntityType::codimension;
60 using BlockMapperType = hpDG::DiscontinuousGalerkinBlockMapper< GridPartType, BasisFunctionSetsType >;
61 static const int localBlockSize = BasisFunctionSetsType::localBlockSize;
63 typedef Hybrid::IndexRange< int, localBlockSize > LocalBlockIndices;
65 template<
class DiscreteFunction,
class Operation = Dune::Fem::DFCommunicationOperation::Copy >
68 using OperationType = Operation;
89 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
100 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
101 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
105 template<
class Function >
107 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
108 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
125 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
137 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
138 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
145 decltype(
Function(std::declval<const EntityType>()))>::value,
int> i=0>
147 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
148 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
162 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
163 class DefaultLocalRestrictProlong< hpDG::LegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage > >
164 :
public DiscontinuousGalerkinLocalRestrictProlong< hpDG::LegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >,
false >
166 using BaseType = DiscontinuousGalerkinLocalRestrictProlong< hpDG::LegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >,
false >;
169 explicit DefaultLocalRestrictProlong (
const typename BaseType::DiscreteFunctionSpaceType &space )
178 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
179 class DefaultLocalRestrictProlong< hpDG::HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage > >
180 :
public DiscontinuousGalerkinLocalRestrictProlong< hpDG::HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >, false >
182 using BaseType = DiscontinuousGalerkinLocalRestrictProlong< hpDG::HierarchicLegendreDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >,
false >;
185 explicit DefaultLocalRestrictProlong (
const typename BaseType::DiscreteFunctionSpaceType &space )
194 namespace Capabilities
200 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
203 static const bool v =
true;
207 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
210 static const bool v =
true;
213 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
216 static const bool v =
true;
219 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
222 static const bool v =
true;
229 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
232 static const bool v =
true;
236 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
239 static const bool v =
true;
242 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
245 static const bool v =
true;
248 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
251 static const bool v =
true;
254 template<
class FunctionSpace,
class Gr
idPart,
int polOrder,
class Storage >
257 static const bool v =
true;
Definition: bindguard.hh:11
Abstract class representing a function.
Definition: common/function.hh:50
specialize with true if polynomial order fixed and compile time static
Definition: space/common/capabilities.hh:37
static const bool v
Definition: space/common/capabilities.hh:38
static const int order
Definition: space/common/capabilities.hh:39
specialize with true if the space is localized, * i.e., the basis function set is based on a shape fu...
Definition: space/common/capabilities.hh:68
static const bool v
Definition: space/common/capabilities.hh:69
specialize with true if space can be used with AdaptiveDiscreteFunction
Definition: space/common/capabilities.hh:81
static const bool v
Definition: space/common/capabilities.hh:82
specialize with true if the space implementation is thread safe, while it is not modified
Definition: space/common/capabilities.hh:108
static const bool v
Definition: space/common/capabilities.hh:109
specialize with true if for a space the basis functions are sorted by the polynomial order,...
Definition: space/common/capabilities.hh:120
static const bool v
Definition: space/common/capabilities.hh:121
Default communication handler for discrete functions.
Definition: defaultcommhandler.hh:29
GridPartType & gridPart() const
Definition: discretefunctionspace.hh:745
Definition: discontinuousgalerkin/legendre.hh:142
Definition: hierarchiclegendre.hh:35
Implementation of an -adaptive discrete function space using product Legendre polynomials.
Definition: hpdg/legendre.hh:92
typename BaseType::BasisFunctionSetsType BasisFunctionSetsType
Definition: hpdg/legendre.hh:97
typename BaseType::GridPartType GridPartType
Definition: hpdg/legendre.hh:96
LegendreDiscontinuousGalerkinSpace(GridPartType &gridPart, const Dune::InterfaceType interface=Dune::InteriorBorder_All_Interface, const Dune::CommunicationDirection direction=Dune::ForwardCommunication)
Definition: hpdg/legendre.hh:99
LegendreDiscontinuousGalerkinSpace(GridPartType &gridPart, Function function, const Dune::InterfaceType interface=Dune::InteriorBorder_All_Interface, const Dune::CommunicationDirection direction=Dune::ForwardCommunication)
Definition: hpdg/legendre.hh:106
Implementation of an -adaptive discrete function space using product Legendre polynomials.
Definition: hpdg/legendre.hh:128
typename BaseType::EntityType EntityType
Definition: hpdg/legendre.hh:133
HierarchicLegendreDiscontinuousGalerkinSpace(GridPartType &gridPart, const Dune::InterfaceType interface=Dune::InteriorBorder_All_Interface, const Dune::CommunicationDirection direction=Dune::ForwardCommunication)
Definition: hpdg/legendre.hh:136
typename BaseType::GridPartType GridPartType
Definition: hpdg/legendre.hh:132
typename BaseType::BasisFunctionSetsType BasisFunctionSetsType
Definition: hpdg/legendre.hh:134
Generic implementation of a -adaptive discontinuous finite element space.
Definition: hpdg/space.hh:46
typename BaseType::EntityType EntityType
entity type
Definition: hpdg/space.hh:53
typename Traits::BasisFunctionSetsType BasisFunctionSetsType
basis function sets type
Definition: hpdg/space.hh:56
typename BaseType::GridPartType GridPartType
grid part type
Definition: hpdg/space.hh:51
int order() const
return polynomial order
Definition: hpdg/space.hh:157