dune-fem 2.8.0
Loading...
Searching...
No Matches
space/hpdg/default.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_DEFAULT_HH
2#define DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_DEFAULT_HH
3
4#include <memory>
5
6#include <dune/grid/common/gridenums.hh>
7
13
14#include "blockmapper.hh"
15#include "space.hh"
16
17namespace Dune
18{
19
20 namespace Fem
21 {
22
23 namespace hpDG
24 {
25
26 // Internal forward declaration
27 // ----------------------------
28
29 template< class BasisFunctionSets >
30 class DefaultDiscontinuousGalerkinSpace;
31
32
33
34#ifndef DOXYGEN
35
36 // DefaultDiscontinuousGalerkinSpaceTraits
37 // ---------------------------------------
38
39 template< class BasisFunctionSets >
40 struct DefaultDiscontinuousGalerkinSpaceTraits
41 {
42 using DiscreteFunctionSpaceType = hpDG::DefaultDiscontinuousGalerkinSpace< BasisFunctionSets >;
43
44 using BasisFunctionSetsType = BasisFunctionSets;
45 using BasisFunctionSetType = typename BasisFunctionSetsType::BasisFunctionSetType;
46
47 using FunctionSpaceType = typename BasisFunctionSetType::FunctionSpaceType;
48 using GridPartType = typename BasisFunctionSetsType::GridPartType;
49
50 static const int codimension = BasisFunctionSetType::EntityType::codimension;
51
52 using BlockMapperType = hpDG::DiscontinuousGalerkinBlockMapper< GridPartType, BasisFunctionSetsType >;
53 static const int localBlockSize = BasisFunctionSetsType::localBlockSize;
54
55 template< class DiscreteFunction, class Operation = Dune::Fem::DFCommunicationOperation::Copy >
56 struct CommDataHandle
57 {
58 using OperationType = Operation;
60 };
61 };
62
63#endif // #ifndef DOXYGEN
64
65
66
67 // DefaultDiscontinuousGalerkinSpace
68 // ---------------------------------
69
76 template< class BasisFunctionSets >
78 : public hpDG::DiscontinuousGalerkinSpace< DefaultDiscontinuousGalerkinSpaceTraits< BasisFunctionSets > >
79 {
81
82 public:
88 using KeyType = typename BaseType::KeyType;
89
96 const KeyType &key,
97 const InterfaceType interface = InteriorBorder_All_Interface,
98 const CommunicationDirection direction = ForwardCommunication )
99 : BaseType( gridPart, basisFunctionSets, key, interface, direction )
100 {}
101
103 };
104
105
106
107 // make_space
108 // ----------
109
124 template< class BasisFunctionSets >
125 std::unique_ptr< DefaultDiscontinuousGalerkinSpace< BasisFunctionSets > >
127 const BasisFunctionSets &basisFunctionSets,
128 const typename BasisFunctionSets::KeyType &key,
129 const InterfaceType interface = InteriorBorder_All_Interface,
130 const CommunicationDirection direction = ForwardCommunication )
131 {
132 using DiscreteFunctionSpaceType = DefaultDiscontinuousGalerkinSpace< BasisFunctionSets >;
133 return std::unique_ptr< DiscreteFunctionSpaceType >( new DiscreteFunctionSpaceType( gridPart, basisFunctionSets, key, interface, direction ) );
134 }
135
136 } // namespace hpDG
137
138
139
140#ifndef DOXYGEN
141
142 // DefaultLocalRestrictProlong
143 // ---------------------------
144
145 template< class BasisFunctionSets >
146 class DefaultLocalRestrictProlong< hpDG::DefaultDiscontinuousGalerkinSpace< BasisFunctionSets > >
147 : public DiscontinuousGalerkinLocalRestrictProlong< hpDG::DefaultDiscontinuousGalerkinSpace< BasisFunctionSets >, !BasisFunctionSets::orthogonal() >
148 {
149 using BaseType = DiscontinuousGalerkinLocalRestrictProlong< hpDG::DefaultDiscontinuousGalerkinSpace< BasisFunctionSets >, !BasisFunctionSets::orthogonal() >;
150
151 public:
152 explicit DefaultLocalRestrictProlong ( const typename BaseType::DiscreteFunctionSpaceType &space )
153 : BaseType( space )
154 {}
155 };
156
157
158
159#endif // #ifndef DOXYGEN
160
161 } // namespace Fem
162
163} // namespace Dune
164
165#endif // #ifndef DUNE_FEM_HPDG_SPACE_DISCONTINUOUSGALERKIN_DEFAULT_HH
Definition: bindguard.hh:11
std::unique_ptr< DefaultDiscontinuousGalerkinSpace< BasisFunctionSets > > make_space(typename BasisFunctionSets::GridPartType &gridPart, const BasisFunctionSets &basisFunctionSets, const typename BasisFunctionSets::KeyType &key, const InterfaceType interface=InteriorBorder_All_Interface, const CommunicationDirection direction=ForwardCommunication)
returns a new space instance for a given family of local basis function sets
Definition: space/hpdg/default.hh:126
abstract interface class for a family of local basis function sets
Definition: basisfunctionset/hpdg/basisfunctionsets.hh:30
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
Default communication handler for discrete functions.
Definition: defaultcommhandler.hh:29
GridPartType & gridPart() const
Definition: discretefunctionspace.hh:745
Default implementation of an -adaptive discrete function space given a family of local basis function...
Definition: space/hpdg/default.hh:79
typename BaseType::KeyType KeyType
key type identifying a basis function set
Definition: space/hpdg/default.hh:88
typename BaseType::GridPartType GridPartType
grid part type
Definition: space/hpdg/default.hh:84
DefaultDiscontinuousGalerkinSpace(GridPartType &gridPart, const BasisFunctionSetsType &basisFunctionSets, const KeyType &key, const InterfaceType interface=InteriorBorder_All_Interface, const CommunicationDirection direction=ForwardCommunication)
Definition: space/hpdg/default.hh:94
typename BaseType::BasisFunctionSetsType BasisFunctionSetsType
basis function sets type
Definition: space/hpdg/default.hh:86
Generic implementation of a -adaptive discontinuous finite element space.
Definition: hpdg/space.hh:46
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
const BasisFunctionSetsType & basisFunctionSets() const
return basis function sets
Definition: hpdg/space.hh:287