diff --git a/Grid/algorithms/multigrid/Aggregates.h b/Grid/algorithms/multigrid/Aggregates.h index 6957304b..7d775a79 100644 --- a/Grid/algorithms/multigrid/Aggregates.h +++ b/Grid/algorithms/multigrid/Aggregates.h @@ -310,6 +310,58 @@ public: std::cout< "< &hermop, + double hi + ) { + + RealD scale; + + FineField noise(FineGrid); + FineField Mn(FineGrid); + FineField tmp(FineGrid); + + // New normalised noise + for(int b =0;b "< Cheb1(3.0,hi,300); + Chebyshev Cheb2(1.0,hi,50); + Chebyshev Cheb3(0.5,hi,300); + Chebyshev Cheb4(0.05,hi,500); + Chebyshev Cheb5(0.01,hi,2000); + */ + /* 242 + Chebyshev Cheb1(0.1,hi,300); + Chebyshev Cheb2(0.02,hi,1000); + Chebyshev Cheb3(0.003,hi,2000); + */ + Chebyshev Cheb2(0.001,hi,2500); + Chebyshev Cheb1(0.02,hi,600); + Cheb1(hermop,noise,Mn); scale = std::pow(norm2(Mn),-0.5); noise=Mn*scale; + hermop.Op(noise,tmp); std::cout< "< "< "< "< "< "< &hermop, @@ -373,7 +425,10 @@ public: ConjugateGradient CGsloppy(tol,maxit,false); ShiftedHermOpLinearOperator ShiftedFineHermOp(hermop,MirsShift); CGsloppy(hermop,subspace[b],tmp); + RealD scale = std::pow(norm2(tmp),-0.5); tmp=tmp*scale; subspace[b]=tmp; + hermop.Op(subspace[b],tmp); + std::cout< "<