5#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
6#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
13#include <dune/geometry/type.hh>
23 template<
class DomainType,
class RangeType>
24 class LocalInterpolationVirtualInterface;
48 virtual unsigned int size ()
const = 0;
51 virtual unsigned int order ()
const = 0;
59 std::vector<typename Traits::RangeType>& out)
const = 0;
70 std::vector<typename Traits::JacobianType>& out)
const = 0;
77 virtual void partial(
const std::array<unsigned int,Traits::dimDomain>&
order,
78 const typename Traits::DomainType& in,
79 std::vector<typename Traits::RangeType>& out)
const = 0;
100 template<
class DomainType,
class RangeType>
130 template<
class DomainType,
class RangeType>
162 std::enable_if_t<not std::is_base_of<FunctionType, F>::value,
int> = 0>
163 void interpolate (
const F& f, std::vector<CoefficientType>& out)
const
174 template<
class F,
class C>
177 std::vector<CoefficientType> outDummy;
180 out.resize(outDummy.size());
181 for(
typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
182 out[i] = outDummy[i];
204 virtual std::size_t
size ()
const = 0;
226 using LocalBasisTraits = T;
247 virtual unsigned int size ()
const = 0;
250 virtual const GeometryType
type ()
const = 0;
Definition bdfmcube.hh:18
D DomainType
domain type
Definition common/localbasis.hh:43
R RangeType
range type
Definition common/localbasis.hh:52
traits helper struct
Definition localfiniteelementtraits.hh:13
LB LocalBasisType
Definition localfiniteelementtraits.hh:16
LC LocalCoefficientsType
Definition localfiniteelementtraits.hh:20
LI LocalInterpolationType
Definition localfiniteelementtraits.hh:24
Describe position of one degree of freedom.
Definition localkey.hh:24
virtual base class for a local interpolation
Definition virtualinterface.hh:133
virtual ~LocalInterpolationVirtualInterface()
Definition virtualinterface.hh:143
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition virtualinterface.hh:137
void interpolate(const F &f, std::vector< C > &out) const
determine coefficients interpolating a given function
Definition virtualinterface.hh:175
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition virtualinterface.hh:140
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
void interpolate(const F &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition virtualinterface.hh:163
virtual base class for a local basis
Definition virtualinterface.hh:40
virtual unsigned int order() const =0
Polynomial order of the shape functions.
virtual void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const =0
Evaluate jacobian of all shape functions at given position.
virtual unsigned int size() const =0
Number of shape functions.
T Traits
Definition virtualinterface.hh:42
virtual void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
Evaluate all basis function at given position.
virtual ~LocalBasisVirtualInterface()
Definition virtualinterface.hh:45
virtual void partial(const std::array< unsigned int, Traits::dimDomain > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
Evaluate partial derivatives of any order of all shape functions.
virtual base class for a local interpolation
Definition virtualinterface.hh:102
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition virtualinterface.hh:106
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition virtualinterface.hh:109
virtual ~LocalInterpolationVirtualInterfaceBase()
Definition virtualinterface.hh:111
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
virtual base class for local coefficients
Definition virtualinterface.hh:198
virtual ~LocalCoefficientsVirtualInterface()
Definition virtualinterface.hh:201
virtual std::size_t size() const =0
number of coefficients
virtual const LocalKey & localKey(std::size_t i) const =0
get i'th index
virtual base class for local finite elements with functions
Definition virtualinterface.hh:225
virtual LocalFiniteElementVirtualInterface< T > * clone() const =0
virtual const Traits::LocalInterpolationType & localInterpolation() const =0
virtual unsigned int size() const =0
virtual const Traits::LocalBasisType & localBasis() const =0
virtual const GeometryType type() const =0
LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >, LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits
Definition virtualinterface.hh:233
virtual ~LocalFiniteElementVirtualInterface()
Definition virtualinterface.hh:235
virtual const Traits::LocalCoefficientsType & localCoefficients() const =0