dune-localfunctions 2.8.0
mimeticall.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#ifndef DUNE_MIMETIC_ALL_HH
4#define DUNE_MIMETIC_ALL_HH
5
6#include <cstddef>
7
8#include <dune/common/exceptions.hh>
9#include <dune/common/fvector.hh>
10#include <dune/common/fmatrix.hh>
11
12#include <dune/geometry/type.hh>
13
14#include "../common/localbasis.hh"
15#include "../common/localkey.hh"
16
17namespace Dune
18{
19 template<class D, class R, int dim>
21 {
22 public:
24 R,1,Dune::FieldVector<R,1>, Dune::FieldMatrix<R,1,dim> > Traits;
25
26 MimeticLocalBasis (unsigned int variant_)
27 : variant(variant_)
28 {}
29
31 : variant(0)
32 {}
33
34 unsigned int size () const { return variant; }
35
37 inline void evaluateFunction (
38 const typename Traits::DomainType& in,
39 std::vector<typename Traits::RangeType>& out) const
40 {
41 DUNE_THROW(Dune::Exception,"mimetic basis evaluation not available");
42 }
43
45 inline void evaluateJacobian (
46 const typename Traits::DomainType& in,
47 std::vector<typename Traits::JacobianType>& out) const
48 {
49 DUNE_THROW(Dune::Exception,"mimetic basis Jacobian evaluation not available");
50 }
51
53 void partial (const std::array<unsigned int, dim>& /*order*/,
54 const typename Traits::DomainType& /*in*/, // position
55 std::vector<typename Traits::RangeType>& /*out*/) const // return value
56 {
57 DUNE_THROW(Dune::Exception,"mimetic basis partial derivative evaluation not available");
58 }
59
61 unsigned int order () const
62 {
63 DUNE_THROW(Dune::Exception,"mimetic order evaluation not available");
64 }
65
66 private:
67 unsigned int variant;
68 };
69
70 template<class LB>
72 {
73 public:
74
76 template<typename F, typename C>
77 void interpolate (const F& f, std::vector<C>& out) const {
78 DUNE_THROW(Dune::Exception,"mimetic local interpolation not available");
79 }
80 };
81
86 {
87 public:
88 MimeticLocalCoefficients (unsigned int variant_)
89 : variant(variant_), li(variant_)
90 {
91 for (unsigned int i=0; i<variant; i++)
93 }
94
96 : variant(0), li(0)
97 {}
98
100 std::size_t size () const { return variant; }
101
103 const Dune::LocalKey& localKey (std::size_t i) const {
104 return li[i];
105 }
106
107 private:
108 unsigned int variant;
109 std::vector<Dune::LocalKey> li;
110 };
111}
112
113#endif
Definition: bdfmcube.hh:16
Type traits for LocalBasisVirtualInterface.
Definition: common/localbasis.hh:32
D DomainType
domain type
Definition: common/localbasis.hh:43
Describe position of one degree of freedom.
Definition: localkey.hh:21
@ intersectionCodim
Codimension returned by LocalKey::codim() for degrees of freedom attached to an intersection.
Definition: localkey.hh:34
Definition: mimeticall.hh:21
MimeticLocalBasis(unsigned int variant_)
Definition: mimeticall.hh:26
Dune::LocalBasisTraits< D, dim, Dune::FieldVector< D, dim >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, dim > > Traits
Definition: mimeticall.hh:24
MimeticLocalBasis()
Definition: mimeticall.hh:30
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition: mimeticall.hh:45
unsigned int order() const
Polynomial order of the shape functions.
Definition: mimeticall.hh:61
void partial(const std::array< unsigned int, dim > &, const typename Traits::DomainType &, std::vector< typename Traits::RangeType > &) const
Evaluate partial derivatives of all shape functions.
Definition: mimeticall.hh:53
unsigned int size() const
Definition: mimeticall.hh:34
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition: mimeticall.hh:37
Definition: mimeticall.hh:72
void interpolate(const F &f, std::vector< C > &out) const
Local interpolation of a function.
Definition: mimeticall.hh:77
!
Definition: mimeticall.hh:86
const Dune::LocalKey & localKey(std::size_t i) const
map index i to local key
Definition: mimeticall.hh:103
MimeticLocalCoefficients(unsigned int variant_)
Definition: mimeticall.hh:88
std::size_t size() const
number of coefficients
Definition: mimeticall.hh:100
MimeticLocalCoefficients()
Definition: mimeticall.hh:95