dune-fem  2.4.1-rc
fourier/space.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_SPACE_FOURIER_SPACE_HH
2 #define DUNE_FEM_SPACE_FOURIER_SPACE_HH
3 
4 #include <cassert>
5 #include <limits>
6 
15 
20 
21 namespace Dune
22 {
23 
24  namespace Fem
25  {
26 
27  // FourierDiscreteFunctionSpaceTraits
28  // ----------------------------------
29 
30  template< class FunctionSpace, class GridPart, int order >
32  {
34 
36  typedef GridPart GridPartType;
37 
38  static const int codimension = 0;
39  typedef typename GridPartType::template Codim< codimension >::EntityType EntityType;
40 
46 
48 
50 
52 
53  template< class DiscreteFunction, class Operation = Dune::Fem::DFCommunicationOperation::Add >
55  {
57  typedef Operation OperationType;
58  };
59  };
60 
61 
62 
63  // FourierDiscreteFunctionSpace
64  // ----------------------------
65 
66  template< class FunctionSpace, class GridPart, int Order >
68  : public DiscreteFunctionSpaceDefault< FourierDiscreteFunctionSpaceTraits< FunctionSpace, GridPart, Order > >
69  {
72 
73  public:
74  typedef typename BaseType::Traits Traits;
75 
76  static const int polynomialOrder = Order+1;
77 
80  typedef typename BaseType::EntityType EntityType;
82 
83  typedef typename Traits::FunctionSetType FunctionSetType;
84 
85  typedef typename Traits::ScalarBasisFunctionSetType ScalarBasisFunctionSetType;
87 
88  typedef typename BaseType::BlockMapperType BlockMapperType;
89 
90  protected:
91  static const InterfaceType defaultInterface = InteriorBorder_All_Interface;
92  static const CommunicationDirection defaultDirection = ForwardCommunication;
93 
94  public:
95  using BaseType::order;
96 
97  explicit FourierDiscreteFunctionSpace ( GridPartType &gridPart,
98  int order = std::numeric_limits< int >::max(),
99  const InterfaceType commInterface = defaultInterface,
100  const CommunicationDirection commDirection = defaultDirection )
101  : BaseType( gridPart, commInterface, commDirection ),
102  functionSet_( order )
103  {}
104 
107 
109  BasisFunctionSetType basisFunctionSet ( const EntityType &entity ) const
110  {
111  typedef typename Traits::LocalFunctionSetType LocalFunctionSetType;
112  typedef typename Traits::ScalarBasisFunctionSetType ScalarBasisFunctionSetType;
113  return BasisFunctionSetType( ScalarBasisFunctionSetType( LocalFunctionSetType( entity, &functionSet_ ) ) );
114  }
115 
117  bool continuous () const { return true; }
118 
120  bool continuous ( const IntersectionType &intersection ) const { return true; }
121 
123  int order () const { return functionSet_.order(); }
124 
126  BlockMapperType &blockMapper () const { return blockMapper_; }
127 
128  private:
129  mutable BlockMapperType blockMapper_;
130  FunctionSetType functionSet_;
131  };
132 
133  } // namespace Fem
134 
135 } // namespace Dune
136 
137 #endif // #ifndef DUNE_FEM_SPACE_FOURIER_SPACE_HH
Definition: fourier/dofmapper.hh:17
Definition: space/fourier/declaration.hh:14
BaseType::Traits Traits
Definition: fourier/space.hh:74
BaseType::IntersectionType IntersectionType
Definition: fourier/space.hh:81
FunctionSpaceTraits Traits
Definition: discretefunctionspace.hh:599
BaseType::GridPartType GridPartType
Definition: fourier/space.hh:79
LocalFunctionSetAdapter< EntityType, FunctionSetProxyType > LocalFunctionSetType
Definition: fourier/space.hh:44
A vector valued function space.
Definition: functionspace.hh:16
Default communication handler for discrete functions.
Definition: defaultcommhandler.hh:23
Traits::ScalarBasisFunctionSetType ScalarBasisFunctionSetType
Definition: fourier/space.hh:85
static constexpr T max(T a)
Definition: utility.hh:65
BasisFunctionSetType basisFunctionSet(const EntityType &entity) const
get basis function set for given entity
Definition: fourier/space.hh:109
GridPartType::template Codim< codimension >::EntityType EntityType
Definition: fourier/space.hh:39
DFSpaceIdentifier
enumerator for identification of spaces
Definition: discretefunctionspace.hh:88
bool continuous() const
returns true if the space contains only globally continuous functions
Definition: fourier/space.hh:117
Definition: fourier/space.hh:31
BaseType::BlockMapperType BlockMapperType
Definition: fourier/space.hh:88
static const int localBlockSize
Definition: fourier/space.hh:49
FunctionSetProxy< FunctionSetType > FunctionSetProxyType
Definition: fourier/space.hh:43
FourierDiscreteFunctionSpace(GridPartType &gridPart, int order=std::numeric_limits< int >::max(), const InterfaceType commInterface=defaultInterface, const CommunicationDirection commDirection=defaultDirection)
Definition: fourier/space.hh:97
dimension of range vector space
Definition: functionspaceinterface.hh:47
Proxy for a FunctionSet.
Definition: function/common/functionset.hh:118
BaseType::FunctionSpaceType FunctionSpaceType
Definition: fourier/space.hh:78
bool continuous(const IntersectionType &intersection) const
returns true if the space contains only globally continuous functions
Definition: fourier/space.hh:120
convert (global) function set to local function set
Definition: localfunctionsetadapter.hh:26
Definition: space/fourier/functionset.hh:38
SimpleBasisFunctionSet< LocalFunctionSetType > ScalarBasisFunctionSetType
Definition: fourier/space.hh:45
Dune::Fem::DefaultCommunicationHandler< DiscreteFunction, Operation > Type
Definition: fourier/space.hh:56
FunctionSpace FunctionSpaceType
Definition: fourier/space.hh:35
int order() const
get global order of space
Definition: fourier/space.hh:123
GridPart GridPartType
Definition: fourier/space.hh:36
Definition: coordinate.hh:4
Definition: space/fourier/functionset.hh:27
static const int codimension
Definition: fourier/space.hh:38
BaseType::BasisFunctionSetType BasisFunctionSetType
Definition: fourier/space.hh:86
FunctionSpaceType::ScalarFunctionSpaceType ScalarFunctionSpaceType
Definition: fourier/space.hh:41
BaseType::GridPartType GridPartType
Definition: discretefunctionspace.hh:609
DFSpaceIdentifier type() const
return type identifier of discrete function space
Definition: fourier/space.hh:106
FourierDiscreteFunctionSpace< FunctionSpace, GridPart, order > DiscreteFunctionSpaceType
Definition: fourier/space.hh:33
BaseType::EntityType EntityType
Definition: fourier/space.hh:80
VectorialBasisFunctionSet< ScalarBasisFunctionSetType, typename FunctionSpaceType::RangeType > BasisFunctionSetType
Definition: fourier/space.hh:47
BlockMapperType & blockMapper() const
get a reference to the block mapper
Definition: fourier/space.hh:126
This is the class with default implementations for discrete function. The methods not marked with hav...
Definition: discretefunctionspace.hh:595
Builds a vectorial basis function set from given scalar basis function set.
Definition: basisfunctionset/vectorial.hh:250
GridPartType::IntersectionType IntersectionType
type of the intersections
Definition: discretefunctionspace.hh:202
FourierFunctionSet< ScalarFunctionSpaceType, order > FunctionSetType
Definition: fourier/space.hh:42
FourierDofMapper< GridPartType, order > BlockMapperType
Definition: fourier/space.hh:51
Please doc me.
Definition: basisfunctionset/simple.hh:28
Traits::FunctionSetType FunctionSetType
Definition: fourier/space.hh:83
id for Fourier space
Definition: discretefunctionspace.hh:93
Operation OperationType
Definition: fourier/space.hh:57