3#ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
4#define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
11#include <dune/geometry/type.hh>
22 template<
class DomainType,
class RangeType>
23 class LocalInterpolationVirtualInterface;
43 [[deprecated(
"Dune::LocalFiniteElementFunctionBase is deprecated after Dune 2.7. You can now pass functions providing operator() to interpolate.")]]
46 typedef typename FE::Traits::LocalBasisType::Traits::DomainType Domain;
47 typedef typename FE::Traits::LocalBasisType::Traits::RangeType Range;
52 class FunctionBaseDummy
56 using RangeType = Range;
57 using DomainType = Domain;
65 void evaluate(
const DomainType& x, RangeType& y)
const;
78 using type = FunctionBaseDummy;
103 virtual unsigned int size ()
const = 0;
106 virtual unsigned int order ()
const = 0;
114 std::vector<typename Traits::RangeType>& out)
const = 0;
125 std::vector<typename Traits::JacobianType>& out)
const = 0;
132 virtual void partial(
const std::array<unsigned int,Traits::dimDomain>&
order,
133 const typename Traits::DomainType& in,
134 std::vector<typename Traits::RangeType>& out)
const = 0;
155 template<
class DomainType,
class RangeType>
185 template<
class DomainType,
class RangeType>
218 void interpolate (
const F& ff, std::vector<CoefficientType>& out)
const
220 const auto& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
231 template<
class F,
class C>
234 const auto& f = Impl::makeFunctionWithCallOperator<DomainType>(ff);
236 std::vector<CoefficientType> outDummy;
239 out.resize(outDummy.size());
240 for(
typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
241 out[i] = outDummy[i];
263 virtual std::size_t
size ()
const = 0;
285 using LocalBasisTraits = T;
306 virtual unsigned int size ()
const = 0;
309 virtual const GeometryType
type ()
const = 0;
Definition: bdfmcube.hh:16
@ value
Definition: tensor.hh:166
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
virtual ~LocalInterpolationVirtualInterface()
Definition: virtualinterface.hh:198
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
void interpolate(const F &ff, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition: virtualinterface.hh:218
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
void interpolate(const F &ff, std::vector< C > &out) const
determine coefficients interpolating a given function
Definition: virtualinterface.hh:232
Return a proper base class for functions to use with LocalInterpolation.
Definition: virtualinterface.hh:45
FunctionBaseDummy FunctionBase
Definition: virtualinterface.hh:71
FunctionBaseDummy VirtualFunctionBase
Definition: virtualinterface.hh:70
FunctionBaseDummy type
Base class type for functions to use with LocalInterpolation.
Definition: virtualinterface.hh:78
Definition: virtualinterface.hh:60
Range RangeType
Definition: virtualinterface.hh:61
Domain DomainType
Definition: virtualinterface.hh:62
virtual base class for a local basis
Definition: virtualinterface.hh:95
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:97
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:100
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:157
std::function< RangeType(DomainType)> FunctionType
type of function to interpolate
Definition: virtualinterface.hh:161
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:164
virtual ~LocalInterpolationVirtualInterfaceBase()
Definition: virtualinterface.hh:166
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:257
virtual ~LocalCoefficientsVirtualInterface()
Definition: virtualinterface.hh:260
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:284
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:292
virtual ~LocalFiniteElementVirtualInterface()
Definition: virtualinterface.hh:294
virtual const Traits::LocalCoefficientsType & localCoefficients() const =0