AMDiS  0.3
The Adaptive Multi-Dimensional Simulation Toolbox
DerivativeTraits.hpp
1 #pragma once
2 
3 #include <dune/functions/common/defaultderivativetraits.hh>
4 
5 namespace Dune
6 {
7  template <class K, int n>
8  class FieldVector;
9 
10  template <class K, int n, int m>
11  class FieldMatrix;
12 }
13 
14 namespace AMDiS
15 {
16  namespace tag
17  {
18  struct value {};
19  struct jacobian {};
20  struct gradient {};
21  struct divergence {};
22  struct partial { std::size_t comp = 0; };
23 
24  // register possible types for derivative traits
26  }
27 
28  template <class Sig, class Type>
30 
31  template <class R, class D>
32  struct DerivativeTraits<R(D), tag::value>
33  {
34  using Range = R;
35  };
36 
37  template <class R, class D>
38  struct DerivativeTraits<R(D), tag::jacobian>
39  : public Dune::Functions::DefaultDerivativeTraits<R(D)>
40  {};
41 
42  template <class R, class D>
43  struct DerivativeTraits<R(D), tag::gradient>
44  : public Dune::Functions::DefaultDerivativeTraits<R(D)>
45  {};
46 
47  template <class K, int n>
48  struct DerivativeTraits<K(Dune::FieldVector<K,n>), tag::gradient>
49  {
50  using Range = Dune::FieldVector<K,n>;
51  };
52 
53  template <class K, int n>
54  struct DerivativeTraits<Dune::FieldVector<K,1>(Dune::FieldVector<K,n>), tag::gradient>
55  {
56  using Range = Dune::FieldVector<K,n>;
57  };
58 
59  template <class R, class K, int n>
60  struct DerivativeTraits<R(Dune::FieldVector<K,n>), tag::partial>
61  {
62  using Range = R;
63  };
64 
65  template <class K, int n>
66  struct DerivativeTraits<Dune::FieldVector<K,n>(Dune::FieldVector<K,n>), tag::divergence>
67  {
68  using Range = K;
69  };
70 
71  template <class K, int n, int m>
72  struct DerivativeTraits<Dune::FieldMatrix<K,n,m>(FieldVector<K,n>), tag::divergence>
73  {
74  using Range = Dune::FieldVector<K,m>;
75  };
76 
77 } // end namespace AMDiS
Definition: AdaptiveGrid.hpp:373
Definition: DerivativeTraits.hpp:22
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Definition: DerivativeTraits.hpp:21
Definition: DerivativeTraits.hpp:20
Definition: DerivativeTraits.hpp:18
Definition: DerivativeTraits.hpp:29
Definition: DerivativeTraits.hpp:25
Definition: DerivativeTraits.hpp:19