dune-fem  2.4.1-rc
basisfunctionset/basisfunctionset.hh
Go to the documentation of this file.
1 #ifndef DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
2 #define DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
3 
4 #include <cstddef>
5 
6 #include <dune/geometry/referenceelements.hh>
7 #include <dune/geometry/type.hh>
8 
10 
11 namespace Dune
12 {
13 
14  namespace Fem
15  {
16 
17  // BasisFunctionSet
18  // ----------------
19 
30  template< class Entity, class Range >
32  {
33  public:
35  typedef Entity EntityType;
36 
38  typedef FunctionSpace< typename Entity::Geometry::ctype, typename Range::value_type,
39  Entity::Geometry::coorddimension, Range::dimension
41 
50 
52  typedef Dune::ReferenceElement< typename DomainType::value_type,
53  DomainType::dimension > ReferenceElementType;
54 
56  int order () const;
57 
59  std::size_t size () const;
60 
62  const ReferenceElementType &referenceElement () const;
63 
67  template< class Quadrature, class Vector, class DofVector >
68  void axpy ( const Quadrature &quad, const Vector &values, DofVector &dofs ) const;
69 
73  template< class Quadrature, class VectorA, class VectorB, class DofVector >
74  void axpy ( const Quadrature &quad, const VectorA &valuesA, const VectorB &valuesB, DofVector &dofs ) const;
75 
79  template< class Point, class DofVector >
80  void axpy ( const Point &x, const RangeType &valueFactor, DofVector &dofs ) const;
81 
85  template< class Point, class DofVector >
86  void axpy ( const Point &x, const JacobianRangeType &jacobianFactor, DofVector &dofs ) const;
87 
91  template< class Point, class DofVector >
92  void axpy ( const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor,
93  DofVector &dofs ) const;
94 
98  template< class Quadrature, class DofVector, class RangeArray >
99  void evaluateAll ( const Quadrature &quad, const DofVector &dofs, RangeArray &ranges ) const;
100 
102  template< class Point, class DofVector >
103  void evaluateAll ( const Point &x, const DofVector &dofs, RangeType &value ) const;
104 
106  template< class Point, class RangeArray >
107  void evaluateAll ( const Point &x, RangeArray &values ) const;
108 
110  template< class QuadratureType, class DofVector, class JacobianArray >
111  void jacobianAll ( const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians ) const;
112 
114  template< class Point, class DofVector >
115  void jacobianAll ( const Point &x, const DofVector &dofs, JacobianRangeType &jacobian ) const;
116 
118  template< class Point, class JacobianRangeArray >
119  void jacobianAll ( const Point &x, JacobianRangeArray &jacobians ) const;
120 
122  template< class Point, class DofVector >
123  void hessianAll ( const Point &x, const DofVector &dofs, HessianRangeType &hessian ) const;
124 
126  template< class Point, class HessianRangeArray >
127  void hessianAll ( const Point &x, HessianRangeArray &hessians ) const;
128 
130  const EntityType &entity () const;
131  };
132 
133  } // namespace Fem
134 
135 } // namespace Dune
136 
137 #endif // #ifndef DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
FunctionSpaceType::RangeType RangeType
range type
Definition: basisfunctionset/basisfunctionset.hh:45
A vector valued function space.
Definition: functionspace.hh:16
VectorSpaceTraits< DomainField, RangeField, dimD, dimR >::LinearMappingType JacobianRangeType
Intrinsic type used for the jacobian values has a Dune::FieldMatrix type interface.
Definition: functionspaceinterface.hh:74
FieldVector< FieldMatrix< RangeFieldType, dimDomain, dimDomain >, dimRange > HessianRangeType
Intrinsic type used for the hessian values has a Dune::FieldMatrix type interface.
Definition: functionspaceinterface.hh:78
void jacobianAll(const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians) const
evaluate the jacobian of all basis functions and store the result in the jacobians array ...
void axpy(const Quadrature &quad, const Vector &values, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
Dune::ReferenceElement< typename DomainType::value_type, DomainType::dimension > ReferenceElementType
type of reference element
Definition: basisfunctionset/basisfunctionset.hh:53
FunctionSpaceType::DomainType DomainType
range type
Definition: basisfunctionset/basisfunctionset.hh:43
FunctionSpaceType::JacobianRangeType JacobianRangeType
jacobian range type
Definition: basisfunctionset/basisfunctionset.hh:47
int order() const
return order of basis function set
Definition: coordinate.hh:4
void evaluateAll(const Quadrature &quad, const DofVector &dofs, RangeArray &ranges) const
evaluate all basis functions and store the result in the ranges array
VectorSpaceTraits< DomainField, RangeField, dimD, dimR >::DomainType DomainType
Type of domain vector (using type of domain field) has a Dune::FieldVector type interface.
Definition: functionspaceinterface.hh:66
FunctionSpace< typename Entity::Geometry::ctype, typename Range::value_type, Entity::Geometry::coorddimension, Range::dimension > FunctionSpaceType
function space type
Definition: basisfunctionset/basisfunctionset.hh:40
const ReferenceElementType & referenceElement() const
return reference element
void hessianAll(const Point &x, const DofVector &dofs, HessianRangeType &hessian) const
VectorSpaceTraits< DomainField, RangeField, dimD, dimR >::RangeType RangeType
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Definition: functionspaceinterface.hh:70
Entity EntityType
entity type
Definition: basisfunctionset/basisfunctionset.hh:35
const EntityType & entity() const
return entity
Definition: basisfunctionset/basisfunctionset.hh:31
FunctionSpaceType::HessianRangeType HessianRangeType
hessian range type
Definition: basisfunctionset/basisfunctionset.hh:49
actual interface class for quadratures
Definition: quadrature.hh:320
std::size_t size() const
return size of basis function set