RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
invariants.hh
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the C++-library RFFGen. */
4 /* Copyright 2015 Lars Lubkoll */
5 /* */
6 /* RFFGen is free software: you can redistribute it and/or modify */
7 /* it under the terms of the GNU General Public License as published by */
8 /* the Free Software Foundation, either version 3 of the License, or */
9 /* (at your option) any later version. */
10 /* */
11 /* RFFGen is distributed in the hope that it will be useful, */
12 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14 /* GNU General Public License for more details. */
15 /* */
16 /* You should have received a copy of the GNU General Public License */
17 /* along with RFFGen. If not, see <http://www.gnu.org/licenses/>. */
18 /* */
19 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
20 
21 #ifndef RFFGEN_LINEAR_ALGEBRA_INVARIANTS_HH
22 #define RFFGEN_LINEAR_ALGEBRA_INVARIANTS_HH
23 
24 #include "mixedInvariants.hh"
25 #include "modifiedMixedInvariants.hh"
26 #include "modifiedPrincipalInvariants.hh"
27 #include "principalInvariants.hh"
28 
29 namespace RFFGen
30 {
31  namespace LinearAlgebra
32  {
37  enum class Invariant { PRINCIPAL, MIXED, MODIFIED, MODIFIED_MIXED };
38 
42  template <Invariant> struct InvariantTraits;
51  template <>
52  struct InvariantTraits<Invariant::PRINCIPAL>
53  {
55  template <class Matrix>
57 
59  template <class Matrix>
61 
63  template <class Matrix>
65 
66 
68  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>() >
70 
72  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>() >
74 
76  template <class Matrix>
78  };
79 
84  template <>
85  struct InvariantTraits<Invariant::MODIFIED>
86  {
88  template <class Matrix>
90 
92  template <class Matrix>
94 
96  template <class Matrix>
98 
99 
101  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>() >
103 
105  template < class Matrix , int offset = LinearAlgebra::dimension<Matrix>() >
107 
109  template <class Matrix>
111  };
112 
117  template <>
118  struct InvariantTraits<Invariant::MIXED>
119  {
121  template <class Matrix>
123 
125  template <class Matrix>
127 
129  template <class Matrix>
131 
133  template <class Matrix>
135 
137  template <class Matrix>
139 
141  template <class Matrix>
143  };
144 
149  template <>
150  struct InvariantTraits<Invariant::MODIFIED_MIXED>
151  {
153  template <class Matrix>
155 
157  template <class Matrix>
159 
161  template <class Matrix>
163 
164 
166  template <class Matrix>
168 
170  template <class Matrix>
172 
174  template <class Matrix>
176  };
177  }
178 }
179 
180 #endif // RFFGEN_LINEAR_ALGEBRA_INVARIANTS_HH
FirstPrincipalInvariant< Matrix > FirstInvariant
First principal invariant.
Definition: invariants.hh:56
First modified mixed invariant .
Definition: modifiedMixedInvariants.hh:48
Second modified mixed invariant .
Definition: modifiedMixedInvariants.hh:69
Chain of functions and of type F resp. G (F and G must satisfy the requirements of Concepts::Funct...
Definition: chain.hh:61
Possibly scaled, shifted invariant , where for the first two (principal,modified) invariants and fo...
Definition: shiftedInvariant.hh:43
Third modified mixed invariant .
Definition: modifiedMixedInvariants.hh:90
ThirdModifiedPrincipalInvariant< Matrix > ThirdInvariant
Third modified principal invariant.
Definition: invariants.hh:97
ThirdPrincipalInvariant< Matrix > ThirdInvariant
Third principal invariant.
Definition: invariants.hh:64
Second principal invariant for .
Definition: principalInvariants.hh:114
ThirdPrincipalInvariant< Matrix > ThirdModifiedPrincipalInvariant
Third modified principal invariant is the same as the third principal invariant. This invariant descr...
Definition: modifiedPrincipalInvariants.hh:87
Determinant< Matrix > ThirdPrincipalInvariant
Third principal invariant for .
Definition: principalInvariants.hh:172
Isochoric (volume-preserving), second modified principal invariant , where is the second and is the...
Definition: modifiedPrincipalInvariants.hh:67
Invariant
Enum to statically choose invariant traits.
Definition: invariants.hh:37
Isochoric (volume-preserving), first modified principal invariant , where is the first and is the t...
Definition: modifiedPrincipalInvariants.hh:46
Trace< Matrix > FirstPrincipalInvariant
First principal invariant for .
Definition: principalInvariants.hh:107