3#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
4#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALWRAPPERS_HH
17 class LocalFiniteElementVirtualImp;
20 template<
class Imp,
bool IsInterface>
23 static Imp*
clone(
const Imp& imp)
31 struct LocalFiniteElementCloneFactoryHelper<Imp, true>
33 static Imp*
clone(
const Imp& imp)
45 static Imp*
clone(
const Imp& imp)
70 template<
class T ,
class Imp>
101 std::vector<typename Traits::RangeType>& out)
const
103 impl_.evaluateFunction(in,out);
108 const typename Traits::DomainType& in,
109 std::vector<typename Traits::JacobianType>& out)
const
111 impl_.evaluateJacobian(in,out);
120 const typename Traits::DomainType& in,
121 std::vector<typename Traits::RangeType>& out)
const
144 template<
class DomainType,
class RangeType,
class Imp>
148 template<
class FEImp>
168 impl_.interpolate(f,out);
192 template<
class FEImp>
213 return impl_.localKey(i);
239 using LocalBasisTraits =
typename Imp::Traits::LocalBasisType::Traits;
295 return impl_->size();
299 const GeometryType
type ()
const
301 return impl_->type();
Definition: bdfmcube.hh:16
D DomainType
domain type
Definition: common/localbasis.hh:43
R RangeType
range type
Definition: common/localbasis.hh:55
traits helper struct
Definition: localfiniteelementtraits.hh:11
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
Describe position of one degree of freedom.
Definition: localkey.hh:21
virtual base class for a local interpolation
Definition: virtualinterface.hh:188
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition: virtualinterface.hh:192
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:195
virtual base class for a local basis
Definition: virtualinterface.hh:95
virtual base class for local coefficients
Definition: virtualinterface.hh:257
virtual base class for local finite elements with functions
Definition: virtualinterface.hh:284
class for wrapping a finite element using the virtual interface
Definition: virtualwrappers.hh:238
const Traits::LocalBasisType & localBasis() const
Definition: virtualwrappers.hh:275
virtual LocalFiniteElementVirtualImp< Imp > * clone() const
clone this wrapper
Definition: virtualwrappers.hh:309
const LocalInterpolationVirtualImp< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
Definition: virtualwrappers.hh:321
LocalFiniteElementVirtualImp(const Imp &imp)
taking a LocalFiniteElementVirtualInterface implementation
Definition: virtualwrappers.hh:246
Interface::Traits Traits
Definition: virtualwrappers.hh:243
LocalFiniteElementVirtualImp()
Default constructor. Assumes that the implementation class is default constructible as well.
Definition: virtualwrappers.hh:254
LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
Copy contructor needed for deep copy.
Definition: virtualwrappers.hh:262
~LocalFiniteElementVirtualImp()
Definition: virtualwrappers.hh:269
unsigned int size() const
Number of shape functions in this finite element.
Definition: virtualwrappers.hh:293
const GeometryType type() const
Definition: virtualwrappers.hh:299
const Imp * impl_
Definition: virtualwrappers.hh:315
const Traits::LocalCoefficientsType & localCoefficients() const
Definition: virtualwrappers.hh:281
const LocalBasisVirtualImp< LocalBasisTraits, typename Imp::Traits::LocalBasisType > localBasisImp_
Definition: virtualwrappers.hh:317
const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
Definition: virtualwrappers.hh:318
const Traits::LocalInterpolationType & localInterpolation() const
Definition: virtualwrappers.hh:287
Definition: virtualwrappers.hh:22
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:23
Definition: virtualwrappers.hh:42
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:45
static Imp * create()
Definition: virtualwrappers.hh:50
LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
Definition: virtualwrappers.hh:43
class for wrapping a basis using the virtual interface
Definition: virtualwrappers.hh:73
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:119
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all basis function at given position.
Definition: virtualwrappers.hh:100
const Imp & impl_
Definition: virtualwrappers.hh:127
unsigned int size() const
Number of shape functions.
Definition: virtualwrappers.hh:88
T Traits
Definition: virtualwrappers.hh:85
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:107
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition: virtualwrappers.hh:80
unsigned int order() const
Polynomial order of the shape functions.
Definition: virtualwrappers.hh:94
class for wrapping a local interpolation using the virtual interface
Definition: virtualwrappers.hh:147
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition: virtualwrappers.hh:166
const Imp & impl_
Definition: virtualwrappers.hh:172
Base::FunctionType FunctionType
Definition: virtualwrappers.hh:161
LocalInterpolationVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface
Definition: virtualwrappers.hh:156
Base::CoefficientType CoefficientType
Definition: virtualwrappers.hh:163
class for wrapping local coefficients using the virtual interface
Definition: virtualwrappers.hh:191
LocalCoefficientsVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface
Definition: virtualwrappers.hh:198
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition: virtualwrappers.hh:211
std::size_t size() const
number of coefficients
Definition: virtualwrappers.hh:205
const Imp & impl_
Definition: virtualwrappers.hh:217