#include using namespace std; using namespace Grid; using namespace Grid::QCD; template struct scal { d internal; }; Gamma::GammaMatrix Gmu [] = { Gamma::GammaX, Gamma::GammaY, Gamma::GammaZ, Gamma::GammaT }; int main (int argc, char ** argv) { Grid_init(&argc,&argv); int threads = GridThread::GetThreads(); std::cout << "Grid is setup to use "< latt4 = GridDefaultLatt(); std::vector simd4 = GridDefaultSimd(Nd,vComplexF::Nsimd()); std::vector mpi4 = GridDefaultMpi(); assert(latt4.size()==4 ); assert(simd4.size()==4 ); assert(mpi4.size() ==4 ); const int Ls=1; std::vector latt5({Ls,latt4[0],latt4[1],latt4[2],latt4[3]}); std::vector simd5({1 ,simd4[0],simd4[1],simd4[2],simd4[3]}); std::vector mpi5({1 , mpi4[0], mpi4[1], mpi4[2], mpi4[3]}); std::vector cb5({0,1,1,1,1}); // Checkerboard 4d only int cbd=1; // use dim-1 to reduce // Four dim grid for gauge field U GridCartesian UGrid(latt4,simd4,mpi4); GridRedBlackCartesian UrbGrid(&UGrid); // Five dim grid for fermions F GridCartesian FGrid(latt5,simd5,mpi5); GridRedBlackCartesian FrbGrid(latt5,simd5,mpi5,cb5,cbd); std::vector seeds4({1,2,3,4}); std::vector seeds5({5,6,7,8}); GridParallelRNG RNG5(&FGrid); RNG5.SeedFixedIntegers(seeds5); LatticeFermion src (&FGrid); random(RNG5,src); LatticeFermion result(&FGrid); result=zero; LatticeFermion ref(&FGrid); ref=zero; LatticeFermion tmp(&FGrid); LatticeFermion err(&FGrid); ColourMatrix cm = Complex(1.0,0.0); GridParallelRNG RNG4(&UGrid); RNG4.SeedFixedIntegers(seeds4); LatticeGaugeField Umu(&UGrid); random(RNG4,Umu); LatticeGaugeField Umu5d(&FGrid); // replicate across fifth dimension for(int ss=0;ssoSites();ss++){ for(int s=0;s U(4,&FGrid); for(int mu=0;mu(Umu5d,mu); } if (1) { ref = zero; for(int mu=0;mu