dune-fem  2.8-git
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 
29  template< class Entity, class Range >
31  {
32  public:
34  typedef Entity EntityType;
35 
37  typedef FunctionSpace< typename Entity::Geometry::ctype, typename Range::value_type,
38  Entity::Geometry::coorddimension, Range::dimension
40 
49 
51  typedef Dune::ReferenceElement< typename DomainType::value_type,
52  DomainType::dimension > ReferenceElementType;
53 
55  int order () const;
56 
58  std::size_t size () const;
59 
62 
66  template< class Quadrature, class Vector, class DofVector >
67  void axpy ( const Quadrature &quad, const Vector &values, DofVector &dofs ) const;
68 
72  template< class Quadrature, class VectorA, class VectorB, class DofVector >
73  void axpy ( const Quadrature &quad, const VectorA &valuesA, const VectorB &valuesB, DofVector &dofs ) const;
74 
78  template< class Point, class DofVector >
79  void axpy ( const Point &x, const RangeType &valueFactor, DofVector &dofs ) const;
80 
84  template< class Point, class DofVector >
85  void axpy ( const Point &x, const JacobianRangeType &jacobianFactor, DofVector &dofs ) const;
86 
90  template< class Point, class DofVector >
91  void axpy ( const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor,
92  DofVector &dofs ) const;
93 
97  template< class Quadrature, class DofVector, class RangeArray >
98  void evaluateAll ( const Quadrature &quad, const DofVector &dofs, RangeArray &ranges ) const;
99 
101  template< class Point, class DofVector >
102  void evaluateAll ( const Point &x, const DofVector &dofs, RangeType &value ) const;
103 
105  template< class Point, class RangeArray >
106  void evaluateAll ( const Point &x, RangeArray &values ) const;
107 
109  template< class QuadratureType, class DofVector, class JacobianArray >
110  void jacobianAll ( const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians ) const;
111 
113  template< class Point, class DofVector >
114  void jacobianAll ( const Point &x, const DofVector &dofs, JacobianRangeType &jacobian ) const;
115 
117  template< class Point, class JacobianRangeArray >
118  void jacobianAll ( const Point &x, JacobianRangeArray &jacobians ) const;
119 
121  template< class Point, class DofVector >
122  void hessianAll ( const Point &x, const DofVector &dofs, HessianRangeType &hessian ) const;
123 
125  template< class Point, class HessianRangeArray >
126  void hessianAll ( const Point &x, HessianRangeArray &hessians ) const;
127 
129  const EntityType &entity () const;
130 
132  bool valid () const;
133  };
134 
135  } // namespace Fem
136 
137 } // namespace Dune
138 
139 #endif // #ifndef DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
Definition: bindguard.hh:11
IteratorRange< typename DF::DofIteratorType > dofs(DF &df)
Iterates over all DOFs.
Definition: rangegenerators.hh:76
Definition: explicitfieldvector.hh:75
actual interface class for quadratures
Definition: quadrature.hh:405
Interface class for basis function sets.
Definition: basisfunctionset/basisfunctionset.hh:31
void axpy(const Quadrature &quad, const Vector &values, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
std::size_t size() const
return size of basis function set
Entity EntityType
entity type
Definition: basisfunctionset/basisfunctionset.hh:34
void axpy(const Point &x, const JacobianRangeType &jacobianFactor, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
FunctionSpace< typename Entity::Geometry::ctype, typename Range::value_type, Entity::Geometry::coorddimension, Range::dimension > FunctionSpaceType
function space type
Definition: basisfunctionset/basisfunctionset.hh:39
const EntityType & entity() const
return entity
int order() const
return order of basis function set
bool valid() const
return true if entity was set
FunctionSpaceType::DomainType DomainType
range type
Definition: basisfunctionset/basisfunctionset.hh:42
void axpy(const Quadrature &quad, const VectorA &valuesA, const VectorB &valuesB, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
void hessianAll(const Point &x, HessianRangeArray &hessians) const
void hessianAll(const Point &x, const DofVector &dofs, HessianRangeType &hessian) const
void jacobianAll(const Point &x, const DofVector &dofs, JacobianRangeType &jacobian) const
void axpy(const Point &x, const RangeType &valueFactor, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
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
Dune::ReferenceElement< typename DomainType::value_type, DomainType::dimension > ReferenceElementType
type of reference element
Definition: basisfunctionset/basisfunctionset.hh:52
FunctionSpaceType::JacobianRangeType JacobianRangeType
jacobian range type
Definition: basisfunctionset/basisfunctionset.hh:46
void jacobianAll(const Point &x, JacobianRangeArray &jacobians) const
void axpy(const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor, DofVector &dofs) const
evaluate all basis function and multiply with given values and add to dofs
void evaluateAll(const Point &x, const DofVector &dofs, RangeType &value) const
FunctionSpaceType::HessianRangeType HessianRangeType
hessian range type
Definition: basisfunctionset/basisfunctionset.hh:48
FunctionSpaceType::RangeType RangeType
range type
Definition: basisfunctionset/basisfunctionset.hh:44
void evaluateAll(const Quadrature &quad, const DofVector &dofs, RangeArray &ranges) const
evaluate all basis functions and store the result in the ranges array
void evaluateAll(const Point &x, RangeArray &values) const
const ReferenceElementType & referenceElement() const
return reference element
A vector valued function space.
Definition: functionspace.hh:60
FunctionSpaceTraits::RangeType RangeType
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Definition: functionspaceinterface.hh:71
FunctionSpaceTraits::LinearMappingType JacobianRangeType
Intrinsic type used for the jacobian values has a Dune::FieldMatrix type interface.
Definition: functionspaceinterface.hh:75
FunctionSpaceTraits::DomainType DomainType
Type of domain vector (using type of domain field) has a Dune::FieldVector type interface.
Definition: functionspaceinterface.hh:67