3#ifndef DUNE_VIRTUALWRAPPERS_HH
4#define DUNE_VIRTUALWRAPPERS_HH
8#include <dune/common/function.hh>
19 class LocalFiniteElementVirtualImp;
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;
103 const std::array<int,Traits::diffOrder>& directions,
104 const typename Traits::DomainType& in,
105 std::vector<typename Traits::RangeType>& out)
const
113 impl_.template evaluate<Traits::diffOrder>(directions, in, out);
129 template<
class DF,
int n,
class D,
class RF,
int m,
class R,
class J,
class Imp>
133 template<
class FEImp>
155 return impl_.order();
160 std::vector<typename Traits::RangeType>& out)
const
162 impl_.evaluateFunction(in,out);
168 std::vector<typename Traits::JacobianType>& out)
const
170 impl_.evaluateJacobian(in,out);
178 void partial(
const std::array<unsigned int,Traits::dimDomain>& order,
180 std::vector<typename Traits::RangeType>& out)
const
182 impl_.partial(order,in,out);
187 const std::array<int,Traits::diffOrder>& directions,
189 std::vector<typename Traits::RangeType>& out)
const
193 impl_.evaluateFunction(in,out);
214 template<
class DomainType,
class RangeType,
class Imp>
218 template<
class FEImp>
238 impl_.interpolate(f,out);
262 template<
class FEImp>
283 return impl_.localKey(i);
309 typedef typename Imp::Traits::LocalBasisType::Traits T;
365 return impl_->size();
369 const GeometryType
type ()
const
371 return impl_->type();
391 typename T::RangeType,
Definition brezzidouglasmarini1cube2d.hh:14
Type traits for LocalBasisVirtualInterface.
Definition localbasis.hh:38
D DomainType
domain type
Definition localbasis.hh:49
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:288
RangeType::field_type CoefficientType
type of the coefficient vector in the interpolate method
Definition virtualinterface.hh:295
Dune::VirtualFunction< DomainType, RangeType > FunctionType
type of virtual function to interpolate
Definition virtualinterface.hh:292
virtual base class for a local basis
Definition virtualinterface.hh:207
virtual base class for local coefficients
Definition virtualinterface.hh:365
virtual base class for local finite elements with functions
Definition virtualinterface.hh:393
class for wrapping a finite element using the virtual interface
Definition virtualwrappers.hh:308
const Traits::LocalBasisType & localBasis() const
Definition virtualwrappers.hh:345
const LocalBasisVirtualImp< T, typename Imp::Traits::LocalBasisType > localBasisImp_
Definition virtualwrappers.hh:388
virtual LocalFiniteElementVirtualImp< Imp > * clone() const
clone this wrapper
Definition virtualwrappers.hh:379
const LocalInterpolationVirtualImp< typename T::DomainType, typename T::RangeType, typename Imp::Traits::LocalInterpolationType > localInterpolationImp_
Definition virtualwrappers.hh:392
LocalFiniteElementVirtualImp(const Imp &imp)
taking a LocalFiniteElementVirtualInterface implementation
Definition virtualwrappers.hh:316
Interface::Traits Traits
Definition virtualwrappers.hh:313
LocalFiniteElementVirtualImp()
Default constructor. Assumes that the implementation class is default constructible as well.
Definition virtualwrappers.hh:324
LocalFiniteElementVirtualImp(const LocalFiniteElementVirtualImp &other)
Copy contructor needed for deep copy.
Definition virtualwrappers.hh:332
~LocalFiniteElementVirtualImp()
Definition virtualwrappers.hh:339
unsigned int size() const
Number of shape functions in this finite element.
Definition virtualwrappers.hh:363
const GeometryType type() const
Definition virtualwrappers.hh:369
const Imp * impl_
Definition virtualwrappers.hh:385
const Traits::LocalCoefficientsType & localCoefficients() const
Definition virtualwrappers.hh:351
const LocalCoefficientsVirtualImp< typename Imp::Traits::LocalCoefficientsType > localCoefficientsImp_
Definition virtualwrappers.hh:389
const Traits::LocalInterpolationType & localInterpolation() const
Definition virtualwrappers.hh:357
Definition virtualwrappers.hh:24
static Imp * clone(const Imp &imp)
Definition virtualwrappers.hh:25
static Imp * clone(const Imp &imp)
Definition virtualwrappers.hh:35
Definition virtualwrappers.hh:44
static Imp * clone(const Imp &imp)
Definition virtualwrappers.hh:47
static Imp * create()
Definition virtualwrappers.hh:52
LocalFiniteElementVirtualInterface< typename Imp::Traits::LocalBasisType::Traits > Interface
Definition virtualwrappers.hh:45
class for wrapping a basis using the virtual interface
Definition virtualwrappers.hh:77
void evaluate(const std::array< int, Traits::diffOrder > &directions, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition virtualwrappers.hh:102
T Traits
Definition virtualwrappers.hh:91
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition virtualwrappers.hh:86
LocalBasisTraits< DF, n, D, RF, m, R, J, 0 > Traits
Definition virtualwrappers.hh:144
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Definition virtualwrappers.hh:166
unsigned int size() const
Definition virtualwrappers.hh:147
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition virtualwrappers.hh:159
unsigned int order() const
Definition virtualwrappers.hh:153
void evaluate(const std::array< int, Traits::diffOrder > &directions, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Definition virtualwrappers.hh:186
LocalBasisVirtualImp(const Imp &imp)
constructor taking an implementation of the interface
Definition virtualwrappers.hh:139
const Imp & impl_
Definition virtualwrappers.hh:197
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:178
class for wrapping a local interpolation using the virtual interface
Definition virtualwrappers.hh:217
virtual void interpolate(const FunctionType &f, std::vector< CoefficientType > &out) const
determine coefficients interpolating a given function
Definition virtualwrappers.hh:236
const Imp & impl_
Definition virtualwrappers.hh:242
Base::FunctionType FunctionType
Definition virtualwrappers.hh:231
LocalInterpolationVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalInterpolationVirtualInterface
Definition virtualwrappers.hh:226
Base::CoefficientType CoefficientType
Definition virtualwrappers.hh:233
class for wrapping local coefficients using the virtual interface
Definition virtualwrappers.hh:261
LocalCoefficientsVirtualImp(const Imp &imp)
constructor taking an implementation of the Dune::LocalCoefficientsVirtualInterface
Definition virtualwrappers.hh:268
const LocalKey & localKey(std::size_t i) const
get i'th index
Definition virtualwrappers.hh:281
std::size_t size() const
number of coefficients
Definition virtualwrappers.hh:275
const Imp & impl_
Definition virtualwrappers.hh:287