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:
parent
0f6009a29f
commit
bbe1d5b49e
@ -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);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user