dune-localfunctions  2.4.1-rc2
monom.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 
4 #ifndef DUNE_MONOMLOCALFINITEELEMENT_HH
5 #define DUNE_MONOMLOCALFINITEELEMENT_HH
6 
7 #warning This file is deprecated. Please use monomial.hh instead!
8 
10 
11 namespace Dune
12 {
14  template<class D, class R, int d, int p, int diffOrder = p>
15  class DUNE_DEPRECATED_MSG("Use MonomialLocalFiniteElement instead!") MonomLocalFiniteElement
16  {
17  enum { static_size = MonomImp::Size<d,p>::val };
18 
19  public:
26  > Traits;
27 
29  MonomLocalFiniteElement (const GeometryType &gt_)
30  : basis(), interpolation(gt_, basis), gt(gt_)
31  {}
32 
35  const typename Traits::LocalBasisType& localBasis () const
36  {
37  return basis;
38  }
39 
43  {
44  return coefficients;
45  }
46 
50  {
51  return interpolation;
52  }
53 
55  unsigned int size () const
56  {
57  return basis.size();
58  }
59 
62  GeometryType type () const
63  {
64  return gt;
65  }
66 
67  private:
68  MonomialLocalBasis<D,R,d,p, diffOrder> basis;
69  MonomialLocalCoefficients<static_size> coefficients;
70  MonomialLocalInterpolation<MonomialLocalBasis<D,R,d,p, diffOrder>,static_size> interpolation;
71  GeometryType gt;
72  };
73 
75  template<class Geometry, class RF, std::size_t p>
76  class DUNE_DEPRECATED_MSG("Use MonomialFiniteElementFactory instead!") MonomFiniteElementFactory {
77  typedef typename Geometry::ctype DF;
78  static const std::size_t dim = Geometry::mydimension;
79 
81 
82  std::vector<std::shared_ptr<const LocalFE> > localFEs;
83 
84  void init(const GeometryType &gt) {
85  std::size_t index = gt.id() >> 1;
86  if(localFEs.size() <= index)
87  localFEs.resize(index+1);
88  localFEs[index].reset(new LocalFE(gt));
89  }
90 
91  public:
94 
95  template<class ForwardIterator>
96  MonomFiniteElementFactory(const ForwardIterator &begin,
97  const ForwardIterator &end)
98  {
99  for(ForwardIterator it = begin; it != end; ++it)
100  init(*it);
101  }
102 
103  MonomFiniteElementFactory(const GeometryType &gt)
104  { init(gt); }
105 
107  static_assert(dim <= 3, "MonomFiniteElementFactory knows the "
108  "available geometry types only up to dimension 3");
109 
110  GeometryType gt;
111  switch(dim) {
112  case 0 :
113  gt.makeVertex(); init(gt);
114  break;
115  case 1 :
116  gt.makeLine(); init(gt);
117  break;
118  case 2 :
119  gt.makeTriangle(); init(gt);
120  gt.makeQuadrilateral(); init(gt);
121  break;
122  case 3 :
123  gt.makeTetrahedron(); init(gt);
124  gt.makePyramid(); init(gt);
125  gt.makePrism(); init(gt);
126  gt.makeHexahedron(); init(gt);
127  break;
128  default :
129  // this should never happen -- it should be caught by the static
130  // assert above.
131  std::abort();
132  };
133  }
134 
135  const FiniteElement make(const Geometry& geometry) {
136  std::size_t index = geometry.type().id() >> 1;
137  assert(localFEs.size() > index && localFEs[index]);
138  return FiniteElement(*localFEs[index], geometry);
139  }
140  };
141 
142 }
143 #endif // DUNE_MONOMLOCALFINITEELEMENT_HH
Definition: monomiallocalinterpolation.hh:18
traits helper struct
Definition: localfiniteelementtraits.hh:10
Definition: monom.hh:76
MonomFiniteElementFactory(const GeometryType &gt)
Definition: monom.hh:103
const FiniteElement make(const Geometry &geometry)
Definition: monom.hh:135
Factory for global-valued MonomFiniteElement objects.
Definition: monomial.hh:114
GeometryType type() const
Definition: localtoglobaladaptors.hh:229
Monomial basis for discontinuous Galerkin methods.
Definition: monomial.hh:41
ScalarLocalToGlobalFiniteElementAdaptor< LocalFE, Geometry > FiniteElement
Definition: monom.hh:93
LocalFiniteElementTraits< MonomialLocalBasis< D, R, d, p, diffOrder >, MonomialLocalCoefficients< static_size >, MonomialLocalInterpolation< MonomialLocalBasis< D, R, d, p, diffOrder >, static_size > > Traits
Definition: monom.hh:26
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:14
Definition: monomiallocalbasis.hh:20
LI LocalInterpolationType
Definition: localfiniteelementtraits.hh:22
Convert a simple scalar local finite element into a global finite element.
Definition: localtoglobaladaptors.hh:187
LC LocalCoefficientsType
Definition: localfiniteelementtraits.hh:18
const Traits::LocalBasisType & localBasis() const
Definition: monom.hh:35
Definition: monom.hh:15
MonomFiniteElementFactory()
Definition: monom.hh:106
const Traits::LocalInterpolationType & localInterpolation() const
Definition: monom.hh:49
GeometryType type() const
Definition: monom.hh:62
LB LocalBasisType
Definition: localfiniteelementtraits.hh:14
const Traits::LocalCoefficientsType & localCoefficients() const
Definition: monom.hh:42
Layout map for monomial finite elements.
Definition: monomiallocalcoefficients.hh:21
MonomLocalFiniteElement(const GeometryType &gt_)
Construct a MonomLocalFiniteElement.
Definition: monom.hh:29
MonomFiniteElementFactory(const ForwardIterator &begin, const ForwardIterator &end)
Definition: monom.hh:96
unsigned int size() const
Number of shape functions in this finite element.
Definition: monom.hh:55
Constant shape function.
Definition: monomiallocalbasis.hh:231