1#ifndef DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_ANISOTROPIC_HH
2#define DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_ANISOTROPIC_HH
7#include <dune/grid/common/gridenums.hh>
33 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage = Fem::CachingStorage >
34 class AnisotropicDiscontinuousGalerkinSpace;
43 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
44 struct AnisotropicDiscontinuousGalerkinSpaceTraits
46 using DiscreteFunctionSpaceType = hpDG::AnisotropicDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >;
48 using FunctionSpaceType = FunctionSpace;
50 using GridPartType = GridPart;
52 using BasisFunctionSetsType = hpDG::AnisotropicBasisFunctionSets< FunctionSpaceType, GridPartType, order, Storage >;
53 using BasisFunctionSetType =
typename BasisFunctionSetsType::BasisFunctionSetType;
55 static const int codimension = BasisFunctionSetType::EntityType::codimension;
57 using BlockMapperType = hpDG::DiscontinuousGalerkinBlockMapper< GridPartType, BasisFunctionSetsType >;
58 static const int localBlockSize = BasisFunctionSetsType::localBlockSize;
60 typedef Hybrid::IndexRange< int, localBlockSize > LocalBlockIndices;
62 template<
class DiscreteFunction,
class Operation = Dune::Fem::DFCommunicationOperation::Copy >
65 using OperationType = Operation;
86 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
99 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
100 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
106 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
107 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
112 const std::vector<int>&
key,
113 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
114 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
121 decltype(
Function(std::declval<const EntityType>()))>::value,
int> i=0>
123 const Dune::InterfaceType interface = Dune::InteriorBorder_All_Interface,
124 const Dune::CommunicationDirection direction = Dune::ForwardCommunication )
129 KeyType convert(
const std::vector<int>& v )
const
132 assert(
key.size() == v.size() );
133 for(
unsigned int i=0; i<
key.size(); ++i )
155 template<
class FunctionSpace,
class Gr
idPart,
int order,
class Storage >
156 class DefaultLocalRestrictProlong< hpDG::AnisotropicDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage > >
157 :
public DiscontinuousGalerkinLocalRestrictProlong< hpDG::AnisotropicDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >,
false >
159 using BaseType = DiscontinuousGalerkinLocalRestrictProlong< hpDG::AnisotropicDiscontinuousGalerkinSpace< FunctionSpace, GridPart, order, Storage >,
false >;
162 explicit DefaultLocalRestrictProlong (
const typename BaseType::DiscreteFunctionSpaceType &space )
Definition: bindguard.hh:11
Abstract class representing a function.
Definition: common/function.hh:50
Default communication handler for discrete functions.
Definition: defaultcommhandler.hh:29
GridPartType & gridPart() const
Definition: discretefunctionspace.hh:745
Implementation of an -adaptive discrete function space using anisotropic product Legendre polynomials...
Definition: hpdg/anisotropic.hh:89
AnisotropicDiscontinuousGalerkinSpace(GridPartType &gridPart, const typename BaseType::KeyType key, const Dune::InterfaceType interface=Dune::InteriorBorder_All_Interface, const Dune::CommunicationDirection direction=Dune::ForwardCommunication)
Definition: hpdg/anisotropic.hh:104
typename BaseType::BasisFunctionSetsType BasisFunctionSetsType
Definition: hpdg/anisotropic.hh:95
BaseType::KeyType KeyType
Definition: hpdg/anisotropic.hh:96
AnisotropicDiscontinuousGalerkinSpace(GridPartType &gridPart, const Dune::InterfaceType interface=Dune::InteriorBorder_All_Interface, const Dune::CommunicationDirection direction=Dune::ForwardCommunication)
Definition: hpdg/anisotropic.hh:98
typename BaseType::EntityType EntityType
Definition: hpdg/anisotropic.hh:94
AnisotropicDiscontinuousGalerkinSpace(GridPartType &gridPart, const std::vector< int > &key, const Dune::InterfaceType interface=Dune::InteriorBorder_All_Interface, const Dune::CommunicationDirection direction=Dune::ForwardCommunication)
Definition: hpdg/anisotropic.hh:111
typename BaseType::GridPartType GridPartType
Definition: hpdg/anisotropic.hh:93
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
const KeyType & key(const EntityType &entity) const
get identifiying basis function set key assigned to given entity
Definition: hpdg/space.hh:231
typename Traits::BasisFunctionSetsType BasisFunctionSetsType
basis function sets type
Definition: hpdg/space.hh:56
typename BasisFunctionSetsType::KeyType KeyType
key type identifying a basis function set
Definition: hpdg/space.hh:58
typename BaseType::GridPartType GridPartType
grid part type
Definition: hpdg/space.hh:51
int order() const
return polynomial order
Definition: hpdg/space.hh:157