3 #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH 4 #define DUNE_LAGRANGEBASIS_INTERPOLATION_HH 7 #include <dune/geometry/topologyfactory.hh> 13 template<
template <
class,
unsigned int>
class LP,
14 unsigned int dim,
class F >
20 template<
template <
class,
unsigned int>
class LP,
21 unsigned int dim,
class F >
28 typedef typename LagrangePointSet::Field
Field;
30 static const unsigned int dimension = LagrangePointSet::dimension;
34 const LagrangePointSet &lagrangePoints_;
37 : lagrangePoints_( lagrangePoints )
39 const LagrangePointSet *points ()
const 41 return &lagrangePoints_;
45 template<
class Function,
class Fy >
46 void interpolate (
const Function &
function, std::vector< Fy > &coefficients )
const 48 typedef typename LagrangePointSet::iterator Iterator;
50 coefficients.resize( lagrangePoints_.size() );
52 unsigned int index = 0;
53 const Iterator end = lagrangePoints_.end();
54 for( Iterator it = lagrangePoints_.begin(); it != end; ++it )
56 typename Function::RangeType val;
57 function.evaluate( field_cast<typename Function::DomainType::field_type>(it->point()), val );
62 template<
class Matrix,
class Basis >
63 void interpolate (
const Basis &basis, Matrix &coefficients )
const 65 typedef typename LagrangePointSet::iterator Iterator;
67 coefficients.resize( lagrangePoints_.size(), basis.size( ) );
69 unsigned int index = 0;
70 const Iterator end = lagrangePoints_.end();
71 for( Iterator it = lagrangePoints_.begin(); it != end; ++it )
72 basis.template evaluate<0>( it->point(), coefficients.rowPtr( index++ ) );
77 return lagrangePoints_;
85 template<
template <
class,
unsigned int>
class LP,
86 unsigned int dim,
class F >
99 template<
template <
class,
unsigned int>
class LP,
100 unsigned int dim,
class F >
102 public TopologyFactory< LagrangeInterpolationFactoryTraits< LP,dim,F > >
108 template<
class Topology >
112 = Traits::LagrangePointSetFactory::template create< Topology >( key );
113 if ( lagrangeCoeff == 0 )
116 return new Object( *lagrangeCoeff );
118 template<
class Topology >
125 Traits::LagrangePointSetFactory::release( object->points() );
132 #endif // #ifndef DUNE_LAGRANGEBASIS_INTERPOLATION_HH LagrangeInterpolationFactoryTraits< LP, dim, F > Traits
Definition: lagrange/interpolation.hh:104
Definition: lagrangecoefficients.hh:20
LagrangePointSet::Field Field
Definition: lagrange/interpolation.hh:28
Definition: lagrange/interpolation.hh:22
void interpolate(const Basis &basis, Matrix &coefficients) const
Definition: lagrange/interpolation.hh:63
const LagrangePointSet & lagrangePoints() const
Definition: lagrange/interpolation.hh:75
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15
static const unsigned int dimension
Definition: lagrange/interpolation.hh:30
LagrangeCoefficientsFactory< LP, dim, F > LagrangePointSetFactory
Definition: lagrange/interpolation.hh:89
static void release(Object *object)
Definition: lagrange/interpolation.hh:123
LagrangeInterpolationFactory< LP, dim, F > Factory
Definition: lagrange/interpolation.hh:94
Traits::Object Object
Definition: lagrange/interpolation.hh:106
const LocalLagrangeInterpolation< LP, dim, F > Object
Definition: lagrange/interpolation.hh:93
void field_cast(const F1 &f1, F2 &f2)
a helper class to cast from one field to another
Definition: field.hh:157
static Object * createObject(const Key &key)
Definition: lagrange/interpolation.hh:109
LagrangePointSetFactory::Key Key
Definition: lagrange/interpolation.hh:92
LP< F, dim > LagrangePointSet
Definition: lagrange/interpolation.hh:27
LagrangePointSetFactory::Object LagrangePointSet
Definition: lagrange/interpolation.hh:90
Definition: lagrange/interpolation.hh:15
static bool supports(const typename Traits::Key &key)
Definition: lagrange/interpolation.hh:119
Traits::Key Key
Definition: lagrange/interpolation.hh:105
Traits::Key Key
Definition: lagrangecoefficients.hh:40
void interpolate(const Function &function, std::vector< Fy > &coefficients) const
Definition: lagrange/interpolation.hh:46
Traits::Object Object
Definition: lagrangecoefficients.hh:39
Definition: lagrange/interpolation.hh:87