3 #ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH 4 #define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH 8 #include <dune/common/function.hh> 22 template<
class Imp,
bool IsInterface>
25 static Imp*
clone(
const Imp& imp)
35 static Imp*
clone(
const Imp& imp)
47 static Imp*
clone(
const Imp& imp)
72 template<
class T ,
class Imp>
103 std::vector<typename Traits::RangeType>& out)
const 105 impl_.evaluateFunction(in,out);
111 std::vector<typename Traits::JacobianType>& out)
const 113 impl_.evaluateJacobian(in,out);
121 void partial(
const std::array<unsigned int,Traits::dimDomain>& order,
123 std::vector<typename Traits::RangeType>& out)
const 125 impl_.partial(order,in,out);
146 template<
class DomainType,
class RangeType,
class Imp>
150 template<
class FEImp>
168 virtual void interpolate (
const FunctionType& f, std::vector<CoefficientType>& out)
const 170 impl_.interpolate(f,out);
194 template<
class FEImp>
215 return impl_.localKey(i);
250 localBasisImp_(impl_->localBasis()),
251 localCoefficientsImp_(impl_->localCoefficients()),
252 localInterpolationImp_(impl_->localInterpolation())
258 localBasisImp_(impl_->localBasis()),
259 localCoefficientsImp_(impl_->localCoefficients()),
260 localInterpolationImp_(impl_->localInterpolation())
266 localBasisImp_(impl_->localBasis()),
267 localCoefficientsImp_(impl_->localCoefficients()),
268 localInterpolationImp_(impl_->localInterpolation())
279 return localBasisImp_;
285 return localCoefficientsImp_;
291 return localInterpolationImp_;
297 return impl_->size();
301 const GeometryType
type ()
const 303 return impl_->type();
R RangeType
range type
Definition: localbasis.hh:55
class for wrapping a local interpolation using the virtual interface
Definition: virtualwrappers.hh:147
virtual base class for a local interpolation
Definition: virtualinterface.hh:22
LocalFiniteElementVirtualImp(const Imp &imp)
taking a LocalFiniteElementVirtualInterface implementation
Definition: virtualwrappers.hh:248
virtual base class for local finite elements with functions
Definition: virtualinterface.hh:265
const Imp & impl_
Definition: virtualwrappers.hh:219
Dune::VirtualFunction< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > FunctionType
type of virtual function to interpolate
Definition: virtualinterface.hh:166
traits helper struct
Definition: localfiniteelementtraits.hh:10
unsigned int order() const
Polynomial order of the shape functions.
Definition: virtualwrappers.hh:96
LocalInterpolationVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface ...
Definition: virtualwrappers.hh:158
void partial(const std::array< unsigned int, Traits::dimDomain > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate partial derivatives of any order of all shape functions.
Definition: virtualwrappers.hh:121
class for wrapping a basis using the virtual interface
Definition: virtualwrappers.hh:73
typename LocalBasisTraits::RangeType ::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:169
unsigned int size() const
Number of shape functions in this finite element.
Definition: virtualwrappers.hh:295
Base::FunctionType FunctionType
Definition: virtualwrappers.hh:163
const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::LocalBasisType > localBasisImp_
Definition: virtualwrappers.hh:319
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:47
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition: virtualwrappers.hh:213
const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
Definition: virtualwrappers.hh:323
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:31
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
Base::CoefficientType CoefficientType
Definition: virtualwrappers.hh:165
D DomainType
domain type
Definition: localbasis.hh:43
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:25
const GeometryType type() const
Definition: virtualwrappers.hh:301
virtual base class for a local basis
Definition: virtualinterface.hh:68
static Imp * create()
Definition: virtualwrappers.hh:52
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all basis function at given position.
Definition: virtualwrappers.hh:102
Interface::Traits Traits
Definition: virtualwrappers.hh:245
std::size_t size() const
number of coefficients
Definition: virtualwrappers.hh:207
virtual LocalFiniteElementVirtualImp< Imp > * clone() const
clone this wrapper
Definition: virtualwrappers.hh:311
const Imp & impl_
Definition: virtualwrappers.hh:129
LocalCoefficientsVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface ...
Definition: virtualwrappers.hh:200
Definition: virtualwrappers.hh:23
const Imp * impl_
Definition: virtualwrappers.hh:317
const Traits::LocalBasisType & localBasis() const
Definition: virtualwrappers.hh:277
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15
virtual base class for local coefficients
Definition: virtualinterface.hh:238
LocalFiniteElementVirtualImp()
Default constructor. Assumes that the implementation class is default constructible as well...
Definition: virtualwrappers.hh:256
LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
Copy contructor needed for deep copy.
Definition: virtualwrappers.hh:264
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition: virtualwrappers.hh:168
const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
Definition: virtualwrappers.hh:320
class for wrapping local coefficients using the virtual interface
Definition: virtualwrappers.hh:191
const Traits::LocalCoefficientsType & localCoefficients() const
Definition: virtualwrappers.hh:283
Definition: virtualwrappers.hh:43
const Imp & impl_
Definition: virtualwrappers.hh:174
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate jacobian of all shape functions at given position.
Definition: virtualwrappers.hh:109
LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
Definition: virtualwrappers.hh:45
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition: virtualwrappers.hh:82
Describe position of one degree of freedom.
Definition: localkey.hh:20
const Traits::LocalInterpolationType & localInterpolation() const
Definition: virtualwrappers.hh:289
unsigned int size() const
Number of shape functions.
Definition: virtualwrappers.hh:90
~LocalFiniteElementVirtualImp()
Definition: virtualwrappers.hh:271
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
class for wrapping a finite element using the virtual interface
Definition: virtualwrappers.hh:19