dune-fem  2.4.1-rc
finitevolume/space.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SPACE_FINITEVOLUME_SPACE_HH
2 #define DUNE_FEM_SPACE_FINITEVOLUME_SPACE_HH
3 
4 #include <dune/common/deprecated.hh>
5 
6 #include <dune/grid/common/gridenums.hh>
7 
17 
18 #include "basisfunctionsets.hh"
19 #include "declaration.hh"
20 #include "interpolation.hh"
21 
22 namespace Dune
23 {
24 
25  namespace Fem
26  {
27 
28  // FiniteVolumeSpaceTraits
29  // -----------------------
30 
31  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
33  {
35 
37  typedef GridPart GridPartType;
38 
39  static const int codimension = codim;
40 
41  typedef typename GridPartType::template Codim< codimension >::EntityType EntityType;
44 
47 
48  template <class DiscreteFunction, class Operation = DFCommunicationOperation::Copy >
50  {
51  typedef Operation OperationType;
53  };
54  };
55 
56 
57 
58  // FiniteVolumeSpace
59  // -----------------
60 
61  template< class FunctionSpace, class GridPart, int codim = 0, template< class > class Storage = SimpleStorage >
62  class FiniteVolumeSpace
63  : public GenericDiscontinuousGalerkinSpace< FiniteVolumeSpaceTraits< FunctionSpace, GridPart, codim, Storage > >
64  {
67 
68  public:
70  static const int polynomialOrder = 0;
71 
73  typedef typename BaseType::GridPartType GridPartType;
75  typedef typename BaseType::EntityType EntityType;
76 
78  typedef typename BaseType::BasisFunctionSetsType BasisFunctionSetsType;
81 
84 
85  explicit FiniteVolumeSpace ( GridPartType &gridPart,
86  const InterfaceType commInterface = InteriorBorder_All_Interface,
87  const CommunicationDirection commDirection = ForwardCommunication )
88  : BaseType( gridPart, BasisFunctionSetsType(), commInterface, commDirection )
89  {}
90 
93 
95  static InterpolationType interpolation ( const EntityType &entity )
96  {
97  return InterpolationType( entity );
98  }
99  };
100 
101 
102 
103  // DefaultLocalRestrictProlong for FiniteVolumeSpace
104  // -------------------------------------------------
105 
106  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
107  class DefaultLocalRestrictProlong< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
108  : public ConstantLocalRestrictProlong< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
109  {
110  public:
112  {}
113  };
114 
115 
116 
117  namespace Capabilities
118  {
119 
120  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
121  struct hasFixedPolynomialOrder< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
122  {
123  static const bool v = true;
124  };
125 
126  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
127  struct hasStaticPolynomialOrder< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
128  {
129  static const bool v = true;
130  static const int order = 0;
131  };
132 
133  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
134  struct isContinuous< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
135  {
136  static const bool v = false;
137  };
138 
139  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
140  struct isLocalized< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
141  {
142  static const bool v = false; // there is no method 'shapeFunctionSet( const EntityType & )'
143  };
144 
145  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
146  struct isParallel< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
147  {
149  };
150 
151  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
152  struct isAdaptive< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
153  {
154  static const bool v = true;
155  };
156 
157  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
158  struct threadSafe< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
159  {
160  static const bool v = false;
161  };
162 
163  template< class FunctionSpace, class GridPart, int codim, template< class > class Storage >
164  struct viewThreadSafe< FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > >
165  {
166  static const bool v = true;
167  };
168 
169  } // namespace Capabilities
170 
171  } // namespace Fem
172 
173 } // namespace Dune
174 
175 #endif // #ifndef DUNE_FEM_SPACE_FINITEVOLUME_SPACE_HH
Definition: finitevolume/basisfunctionset.hh:24
FiniteVolumeLocalInterpolation< GridPart, typename BasisFunctionSetType::RangeType > InterpolationType
local interpolation type
Definition: finitevolume/space.hh:83
GridPartType::template Codim< codimension >::EntityType EntityType
Definition: finitevolume/space.hh:41
static DFSpaceIdentifier type()
return type identifier of discrete function space
Definition: finitevolume/space.hh:92
DefaultCommunicationHandler< DiscreteFunction, Operation > Type
Definition: finitevolume/space.hh:52
Definition: space/finitevolume/declaration.hh:14
id for Finite Volume Space
Definition: discretefunctionspace.hh:92
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:64
A vector valued function space.
Definition: functionspace.hh:16
DefaultLocalRestrictProlong(const FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > &)
Definition: finitevolume/space.hh:111
GridPart GridPartType
Definition: finitevolume/space.hh:37
Default communication handler for discrete functions.
Definition: defaultcommhandler.hh:23
specialize with &#39;true&#39; if implementation supports parallelism (default=false)
Definition: gridpart/common/capabilities.hh:59
static const int localBlockSize
Definition: finitevolume/space.hh:46
BaseType::BasisFunctionSetsType BasisFunctionSetsType
basis function sets type
Definition: finitevolume/space.hh:78
static const int codimension
Definition: finitevolume/space.hh:39
DFSpaceIdentifier
enumerator for identification of spaces
Definition: discretefunctionspace.hh:88
BasisFunctionSetsType::BasisFunctionSetType BasisFunctionSetType
Definition: finitevolume/space.hh:43
CodimensionMapper< GridPartType, codimension > BlockMapperType
Definition: finitevolume/space.hh:45
FiniteVolumeBasisFunctionSets< EntityType, typename FunctionSpaceType::RangeType > BasisFunctionSetsType
Definition: finitevolume/space.hh:42
dimension of range vector space
Definition: functionspaceinterface.hh:47
mapper allocating one DoF per subentity of a given codimension
Definition: codimensionmapper.hh:28
BaseType::GridPartType GridPartType
type of underlying grid part
Definition: finitevolume/space.hh:73
Definition: common/localrestrictprolong.hh:24
specialize with true if space is always continuous
Definition: space/common/capabilities.hh:46
Definition: finitevolume/interpolation.hh:20
specialize with true if space can be used with AdaptiveDiscreteFunction
Definition: space/common/capabilities.hh:89
static InterpolationType interpolation(const EntityType &entity)
return local interpolation
Definition: finitevolume/space.hh:95
Definition: coordinate.hh:4
BaseType::BasisFunctionSetType BasisFunctionSetType
type of basis function set of this space
Definition: discontinuousgalerkin/generic.hh:53
specialize with true if space can be used in parallel
Definition: space/common/capabilities.hh:76
Definition: finitevolume/space.hh:49
FiniteVolumeSpace< FunctionSpace, GridPart, codim, Storage > DiscreteFunctionSpaceType
Definition: finitevolume/space.hh:34
generic implementation of a Discontinuous Galerkin space based on a fixed family of basis function se...
Definition: discontinuousgalerkin/generic.hh:33
Definition: finitevolume/space.hh:32
FunctionSpace FunctionSpaceType
Definition: finitevolume/space.hh:36
Operation OperationType
Definition: finitevolume/space.hh:51
FiniteVolumeSpace(GridPartType &gridPart, const InterfaceType commInterface=InteriorBorder_All_Interface, const CommunicationDirection commDirection=ForwardCommunication)
Definition: finitevolume/space.hh:85
Definition: finitevolume/basisfunctionsets.hh:18
specialize with true if polynomial order does not depend on the grid (part) entity ...
Definition: space/common/capabilities.hh:20
Definition: selectcaching.hh:20
specialize with true if the space implementation is thread safe
Definition: space/common/capabilities.hh:102
specialize with true if polynomial order fixed and compile time static
Definition: space/common/capabilities.hh:33
BaseType::BasisFunctionSetType BasisFunctionSetType
type of basis function set of this space
Definition: finitevolume/space.hh:80
BaseType::EntityType EntityType
type of entity of codimension 0
Definition: finitevolume/space.hh:75
Definition: common/localrestrictprolong.hh:16
BaseType::EntityType EntityType
type of entity of codimension 0
Definition: discontinuousgalerkin/generic.hh:46
specialize with true if the space implementation is thread safe, while it is not modified ...
Definition: space/common/capabilities.hh:116