4 #ifndef DUNE_MONOMLOCALFINITEELEMENT_HH
5 #define DUNE_MONOMLOCALFINITEELEMENT_HH
12 #include <dune/common/deprecated.hh>
13 #include <dune/common/shared_ptr.hh>
14 #include <dune/common/static_assert.hh>
16 #include <dune/geometry/type.hh>
35 template<
class D,
class R,
int d,
int p,
int diffOrder = p>
52 : basis(), interpolation(basicType, basis), gt(basicType,d)
57 : basis(), interpolation(gt_, basis), gt(gt_)
108 template<
class Geometry,
class RF, std::
size_t p>
110 typedef typename Geometry::ctype DF;
111 static const std::size_t dim = Geometry::mydimension;
115 std::vector<shared_ptr<const LocalFE> > localFEs;
117 void init(
const GeometryType >) {
118 std::size_t index = gt.id() >> 1;
119 if(localFEs.size() <= index)
120 localFEs.resize(index+1);
121 localFEs[index].reset(
new LocalFE(gt));
133 template<
class ForwardIterator>
135 const ForwardIterator &end)
137 for(ForwardIterator it = begin; it != end; ++it)
153 dune_static_assert(dim <= 3,
"MonomFiniteElementFactory knows the "
154 "available geometry types only up to dimension 3");
159 gt.makeVertex(); init(gt);
162 gt.makeLine(); init(gt);
165 gt.makeTriangle(); init(gt);
166 gt.makeQuadrilateral(); init(gt);
169 gt.makeTetrahedron(); init(gt);
170 gt.makePyramid(); init(gt);
171 gt.makePrism(); init(gt);
172 gt.makeHexahedron(); init(gt);
193 std::size_t index = geometry.
type().id() >> 1;
194 assert(localFEs.size() > index && localFEs[index]);
200 #endif // DUNE_MONOMLOCALFINITEELEMENT_HH