1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-10 07:55:35 +00:00

Multiple implementations for the 5d hopping terms, depending on cache friendly

ops and/or the 5th direction being vectorised
All use 4d redblack.
This commit is contained in:
paboyle 2016-07-15 00:00:09 +01:00
parent 79a8ca1a62
commit dfd714e1ef

View File

@ -51,11 +51,29 @@ namespace Grid {
virtual void MooeeDag (const FermionField &in, FermionField &out);
virtual void MooeeInv (const FermionField &in, FermionField &out);
virtual void MooeeInvDag (const FermionField &in, FermionField &out);
virtual void MooeeLDUInv (const FermionField &in, FermionField &out);
virtual void MooeeLDUInvDag (const FermionField &in, FermionField &out);
virtual void MooeeDenseInv (const FermionField &in, FermionField &out);
virtual void MooeeDenseInvDag (const FermionField &in, FermionField &out);
void MooeeDenseInternal(const FermionField &in, FermionField &out,int dag,int inv);
virtual void Meo5D (const FermionField &psi, FermionField &chi);
virtual void M5D (const FermionField &psi, FermionField &chi);
virtual void M5Ddag(const FermionField &psi, FermionField &chi);
/////////////////////////////////////////////////////
// Instantiate different versions depending on Impl
/////////////////////////////////////////////////////
void M5D(const FermionField &psi,
const FermionField &phi,
FermionField &chi,
std::vector<RealD> &lower,
std::vector<RealD> &diag,
std::vector<RealD> &upper);
void M5Ddag(const FermionField &psi,
const FermionField &phi,
FermionField &chi,
std::vector<RealD> &lower,
std::vector<RealD> &diag,
std::vector<RealD> &upper);
void MooeeInternal(const FermionField &in, FermionField &out,int dag,int inv);
virtual void Instantiatable(void)=0;
// force terms; five routines; default to Dhop on diagonal
@ -100,6 +118,7 @@ namespace Grid {
RealD _mass,RealD _M5,const ImplParams &p= ImplParams());
protected:
void SetCoefficientsZolotarev(RealD zolohi,Approx::zolotarev_data *zdata,RealD b,RealD c);
void SetCoefficientsTanh(Approx::zolotarev_data *zdata,RealD b,RealD c);