diff --git a/Grid/algorithms/CoarsenedMatrix.h b/Grid/algorithms/CoarsenedMatrix.h index c19bef19..7f729bbc 100644 --- a/Grid/algorithms/CoarsenedMatrix.h +++ b/Grid/algorithms/CoarsenedMatrix.h @@ -240,7 +240,7 @@ public: // // World of possibilities here. // Experiments - // i) Use inverse iteration method equivaleent with Chebyshve + // i) Use inverse iteration method equivaleent with Chebyshev // ii) Multiply by Fourier phases // iii) Multiply by Fourier phases and refilter // @@ -248,10 +248,31 @@ public: RealD scale; - const int dependent=4; + const int dependent=16; - Chebyshev ChebDependent(1.0,64.0,100); - Chebyshev ChebFilt (0.1,64.0,900); + Chebyshev ChebFilt (0.03,64.0,500); + Chebyshev ChebDependent(0.01,64.0,200); + +#if 0 + auto latt_size = FineGrid->GlobalDimensions(); + Coordinate Fourier[dependent] = { + Coordinate({0, 0,0,0,0}), + Coordinate({0, 1,0,0,0}), + Coordinate({0,-1,0,0,0}), + Coordinate({0,0, 1,0,0}), + Coordinate({0,0,-1,0,0}), + Coordinate({0,0,0, 1,0}), + Coordinate({0,0,0,-1,0}), + Coordinate({0,0,0,0, 1}), + Coordinate({0,0,0,0,-1}) + }; + + ComplexD ci(0.0,1.0); + Lattice C(FineGrid); + Lattice coor(FineGrid); + FineField save(FineGrid); + FineField tmp (FineGrid); +#endif FineField noise(FineGrid); FineField Mn(FineGrid); @@ -262,16 +283,29 @@ public: gaussian(RNG,noise); scale = std::pow(norm2(noise),-0.5); noise=noise*scale; + // save=noise; // Initial matrix element hermop.Op(noise,Mn); std::cout< "< "< "<