AMDiS  0.1
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 jacobian {};
19  struct gradient {};
20  struct divergence {};
21  struct partial { std::size_t comp = 0; };
22 
23  // register possible types for derivative traits
25  }
26 
27  template <class Sig, class Type>
29 
30  template <class R, class D>
31  struct DerivativeTraits<R(D), tag::jacobian>
32  : public Dune::Functions::DefaultDerivativeTraits<R(D)>
33  {};
34 
35  template <class R, class D>
36  struct DerivativeTraits<R(D), tag::gradient>
37  : public Dune::Functions::DefaultDerivativeTraits<R(D)>
38  {};
39 
40  template <class K, int n>
41  struct DerivativeTraits<K(Dune::FieldVector<K,n>), tag::gradient>
42  {
43  using Range = Dune::FieldVector<K,n>;
44  };
45 
46  template <class K, int n>
47  struct DerivativeTraits<Dune::FieldVector<K,1>(Dune::FieldVector<K,n>), tag::gradient>
48  {
49  using Range = Dune::FieldVector<K,n>;
50  };
51 
52  template <class R, class K, int n>
53  struct DerivativeTraits<R(Dune::FieldVector<K,n>), tag::partial>
54  {
55  using Range = R;
56  };
57 
58  template <class K, int n>
59  struct DerivativeTraits<Dune::FieldVector<K,n>(Dune::FieldVector<K,n>), tag::divergence>
60  {
61  using Range = K;
62  };
63 
64  template <class K, int n, int m>
65  struct DerivativeTraits<Dune::FieldMatrix<K,n,m>(FieldVector<K,n>), tag::divergence>
66  {
67  using Range = Dune::FieldVector<K,m>;
68  };
69 
70 } // end namespace AMDiS
Definition: AdaptiveGrid.hpp:373
Definition: DerivativeTraits.hpp:21
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
Definition: DerivativeTraits.hpp:20
Definition: DerivativeTraits.hpp:19
Definition: DerivativeTraits.hpp:28
Definition: DerivativeTraits.hpp:24
Definition: DerivativeTraits.hpp:18