3 #ifndef DUNE_VIRTUALWRAPPERS_HH 4 #define DUNE_VIRTUALWRAPPERS_HH 8 #include <dune/common/function.hh> 22 template<
class Imp,
bool IsInterface>
25 static Imp*
clone(
const Imp& imp)
35 static Imp*
clone(
const Imp& imp)
47 static Imp*
clone(
const Imp& imp)
73 template<
class T ,
class Imp>
95 using Base::evaluateFunction;
96 using Base::evaluateJacobian;
101 const typename std::template array<int,Traits::diffOrder>& directions,
102 const typename Traits::DomainType& in,
103 std::vector<typename Traits::RangeType>& out)
const 111 impl_.template evaluate<Traits::diffOrder>(directions, in, out);
127 template<
class DF,
int n,
class D,
class RF,
int m,
class R,
class J,
class Imp>
131 template<
class FEImp>
153 return impl_.order();
158 std::vector<typename Traits::RangeType>& out)
const 160 impl_.evaluateFunction(in,out);
166 std::vector<typename Traits::JacobianType>& out)
const 168 impl_.evaluateJacobian(in,out);
173 const typename std::template array<int,Traits::diffOrder>& directions,
175 std::vector<typename Traits::RangeType>& out)
const 179 impl_.evaluateFunction(in,out);
200 template<
class DomainType,
class RangeType,
class Imp>
204 template<
class FEImp>
222 virtual void interpolate (
const FunctionType& f, std::vector<CoefficientType>& out)
const 224 impl_.interpolate(f,out);
248 template<
class FEImp>
269 return impl_.localKey(i);
295 typedef typename Imp::Traits::LocalBasisType::Traits T;
304 localBasisImp_(impl_->localBasis()),
305 localCoefficientsImp_(impl_->localCoefficients()),
306 localInterpolationImp_(impl_->localInterpolation())
312 localBasisImp_(impl_->localBasis()),
313 localCoefficientsImp_(impl_->localCoefficients()),
314 localInterpolationImp_(impl_->localInterpolation())
320 localBasisImp_(impl_->localBasis()),
321 localCoefficientsImp_(impl_->localCoefficients()),
322 localInterpolationImp_(impl_->localInterpolation())
333 return localBasisImp_;
339 return localCoefficientsImp_;
345 return localInterpolationImp_;
351 return impl_->size();
355 const GeometryType
type ()
const 357 return impl_->type();
377 typename T::RangeType,
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:25
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition: virtualwrappers.hh:86
~LocalFiniteElementVirtualImp()
Definition: virtualwrappers.hh:325
LocalCoefficientsVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface ...
Definition: virtualwrappers.hh:254
const LocalInterpolationVirtualImp< typename T::DomainType, typename T::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
Definition: virtualwrappers.hh:378
traits helper struct
Definition: localfiniteelementtraits.hh:10
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:37
Dune::VirtualFunction< typename T::DomainType, typename T::RangeType > FunctionType
type of virtual function to interpolate
Definition: virtualinterface.hh:282
const Imp & impl_
Definition: virtualwrappers.hh:273
const LocalBasisVirtualImp< T, typename Imp::Traits::LocalBasisType > localBasisImp_
Definition: virtualwrappers.hh:374
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:47
LocalFiniteElementVirtualImp(const Imp &imp)
taking a LocalFiniteElementVirtualInterface implementation
Definition: virtualwrappers.hh:302
static Imp * create()
Definition: virtualwrappers.hh:52
LocalFiniteElementVirtualImp()
Default constructor. Assumes that the implementation class is default constructible as well...
Definition: virtualwrappers.hh:310
Definition: virtualwrappers.hh:43
class for wrapping local coefficients using the virtual interface
Definition: virtualwrappers.hh:245
static Imp * clone(const Imp &imp)
Definition: virtualwrappers.hh:35
const Traits::LocalBasisType & localBasis() const
Definition: virtualwrappers.hh:331
LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
Copy contructor needed for deep copy.
Definition: virtualwrappers.hh:318
const Imp & impl_
Definition: virtualwrappers.hh:228
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Definition: virtualwrappers.hh:164
std::size_t size() const
number of coefficients
Definition: virtualwrappers.hh:261
T Traits
Definition: virtualwrappers.hh:91
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition: virtualwrappers.hh:267
Base::CoefficientType CoefficientType
Definition: virtualwrappers.hh:219
virtual base class for local finite elements with functions
Definition: virtualinterface.hh:381
const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
Definition: virtualwrappers.hh:375
unsigned int order() const
Definition: virtualwrappers.hh:151
Describe position of one degree of freedom.
Definition: localkey.hh:21
virtual base class for local coefficients
Definition: virtualinterface.hh:354
unsigned int size() const
Definition: virtualwrappers.hh:145
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:14
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
virtual base class for a local basis
Definition: virtualinterface.hh:24
const Traits::LocalInterpolationType & localInterpolation() const
Definition: virtualwrappers.hh:343
void evaluate(const typename std::template array< int, Traits::diffOrder > &directions, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition: virtualwrappers.hh:172
LocalBasisTraits< DF, n, D, RF, m, R, J, 0 > Traits
Definition: virtualwrappers.hh:142
const Imp * impl_
Definition: virtualwrappers.hh:371
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition: virtualwrappers.hh:222
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition: virtualwrappers.hh:157
typename T::RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition: virtualinterface.hh:285
const Imp & impl_
Definition: virtualwrappers.hh:183
const Traits::LocalCoefficientsType & localCoefficients() const
Definition: virtualwrappers.hh:337
void evaluate(const typename std::template array< int, Traits::diffOrder > &directions, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition: virtualwrappers.hh:100
class for wrapping a finite element using the virtual interface
Definition: virtualwrappers.hh:19
LocalInterpolationVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface ...
Definition: virtualwrappers.hh:212
class for wrapping a basis using the virtual interface
Definition: virtualwrappers.hh:74
Base::FunctionType FunctionType
Definition: virtualwrappers.hh:217
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
Definition: virtualwrappers.hh:45
class for wrapping a local interpolation using the virtual interface
Definition: virtualwrappers.hh:201
D DomainType
domain type
Definition: localbasis.hh:49
unsigned int size() const
Number of shape functions in this finite element.
Definition: virtualwrappers.hh:349
Definition: virtualwrappers.hh:23
virtual LocalFiniteElementVirtualImp< Imp > * clone() const
clone this wrapper
Definition: virtualwrappers.hh:365
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition: virtualwrappers.hh:137
const GeometryType type() const
Definition: virtualwrappers.hh:355
virtual base class for a local interpolation
Definition: virtualinterface.hh:21
Interface::Traits Traits
Definition: virtualwrappers.hh:299