dune-fem  2.4.1-rc
padaptivespace/discontinuousgalerkin.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SPACE_PADAPTIVE_DISCONTINUOUSGALERKIN_HH
2 #define DUNE_FEM_SPACE_PADAPTIVE_DISCONTINUOUSGALERKIN_HH
3 
7 
8 #include "adaptmanager.hh"
9 #include "declaration.hh"
10 #include "generic.hh"
11 #include "lagrange.hh"
12 #include "mapper.hh"
13 #include "restrictprolong.hh"
14 
15 
16 namespace Dune
17 {
18 
19  namespace Fem
20  {
21 
38  // PAdaptiveDGSpaceTraits
39  // ----------------------
40 
41  template< class FunctionSpace, class GridPart, int polOrder, template< class > class Storage >
43  : public PAdaptiveLagrangeSpaceTraits< FunctionSpace, GridPart, polOrder, Storage >
44  {
46 
47  static const bool continuousSpace = false ;
49 
52 
53  template< class DiscreteFunction,
54  class Operation = DFCommunicationOperation :: Copy >
56  {
58  typedef Operation OperationType;
59  };
60  };
61 
62 
63 
64  // PAdaptiveDGSpace
65  // ----------------
66 
73  template< class FunctionSpace, class GridPart, int polOrder, template< class > class Storage = CachingStorage >
74  class PAdaptiveDGSpace
75  : public GenericDiscreteFunctionSpace< PAdaptiveDGSpaceTraits< FunctionSpace, GridPart, polOrder, Storage > >
76  {
79 
80  public:
81  typedef ThisType PAdaptiveDGSpaceType;
82 
83  typedef typename BaseType::Traits Traits;
84 
85  typedef typename BaseType::GridPartType GridPartType;
86  typedef typename BaseType::IntersectionType IntersectionType;
87 
88  typedef typename BaseType::CompiledLocalKeyType CompiledLocalKeyType;
89  typedef CompiledLocalKeyType LagrangePointSetType;
90 
91  protected:
92  using BaseType::dfList_;
93  using BaseType::searchFunction;
94 
95  public:
96  using BaseType::continuous;
97  using BaseType::gridPart;
98  using BaseType::blockMapper;
99  using BaseType::compiledLocalKey;
100 
101  // default communication interface
102  static const InterfaceType defaultInterface = InteriorBorder_All_Interface;
103  // default communication direction
104  static const CommunicationDirection defaultDirection = ForwardCommunication;
105 
112  explicit PAdaptiveDGSpace ( GridPartType &gridPart,
113  const InterfaceType commInterface = defaultInterface,
114  const CommunicationDirection commDirection = defaultDirection )
115  : BaseType( gridPart, commInterface, commDirection )
116  {}
117 
118  // copy constructor needed for p-adaption
120  : BaseType( other )
121  {}
122 
124  inline bool continuous (const IntersectionType &intersection) const
125  {
126  return false;
127  }
128 
130  template< class EntityType >
131  DUNE_DEPRECATED
132  inline const CompiledLocalKeyType &lagrangePointSet( const EntityType &entity ) const
133  {
134  return compiledLocalKey( entity.type(),
135  blockMapper().polynomOrder( entity ) );
136  }
137 
139  inline const CompiledLocalKeyType &lagrangePointSet( const GeometryType &type, const int order = BaseType::polynomialOrder ) const
140  {
141  return compiledLocalKey( type, order );
142  }
143 
147  template <class DiscreteFunction>
148  void addFunction ( DiscreteFunction &df ) const
149  {
150  assert( searchFunction( df ) == dfList_.end() );
151  // select L2Porjection to be the LocalInterpolation
152  typedef typename BaseType :: template PAdaptiveDiscreteFunctionEntry<
153  DiscreteFunction, DGL2ProjectionImpl > RealEntryType ;
154  typedef typename BaseType :: PAdaptiveDiscreteFunctionEntryInterface
155  EntryInterface;
156 
157  EntryInterface *entry = new RealEntryType( df );
158  assert( entry );
159  dfList_.push_front( entry );
160  }
161  };
162 
163  } // namespace Fem
164 
165 } // Dune namespace
166 
167 #endif // #ifndef DUNE_FEM_SPACE_PADAPTIVE_DISCONTINUOUSGALERKIN_HH
Definition: selectcaching.hh:17
adaptive DG discrete function space
Definition: space/padaptivespace/declaration.hh:14
Definition: padaptivespace/lagrange.hh:43
Operation OperationType
Definition: padaptivespace/discontinuousgalerkin.hh:58
const CompiledLocalKeyType & lagrangePointSet(const GeometryType &type, const int order=BaseType::polynomialOrder) const
Please doc me.
Definition: padaptivespace/discontinuousgalerkin.hh:139
PAdaptiveDGMapper< GridPart, polOrder > BlockMapperType
Definition: padaptivespace/discontinuousgalerkin.hh:50
NonBlockMapper< BlockMapperType, localBlockSize > MapperType
Definition: padaptivespace/discontinuousgalerkin.hh:51
Default communication handler for discrete functions.
Definition: defaultcommhandler.hh:23
Please doc me.
Definition: padaptivespace/generic.hh:37
CompiledLocalKeyType LagrangePointSetType
Definition: padaptivespace/discontinuousgalerkin.hh:89
static const int localBlockSize
Definition: padaptivespace/discontinuousgalerkin.hh:48
dimension of range vector space
Definition: functionspaceinterface.hh:47
BaseType::GridPartType GridPartType
Definition: padaptivespace/discontinuousgalerkin.hh:85
PAdaptiveDGSpace(const PAdaptiveDGSpace &other)
Definition: padaptivespace/discontinuousgalerkin.hh:119
Definition: nonblockmapper.hh:19
Definition: coordinate.hh:4
static const bool continuousSpace
Definition: padaptivespace/discontinuousgalerkin.hh:47
const CompiledLocalKeyType & lagrangePointSet(const EntityType &entity) const
Please doc me.
Definition: padaptivespace/discontinuousgalerkin.hh:132
Definition: padaptivespace/discontinuousgalerkin.hh:55
PAdaptiveDGSpace(GridPartType &gridPart, const InterfaceType commInterface=defaultInterface, const CommunicationDirection commDirection=defaultDirection)
constructor
Definition: padaptivespace/discontinuousgalerkin.hh:112
Definition: mapper.hh:159
PAdaptiveDGSpace< FunctionSpace, GridPart, polOrder, Storage > DiscreteFunctionSpaceType
Definition: padaptivespace/discontinuousgalerkin.hh:45
BaseType::IntersectionType IntersectionType
Definition: padaptivespace/discontinuousgalerkin.hh:86
Definition: dgl2projection.hh:20
just copy data
Definition: commoperations.hh:263
DefaultCommunicationHandler< DiscreteFunction, Operation > Type
Definition: padaptivespace/discontinuousgalerkin.hh:57
BaseType::CompiledLocalKeyType CompiledLocalKeyType
Definition: padaptivespace/discontinuousgalerkin.hh:88
void addFunction(DiscreteFunction &df) const
add function to discrete function space for p-adaptation (currently only supported by AdaptiveDiscret...
Definition: padaptivespace/discontinuousgalerkin.hh:148
ThisType PAdaptiveDGSpaceType
Definition: padaptivespace/discontinuousgalerkin.hh:81
bool continuous(const IntersectionType &intersection) const
returns true if the space contains only globally continuous functions
Definition: padaptivespace/discontinuousgalerkin.hh:124
Definition: padaptivespace/discontinuousgalerkin.hh:42
GridPartType::template Codim< Traits::codimension >::EntityType EntityType
type of entity of codimension 0
Definition: discretefunctionspace.hh:200
BaseType::Traits Traits
Definition: padaptivespace/discontinuousgalerkin.hh:83