1 #ifndef DUNE_FEM_SHAPEFUNCTIONSET_LOCALFUNCTIONS_HH 2 #define DUNE_FEM_SHAPEFUNCTIONSET_LOCALFUNCTIONS_HH 9 #include <dune/common/exceptions.hh> 24 template<
class LocalBasis >
28 typedef typename LocalBasis::Traits Traits;
37 static const int dimRange = RangeType::dimension;
47 template<
class LocalBasis >
63 : localBasis_( localBasis )
65 values_.reserve( size() );
66 jacobians_.reserve( size() );
69 int order ()
const {
return localBasis_.order(); }
71 std::size_t
size ()
const {
return localBasis_.size(); }
73 template<
class Po
int,
class Functor >
76 localBasis_.evaluateFunction(
coordinate( x ), values_ );
77 assert( values_.size() == size() );
78 callFunctor( values_, f );
81 template<
class Po
int,
class Functor >
84 localBasis_.evaluateJacobian(
coordinate( x ), jacobians_ );
85 assert( jacobians_.size() == size() );
86 callFunctor( jacobians_, f );
89 template<
class Po
int,
class Functor >
92 DUNE_THROW( NotImplemented,
"Method hessianEach not implemented" );
96 template<
class T,
class Functor >
97 static void callFunctor (
const std::vector< T > &v, Functor f )
99 typedef typename std::vector< T >::const_iterator Iterator;
101 for( Iterator it = v.begin(); it != v.end(); ++it )
105 LocalBasis localBasis_;
106 mutable std::vector< RangeType > values_;
107 mutable std::vector< JacobianRangeType > jacobians_;
114 #endif // #ifndef DUNE_FEM_SHAPEFUNCTIONSET_LOCALFUNCTIONS_HH FunctionSpaceType::HessianRangeType HessianRangeType
Definition: localfunctions.hh:60
static const int dimDomain
Definition: localfunctions.hh:33
A vector valued function space.
Definition: functionspace.hh:16
std::size_t size() const
Definition: localfunctions.hh:71
LocalFunctionsShapeFunctionSet(const LocalBasis &localBasis)
Definition: localfunctions.hh:62
FunctionSpaceType::DomainType DomainType
Definition: localfunctions.hh:57
VectorSpaceTraits< DomainField, RangeField, dimD, dimR >::LinearMappingType JacobianRangeType
Intrinsic type used for the jacobian values has a Dune::FieldMatrix type interface.
Definition: functionspaceinterface.hh:74
static const int dimRange
Definition: localfunctions.hh:37
FieldVector< FieldMatrix< RangeFieldType, dimDomain, dimDomain >, dimRange > HessianRangeType
Intrinsic type used for the hessian values has a Dune::FieldMatrix type interface.
Definition: functionspaceinterface.hh:78
FunctionSpaceType::JacobianRangeType JacobianRangeType
Definition: localfunctions.hh:59
int order() const
Definition: localfunctions.hh:69
void hessianEach(const Point &x, Functor f) const
Definition: localfunctions.hh:90
void jacobianEach(const Point &x, Functor f) const
Definition: localfunctions.hh:82
FunctionSpaceType::RangeType RangeType
Definition: localfunctions.hh:58
DomainType::value_type DomainFieldType
Definition: localfunctions.hh:32
Traits::DomainType DomainType
Definition: localfunctions.hh:31
Definition: coordinate.hh:4
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
Traits::RangeType RangeType
Definition: localfunctions.hh:35
Definition: localfunctions.hh:25
RangeType::value_type RangeFieldType
Definition: localfunctions.hh:36
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
FunctionSpace< DomainFieldType, RangeFieldType, dimDomain, dimRange > FunctionSpaceType
Definition: localfunctions.hh:39
Definition: localfunctions.hh:48
Traits::FunctionSpaceType FunctionSpaceType
Definition: localfunctions.hh:56
static const Point & coordinate(const Point &x)
Definition: coordinate.hh:11
void evaluateEach(const Point &x, Functor f) const
Definition: localfunctions.hh:74