mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Fixed 4d fermion gparity force. Put strong tests on make check force tests
This commit is contained in:
parent
41d1889941
commit
1d96f662e3
@ -587,7 +587,7 @@ class GparityWilsonImpl : public ConjugateGaugeImpl<GaugeImplTypes<S, Nrepresent
|
|||||||
// use lorentz for flavour as hack.
|
// use lorentz for flavour as hack.
|
||||||
auto tmp = TraceIndex<SpinIndex>(outerProduct(Btilde, A));
|
auto tmp = TraceIndex<SpinIndex>(outerProduct(Btilde, A));
|
||||||
parallel_for(auto ss = tmp.begin(); ss < tmp.end(); ss++) {
|
parallel_for(auto ss = tmp.begin(); ss < tmp.end(); ss++) {
|
||||||
link[ss]() = tmp[ss](0, 0) - conjugate(tmp[ss](1, 1));
|
link[ss]() = tmp[ss](0, 0) + conjugate(tmp[ss](1, 1));
|
||||||
}
|
}
|
||||||
PokeIndex<LorentzIndex>(mat, link, mu);
|
PokeIndex<LorentzIndex>(mat, link, mu);
|
||||||
return;
|
return;
|
||||||
|
@ -10,7 +10,6 @@ check-local: all
|
|||||||
./Test_simd
|
./Test_simd
|
||||||
./Test_cshift
|
./Test_cshift
|
||||||
./Test_stencil
|
./Test_stencil
|
||||||
./Test_cayley_even_odd_vec
|
|
||||||
./Test_dwf_mixedcg_prec
|
./Test_dwf_mixedcg_prec
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,6 +145,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -157,6 +157,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -212,6 +212,7 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
std::cout << GridLogMessage << "Total dS "<< Hmomprime - Hmom + Sprime - S <<std::endl;
|
std::cout << GridLogMessage << "Total dS "<< Hmomprime - Hmom + Sprime - S <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -119,7 +119,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "pred dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "pred dS "<< dSpred <<std::endl;
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ int main (int argc, char ** argv)
|
|||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
// Modify the gauge field a little
|
// Modify the gauge field a little
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
RealD dt = 0.001;
|
RealD dt = 0.0001;
|
||||||
|
|
||||||
LatticeColourMatrix mommu(UGrid);
|
LatticeColourMatrix mommu(UGrid);
|
||||||
LatticeColourMatrix forcemu(UGrid);
|
LatticeColourMatrix forcemu(UGrid);
|
||||||
@ -128,7 +128,6 @@ int main (int argc, char ** argv)
|
|||||||
// Use derivative to estimate dS
|
// Use derivative to estimate dS
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
LatticeComplex dS(UGrid); dS = zero;
|
LatticeComplex dS(UGrid); dS = zero;
|
||||||
for(int mu=0;mu<Nd;mu++){
|
for(int mu=0;mu<Nd;mu++){
|
||||||
mommu = PeekIndex<LorentzIndex>(UdSdU,mu);
|
mommu = PeekIndex<LorentzIndex>(UdSdU,mu);
|
||||||
@ -142,7 +141,6 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
// Update PF action density
|
// Update PF action density
|
||||||
dS = dS+trace(mommu*forcemu)*dt;
|
dS = dS+trace(mommu*forcemu)*dt;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Complex dSpred = sum(dS);
|
Complex dSpred = sum(dS);
|
||||||
@ -200,7 +198,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ int main (int argc, char ** argv)
|
|||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
// Modify the gauge field a little
|
// Modify the gauge field a little
|
||||||
////////////////////////////////////
|
////////////////////////////////////
|
||||||
RealD dt = 0.00001;
|
RealD dt = 0.0001;
|
||||||
|
|
||||||
LatticeColourMatrix mommu(UGrid);
|
LatticeColourMatrix mommu(UGrid);
|
||||||
LatticeColourMatrix forcemu(UGrid);
|
LatticeColourMatrix forcemu(UGrid);
|
||||||
@ -100,7 +100,8 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
for(int mu=0;mu<Nd;mu++){
|
for(int mu=0;mu<Nd;mu++){
|
||||||
|
|
||||||
SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu); // Traceless antihermitian momentum; gaussian in lie alg
|
// Traceless antihermitian momentum; gaussian in lie alg
|
||||||
|
SU3::GaussianFundamentalLieAlgebraMatrix(RNG4, mommu);
|
||||||
|
|
||||||
PokeIndex<LorentzIndex>(mom,mommu,mu);
|
PokeIndex<LorentzIndex>(mom,mommu,mu);
|
||||||
|
|
||||||
@ -116,7 +117,6 @@ int main (int argc, char ** argv)
|
|||||||
+ mom[i](mu) *mom[i](mu) *mom[i](mu) *mom[i](mu) *mom[i](mu) *mom[i](mu) *U[i](mu)*(dt*dt*dt*dt*dt*dt/720.0)
|
+ mom[i](mu) *mom[i](mu) *mom[i](mu) *mom[i](mu) *mom[i](mu) *mom[i](mu) *U[i](mu)*(dt*dt*dt*dt*dt*dt/720.0)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Wil.ImportGauge(Uprime);
|
Wil.ImportGauge(Uprime);
|
||||||
@ -128,42 +128,30 @@ int main (int argc, char ** argv)
|
|||||||
// Use derivative to estimate dS
|
// Use derivative to estimate dS
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
LatticeComplex dS(UGrid); dS = zero;
|
|
||||||
for(int mu=0;mu<Nd;mu++){
|
for(int mu=0;mu<Nd;mu++){
|
||||||
mommu = PeekIndex<LorentzIndex>(UdSdU,mu);
|
mommu = PeekIndex<LorentzIndex>(UdSdU,mu);
|
||||||
mommu=Ta(mommu)*2.0;
|
mommu=Ta(mommu)*2.0;
|
||||||
PokeIndex<LorentzIndex>(UdSdU,mommu,mu);
|
PokeIndex<LorentzIndex>(UdSdU,mommu,mu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LatticeComplex dS(UGrid); dS = zero;
|
||||||
for(int mu=0;mu<Nd;mu++){
|
for(int mu=0;mu<Nd;mu++){
|
||||||
forcemu = PeekIndex<LorentzIndex>(UdSdU,mu);
|
forcemu = PeekIndex<LorentzIndex>(UdSdU,mu);
|
||||||
mommu = PeekIndex<LorentzIndex>(mom,mu);
|
mommu = PeekIndex<LorentzIndex>(mom,mu);
|
||||||
|
|
||||||
// Update PF action density
|
// Update PF action density
|
||||||
dS = dS+trace(mommu*forcemu)*dt;
|
dS = dS+trace(mommu*forcemu)*dt;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Complex dSpred = sum(dS);
|
Complex dSpred = sum(dS);
|
||||||
|
|
||||||
// From TwoFlavourPseudoFermion:
|
|
||||||
//////////////////////////////////////////////////////
|
|
||||||
// dS/du = - phi^dag (Mdag M)^-1 [ Mdag dM + dMdag M ] (Mdag M)^-1 phi
|
|
||||||
// = - phi^dag M^-1 dM (MdagM)^-1 phi - phi^dag (MdagM)^-1 dMdag dM (Mdag)^-1 phi
|
|
||||||
//
|
|
||||||
// = - Ydag dM X - Xdag dMdag Y
|
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////
|
|
||||||
// So must take dSdU - adj(dSdU) and left multiply by mom to get dS/dt.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
std::cout << GridLogMessage << " S "<<S<<std::endl;
|
std::cout << GridLogMessage << " S "<<S<<std::endl;
|
||||||
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
std::cout << GridLogMessage << " Sprime "<<Sprime<<std::endl;
|
||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -168,12 +168,7 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "pred dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "pred dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -148,6 +148,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -148,6 +148,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -119,6 +119,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "pred dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "pred dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
Dw.MDeriv(tmp , Mphi, phi,DaggerNo ); UdSdU=tmp;
|
Dw.MDeriv(tmp , Mphi, phi,DaggerNo ); UdSdU=tmp;
|
||||||
Dw.MDeriv(tmp , phi, Mphi,DaggerYes ); UdSdU=(UdSdU+tmp);
|
Dw.MDeriv(tmp , phi, Mphi,DaggerYes ); UdSdU=(UdSdU+tmp);
|
||||||
|
|
||||||
// Take the trace
|
// Take the trace
|
||||||
UdSdU = Ta(UdSdU);
|
UdSdU = Ta(UdSdU);
|
||||||
|
|
||||||
@ -95,7 +96,8 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
for(int mu=0;mu<Nd;mu++){
|
for(int mu=0;mu<Nd;mu++){
|
||||||
|
|
||||||
SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu); // Traceless antihermitian momentum; gaussian in lie alg
|
// Traceless antihermitian momentum; gaussian in lie alg
|
||||||
|
SU3::GaussianFundamentalLieAlgebraMatrix(pRNG, mommu);
|
||||||
|
|
||||||
Hmom -= real(sum(trace(mommu*mommu)));
|
Hmom -= real(sum(trace(mommu*mommu)));
|
||||||
|
|
||||||
@ -194,6 +196,7 @@ int main (int argc, char ** argv)
|
|||||||
|
|
||||||
std::cout << GridLogMessage << "Total dS "<< Hmomprime - Hmom + Sprime - S <<std::endl;
|
std::cout << GridLogMessage << "Total dS "<< Hmomprime - Hmom + Sprime - S <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
|
@ -162,6 +162,8 @@ int main (int argc, char ** argv)
|
|||||||
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
std::cout << GridLogMessage << "dS "<<Sprime-S<<std::endl;
|
||||||
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
std::cout << GridLogMessage << "predict dS "<< dSpred <<std::endl;
|
||||||
|
|
||||||
|
assert( fabs(real(Sprime-S-dSpred)) < 1.0e-2 ) ;
|
||||||
|
|
||||||
std::cout<< GridLogMessage << "Done" <<std::endl;
|
std::cout<< GridLogMessage << "Done" <<std::endl;
|
||||||
Grid_finalize();
|
Grid_finalize();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user