1#ifndef QCD_UTIL_SUNADJOINT_H
2#define QCD_UTIL_SUNADJOINT_H
32 template <
typename vtype>
55 template <
typename vtype>
69 for (
int a = 0; a < Dimension; a++) SU<ncolour>::generator(a, ta[a]);
73 for (
int b = 0; b < (ncolour * ncolour - 1); b++) {
77 iAdjTa()()(a, b) = iTr;
83 for (
int gen = 0; gen <
Dimension; gen++) {
94 std::cout <<
GridLogMessage <<
"Adjoint - Checking if real" << std::endl;
102 std::cout <<
GridLogMessage <<
"Adjoint - Checking if antisymmetric"
136 Real coefficient = - 1.0/(ncolour) * scale;
147 static std::vector<AMatrix> iTa(
Dimension);
149 static bool precalculated =
false;
151 precalculated =
true;
155 Real coefficient = -1.0 / (ncolour) * scale;
159 auto tmp =
real(
trace(iTa[a] * in)) * coefficient;
GaugeGroup< ncolour, GroupName::SU > SU
accelerator_inline void timesI(Grid_simd2< S, V > &ret, const Grid_simd2< S, V > &in)
accelerator_inline Grid_simd2< S, V > trace(const Grid_simd2< S, V > &arg)
Lattice< vobj > real(const Lattice< vobj > &lhs)
Lattice< vobj > conjugate(const Lattice< vobj > &lhs)
RealD norm2(const Lattice< vobj > &arg)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
auto peekColour(const vobj &rhs, int i) -> decltype(PeekIndex< ColourIndex >(rhs, 0))
void pokeColour(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< ColourIndex >(vobj(), 0))> &rhs, int i)
SU_Adjoint< 5 > SU5Adjoint
SU_Adjoint< 2 > SU2Adjoint
SU_Adjoint< Nc > AdjointMatrices
SU_Adjoint< 3 > SU3Adjoint
SU_Adjoint< 4 > SU4Adjoint
std::complex< Real > Complex
accelerator_inline std::enable_if<!isGridTensor< T >::value, T >::type TensorRemove(T arg)
accelerator_inline ComplexD transpose(ComplexD &rhs)
Lattice< vAlgebraVector > LatticeAlgebraVector
GridBase * Grid(void) const
iSUnAdjointMatrix< ComplexD > AMatrixD
iSUnAdjointMatrix< vComplexF > vAMatrixF
Lattice< iVector< iScalar< iMatrix< vComplexF, Dimension > >, Nd > > LatticeAdjFieldF
static void printGenerators(void)
iScalar< iScalar< iMatrix< vtype, ncolour > > > iSUnMatrix
iSUnAdjointMatrix< ComplexF > AMatrixF
static void AdjointLieAlgebraMatrix(const typename SU< ncolour >::LatticeAlgebraVector &h, LatticeAdjMatrix &out, Real scale=1.0)
iSUnAdjointMatrix< vComplex > vAMatrix
static void generator(int Index, iSUnAdjointMatrix< cplx > &iAdjTa)
iSUnAdjointMatrix< Complex > AMatrix
Lattice< vAMatrix > LatticeAdjMatrix
static void testGenerators(void)
Lattice< iVector< iScalar< iMatrix< vComplex, Dimension > >, Nd > > LatticeAdjField
static void projectOnAlgebra(typename SU< ncolour >::LatticeAlgebraVector &h_out, const LatticeAdjMatrix &in, Real scale=1.0)
static const int Dimension
iSUnAdjointMatrix< vComplexD > vAMatrixD
static void projector(typename SU< ncolour >::LatticeAlgebraVector &h_out, const LatticeAdjMatrix &in, Real scale=1.0)
Lattice< vAMatrixD > LatticeAdjMatrixD
Lattice< vAMatrixF > LatticeAdjMatrixF
Lattice< iVector< iScalar< iMatrix< vComplexD, Dimension > >, Nd > > LatticeAdjFieldD
iScalar< iScalar< iMatrix< vtype, Dimension > > > iSUnAdjointMatrix
Lattice< iScalar< iScalar< iVector< vComplex, Dimension > > > > LatticeAdjVector