3 #ifndef DUNE_GENERIC_LOCALFINITEELEMENT_HH
4 #define DUNE_GENERIC_LOCALFINITEELEMENT_HH
6 #include <dune/geometry/type.hh>
20 template<
class BasisF,
class CoeffF,
class InterpolF>
25 typename CoeffF::Object,
28 typedef typename BasisF::Key
Key;
29 static const unsigned int dimDomain = BasisF::dimension;
36 "incompatible keys between BasisCreator and CoefficientsCreator" );
38 "incompatible keys between BasisCreator and InterpolationCreator" );
42 : topologyId_( gt.id() ),
46 GenericGeometry::IfTopology< FiniteElement::template Maker, dimDomain >::apply( topologyId_, key_, finiteElement_ );
51 : topologyId_( other.topologyId_ ),
55 GenericGeometry::IfTopology< FiniteElement::template Maker, dimDomain >::apply( topologyId_, key_, finiteElement_ );
60 finiteElement_.release();
67 return *(finiteElement_.basis_);
74 return *(finiteElement_.coeff_);
81 return *(finiteElement_.interpol_);
88 return GeometryType(topologyId_,
dimDomain);
105 FiniteElement() : basis_(0), coeff_(0), interpol_(0) {}
106 template <
class Topology>
107 void create(
const Key &key )
110 basis_ = BasisF::template create<Topology>(key);
111 coeff_ = CoeffF::template create<Topology>(key);
112 interpol_ = InterpolF::template create<Topology>(key);
117 BasisF::release(basis_);
119 CoeffF::release(coeff_);
121 InterpolF::release(interpol_);
126 template<
class Topology >
129 static void apply (
const Key &key, FiniteElement &finiteElement )
131 finiteElement.template create<Topology>(key);
138 unsigned int topologyId_;
140 FiniteElement finiteElement_;
152 DGLocalCoefficientsFactory< typename FE::BasisFactory >,
153 typename FE::InterpolationFactory>
157 typename FE::InterpolationFactory>
Base;
177 DGLocalCoefficientsFactory< typename FE::BasisFactory >,
178 LocalL2InterpolationFactory< typename FE::BasisFactory, false > >