36static constexpr int Xdir = 0;
37static constexpr int Ydir = 1;
38static constexpr int Zdir = 2;
39static constexpr int Tdir = 3;
41static constexpr int Xp = 0;
42static constexpr int Yp = 1;
43static constexpr int Zp = 2;
44static constexpr int Tp = 3;
45static constexpr int Xm = 4;
46static constexpr int Ym = 5;
47static constexpr int Zm = 6;
48static constexpr int Tm = 7;
51static constexpr int Ns=4;
52static constexpr int Nd=4;
53static constexpr int Nhs=2;
54static constexpr int Nds=8;
55static constexpr int Ngp=2;
63#define ColourIndex (2)
65#define LorentzIndex (0)
66#define GparityFlavourIndex (0)
524#define FAST_FERM_TO_PROP
525template <
class Fimpl>
526void FermToProp(
typename Fimpl::PropagatorField &p,
const typename Fimpl::FermionField &f,
const int s,
const int c)
528#ifdef FAST_FERM_TO_PROP
532 for(int ss = 0; ss < Ns; ++ss) {
533 for(int cc = 0; cc < Fimpl::Dimension; ++cc) {
534 p_v[idx]()(ss,s)(cc,c) = f_v[idx]()(ss)(cc);
538 for(
int j = 0; j <
Ns; ++j)
543 for(
int i = 0; i < Fimpl::Dimension; ++i)
553template <
class Fimpl>
554void PropToFerm(
typename Fimpl::FermionField &f,
const typename Fimpl::PropagatorField &p,
const int s,
const int c)
556#ifdef FAST_FERM_TO_PROP
560 for(int ss = 0; ss < Ns; ++ss) {
561 for(int cc = 0; cc < Fimpl::Dimension; ++cc) {
562 f_v[idx]()(ss)(cc) = p_v[idx]()(ss,s)(cc,c);
566 for(
int j = 0; j <
Ns; ++j)
571 for(
int i = 0; i < Fimpl::Dimension; ++i)
599template<
int Index,
class vobj>
604template<
int Index,
class vobj>
609template<
int Index,
class vobj>
614template<
int Index,
class vobj>
std::vector< T, uvmAllocator< T > > Vector
void PokeIndex(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< Index >(vobj(), 0))> &rhs, int i)
auto PeekIndex(const Lattice< vobj > &lhs, int i) -> Lattice< decltype(peekIndex< Index >(vobj(), i))>
#define autoView(l_v, l, mode)
#define GRID_SERIALIZABLE_ENUM(name, undefname,...)
#define NAMESPACE_BEGIN(A)
iSinglet< vComplex > vTComplex
iColourMatrix< Complex > ColourMatrix
iVector< iVector< iVector< vtype, Nc >, Ns >, Ngp > iGparitySpinColourVector
Lattice< vSpinColourMatrixD2 > LatticeSpinColourMatrixD2
iSinglet< ComplexF > TComplexF
iSpinVector< vComplex > vSpinVector
iDoubleStoredColourMatrix< vComplexD > vDoubleStoredColourMatrixD
iHalfSpinVector< vComplex > vHalfSpinVector
iSpinVector< ComplexF > SpinVectorF
iColourVector< ComplexF > ColourVectorF
LatticeSpinColourVector LatticeFermion
Lattice< vColourMatrix > LatticeStaggeredPropagator
Lattice< vColourVectorF > LatticeStaggeredFermionF
LatticeHalfSpinColourVectorD2 LatticeHalfFermionD2
iLorentzComplex< ComplexF > LorentzComplexF
Lattice< vSpinColourMatrix > LatticeSpinColourMatrix
Lattice< vColourVectorD2 > LatticeColourVectorD2
iGparityFlavourMatrix< vComplexD2 > vGparityFlavourMatrixD2
iSinglet< vComplexF > vTComplexF
iSpinColourVector< vComplexD2 > vSpinColourVectorD2
Lattice< vColourMatrixD > LatticeColourMatrixD
iScalar< iVector< iScalar< vtype >, Nhs > > iHalfSpinVector
Lattice< vTReal > LatticeReal
iSpinColourSpinColourMatrix< vComplexD2 > vSpinColourSpinColourMatrixD2
void pokeLorentz(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< LorentzIndex >(vobj(), 0))> &rhs, int i)
auto traceSpin(const Lattice< vobj > &lhs) -> Lattice< decltype(traceIndex< SpinIndex >(vobj()))>
Lattice< vHalfSpinColourVectorD2 > LatticeHalfSpinColourVectorD2
Lattice< vColourVector > LatticeColourVector
iVector< iScalar< iMatrix< vtype, Nc > >, Nds > iDoubleStoredColourMatrix
iColourMatrix< vComplexD > vColourMatrixD
iSinglet< vRealF > vTRealF
iLorentzColourMatrix< vComplexD2 > vLorentzColourMatrixD2
iSpinColourSpinColourMatrix< ComplexF > SpinColourSpinColourMatrixF
LatticeDoubleStoredColourMatrixD2 LatticeDoubledGaugeFieldD2
void FermToProp(typename Fimpl::PropagatorField &p, const typename Fimpl::FermionField &f, const int s, const int c)
iColourVector< vComplex > vColourVector
iSpinVector< vComplexD > vSpinVectorD
iSinglet< vComplexD2 > vTComplexD2
Lattice< vSpinColourVectorD2 > LatticeSpinColourVectorD2
Lattice< vColourMatrixD2 > LatticeColourMatrixD2
iScalar< iMatrix< iMatrix< iMatrix< iMatrix< vtype, Nc >, Ns >, Nc >, Ns > > iSpinColourSpinColourMatrix
Lattice< vLorentzColourMatrixD2 > LatticeLorentzColourMatrixD2
iHalfSpinColourVector< ComplexF > HalfSpinColourVectorF
iScalar< iMatrix< iMatrix< vtype, Nc >, Ns > > iSpinColourMatrix
iSpinMatrix< ComplexD > SpinMatrixD
iSpinVector< ComplexD > SpinVectorD
iLorentzColourMatrix< vComplexD > vLorentzColourMatrixD
static constexpr int DaggerYes
iSpinColourMatrix< ComplexF > SpinColourMatrixF
iSinglet< ComplexD > TComplexD
Lattice< vSpinColourMatrixD > LatticeSpinColourMatrixD
Lattice< vTInteger > LatticeInteger
iGparityFlavourMatrix< vComplexD > vGparityFlavourMatrixD
iColourMatrix< vComplexD2 > vColourMatrixD2
iGparityFlavourMatrix< ComplexD > GparityFlavourMatrixD
iVector< iScalar< iScalar< vtype > >, Ngp > iGparityFlavourVector
Lattice< vHalfSpinVectorD > LatticeHalfSpinVectorD
iVector< iVector< iVector< vtype, Nc >, Nhs >, Ngp > iGparityHalfSpinColourVector
LatticeSpinColourMatrix LatticePropagator
LatticeLorentzColourMatrixD LatticeGaugeFieldD
Lattice< vHalfSpinVector > LatticeHalfSpinVector
iLorentzComplex< vComplexF > vLorentzComplexF
iSpinMatrix< vComplex > vSpinMatrix
Lattice< vColourVectorD > LatticeStaggeredFermionD
iDoubleStoredColourMatrix< ComplexD > DoubleStoredColourMatrixD
iGparityFlavourMatrix< Complex > GparityFlavourMatrix
Lattice< vTComplexD > LatticeComplexD
void PropToFerm(typename Fimpl::FermionField &f, const typename Fimpl::PropagatorField &p, const int s, const int c)
iSinglet< vComplexD > vTComplexD
iSpinColourVector< vComplexF > vSpinColourVectorF
iColourVector< vComplexD2 > vColourVectorD2
LatticeLorentzColourMatrixF LatticeGaugeFieldF
iScalar< iScalar< iVector< vtype, Nc > > > iColourVector
iSpinColourMatrix< vComplexD2 > vSpinColourMatrixD2
LatticeSpinColourMatrixD2 LatticePropagatorD2
iDoubleStoredColourMatrix< vComplexF > vDoubleStoredColourMatrixF
LatticeSpinColourVectorD LatticeFermionD
const int GparityFlavourTensorIndex
Lattice< vLorentzColourMatrixD > LatticeLorentzColourMatrixD
Lattice< vSpinColourVector > LatticeSpinColourVector
LatticeSpinColourVectorF LatticeFermionF
iSpinColourMatrix< ComplexD > SpinColourMatrixD
Lattice< vSpinColourVectorF > LatticeSpinColourVectorF
LatticeDoubleStoredColourMatrix LatticeDoubledGaugeField
LatticeHalfSpinColourVector LatticeHalfFermion
Lattice< vSpinVectorF > LatticeSpinVectorF
iColourVector< ComplexD > ColourVectorD
iSpinColourSpinColourMatrix< vComplexF > vSpinColourSpinColourMatrixF
iDoubleStoredColourMatrix< ComplexF > DoubleStoredColourMatrixF
iLorentzComplex< vComplexD > vLorentzComplexD
Lattice< vLorentzColourMatrix > LatticeLorentzColourMatrix
iScalar< iScalar< iScalar< vtype > > > iSinglet
Lattice< vLorentzComplexD > LatticeLorentzComplexD
iLorentzColourMatrix< vComplexF > vLorentzColourMatrixF
iMatrix< iScalar< iScalar< vtype > >, Ngp > iGparityFlavourMatrix
Lattice< vobj > transposeSpin(const Lattice< vobj > &lhs)
iDoubleStoredColourMatrix< Complex > DoubleStoredColourMatrix
Invoke< std::enable_if< isSpinor< T >::value, int > > IfSpinor
iGparityFlavourVector< Complex > GparityFlavourVector
LatticeHalfSpinColourVectorF LatticeHalfFermionF
iHalfSpinColourVector< vComplexD2 > vHalfSpinColourVectorD2
static constexpr int Xdir
Lattice< vColourVectorF > LatticeColourVectorF
iHalfSpinVector< vComplexD2 > vHalfSpinVectorD2
static constexpr int Tdir
iVector< iScalar< iMatrix< vtype, Nc > >, Nd > iLorentzColourMatrix
iColourMatrix< ComplexF > ColourMatrixF
iLorentzColourMatrix< Complex > LorentzColourMatrix
iSpinMatrix< vComplexD > vSpinMatrixD
iScalar< iScalar< iMatrix< vtype, Nc > > > iColourMatrix
Lattice< vSpinColourVectorD > LatticeSpinColourVectorD
Lattice< vColourMatrixD > LatticeStaggeredPropagatorD
iSpinColourVector< vComplex > vSpinColourVector
static constexpr int Zdir
Lattice< vHalfSpinColourVectorD > LatticeHalfSpinColourVectorD
iScalar< iVector< iScalar< vtype >, Ns > > iSpinVector
iHalfSpinColourVector< ComplexD > HalfSpinColourVectorD
iSpinColourVector< vComplexD > vSpinColourVectorD
Lattice< vSpinVector > LatticeSpinVector
iHalfSpinColourVector< Complex > HalfSpinColourVector
iColourMatrix< ComplexD > ColourMatrixD
void pokeSpin(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< SpinIndex >(vobj(), 0))> &rhs, int i)
Invoke< std::enable_if<!isSpinor< T >::value, int > > IfNotSpinor
iGparityFlavourVector< vComplex > vGparityFlavourVector
LatticeLorentzColourMatrixD2 LatticeGaugeFieldD2
LatticeSpinColourVectorD2 LatticeFermionD2
Lattice< vColourVectorD > LatticeColourVectorD
iLorentzColourMatrix< ComplexD > LorentzColourMatrixD
Lattice< vobj > transposeColour(const Lattice< vobj > &lhs)
iDoubleStoredColourMatrix< vComplexD2 > vDoubleStoredColourMatrixD2
iLorentzComplex< vComplex > vLorentzComplex
iSinglet< Integer > TInteger
Lattice< vSpinVectorD > LatticeSpinVectorD
Lattice< vLorentzColourMatrixF > LatticeLorentzColourMatrixF
iHalfSpinColourVector< vComplexF > vHalfSpinColourVectorF
iSpinColourVector< ComplexD > SpinColourVectorD
LatticeSpinColourMatrixD LatticePropagatorD
Lattice< vHalfSpinVectorF > LatticeHalfSpinVectorF
Lattice< vColourMatrixF > LatticeColourMatrixF
Lattice< vSpinColourMatrixF > LatticeSpinColourMatrixF
Lattice< vHalfSpinColourVectorF > LatticeHalfSpinColourVectorF
iHalfSpinVector< ComplexD > HalfSpinVectorD
Lattice< vColourMatrix > LatticeColourMatrix
iHalfSpinColourVector< vComplexD > vHalfSpinColourVectorD
iColourMatrix< vComplex > vColourMatrix
iSpinColourSpinColourMatrix< Complex > SpinColourSpinColourMatrix
Lattice< vLorentzComplex > LatticeLorentzComplex
Invoke< std::enable_if<!isCoarsened< T >::value, int > > IfNotCoarsened
iGparityFlavourVector< ComplexF > GparityFlavourVectorF
Lattice< vTRealD > LatticeRealD
iVector< iScalar< iScalar< vtype > >, Nd > iLorentzComplex
iSpinColourSpinColourMatrix< vComplex > vSpinColourSpinColourMatrix
iLorentzColourMatrix< vComplex > vLorentzColourMatrix
iColourVector< Complex > ColourVector
iHalfSpinVector< vComplexF > vHalfSpinVectorF
iLorentzColourMatrix< ComplexF > LorentzColourMatrixF
auto peekColour(const vobj &rhs, int i) -> decltype(PeekIndex< ColourIndex >(rhs, 0))
Lattice< vTComplexD2 > LatticeComplexD2
Lattice< vColourMatrixF > LatticeStaggeredPropagatorF
static constexpr int DaggerNo
Lattice< vSpinMatrix > LatticeSpinMatrix
iSpinColourVector< ComplexF > SpinColourVectorF
iGparityFlavourVector< vComplexD2 > vGparityFlavourVectorD2
iLorentzComplex< Complex > LorentzComplex
iScalar< iVector< iVector< vtype, Nc >, Ns > > iSpinColourVector
iColourVector< vComplexF > vColourVectorF
Lattice< vTComplexF > LatticeComplexF
Lattice< vSpinColourSpinColourMatrix > LatticeSpinColourSpinColourMatrix
LatticeLorentzColourMatrix LatticeGaugeField
iColourVector< vComplexD > vColourVectorD
iGparityFlavourVector< vComplexD > vGparityFlavourVectorD
Lattice< vTComplex > LatticeComplex
iSpinMatrix< ComplexF > SpinMatrixF
iHalfSpinVector< vComplexD > vHalfSpinVectorD
iLorentzComplex< ComplexD > LorentzComplexD
static constexpr int Ydir
iSinglet< vInteger > vTInteger
Lattice< vColourVectorD2 > LatticeStaggeredFermionD2
iColourMatrix< vComplexF > vColourMatrixF
iGparityFlavourMatrix< vComplex > vGparityFlavourMatrix
iSpinVector< Complex > SpinVector
iDoubleStoredColourMatrix< vComplex > vDoubleStoredColourMatrix
iHalfSpinVector< ComplexF > HalfSpinVectorF
LatticeDoubleStoredColourMatrixD LatticeDoubledGaugeFieldD
Lattice< vDoubleStoredColourMatrixD2 > LatticeDoubleStoredColourMatrixD2
static constexpr int InverseNo
Lattice< vLorentzComplexF > LatticeLorentzComplexF
Lattice< vSpinColourSpinColourMatrixD2 > LatticeSpinColourSpinColourMatrixD2
iSpinColourMatrix< Complex > SpinColourMatrix
auto peekSpin(const vobj &rhs, int i) -> decltype(PeekIndex< SpinIndex >(rhs, 0))
Lattice< vTRealF > LatticeRealF
Lattice< iScalar< typename GF::vector_object::element > > LorentzScalar
iSpinColourVector< Complex > SpinColourVector
Lattice< vSpinColourSpinColourMatrixD > LatticeSpinColourSpinColourMatrixD
iSpinColourSpinColourMatrix< vComplexD > vSpinColourSpinColourMatrixD
iGparityFlavourVector< vComplexF > vGparityFlavourVectorF
Lattice< vHalfSpinVectorD2 > LatticeHalfSpinVectorD2
iSpinColourMatrix< vComplex > vSpinColourMatrix
void pokeColour(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< ColourIndex >(vobj(), 0))> &rhs, int i)
static constexpr int InverseYes
iSpinMatrix< Complex > SpinMatrix
LatticeHalfSpinColourVectorD LatticeHalfFermionD
iSpinMatrix< vComplexF > vSpinMatrixF
iSpinColourMatrix< vComplexF > vSpinColourMatrixF
iGparityFlavourVector< ComplexD > GparityFlavourVectorD
LatticeDoubleStoredColourMatrixF LatticeDoubledGaugeFieldF
Lattice< vDoubleStoredColourMatrixD > LatticeDoubleStoredColourMatrixD
iSpinVector< vComplexD2 > vSpinVectorD2
Lattice< vSpinMatrixD2 > LatticeSpinMatrixD2
iHalfSpinColourVector< vComplex > vHalfSpinColourVector
iHalfSpinVector< Complex > HalfSpinVector
iSinglet< vRealD > vTRealD
Lattice< vSpinMatrixF > LatticeSpinMatrixF
iScalar< iVector< iVector< vtype, Nc >, Nhs > > iHalfSpinColourVector
Lattice< vSpinColourSpinColourMatrixF > LatticeSpinColourSpinColourMatrixF
Lattice< vColourMatrixD2 > LatticeStaggeredPropagatorD2
Lattice< vDoubleStoredColourMatrix > LatticeDoubleStoredColourMatrix
Lattice< vColourVector > LatticeStaggeredFermion
Lattice< vDoubleStoredColourMatrixF > LatticeDoubleStoredColourMatrixF
Lattice< vSpinMatrixD > LatticeSpinMatrixD
iScalar< iMatrix< iScalar< vtype >, Ns > > iSpinMatrix
Invoke< std::enable_if< isCoarsened< T >::value, int > > IfCoarsened
iSinglet< Complex > TComplex
iSpinVector< vComplexF > vSpinVectorF
iSpinColourSpinColourMatrix< ComplexD > SpinColourSpinColourMatrixD
auto traceColour(const Lattice< vobj > &lhs) -> Lattice< decltype(traceIndex< ColourIndex >(vobj()))>
LatticeSpinColourMatrixF LatticePropagatorF
Lattice< vHalfSpinColourVector > LatticeHalfSpinColourVector
iSpinColourMatrix< vComplexD > vSpinColourMatrixD
iSpinMatrix< vComplexD2 > vSpinMatrixD2
iGparityFlavourMatrix< ComplexF > GparityFlavourMatrixF
auto peekLorentz(const vobj &rhs, int i) -> decltype(PeekIndex< LorentzIndex >(rhs, 0))
Lattice< vSpinVectorD2 > LatticeSpinVectorD2
iGparityFlavourMatrix< vComplexF > vGparityFlavourMatrixF
accelerator_inline void pokeIndex(vtype &ret, const decltype(TensorIndexRecursion< Level >::peekIndex(ret, 0)) &arg, int i)
accelerator_inline auto peekIndex(const vtype &arg, int i) -> RemoveCRV(TensorIndexRecursion< Level >::peekIndex(arg, 0))
accelerator_inline auto transposeIndex(const vtype &arg) -> RemoveCRV(TensorIndexRecursion< Level >::transposeIndex(arg))
accelerator_inline auto traceIndex(const vtype &arg) -> RemoveCRV(TensorIndexRecursion< Level >::traceIndex(arg))
#define thread_for(i, num,...)
static constexpr bool value
static constexpr bool value