dune-localfunctions
2.6-git
|
Go to the documentation of this file.
3 #ifndef DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
4 #define DUNE_LOCALFUNCTIONS_COMMON_VIRTUALINTERFACE_HH
9 #include <dune/common/function.hh>
11 #include <dune/geometry/type.hh>
21 template<
class DomainType,
class RangeType>
36 typedef typename FE::Traits::LocalBasisType::Traits::DomainType DomainType;
37 typedef typename FE::Traits::LocalBasisType::Traits::RangeType RangeType;
40 typedef typename FE::Traits::LocalInterpolationType Implementation;
77 virtual unsigned int size ()
const = 0;
80 virtual unsigned int order ()
const = 0;
88 std::vector<typename Traits::RangeType>& out)
const = 0;
99 std::vector<typename Traits::JacobianType>& out)
const = 0;
106 virtual void partial(
const std::array<unsigned int,Traits::dimDomain>&
order,
107 const typename Traits::DomainType& in,
108 std::vector<typename Traits::RangeType>& out)
const = 0;
129 template<
class DomainType,
class RangeType>
159 template<
class DomainType,
class RangeType>
160 class LocalInterpolationVirtualInterface
161 :
public LocalInterpolationVirtualInterfaceBase<DomainType, RangeType>
188 void interpolate (
const F& f, std::vector<CoefficientType>& out)
const
191 asBase.
interpolate(VirtualFunctionWrapper<F>(f),out);
194 template<
class F,
class C>
197 std::vector<CoefficientType> outDummy;
199 asBase.
interpolate(VirtualFunctionWrapper<F>(f),outDummy);
200 out.resize(outDummy.size());
201 for(
typename std::vector<CoefficientType>::size_type i=0; i<outDummy.size(); ++i)
202 out[i] = outDummy[i];
207 template <
typename F>
208 struct VirtualFunctionWrapper
212 VirtualFunctionWrapper(
const F &f)
216 virtual ~VirtualFunctionWrapper() {}
218 virtual void evaluate(
const DomainType& x, RangeType& y)
const
245 virtual std::size_t
size ()
const = 0;
267 using LocalBasisTraits = T;
288 virtual unsigned int size ()
const = 0;
291 virtual const GeometryType
type ()
const = 0;
virtual ~LocalFiniteElementVirtualInterface()
Definition: virtualinterface.hh:276
Dune::VirtualFunction< DomainType, RangeType > FunctionType
type of virtual function to interpolate
Definition: virtualinterface.hh:135
virtual base class for a local interpolation
Definition: virtualinterface.hh:22
Dune::VirtualFunction< DomainType, RangeType > FunctionType
type of virtual function to interpolate
Definition: virtualinterface.hh:166
@ value
Definition: tensor.hh:165
virtual ~LocalInterpolationVirtualInterface()
Definition: virtualinterface.hh:172
traits helper struct
Definition: localfiniteelementtraits.hh:10
virtual const Traits::LocalCoefficientsType & localCoefficients() const =0
virtual const Traits::LocalBasisType & localBasis() const =0
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
virtual LocalFiniteElementVirtualInterface< T > * clone() const =0
const virtual LocalKey & localKey(std::size_t i) const =0
get i'th index
virtual base class for local finite elements with functions
Definition: virtualinterface.hh:265
Return a proper base class for functions to use with LocalInterpolation.
Definition: virtualinterface.hh:34
virtual ~LocalBasisVirtualInterface()
Definition: virtualinterface.hh:74
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 void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
virtual base class for a local interpolation
Definition: virtualinterface.hh:130
Function< const DomainType &, RangeType & > FunctionBase
Definition: virtualinterface.hh:45
D DomainType
domain type
Definition: localbasis.hh:43
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
virtual std::size_t size() const =0
number of coefficients
virtual unsigned int size() const =0
virtual const GeometryType type() const =0
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const =0
determine coefficients interpolating a given function
LocalFiniteElementTraits< LocalBasisVirtualInterface< LocalBasisTraits >, LocalCoefficientsVirtualInterface, LocalInterpolationVirtualInterface< typename LocalBasisTraits::DomainType, typename LocalBasisTraits::RangeType > > Traits
Definition: virtualinterface.hh:274
virtual const Traits::LocalInterpolationType & localInterpolation() const =0
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:169
virtual unsigned int order() const =0
Polynomial order of the shape functions.
VirtualFunction< DomainType, RangeType > VirtualFunctionBase
Definition: virtualinterface.hh:44
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:138
virtual base class for local coefficients
Definition: virtualinterface.hh:238
virtual base class for a local basis
Definition: virtualinterface.hh:68
virtual unsigned int size() const =0
Number of shape functions.
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:31
virtual ~LocalInterpolationVirtualInterfaceBase()
Definition: virtualinterface.hh:140
virtual void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const =0
Evaluate all basis function at given position.
R RangeType
range type
Definition: localbasis.hh:55
virtual ~LocalCoefficientsVirtualInterface()
Definition: virtualinterface.hh:242
void interpolate(const F &f, std::vector< C > &out) const
Definition: virtualinterface.hh:195
Describe position of one degree of freedom.
Definition: localkey.hh:20
void interpolate(const F &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition: virtualinterface.hh:188
std::conditional< std::is_base_of< Interface, Implementation >::value, VirtualFunctionBase, FunctionBase >::type type
Base class type for functions to use with LocalInterpolation.
Definition: virtualinterface.hh:52
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
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.
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15