mirror of
https://github.com/paboyle/Grid.git
synced 2025-06-15 06:17:05 +01:00
WilsonMG: Move tests for Wilson & WilsonClover into separate files
This commit is contained in:
committed by
Daniel Richtmann
parent
66b7a0f871
commit
73a955be20
@ -37,10 +37,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
Grid_init(&argc, &argv);
|
||||
|
||||
typename WilsonCloverFermionR::ImplParams wcImplparams;
|
||||
WilsonAnisotropyCoefficients wilsonAnisCoeff;
|
||||
|
||||
GridCartesian *FGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd, vComplex::Nsimd()), GridDefaultMpi());
|
||||
GridCartesian * FGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(), GridDefaultSimd(Nd, vComplex::Nsimd()), GridDefaultMpi());
|
||||
GridRedBlackCartesian *FrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(FGrid);
|
||||
|
||||
std::vector<int> fSeeds({1, 2, 3, 4});
|
||||
@ -84,43 +81,17 @@ int main(int argc, char **argv) {
|
||||
const int nbasis = 40;
|
||||
RealD toleranceForMGChecks = 1e-13; // TODO: depends on the precision MG precondtioner is run in
|
||||
|
||||
WilsonFermionR Dw(Umu, *FGrid, *FrbGrid, mass);
|
||||
WilsonCloverFermionR Dwc(Umu, *FGrid, *FrbGrid, mass, csw_r, csw_t, wilsonAnisCoeff, wcImplparams);
|
||||
WilsonCloverFermionR Dwc(Umu, *FGrid, *FrbGrid, mass, csw_r, csw_t);
|
||||
|
||||
static_assert(std::is_same<LatticeFermion, typename WilsonFermionR::FermionField>::value, "");
|
||||
static_assert(std::is_same<LatticeFermion, typename WilsonCloverFermionR::FermionField>::value, "");
|
||||
|
||||
MdagMLinearOperator<WilsonFermionR, LatticeFermion> MdagMOpDw(Dw);
|
||||
MdagMLinearOperator<WilsonCloverFermionR, LatticeFermion> MdagMOpDwc(Dwc);
|
||||
|
||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||
std::cout << GridLogMessage << "Testing Multigrid for Wilson" << std::endl;
|
||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||
|
||||
TrivialPrecon<LatticeFermion> TrivialPrecon;
|
||||
auto MGPreconDw = createMGInstance<vSpinColourVector, vTComplex, nbasis, WilsonFermionR>(mgParams, levelInfo, Dw, Dw);
|
||||
|
||||
MGPreconDw->setup();
|
||||
MGPreconDw->runChecks(toleranceForMGChecks);
|
||||
|
||||
std::vector<std::unique_ptr<OperatorFunction<LatticeFermion>>> solversDw;
|
||||
|
||||
solversDw.emplace_back(new ConjugateGradient<LatticeFermion>(1.0e-12, 50000, false));
|
||||
solversDw.emplace_back(new FlexibleGeneralisedMinimalResidual<LatticeFermion>(1.0e-12, 50000, TrivialPrecon, 100, false));
|
||||
solversDw.emplace_back(new FlexibleGeneralisedMinimalResidual<LatticeFermion>(1.0e-12, 50000, *MGPreconDw, 100, false));
|
||||
|
||||
for(auto const &solver : solversDw) {
|
||||
std::cout << std::endl << "Starting with a new solver" << std::endl;
|
||||
result = zero;
|
||||
(*solver)(MdagMOpDw, src, result);
|
||||
}
|
||||
|
||||
MGPreconDw->reportTimings();
|
||||
|
||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||
std::cout << GridLogMessage << "Testing Multigrid for Wilson Clover" << std::endl;
|
||||
std::cout << GridLogMessage << "**************************************************" << std::endl;
|
||||
|
||||
TrivialPrecon<LatticeFermion> TrivialPrecon;
|
||||
auto MGPreconDwc = createMGInstance<vSpinColourVector, vTComplex, nbasis, WilsonCloverFermionR>(mgParams, levelInfo, Dwc, Dwc);
|
||||
|
||||
MGPreconDwc->setup();
|
||||
|
Reference in New Issue
Block a user