dune-localfunctions  2.2.1
mimeticall.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil -*-
2 #ifndef DUNE_MIMETIC_ALL_HH
3 #define DUNE_MIMETIC_ALL_HH
4 
5 #include <cstddef>
6 
7 #include <dune/common/exceptions.hh>
8 #include <dune/common/fvector.hh>
9 #include <dune/common/fmatrix.hh>
10 
11 #include <dune/geometry/type.hh>
12 
13 #include "../common/localbasis.hh"
14 #include "../common/localkey.hh"
15 
16 namespace Dune
17 {
18  template<class D, class R, int dim>
20  {
21  public:
23  R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
24 
25  MimeticLocalBasis (unsigned int variant_)
26  : variant(variant_)
27  {
28  }
29 
31  : variant(0)
32  {
33  }
34 
35  unsigned int size () const { return variant; }
36 
38  inline void evaluateFunction (
39  const typename Traits::DomainType& in,
40  std::vector<typename Traits::RangeType>& out) const
41  {
42  DUNE_THROW(Dune::Exception,"mimetic basis evaluation not available");
43  }
44 
46  inline void evaluateJacobian (
47  const typename Traits::DomainType& in,
48  std::vector<typename Traits::JacobianType>& out) const
49  {
50  DUNE_THROW(Dune::Exception,"mimetic basis Jacobian evaluation not available");
51  }
52 
54  unsigned int order () const
55  {
56  DUNE_THROW(Dune::Exception,"mimetic order evaluation not available");
57  }
58 
59  private:
60  unsigned int variant;
61  };
62 
63  template<class LB>
65  {
66  public:
67 
69  template<typename F, typename C>
70  void interpolate (const F& f, std::vector<C>& out) const {
71  DUNE_THROW(Dune::Exception,"mimetic local interpolation not available");
72  }
73  };
74 
79  {
80  public:
81  MimeticLocalCoefficients (unsigned int variant_)
82  : variant(variant_), li(variant_)
83  {
84  for (unsigned int i=0; i<variant; i++)
86  }
87 
89  : variant(0), li(0)
90  {
91  }
92 
94  std::size_t size () const { return variant; }
95 
97  const Dune::LocalKey& localKey (std::size_t i) const {
98  return li[i];
99  }
100 
101  private:
102  unsigned int variant;
103  std::vector<Dune::LocalKey> li;
104  };
105 }
106 
107 #endif