RFFGen
 All Classes Namespaces Files Functions Typedefs Enumerations Groups
modifiedMixedInvariants.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_MODIFIED_MIXED_INVARIANTS_HH
22 #define RFFGEN_LINEAR_ALGEBRA_MODIFIED_MIXED_INVARIANTS_HH
23 
24 #include <tuple>
25 
26 #include "../constant.hh"
27 #include "mixedInvariants.hh"
28 #include "shiftedInvariant.hh"
29 #include "../Util/modifyInvariants.hh"
30 
31 namespace RFFGen
32 {
36  namespace Concepts { template <class> struct SymmetricMatrixConceptCheck; }
41  namespace LinearAlgebra
42  {
47  template <class Matrix, class = Concepts::SymmetricMatrixConceptCheck<Matrix> >
49  : ModifyFirstPrincipalInvariant<Matrix,FirstMixedInvariant<Matrix> >
50  {
52  FirstModifiedMixedInvariant() = default;
53 
59  FirstModifiedMixedInvariant(const Matrix& A, const Constant<Matrix>& M)
60  : ModifyFirstPrincipalInvariant<Matrix,FirstMixedInvariant<Matrix> > ( A , FirstMixedInvariant<Matrix>(A,M) )
61  {}
62  };
63 
68  template <class Matrix, class = Concepts::SymmetricMatrixConceptCheck<Matrix>>
70  : ModifySecondPrincipalInvariant<Matrix,SecondMixedInvariant<Matrix> >
71  {
73  SecondModifiedMixedInvariant() = default;
74 
81  : ModifySecondPrincipalInvariant<Matrix,SecondMixedInvariant<Matrix> > ( A , SecondMixedInvariant<Matrix>(A,M) )
82  {}
83  };
84 
89  template <class Matrix, class = Concepts::SymmetricMatrixConceptCheck<Matrix> >
91  : ModifyFirstPrincipalInvariant<Matrix,ThirdMixedInvariant<Matrix> >
92  {
94  ThirdModifiedMixedInvariant() = default;
95 
102  : ModifyFirstPrincipalInvariant<Matrix,ThirdMixedInvariant<Matrix> > ( A , ThirdMixedInvariant<Matrix>(A,M) )
103  {}
104  };
105 
110  template <class Matrix>
112 
117  template <class Matrix>
119 
124  template <class Matrix>
126  }
127 }
128 
129 #endif // RFFGEN_LINEAR_ALGEBRA_MODIFIED_MIXED_INVARIANTS_HH
FirstModifiedMixedInvariant(const Matrix &A, const Constant< Matrix > &M)
Constructor.
Definition: modifiedMixedInvariants.hh:59
ThirdModifiedMixedInvariant(const Matrix &A, const Constant< Matrix > &M)
Constructor.
Definition: modifiedMixedInvariants.hh:101
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
SecondModifiedMixedInvariant()=default
Default constructor.
SecondModifiedMixedInvariant(const Matrix &A, const Constant< Matrix > &M)
Constructor.
Definition: modifiedMixedInvariants.hh:80
Third modified mixed invariant .
Definition: modifiedMixedInvariants.hh:90
Wrap a constant.
Definition: constant.hh:41
ThirdModifiedMixedInvariant()=default
Default constructor.
FirstModifiedMixedInvariant()=default
Default constructor.