21 #ifndef RFFGEN_UTIL_MODIFY_INVARIANTS_HH
22 #define RFFGEN_UTIL_MODIFY_INVARIANTS_HH
24 #include "../operations.hh"
25 #include "../CMath/pow.hh"
34 template <
class Matrix,
class FirstInvariant>
35 using FirstPrincipalInvariantBase = MathematicalOperations::Product< MathematicalOperations::Chain<CMath::Pow<-1,3> , LinearAlgebra::ThirdPrincipalInvariant<Matrix> > , FirstInvariant >;
37 template <
class Matrix,
class SecondInvariant>
38 using SecondPrincipalInvariantBase = MathematicalOperations::Product< MathematicalOperations::Chain<CMath::Pow<-2,3> , LinearAlgebra::ThirdPrincipalInvariant<Matrix> > , SecondInvariant >;
41 template <
class Matrix,
class FirstInvariant>
42 struct ModifyFirstPrincipalInvariant : Detail::FirstPrincipalInvariantBase<Matrix,FirstInvariant>
44 ModifyFirstPrincipalInvariant() =
default;
46 ModifyFirstPrincipalInvariant(
const Matrix& A,
const FirstInvariant& inv)
47 : Detail::FirstPrincipalInvariantBase<Matrix,FirstInvariant> ( A , inv )
51 template <
class Matrix,
class SecondInvariant>
52 struct ModifySecondPrincipalInvariant : Detail::SecondPrincipalInvariantBase<Matrix,SecondInvariant>
54 ModifySecondPrincipalInvariant() =
default;
56 ModifySecondPrincipalInvariant(
const Matrix& A,
const SecondInvariant& inv)
57 : Detail::SecondPrincipalInvariantBase<Matrix,SecondInvariant> ( A , inv )
65 #endif // RFFGEN_UTIL_MODIFY_INVARIANTS_HH