diff --git a/tests/core/Test_ddhmc_matrices.cc b/tests/core/Test_ddhmc_matrices.cc index 7794eede..e7ae992e 100644 --- a/tests/core/Test_ddhmc_matrices.cc +++ b/tests/core/Test_ddhmc_matrices.cc @@ -42,13 +42,15 @@ int main (int argc, char ** argv) std::cout<::HotConfiguration(RNG4,Umu); LatticeGaugeFieldF UmuF(UGridF); precisionChange(UmuF,Umu); @@ -81,12 +84,13 @@ int main (int argc, char ** argv) typedef DomainWallFermionF::Impl_t FimplF; typedef DirichletFermionOperator FermOp; typedef DirichletFermionOperator FermOpF; - Coordinate Block({16,16,16,4}); + Coordinate Block1({0,0,0,Nt/2}); + Coordinate Block2({0,0,0,Nt/4}); DomainWallFermionR DdwfPeriTmp(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); DomainWallFermionF DdwfPeriTmpF(UmuF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5); - FermOp Ddwf(DdwfPeriTmp,Block); - FermOpF DdwfF(DdwfPeriTmpF,Block); + FermOp Ddwf(DdwfPeriTmp,Block1,Block2); + FermOpF DdwfF(DdwfPeriTmpF,Block1,Block2); Ddwf.ImportGauge(Umu); DdwfF.ImportGauge(UmuF); @@ -278,7 +282,7 @@ int main (int argc, char ** argv) //if( (t%Block[mu]) != Block[mu]-1) assert(norm2(slice_ref[t]) < 1.0e-10); //else assert(norm2(slice_result[t]) == 0.0); } - + } pickCheckerboard(Even,src_e,src); pickCheckerboard(Odd,src_o,src); @@ -296,12 +300,14 @@ int main (int argc, char ** argv) SchurFactoredFermionOperator Schur(DdwfPeri,DdwfPeriF, Ddwf,DdwfF, - Block); + Block1,Block2); result = src; Schur.ProjectOmega(result); + DumpSliceNorm("Omega",result,Nd); tmp = src; Schur.ProjectOmegaBar(tmp); + DumpSliceNorm("OmegaBar",tmp,Nd); std::cout << " norm2(src) "<"<"<Nd()<<" dims "<GlobalDimensions()< DirichletFermion; DomainWallFermionR DdwfPeriodic(U,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); DomainWallFermionR Ddwf(U,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); - DirichletFermion DdwfDirichlet(Ddwf,Block); + DirichletFermion DdwfDirichlet(Ddwf,Block1,Block2); DomainWallFermionR PVPeriodic(U,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5); DomainWallFermionR PV(U,*FGrid,*FrbGrid,*UGrid,*UrbGrid,1.0,M5); - DirichletFermion PVDirichlet(PV,Block); + DirichletFermion PVDirichlet(PV,Block1,Block2); // Single versions typedef WilsonImplF FimplF; typedef DirichletFermionOperator DirichletFermionF; DomainWallFermionF DdwfPeriodicF(UF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5); DomainWallFermionF DdwfF(UF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,mass,M5); - DirichletFermionF DdwfDirichletF(DdwfF,Block); + DirichletFermionF DdwfDirichletF(DdwfF,Block1,Block2); DomainWallFermionF PVPeriodicF(UF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,1.0,M5); DomainWallFermionF PVF(UF,*FGridF,*FrbGridF,*UGridF,*UrbGridF,1.0,M5); - DirichletFermionF PVDirichletF(PVF,Block); + DirichletFermionF PVDirichletF(PVF,Block1,Block2); double StoppingCondition = 1.0e-12; double MaxCGIterations = 10000; ConjugateGradient CG(StoppingCondition,MaxCGIterations); - // DDHMCFilter FilterDDHMC(Block,1); - DirichletFilter FilterDDHMC(Block); + // DDHMCFilter FilterDDHMC(Block1,Block2,1); + DirichletFilter FilterDDHMC(Block1,Block2); //////////////////// Two Flavour Determinant Ratio /////////////////////////////// TwoFlavourRatioPseudoFermionAction Nf2(PVPeriodic, DdwfPeriodic,CG,CG); @@ -202,27 +202,27 @@ int main (int argc, char ** argv) SchurFactoredFermionOperator SchurDwf(DdwfPeriodic,DdwfPeriodicF, DdwfDirichlet,DdwfDirichletF, - Block); + Block1,Block2); SchurFactoredFermionOperator SchurPV(PVPeriodic,PVPeriodicF, PVDirichlet,PVDirichletF, - Block); + Block1,Block2); std::cout << "*** NUMERATOR ***\n"; - DomainDecomposedBoundaryTwoFlavourPseudoFermion DBPFA(SchurDwf); + DomainDecomposedBoundaryTwoFlavourPseudoFermion DBPFA(SchurDwf,1.0e-8,1.0e-8); ForceTest(DBPFA,U,FilterDDHMC); std::cout << "*** RATIO ***\n"; - DomainDecomposedBoundaryTwoFlavourRatioPseudoFermion DBPFRA(SchurPV,SchurDwf); + DomainDecomposedBoundaryTwoFlavourRatioPseudoFermion DBPFRA(SchurPV,SchurDwf,1.0e-8,1.0e-8); ForceTest(DBPFRA,U,FilterDDHMC); std::cout << "*** DEGENERATE ***\n"; - DomainDecomposedBoundaryTwoFlavourRatioPseudoFermion DBPFRAdeg(SchurDwf,SchurDwf); + DomainDecomposedBoundaryTwoFlavourRatioPseudoFermion DBPFRAdeg(SchurDwf,SchurDwf,1.0e-8,1.0e-8); ForceTest(DBPFRAdeg,U,FilterDDHMC); - DomainDecomposedBoundaryTwoFlavourBosonPseudoFermion DBPFBA(SchurPV); + DomainDecomposedBoundaryTwoFlavourBosonPseudoFermion DBPFBA(SchurPV,1.0e-8,1.0e-8); ForceTest(DBPFBA,U,FilterDDHMC); Grid_finalize();