1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-10 15:55:37 +00:00

WilsonMG: Temporarily use GMRES in construction of basis vectors

This can go back to CG once Mdag in CoarsenedMatrix works.
This commit is contained in:
Daniel Richtmann 2018-03-23 20:00:41 +01:00
parent 0f6009a29f
commit bbe1d5b49e
No known key found for this signature in database
GPG Key ID: B33C490AF0772057

View File

@ -209,7 +209,8 @@ namespace Grid {
RealD scale; RealD scale;
ConjugateGradient<FineField> CG(1.0e-2,10000); TrivialPrecon<FineField> TrivialPrec;
FlexibleGeneralisedMinimalResidual<FineField> FGMRES(1.0e-14,1,TrivialPrec,1,false); // TODO: need to use GMRES as long as Mdag doesn't work on coarser levels (i.e., MdagM isn't hermitian)
FineField noise(FineGrid); FineField noise(FineGrid);
FineField Mn(FineGrid); FineField Mn(FineGrid);
@ -223,7 +224,7 @@ namespace Grid {
for(int i=0;i<3;i++){ for(int i=0;i<3;i++){
CG(hermop,noise,subspace[b]); FGMRES(hermop,noise,subspace[b]);
noise = subspace[b]; noise = subspace[b];
scale = std::pow(norm2(noise),-0.5); scale = std::pow(norm2(noise),-0.5);
@ -302,7 +303,7 @@ namespace Grid {
return norm2(out); return norm2(out);
}; };
RealD Mdag (const CoarseVector &in, CoarseVector &out){ RealD Mdag (const CoarseVector &in, CoarseVector &out){ // TODO: get this correct
return M(in,out); return M(in,out);
}; };