1#ifndef DUNE_FEM_SHAPEFUNCTIONSET_SIMPLE_HH
2#define DUNE_FEM_SHAPEFUNCTIONSET_SIMPLE_HH
19 template<
class FunctionSpace >
48 template<
class ShapeFunction >
59 typedef typename FunctionSpaceType::DomainType
DomainType;
60 typedef typename FunctionSpaceType::RangeType
RangeType;
68 template<
class Factory >
82 template<
class Po
int,
class Functor >
85 template<
class Po
int,
class Functor >
88 template<
class Po
int,
class Functor >
101 template<
class ShapeFunction >
102 template<
class Factory >
106 const std::size_t numShapeFunctions = factory.numShapeFunctions();
107 shapeFunctions_.resize( numShapeFunctions );
108 for( std::size_t i = 0; i < numShapeFunctions; ++i )
109 shapeFunctions_[ i ] = factory.createShapeFunction( i );
110 order_ = factory.
order();
113 template<
class ShapeFunction >
120 template<
class ShapeFunction >
127 for( std::size_t i = 0; i < size(); ++i )
128 delete shapeFunctions_[ i ];
130 const std::size_t numShapeFunctions = other.
size();
131 shapeFunctions_.resize( numShapeFunctions );
132 for( std::size_t i = 0; i < numShapeFunctions; ++i )
140 template<
class ShapeFunction >
143 for( std::size_t i = 0; i < size(); ++i )
144 delete shapeFunctions_[ i ];
148 template<
class ShapeFunction >
149 template<
class Po
int,
class Functor >
153 for( std::size_t i = 0; i < size(); ++i )
156 shapeFunctions_[ i ]->evaluate(
coordinate( x ), value );
162 template<
class ShapeFunction >
163 template<
class Po
int,
class Functor >
167 for( std::size_t i = 0; i < size(); ++i )
170 shapeFunctions_[ i ]->jacobian(
coordinate( x ), jacobian );
171 functor( i, jacobian );
176 template<
class ShapeFunction >
177 template<
class Po
int,
class Functor >
181 for( std::size_t i = 0; i < size(); ++i )
184 shapeFunctions_[ i ]->hessian(
coordinate( x ), hessian );
185 functor( i, hessian );
Definition: bindguard.hh:11
static const Point & coordinate(const Point &x)
Definition: coordinate.hh:14
Definition: explicitfieldvector.hh:75
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
Definition: space/shapefunctionset/simple.hh:21
virtual void evaluate(const DomainType &x, RangeType &value) const =0
FunctionSpaceType::DomainType DomainType
Definition: space/shapefunctionset/simple.hh:27
FunctionSpaceType::JacobianRangeType JacobianRangeType
Definition: space/shapefunctionset/simple.hh:29
FunctionSpace FunctionSpaceType
Definition: space/shapefunctionset/simple.hh:25
FunctionSpaceType::HessianRangeType HessianRangeType
Definition: space/shapefunctionset/simple.hh:30
FunctionSpaceType::RangeType RangeType
Definition: space/shapefunctionset/simple.hh:28
virtual void jacobian(const DomainType &x, JacobianRangeType &jacobian) const =0
virtual void hessian(const DomainType &x, HessianRangeType &hessian) const =0
const ThisType * clone() const =0
virtual ~AbstractShapeFunction()
Definition: space/shapefunctionset/simple.hh:32
Definition: space/shapefunctionset/simple.hh:50
std::size_t size() const
Definition: space/shapefunctionset/simple.hh:80
~SimpleShapeFunctionSet()
Definition: space/shapefunctionset/simple.hh:141
SimpleShapeFunctionSet(const ThisType &other)
Definition: space/shapefunctionset/simple.hh:115
SimpleShapeFunctionSet(const Factory &factory)
Definition: space/shapefunctionset/simple.hh:104
ThisType ScalarFunctionSpaceType
Definition: space/shapefunctionset/simple.hh:56
FunctionSpaceType::JacobianRangeType JacobianRangeType
Definition: space/shapefunctionset/simple.hh:61
ShapeFunction::FunctionSpaceType FunctionSpaceType
Definition: space/shapefunctionset/simple.hh:58
void evaluateEach(const Point &x, Functor functor) const
Definition: space/shapefunctionset/simple.hh:151
std::vector< const ShapeFunctionType * > shapeFunctions_
Definition: space/shapefunctionset/simple.hh:92
FunctionSpaceType::HessianRangeType HessianRangeType
Definition: space/shapefunctionset/simple.hh:62
void hessianEach(const Point &x, Functor functor) const
Definition: space/shapefunctionset/simple.hh:179
int order() const
Definition: space/shapefunctionset/simple.hh:77
void jacobianEach(const Point &x, Functor functor) const
Definition: space/shapefunctionset/simple.hh:165
int order_
Definition: space/shapefunctionset/simple.hh:93
FunctionSpaceType::RangeType RangeType
Definition: space/shapefunctionset/simple.hh:60
static const int lagrangePointId
Definition: space/shapefunctionset/simple.hh:66
FunctionSpaceType::DomainType DomainType
Definition: space/shapefunctionset/simple.hh:59
ShapeFunction ShapeFunctionType
Definition: space/shapefunctionset/simple.hh:54
const ThisType & operator=(const ThisType &other)
Definition: space/shapefunctionset/simple.hh:122