DUNE-FEM (unstable)

basisfunctionset.hh
1#ifndef DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
2#define DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
3
4#include <cstddef>
5#include <type_traits>
6
7#include <dune/geometry/referenceelements.hh>
9
10#include <dune/fem/space/common/functionspace.hh>
11
12namespace Dune
13{
14
15 namespace Fem
16 {
17
18 // BasisFunctionSet
19 // ----------------
20
30 template< class Entity, class Range >
32 {
33 public:
36
38 typedef FunctionSpace< typename Entity::Geometry::ctype, typename Range::value_type,
39 Entity::Geometry::coorddimension, Range::dimension
41
50
52 typedef std::decay_t< decltype( Dune::ReferenceElements< typename Entity::Geometry::ctype,
53 Entity::Geometry::coorddimension >::
54 general( std::declval< const Dune::GeometryType & >() ) ) > ReferenceElementType;
55
57 int order () const;
58
60 std::size_t size () const;
61
64
68 template< class Quadrature, class Vector, class DofVector >
69 void axpy ( const Quadrature &quad, const Vector &values, DofVector &dofs ) const;
70
74 template< class Quadrature, class VectorA, class VectorB, class DofVector >
75 void axpy ( const Quadrature &quad, const VectorA &valuesA, const VectorB &valuesB, DofVector &dofs ) const;
76
80 template< class Point, class DofVector >
81 void axpy ( const Point &x, const RangeType &valueFactor, DofVector &dofs ) const;
82
86 template< class Point, class DofVector >
87 void axpy ( const Point &x, const JacobianRangeType &jacobianFactor, DofVector &dofs ) const;
88
92 template< class Point, class DofVector >
93 void axpy ( const Point &x, const RangeType &valueFactor, const JacobianRangeType &jacobianFactor,
94 DofVector &dofs ) const;
95
99 template< class Quadrature, class DofVector, class RangeArray >
100 void evaluateAll ( const Quadrature &quad, const DofVector &dofs, RangeArray &ranges ) const;
101
103 template< class Point, class DofVector >
104 void evaluateAll ( const Point &x, const DofVector &dofs, RangeType &value ) const;
105
107 template< class Point, class RangeArray >
108 void evaluateAll ( const Point &x, RangeArray &values ) const;
109
111 template< class QuadratureType, class DofVector, class JacobianArray >
112 void jacobianAll ( const QuadratureType &quad, const DofVector &dofs, JacobianArray &jacobians ) const;
113
115 template< class Point, class DofVector >
116 void jacobianAll ( const Point &x, const DofVector &dofs, JacobianRangeType &jacobian ) const;
117
119 template< class Point, class JacobianRangeArray >
120 void jacobianAll ( const Point &x, JacobianRangeArray &jacobians ) const;
121
123 template< class Point, class DofVector >
124 void hessianAll ( const Point &x, const DofVector &dofs, HessianRangeType &hessian ) const;
125
127 template< class Point, class HessianRangeArray >
128 void hessianAll ( const Point &x, HessianRangeArray &hessians ) const;
129
131 const EntityType &entity () const;
132
134 bool valid () const;
135 };
136
137 } // namespace Fem
138
139} // namespace Dune
140
141#endif // #ifndef DUNE_FEM_BASISFUNCTIONSET_BASISFUNCTIONSET_HH
Wrapper class for entities.
Definition: entity.hh:66
Interface class for basis function sets.
Definition: basisfunctionset.hh:32
const EntityType & entity() const
return entity
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.hh:35
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.hh:40
int order() const
return order of basis function set
bool valid() const
return true if entity was set
const ReferenceElementType & referenceElement() const
return reference element
FunctionSpaceType::DomainType DomainType
range type
Definition: basisfunctionset.hh:43
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
std::decay_t< decltype(Dune::ReferenceElements< typename Entity::Geometry::ctype, Entity::Geometry::coorddimension >::general(std::declval< const Dune::GeometryType & >())) > ReferenceElementType
type of reference element
Definition: basisfunctionset.hh:54
FunctionSpaceType::JacobianRangeType JacobianRangeType
jacobian range type
Definition: basisfunctionset.hh:47
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.hh:49
FunctionSpaceType::RangeType RangeType
range type
Definition: basisfunctionset.hh:45
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
Definition: explicitfieldvector.hh:75
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
A vector valued function space.
Definition: functionspace.hh:60
actual interface class for quadratures
Definition: quadrature.hh:401
Dune namespace.
Definition: alignedallocator.hh:13
Class providing access to the singletons of the reference elements.
Definition: referenceelements.hh:128
A unique label for each type of element that can occur in a grid.
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Jul 27, 22:29, 2024)