From 0afecfcae7441e7fba2f69e973b972a00e63b1a2 Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Sat, 4 Jan 2020 03:11:19 -0500 Subject: [PATCH] Nearing well optimised state --- tests/solver/Test_dwf_hdcr.cc | 77 ++++++++++++++++------------------- 1 file changed, 36 insertions(+), 41 deletions(-) diff --git a/tests/solver/Test_dwf_hdcr.cc b/tests/solver/Test_dwf_hdcr.cc index 817f51c7..5a131a57 100644 --- a/tests/solver/Test_dwf_hdcr.cc +++ b/tests/solver/Test_dwf_hdcr.cc @@ -135,8 +135,8 @@ public: CoarseVector Ctmp(_CoarseOperator.Grid()); CoarseVector Csol(_CoarseOperator.Grid()); - ConjugateGradient CG(1.0e-3,1000,false); - ConjugateGradient fCG(1.0e-3,15,false); + ConjugateGradient CG(1.0e-3,100,false); + ConjugateGradient fCG(1.0e-3,10,false); HermitianLinearOperator HermOp(_CoarseOperator); MdagMLinearOperator MdagMOp(_CoarseOperator); @@ -165,7 +165,7 @@ public: _Aggregates.ProjectToSubspace (Csrc,tmp); HermOp.AdjOp(Csrc,Ctmp);// Normal equations - Csol=Zero(); + _Guess(Ctmp,Csol); CG(MdagMOp,Ctmp,Csol); HermOp.Op(Csol,Ctmp); @@ -274,9 +274,10 @@ public: CoarseVector Csrc(_CoarseOperator.Grid()); CoarseVector Ctmp(_CoarseOperator.Grid()); + CoarseVector Ctmp1(_CoarseOperator.Grid()); CoarseVector Csol(_CoarseOperator.Grid()); - ConjugateGradient CG(3.0e-2,100000); + ConjugateGradient CG(5.0e-2,100000); HermitianLinearOperator HermOp(_CoarseOperator); MdagMLinearOperator MdagMOp(_CoarseOperator); @@ -323,10 +324,20 @@ public: _Aggregates.ProjectToSubspace (Csrc,vec1); std::cout< HermIndefOpDD(DdwfDD); CoarsenedMatrix LDOp(*Coarse5d,1); // Hermitian matrix LDOp.CoarsenOperator(FGrid,HermIndefOp,Aggregates); + exit(0); CoarseVector c_src (Coarse5d); CoarseVector c_res (Coarse5d); gaussian(CRNG,c_src); + result=Zero(); c_res=Zero(); ////////////////////////////////////////////////// @@ -515,12 +509,12 @@ int main (int argc, char ** argv) double c_first = 0.2; double c_div = 1.2; - std::vector c_lo(nb); + std::vector c_lo(nbasis/2); c_lo[0] = c_first; - for(int b=1;b c_ord(nb,200); + std::vector c_ord(nbasis/2,200); c_ord[0]=500; #define RECURSIVE_MULTIGRID @@ -562,14 +556,15 @@ int main (int argc, char ** argv) std::cout< IRLHermOp(LDOp); - Chebyshev IRLCheby(0.01,14,161); + Chebyshev IRLCheby(0.005,16.0,51); + // IRLCheby.InitLowPass(0.01,18.0,51); FunctionHermOp IRLOpCheby(IRLCheby,IRLHermOp); PlainHermOp IRLOp (IRLHermOp); - int Nstop=32; - int Nk=32; + int Nstop=24; + int Nk=24; int Nm=48; - ImplicitlyRestartedLanczos IRL(IRLOpCheby,IRLOp,Nstop,Nk,Nm,1.0e-4,20); + ImplicitlyRestartedLanczos IRL(IRLOpCheby,IRLOp,Nstop,Nk,Nm,1.0e-3,20); int Nconv; std::vector eval(Nm); std::vector evec(Nm,Coarse5d);