3 #ifndef DUNE_VIRTUALWRAPPERS_HH 4 #define DUNE_VIRTUALWRAPPERS_HH 8 #include <dune/common/deprecated.hh> 9 #include <dune/common/function.hh> 23 template<
class Imp,
bool IsInterface>
26 static Imp*
clone(
const Imp& imp)
36 static Imp*
clone(
const Imp& imp)
48 static Imp*
clone(
const Imp& imp)
74 template<
class T ,
class Imp>
96 using Base::evaluateFunction;
97 using Base::evaluateJacobian;
104 const std::array<int,Traits::diffOrder>& directions,
105 const typename Traits::DomainType& in,
106 std::vector<typename Traits::RangeType>& out)
const 114 DUNE_NO_DEPRECATED_BEGIN
115 impl_.template evaluate<Traits::diffOrder>(directions, in, out);
116 DUNE_NO_DEPRECATED_END
132 template<
class DF,
int n,
class D,
class RF,
int m,
class R,
class J,
class Imp>
136 template<
class FEImp>
158 return impl_.order();
163 std::vector<typename Traits::RangeType>& out)
const 165 impl_.evaluateFunction(in,out);
171 std::vector<typename Traits::JacobianType>& out)
const 173 impl_.evaluateJacobian(in,out);
181 void partial(
const std::array<unsigned int,Traits::dimDomain>& order,
183 std::vector<typename Traits::RangeType>& out)
const 185 impl_.partial(order,in,out);
190 const std::array<int,Traits::diffOrder>& directions,
192 std::vector<typename Traits::RangeType>& out)
const 196 impl_.evaluateFunction(in,out);
217 template<
class DomainType,
class RangeType,
class Imp>
221 template<
class FEImp>
239 virtual void interpolate (
const FunctionType& f, std::vector<CoefficientType>& out)
const 241 impl_.interpolate(f,out);
265 template<
class FEImp>
286 return impl_.localKey(i);
312 typedef typename Imp::Traits::LocalBasisType::Traits T;
321 localBasisImp_(impl_->localBasis()),
322 localCoefficientsImp_(impl_->localCoefficients()),
323 localInterpolationImp_(impl_->localInterpolation())
329 localBasisImp_(impl_->localBasis()),
330 localCoefficientsImp_(impl_->localCoefficients()),
331 localInterpolationImp_(impl_->localInterpolation())
337 localBasisImp_(impl_->localBasis()),
338 localCoefficientsImp_(impl_->localCoefficients()),
339 localInterpolationImp_(impl_->localInterpolation())
350 return localBasisImp_;
356 return localCoefficientsImp_;
362 return localInterpolationImp_;
368 return impl_->size();
372 const GeometryType
type ()
const 374 return impl_->type();
394 typename T::RangeType,
class for wrapping a basis using the virtual interface
Definition: virtualwrappers.hh:75
LocalFiniteElementVirtualImp()
Default constructor. Assumes that the implementation class is default constructible as well...
Definition: virtualwrappers.hh:327
LocalInterpolationVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface ...
Definition: virtualwrappers.hh:229
virtual base class for a local basis
Definition: virtualinterface.hh:24
LocalCoefficientsVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface ...
Definition: virtualwrappers.hh:271
Base::CoefficientType CoefficientType
Definition: virtualwrappers.hh:236
unsigned int size() const
Definition: virtualwrappers.hh:150
unsigned int size() const
Number of shape functions in this finite element.
Definition: virtualwrappers.hh:366
const Imp & impl_
Definition: virtualwrappers.hh:245
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:181
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Definition: virtualwrappers.hh:169
void evaluate(const std::array< int, Traits::diffOrder > &directions, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition: virtualwrappers.hh:103
~LocalFiniteElementVirtualImp()
Definition: virtualwrappers.hh:342
virtual base class for a local interpolation
Definition: virtualinterface.hh:21
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
const LocalInterpolationVirtualImp< typename T::DomainType, typename T::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
Definition: virtualwrappers.hh:395
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition: virtualwrappers.hh:239
const GeometryType type() const
Definition: virtualwrappers.hh:372
const Traits::LocalBasisType & localBasis() const
Definition: virtualwrappers.hh:348
typename T::RangeType ::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:295
unsigned int order() const
Definition: virtualwrappers.hh:156
const LocalBasisVirtualImp< T, typename Imp::Traits::LocalBasisType > localBasisImp_
Definition: virtualwrappers.hh:391
Base::FunctionType FunctionType
Definition: virtualwrappers.hh:234
LocalBasisTraits< DF, n, D, RF, m, R, J, 0 > Traits
Definition: virtualwrappers.hh:147
virtual LocalFiniteElementVirtualImp< Imp > * clone() const
clone this wrapper
Definition: virtualwrappers.hh:382
T Traits
Definition: virtualwrappers.hh:92
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:26
D DomainType
domain type
Definition: localbasis.hh:49
Definition: virtualwrappers.hh:24
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition: virtualwrappers.hh:87
const Imp & impl_
Definition: virtualwrappers.hh:290
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:36
Interface::Traits Traits
Definition: virtualwrappers.hh:316
LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
Definition: virtualwrappers.hh:46
class for wrapping a local interpolation using the virtual interface
Definition: virtualwrappers.hh:218
traits helper struct
Definition: localfiniteelementtraits.hh:10
const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
Definition: virtualwrappers.hh:392
const Imp * impl_
Definition: virtualwrappers.hh:388
virtual base class for local finite elements with functions
Definition: virtualinterface.hh:391
void evaluate(const std::array< int, Traits::diffOrder > &directions, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition: virtualwrappers.hh:189
const Traits::LocalInterpolationType & localInterpolation() const
Definition: virtualwrappers.hh:360
const Imp & impl_
Definition: virtualwrappers.hh:200
static Imp * create()
Definition: virtualwrappers.hh:53
const Traits::LocalCoefficientsType & localCoefficients() const
Definition: virtualwrappers.hh:354
Definition: virtualwrappers.hh:44
class for wrapping a finite element using the virtual interface
Definition: virtualwrappers.hh:20
virtual base class for local coefficients
Definition: virtualinterface.hh:364
LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
Copy contructor needed for deep copy.
Definition: virtualwrappers.hh:335
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
Dune::VirtualFunction< typename T::DomainType, typename T::RangeType > FunctionType
type of virtual function to interpolate
Definition: virtualinterface.hh:292
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition: virtualwrappers.hh:162
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:48
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:37
LocalFiniteElementVirtualImp(const Imp &imp)
taking a LocalFiniteElementVirtualInterface implementation
Definition: virtualwrappers.hh:319
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition: virtualwrappers.hh:284
std::size_t size() const
number of coefficients
Definition: virtualwrappers.hh:278
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition: virtualwrappers.hh:142
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
class for wrapping local coefficients using the virtual interface
Definition: virtualwrappers.hh:262
Describe position of one degree of freedom.
Definition: localkey.hh:20