1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-05-10 04:25:57 +01:00

Massively improved test

This commit is contained in:
Peter Boyle 2021-05-14 21:56:24 -04:00
parent 104986b53d
commit c8db9ddb33

View File

@ -54,9 +54,9 @@ int main (int argc, char ** argv)
GridParallelRNG RNG4(UGrid); RNG4.SeedFixedIntegers(seeds4); GridParallelRNG RNG4(UGrid); RNG4.SeedFixedIntegers(seeds4);
GridParallelRNG RNG5(FGrid); RNG5.SeedFixedIntegers(seeds5); GridParallelRNG RNG5(FGrid); RNG5.SeedFixedIntegers(seeds5);
LatticeFermion src (FGrid); random(RNG5,src); LatticeFermion src (FGrid); gaussian(RNG5,src);
LatticeFermion phi (FGrid); random(RNG5,phi); LatticeFermion phi (FGrid); gaussian(RNG5,phi);
LatticeFermion chi (FGrid); random(RNG5,chi); LatticeFermion chi (FGrid); gaussian(RNG5,chi);
LatticeFermion result(FGrid); result=Zero(); LatticeFermion result(FGrid); result=Zero();
LatticeFermion ref(FGrid); ref=Zero(); LatticeFermion ref(FGrid); ref=Zero();
LatticeFermion tmp(FGrid); tmp=Zero(); LatticeFermion tmp(FGrid); tmp=Zero();
@ -70,7 +70,7 @@ int main (int argc, char ** argv)
DomainWallFermionR DdwfPeri(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); DomainWallFermionR DdwfPeri(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
typedef DirichletFermionOperator<DomainWallFermionR::Impl_t> FermOp; typedef DirichletFermionOperator<DomainWallFermionR::Impl_t> FermOp;
Coordinate Block({4,4,4,4}); Coordinate Block({16,16,16,4});
DomainWallFermionR DdwfPeriTmp(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5); DomainWallFermionR DdwfPeriTmp(Umu,*FGrid,*FrbGrid,*UGrid,*UrbGrid,mass,M5);
FermOp Ddwf(DdwfPeriTmp,Block); FermOp Ddwf(DdwfPeriTmp,Block);
Ddwf.ImportGauge(Umu); Ddwf.ImportGauge(Umu);
@ -82,8 +82,6 @@ int main (int argc, char ** argv)
LatticeFermion r_eo (FGrid); LatticeFermion r_eo (FGrid);
LatticeFermion r_eeoo(FGrid); LatticeFermion r_eeoo(FGrid);
std::cout<<GridLogMessage<<"=========================================================="<<std::endl; std::cout<<GridLogMessage<<"=========================================================="<<std::endl;
std::cout<<GridLogMessage<<"= Testing that Meo + Moe + Moo + Mee = Munprec "<<std::endl; std::cout<<GridLogMessage<<"= Testing that Meo + Moe + Moo + Mee = Munprec "<<std::endl;
std::cout<<GridLogMessage<<"=========================================================="<<std::endl; std::cout<<GridLogMessage<<"=========================================================="<<std::endl;
@ -131,7 +129,6 @@ int main (int argc, char ** argv)
LatticeFermion dphi_e (FrbGrid); LatticeFermion dphi_e (FrbGrid);
LatticeFermion dphi_o (FrbGrid); LatticeFermion dphi_o (FrbGrid);
pickCheckerboard(Even,chi_e,chi); pickCheckerboard(Even,chi_e,chi);
pickCheckerboard(Odd ,chi_o,chi); pickCheckerboard(Odd ,chi_o,chi);
pickCheckerboard(Even,phi_e,phi); pickCheckerboard(Even,phi_e,phi);
@ -195,8 +192,8 @@ int main (int argc, char ** argv)
std::cout<<GridLogMessage<<"= Test MpcDagMpc is Hermitian "<<std::endl; std::cout<<GridLogMessage<<"= Test MpcDagMpc is Hermitian "<<std::endl;
std::cout<<GridLogMessage<<"=============================================================="<<std::endl; std::cout<<GridLogMessage<<"=============================================================="<<std::endl;
random(RNG5,phi); gaussian(RNG5,phi);
random(RNG5,chi); gaussian(RNG5,chi);
pickCheckerboard(Even,chi_e,chi); pickCheckerboard(Even,chi_e,chi);
pickCheckerboard(Odd ,chi_o,chi); pickCheckerboard(Odd ,chi_o,chi);
pickCheckerboard(Even,phi_e,phi); pickCheckerboard(Even,phi_e,phi);
@ -245,8 +242,8 @@ int main (int argc, char ** argv)
sliceSum(dip,slice_ref,mu+1); sliceSum(dip,slice_ref,mu+1);
for(int t=0;t<latt[mu];t++){ for(int t=0;t<latt[mu];t++){
std::cout << "mu="<<mu<<" result["<<t<<"] "<<slice_result[t]<<" delta "<<slice_ref[t]<<std::endl; std::cout << "mu="<<mu<<" result["<<t<<"] "<<slice_result[t]<<" delta "<<slice_ref[t]<<std::endl;
if( (t%Block[mu]) !=0) assert(norm2(slice_ref[t]) < 1.0e-10); // if( (t%Block[mu]) !=0) assert(norm2(slice_ref[t]) < 1.0e-10);
else assert(norm2(slice_result[t]) == 0.0); // else assert(norm2(slice_result[t]) == 0.0);
} }
// Opposite dir // Opposite dir
@ -262,9 +259,9 @@ int main (int argc, char ** argv)
sliceSum(lip,slice_result,mu+1); sliceSum(lip,slice_result,mu+1);
sliceSum(dip,slice_ref,mu+1); sliceSum(dip,slice_ref,mu+1);
for(int t=0;t<latt[mu];t++){ for(int t=0;t<latt[mu];t++){
// std::cout << "mu="<<mu<<" result["<<t<<"] "<<slice_result[t]<<" delta "<<slice_ref[t]<<std::endl; std::cout << "mu="<<mu<<" result["<<t<<"] "<<slice_result[t]<<" delta "<<slice_ref[t]<<std::endl;
if( (t%Block[mu]) != Block[mu]-1) assert(norm2(slice_ref[t]) < 1.0e-10); //if( (t%Block[mu]) != Block[mu]-1) assert(norm2(slice_ref[t]) < 1.0e-10);
else assert(norm2(slice_result[t]) == 0.0); //else assert(norm2(slice_result[t]) == 0.0);
} }
} }
@ -413,7 +410,7 @@ int main (int argc, char ** argv)
std::cout<<GridLogMessage<<"=========================================================="<<std::endl; std::cout<<GridLogMessage<<"=========================================================="<<std::endl;
std::cout<<GridLogMessage<<"= Testing that R RInv = Pboundary "<<std::endl; std::cout<<GridLogMessage<<"= Testing that R RInv = PboundaryBar "<<std::endl;
std::cout<<GridLogMessage<<"=========================================================="<<std::endl; std::cout<<GridLogMessage<<"=========================================================="<<std::endl;
LatticeFermion Rphi (FGrid); LatticeFermion Rphi (FGrid);
@ -425,13 +422,15 @@ int main (int argc, char ** argv)
tmp = phi; tmp = phi;
Schur.ProjectBoundaryBar(tmp); Schur.ProjectBoundaryBar(tmp);
std::cout << "Project Boundary Bar" << tmp<< std::endl;
tmp=tmp-result; tmp=tmp-result;
std::cout << " diff = "<<norm2(tmp)<< " result "<<norm2(result)<<std::endl; std::cout << " diff = "<<norm2(tmp)<< " result "<<norm2(result)<<std::endl;
assert(norm2(tmp)<1.0e-8); assert(norm2(tmp)<1.0e-8);
std::cout<<GridLogMessage<<"=========================================================="<<std::endl; std::cout<<GridLogMessage<<"=========================================================="<<std::endl;
std::cout<<GridLogMessage<<"= Testing that Rdag RInvdag = Pboundary "<<std::endl; std::cout<<GridLogMessage<<"= Testing that Rdag RInvdag = PboundaryBar "<<std::endl;
std::cout<<GridLogMessage<<"=========================================================="<<std::endl; std::cout<<GridLogMessage<<"=========================================================="<<std::endl;
tmp = chi; tmp = chi;