diff --git a/Hadrons/Modules.hpp b/Hadrons/Modules.hpp index ffbf34ce..075d6f41 100644 --- a/Hadrons/Modules.hpp +++ b/Hadrons/Modules.hpp @@ -1,82 +1,83 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include #include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/Hadrons/Modules/MDistil/BC2.hpp b/Hadrons/Modules/MDistil/BC2.hpp index cae594cd..f83962f6 100644 --- a/Hadrons/Modules/MDistil/BC2.hpp +++ b/Hadrons/Modules/MDistil/BC2.hpp @@ -125,6 +125,7 @@ template void TBC2::execute(void) { + auto &one = envGet(std::vector, par().one); auto &two = envGet(std::vector, par().two); auto &three = envGet(std::vector, par().three); diff --git a/Hadrons/Modules/MDistil/Distil.hpp b/Hadrons/Modules/MDistil/Distil.hpp index af7e2786..747d5f51 100644 --- a/Hadrons/Modules/MDistil/Distil.hpp +++ b/Hadrons/Modules/MDistil/Distil.hpp @@ -513,6 +513,21 @@ inline void RotateEigen(std::vector & evec) } } +struct DistilParameters: Serializable { + GRID_SERIALIZABLE_CLASS_MEMBERS(DistilParameters, + int, TI, + int, LI, + int, nnoise, + int, tsrc, + int, SI, + int, Ns, + int, Nt, + int, Nt_inv) + DistilParameters() = default; + template DistilParameters(Reader& Reader){read(Reader,"Distil",*this);} +}; + + END_MODULE_NAMESPACE END_HADRONS_NAMESPACE diff --git a/Hadrons/Modules/MDistil/LapEvec.hpp b/Hadrons/Modules/MDistil/LapEvec.hpp index fa62fe49..22ca8526 100644 --- a/Hadrons/Modules/MDistil/LapEvec.hpp +++ b/Hadrons/Modules/MDistil/LapEvec.hpp @@ -316,6 +316,7 @@ void TLapEvec::execute(void) std::cout << GridLogMessage << " Compute eigenpack, Timeslice = " << t << std::endl; std::cout << GridLogMessage << "------------------------------------------------------------" << std::endl; + std::cout << "T: " << t << " / " << Ntfirst + Ntlocal << std::endl; eig[t].resize(LPar.Nk+LPar.Np,gridLD); // Construct smearing operator @@ -356,7 +357,7 @@ void TLapEvec::execute(void) // Now rotate the eigenvectors into our phase convention RotateEigen( eig[t].evec ); - if((1)) { // Debugging only + if((0)) { // Debugging only // Write the eigenvectors and eigenvalues to disk //std::cout << GridLogMessage << "Writing eigenvalues/vectors to " << pszEigenPack << std::endl; eig[t].record.operatorXml = DefaultOperatorXml; @@ -365,6 +366,7 @@ void TLapEvec::execute(void) //std::cout << GridLogMessage << "Written eigenvectors" << std::endl; } } + std::cout << "T: " << t << " / " << Ntfirst + Ntlocal << std::endl; for (int i=0;i DistilParameters(Reader& Reader){read(Reader,"Distil",*this);} }; - + */ struct SolverParameters: Serializable { GRID_SERIALIZABLE_CLASS_MEMBERS(SolverParameters, double, CGPrecision, diff --git a/Hadrons/modules.inc b/Hadrons/modules.inc index 475ce214..d994d41e 100644 --- a/Hadrons/modules.inc +++ b/Hadrons/modules.inc @@ -1,163 +1,165 @@ modules_cc =\ + Modules/MScalarSUN/ShiftProbe.cc \ + Modules/MScalarSUN/Grad.cc \ + Modules/MScalarSUN/TwoPointNPR.cc \ + Modules/MScalarSUN/Div.cc \ + Modules/MScalarSUN/TrMag.cc \ + Modules/MScalarSUN/TransProj.cc \ + Modules/MScalarSUN/TwoPoint.cc \ + Modules/MScalarSUN/TrKinetic.cc \ + Modules/MScalarSUN/TrPhi.cc \ + Modules/MScalarSUN/EMT.cc \ + Modules/MScalarSUN/StochFreeField.cc \ + Modules/MNoise/FullVolumeSpinColorDiagonal.cc \ + Modules/MNoise/TimeDilutedSpinColorDiagonal.cc \ + Modules/MScalar/FreeProp.cc \ + Modules/MScalar/VPCounterTerms.cc \ + Modules/MScalar/ChargedProp.cc \ + Modules/MScalar/ScalarVP.cc \ + Modules/MLoop/NoiseLoop.cc \ + Modules/MIO/LoadBinary.cc \ + Modules/MIO/LoadCosmHol.cc \ + Modules/MIO/LoadCoarseEigenPack.cc \ + Modules/MIO/LoadNersc.cc \ + Modules/MIO/LoadEigenPack.cc \ + Modules/MIO/LoadA2AVectors.cc \ + Modules/MSink/Smear.cc \ + Modules/MSink/Point.cc \ + Modules/MFermion/FreeProp.cc \ + Modules/MFermion/GaugeProp.cc \ + Modules/MGauge/Random.cc \ + Modules/MGauge/StochEm.cc \ + Modules/MGauge/StoutSmearing.cc \ + Modules/MGauge/Unit.cc \ + Modules/MGauge/Electrify.cc \ + Modules/MGauge/UnitEm.cc \ + Modules/MGauge/FundtoHirep.cc \ + Modules/MGauge/GaugeFix.cc \ + Modules/MUtilities/TestSeqGamma.cc \ Modules/MUtilities/TestSeqConserved.cc \ Modules/MUtilities/RandomVectors.cc \ - Modules/MUtilities/TestSeqGamma.cc \ Modules/MUtilities/PrecisionCast.cc \ - Modules/MSolver/MixedPrecisionRBPrecCG.cc \ - Modules/MSolver/A2AVectors.cc \ - Modules/MSolver/A2AAslashVectors.cc \ - Modules/MSolver/LocalCoherenceLanczos.cc \ - Modules/MSolver/RBPrecCG.cc \ + Modules/MDistil/PerambFromSolve.cc \ Modules/MDistil/g5_multiply.cc \ - Modules/MDistil/BContraction.cc \ - Modules/MDistil/BC2.cc \ Modules/MDistil/LapEvec.cc \ - Modules/MDistil/Baryon2pt.cc \ - Modules/MDistil/PerambLight.cc \ Modules/MDistil/DistilVectors.cc \ - Modules/MContraction/WeakHamiltonianEye.cc \ - Modules/MContraction/Gamma3pt.cc \ - Modules/MContraction/DiscLoop.cc \ + Modules/MDistil/BContraction.cc \ + Modules/MDistil/Baryon2pt.cc \ + Modules/MDistil/BC2.cc \ + Modules/MDistil/PerambLight.cc \ + Modules/MSource/Momentum.cc \ + Modules/MSource/Z2.cc \ + Modules/MSource/Point.cc \ + Modules/MSource/SeqGamma.cc \ + Modules/MSource/Wall.cc \ + Modules/MSource/SeqConserved.cc \ Modules/MContraction/Meson.cc \ - Modules/MContraction/WeakNeutral4ptDisc.cc \ + Modules/MContraction/A2AAslashField.cc \ Modules/MContraction/WardIdentity.cc \ - Modules/MContraction/A2AMesonField.cc \ Modules/MContraction/WeakHamiltonianNonEye.cc \ Modules/MContraction/Baryon.cc \ - Modules/MContraction/A2AAslashField.cc \ - Modules/MAction/ZMobiusDWF.cc \ + Modules/MContraction/DiscLoop.cc \ + Modules/MContraction/WeakHamiltonianEye.cc \ + Modules/MContraction/A2AMesonField.cc \ + Modules/MContraction/WeakNeutral4ptDisc.cc \ + Modules/MContraction/Gamma3pt.cc \ + Modules/MAction/MobiusDWF.cc \ Modules/MAction/WilsonClover.cc \ Modules/MAction/Wilson.cc \ Modules/MAction/DWF.cc \ - Modules/MAction/MobiusDWF.cc \ Modules/MAction/ScaledDWF.cc \ - Modules/MGauge/FundtoHirep.cc \ - Modules/MGauge/Random.cc \ - Modules/MGauge/UnitEm.cc \ - Modules/MGauge/StochEm.cc \ - Modules/MGauge/GaugeFix.cc \ - Modules/MGauge/Unit.cc \ - Modules/MGauge/StoutSmearing.cc \ - Modules/MGauge/Electrify.cc \ - Modules/MNoise/TimeDilutedSpinColorDiagonal.cc \ - Modules/MNoise/FullVolumeSpinColorDiagonal.cc \ - Modules/MIO/LoadNersc.cc \ - Modules/MIO/LoadA2AVectors.cc \ - Modules/MIO/LoadCoarseEigenPack.cc \ - Modules/MIO/LoadEigenPack.cc \ - Modules/MIO/LoadBinary.cc \ - Modules/MIO/LoadCosmHol.cc \ - Modules/MNPR/Amputate.cc \ + Modules/MAction/ZMobiusDWF.cc \ + Modules/MSolver/A2AVectors.cc \ + Modules/MSolver/RBPrecCG.cc \ + Modules/MSolver/LocalCoherenceLanczos.cc \ + Modules/MSolver/MixedPrecisionRBPrecCG.cc \ + Modules/MSolver/A2AAslashVectors.cc \ Modules/MNPR/Bilinear.cc \ Modules/MNPR/FourQuark.cc \ - Modules/MLoop/NoiseLoop.cc \ - Modules/MScalarSUN/TwoPoint.cc \ - Modules/MScalarSUN/Div.cc \ - Modules/MScalarSUN/TwoPointNPR.cc \ - Modules/MScalarSUN/ShiftProbe.cc \ - Modules/MScalarSUN/TrPhi.cc \ - Modules/MScalarSUN/TrMag.cc \ - Modules/MScalarSUN/TransProj.cc \ - Modules/MScalarSUN/TrKinetic.cc \ - Modules/MScalarSUN/StochFreeField.cc \ - Modules/MScalarSUN/EMT.cc \ - Modules/MScalarSUN/Grad.cc \ - Modules/MSink/Smear.cc \ - Modules/MSink/Point.cc \ - Modules/MFermion/GaugeProp.cc \ - Modules/MFermion/FreeProp.cc \ - Modules/MScalar/FreeProp.cc \ - Modules/MScalar/ScalarVP.cc \ - Modules/MScalar/VPCounterTerms.cc \ - Modules/MScalar/ChargedProp.cc \ - Modules/MSource/SeqConserved.cc \ - Modules/MSource/SeqGamma.cc \ - Modules/MSource/Wall.cc \ - Modules/MSource/Z2.cc \ - Modules/MSource/Point.cc \ - Modules/MSource/Momentum.cc + Modules/MNPR/Amputate.cc modules_hpp =\ - Modules/MUtilities/RandomVectors.hpp \ - Modules/MUtilities/TestSeqGamma.hpp \ - Modules/MUtilities/PrecisionCast.hpp \ - Modules/MUtilities/TestSeqConserved.hpp \ - Modules/MSolver/MixedPrecisionRBPrecCG.hpp \ - Modules/MSolver/A2AAslashVectors.hpp \ - Modules/MSolver/Guesser.hpp \ - Modules/MSolver/LocalCoherenceLanczos.hpp \ - Modules/MSolver/RBPrecCG.hpp \ - Modules/MSolver/A2AVectors.hpp \ - Modules/MDistil/LapEvec.hpp \ - Modules/MDistil/Distil.hpp \ - Modules/MDistil/g5_multiply.hpp \ - Modules/MDistil/DistilVectors.hpp \ - Modules/MDistil/Baryon2pt.hpp \ - Modules/MDistil/BContraction.hpp \ - Modules/MDistil/PerambLight.hpp \ - Modules/MDistil/BC2.hpp \ - Modules/MContraction/WeakHamiltonian.hpp \ - Modules/MContraction/WeakNeutral4ptDisc.hpp \ - Modules/MContraction/WeakHamiltonianEye.hpp \ - Modules/MContraction/DiscLoop.hpp \ - Modules/MContraction/Baryon.hpp \ - Modules/MContraction/Gamma3pt.hpp \ - Modules/MContraction/A2AMesonField.hpp \ - Modules/MContraction/A2AAslashField.hpp \ - Modules/MContraction/WeakHamiltonianNonEye.hpp \ - Modules/MContraction/Meson.hpp \ - Modules/MContraction/WardIdentity.hpp \ - Modules/MAction/Wilson.hpp \ - Modules/MAction/WilsonClover.hpp \ - Modules/MAction/DWF.hpp \ - Modules/MAction/ScaledDWF.hpp \ - Modules/MAction/ZMobiusDWF.hpp \ - Modules/MAction/MobiusDWF.hpp \ - Modules/MGauge/Random.hpp \ - Modules/MGauge/Unit.hpp \ - Modules/MGauge/UnitEm.hpp \ - Modules/MGauge/StoutSmearing.hpp \ - Modules/MGauge/StochEm.hpp \ - Modules/MGauge/Electrify.hpp \ - Modules/MGauge/FundtoHirep.hpp \ - Modules/MGauge/GaugeFix.hpp \ - Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp \ - Modules/MNoise/FullVolumeSpinColorDiagonal.hpp \ - Modules/MIO/LoadBinary.hpp \ - Modules/MIO/LoadCosmHol.hpp \ - Modules/MIO/LoadNersc.hpp \ - Modules/MIO/LoadA2AVectors.hpp \ - Modules/MIO/LoadCoarseEigenPack.hpp \ - Modules/MIO/LoadEigenPack.hpp \ - Modules/MNPR/Amputate.hpp \ - Modules/MNPR/FourQuark.hpp \ - Modules/MNPR/Bilinear.hpp \ - Modules/MLoop/NoiseLoop.hpp \ - Modules/MScalarSUN/TransProj.hpp \ - Modules/MScalarSUN/TwoPoint.hpp \ - Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/TrKinetic.hpp \ - Modules/MScalarSUN/EMT.hpp \ - Modules/MScalarSUN/Grad.hpp \ - Modules/MScalarSUN/Utils.hpp \ - Modules/MScalarSUN/Div.hpp \ - Modules/MScalarSUN/TrPhi.hpp \ - Modules/MScalarSUN/TwoPointNPR.hpp \ Modules/MScalarSUN/StochFreeField.hpp \ + Modules/MScalarSUN/TwoPointNPR.hpp \ + Modules/MScalarSUN/Grad.hpp \ + Modules/MScalarSUN/TransProj.hpp \ + Modules/MScalarSUN/Div.hpp \ + Modules/MScalarSUN/TrMag.hpp \ Modules/MScalarSUN/ShiftProbe.hpp \ - Modules/MSink/Smear.hpp \ - Modules/MSink/Point.hpp \ - Modules/MFermion/GaugeProp.hpp \ - Modules/MFermion/FreeProp.hpp \ + Modules/MScalarSUN/Utils.hpp \ + Modules/MScalarSUN/EMT.hpp \ + Modules/MScalarSUN/TwoPoint.hpp \ + Modules/MScalarSUN/TrPhi.hpp \ + Modules/MNoise/FullVolumeSpinColorDiagonal.hpp \ + Modules/MNoise/TimeDilutedSpinColorDiagonal.hpp \ + Modules/MScalar/FreeProp.hpp \ Modules/MScalar/Scalar.hpp \ Modules/MScalar/ScalarVP.hpp \ - Modules/MScalar/FreeProp.hpp \ Modules/MScalar/ChargedProp.hpp \ Modules/MScalar/VPCounterTerms.hpp \ - Modules/MSource/Momentum.hpp \ - Modules/MSource/SeqGamma.hpp \ - Modules/MSource/Point.hpp \ + Modules/MLoop/NoiseLoop.hpp \ + Modules/MIO/LoadEigenPack.hpp \ + Modules/MIO/LoadA2AVectors.hpp \ + Modules/MIO/LoadCoarseEigenPack.hpp \ + Modules/MIO/LoadCosmHol.hpp \ + Modules/MIO/LoadBinary.hpp \ + Modules/MIO/LoadNersc.hpp \ + Modules/MSink/Smear.hpp \ + Modules/MSink/Point.hpp \ + Modules/MFermion/FreeProp.hpp \ + Modules/MFermion/GaugeProp.hpp \ + Modules/MGauge/FundtoHirep.hpp \ + Modules/MGauge/Random.hpp \ + Modules/MGauge/StoutSmearing.hpp \ + Modules/MGauge/Unit.hpp \ + Modules/MGauge/GaugeFix.hpp \ + Modules/MGauge/StochEm.hpp \ + Modules/MGauge/Electrify.hpp \ + Modules/MGauge/UnitEm.hpp \ + Modules/MUtilities/TestSeqGamma.hpp \ + Modules/MUtilities/RandomVectors.hpp \ + Modules/MUtilities/TestSeqConserved.hpp \ + Modules/MUtilities/PrecisionCast.hpp \ + Modules/MDistil/PerambLight.hpp \ + Modules/MDistil/Distil.hpp \ + Modules/MDistil/BC2.hpp \ + Modules/MDistil/g5_multiply.hpp \ + Modules/MDistil/PerambFromSolve.hpp \ + Modules/MDistil/Baryon2pt.hpp \ + Modules/MDistil/LapEvec.hpp \ + Modules/MDistil/BContraction.hpp \ + Modules/MDistil/DistilVectors.hpp \ + Modules/MSource/SeqConserved.hpp \ Modules/MSource/Z2.hpp \ Modules/MSource/Wall.hpp \ - Modules/MSource/SeqConserved.hpp + Modules/MSource/SeqGamma.hpp \ + Modules/MSource/Point.hpp \ + Modules/MSource/Momentum.hpp \ + Modules/MContraction/A2AAslashField.hpp \ + Modules/MContraction/WeakHamiltonianEye.hpp \ + Modules/MContraction/Baryon.hpp \ + Modules/MContraction/Meson.hpp \ + Modules/MContraction/WeakHamiltonian.hpp \ + Modules/MContraction/WeakNeutral4ptDisc.hpp \ + Modules/MContraction/Gamma3pt.hpp \ + Modules/MContraction/DiscLoop.hpp \ + Modules/MContraction/WeakHamiltonianNonEye.hpp \ + Modules/MContraction/WardIdentity.hpp \ + Modules/MContraction/A2AMesonField.hpp \ + Modules/MAction/WilsonClover.hpp \ + Modules/MAction/ScaledDWF.hpp \ + Modules/MAction/MobiusDWF.hpp \ + Modules/MAction/Wilson.hpp \ + Modules/MAction/DWF.hpp \ + Modules/MAction/ZMobiusDWF.hpp \ + Modules/MSolver/RBPrecCG.hpp \ + Modules/MSolver/LocalCoherenceLanczos.hpp \ + Modules/MSolver/A2AVectors.hpp \ + Modules/MSolver/MixedPrecisionRBPrecCG.hpp \ + Modules/MSolver/Guesser.hpp \ + Modules/MSolver/A2AAslashVectors.hpp \ + Modules/MNPR/FourQuark.hpp \ + Modules/MNPR/Bilinear.hpp \ + Modules/MNPR/Amputate.hpp diff --git a/tests/hadrons/Test_hadrons_distil.cc b/tests/hadrons/Test_hadrons_distil.cc index c09b3d91..5852b854 100644 --- a/tests/hadrons/Test_hadrons_distil.cc +++ b/tests/hadrons/Test_hadrons_distil.cc @@ -49,6 +49,32 @@ void test_Global(Application &application) application.setPar(globalPar); } + +///////////////////////////////////////////////////////////// +// Test creation Solver +///////////////////////////////////////////////////////////// + +void test_SolverS(Application &application) +{ + std::string boundary = "1 1 1 -1"; + + + MAction::DWF::Par actionPar; + actionPar.gauge = "gauge"; + actionPar.Ls = 16; + actionPar.M5 = 1.8; + actionPar.mass = 0.005; + actionPar.boundary = boundary; + actionPar.twist = "0. 0. 0. 0."; + application.createModule("DWF_s", actionPar); + + + MSolver::RBPrecCG::Par solverPar; + solverPar.action = "DWF_s"; + solverPar.residual = 1.0e-7; + solverPar.maxIteration = 10000; + application.createModule("CG_s", solverPar); +} ///////////////////////////////////////////////////////////// // Test creation of laplacian eigenvectors ///////////////////////////////////////////////////////////// @@ -393,6 +419,21 @@ void test_Aslash(Application &application) application.createModule("Aslash_field",A2AAslashFieldPar); } +///////////////////////////////////////////////////////////// +// MesonA2ASlashSequential +///////////////////////////////////////////////////////////// + +void test_AslashSeq(Application &application) +{ + // DistilVectors parameters + MSolver::A2AAslashVectors::Par A2AAslashVectorsPar; + A2AAslashVectorsPar.vector="Peramb_unsmeared_sink"; + A2AAslashVectorsPar.emField="Em"; + A2AAslashVectorsPar.solver="CG_s"; + A2AAslashVectorsPar.output="Aslash_seq"; + application.createModule("Aslash_seq",A2AAslashVectorsPar); +} + bool bNumber( int &ri, const char * & pstr, bool bGobbleWhiteSpace = true ) { if( bGobbleWhiteSpace )