54 virtual void M(
const FermionField &in, FermionField &out)
57 out = (5.0 -
M5) * in;
61 virtual void Mdag(
const FermionField &in, FermionField &out)
64 out = (5.0 -
M5) * in;
72 void Meooe(
const FermionField &in, FermionField &out)
74 if ( in.Checkerboard() ==
Odd ) {
80 void MeooeDag(
const FermionField &in, FermionField &out)
82 if ( in.Checkerboard() ==
Odd ) {
90 virtual void Mooee(
const FermionField &in, FermionField &out)
92 out = (5.0 -
M5) * in;
94 virtual void MooeeDag(
const FermionField &in, FermionField &out)
96 out = (5.0 -
M5) * in;
98 virtual void MooeeInv(
const FermionField &in, FermionField &out)
100 out = (1.0/(5.0 -
M5)) * in;
102 virtual void MooeeInvDag(
const FermionField &in, FermionField &out)
104 out = (1.0/(5.0 -
M5)) * in;
113 void DhopDeriv(GaugeField &mat,
const FermionField &
U,
const FermionField &V,
int dag) { assert(0);};
114 void DhopDerivOE(GaugeField &mat,
const FermionField &
U,
const FermionField &V,
int dag){ assert(0);};
115 void DhopDerivEO(GaugeField &mat,
const FermionField &
U,
const FermionField &V,
int dag){ assert(0);};
120 void Dhop(
const FermionField &in, FermionField &out,
int dag)
122 FermionField
tmp(in.Grid());
124 for(
int mu=0;mu<4;mu++){
128 void DhopOE(
const FermionField &in, FermionField &out,
int dag)
130 FermionField
tmp(in.Grid());
131 assert(in.Checkerboard()==
Even);
133 for(
int mu=0;mu<4;mu++){
137 void DhopEO(
const FermionField &in, FermionField &out,
int dag)
139 FermionField
tmp(in.Grid());
140 assert(in.Checkerboard()==
Odd);
142 for(
int mu=0;mu<4;mu++){
150 void Mdir(
const FermionField &in, FermionField &out,
int dir,
int disp){ assert(0);};
151 void MdirAll(
const FermionField &in, std::vector<FermionField> &out) { assert(0);};
152 void DhopDir(
const FermionField &in, FermionField &out,
int dir,
int disp) { assert(0);};
153 void DhopDirAll(
const FermionField &in, std::vector<FermionField> &out) { assert(0);};
154 void DhopDirCalc(
const FermionField &in, FermionField &out,
int dirdisp,
int gamma,
int dag) { assert(0);};
156 void DhopDirU(
const FermionField &in,
const GaugeLinkField &U5e,
const GaugeLinkField &U5o, FermionField &out,
int mu,
int dag)
161 Gamma::Algebra Gmu [] = {
162 Gamma::Algebra::GammaX,
163 Gamma::Algebra::GammaY,
164 Gamma::Algebra::GammaZ,
165 Gamma::Algebra::GammaT
169 FermionField
tmp (in.Grid());
179 void Dhop5(
const FermionField &in, FermionField &out, ComplexField &massE, ComplexField &massO,
int dag)
185 Gamma G5(Gamma::Algebra::Gamma5);
187 FermionField
tmp (in.Grid());
192 out = out +
tmp + G5*
tmp*sgn;
216 typedef typename FermionField::scalar_type scalar;
220 ComplexField
one(&Fgrid);
224 for(
int mu=0;mu<
Nd;mu++){
236 GaugeLinkField U4(
_grid4);
237 for(
int mu=0;mu<
Nd;mu++){
239 for(
int s=0;s<this->
Ls;s++){
262 std::vector<GaugeLinkField>
Umu;
273 PropagatorField &q_in_2,
274 PropagatorField &q_out,
275 PropagatorField &phys_src,
279 PropagatorField &q_out,
280 PropagatorField &phys_src,
285 ComplexField &lattice_cmplx){}
auto Cshift(const Expression &expr, int dim, int shift) -> decltype(closure(expr))
DWFSlowFermion< WilsonImplF > DWFSlowFermionF
DWFSlowFermion< WilsonImplD > DWFSlowFermionD
void LatticeCoordinate(Lattice< iobj > &l, int mu)
auto PeekIndex(const Lattice< vobj > &lhs, int i) -> Lattice< decltype(peekIndex< Index >(vobj(), i))>
Lattice< vobj > adj(const Lattice< vobj > &lhs)
void InsertSlice(const Lattice< vobj > &lowDim, Lattice< vobj > &higherDim, int slice, int orthog)
void pickCheckerboard(int cb, Lattice< vobj > &half, const Lattice< vobj > &full)
#define NAMESPACE_BEGIN(A)
static constexpr int DaggerYes
static constexpr int DaggerNo
static INTERNAL_PRECISION U
void DhopDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
ComplexField MassFieldEven
virtual void Mooee(const FermionField &in, FermionField &out)
virtual int isTrivialEE(void)
void DhopDerivOE(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
std::vector< GaugeLinkField > Umu
std::vector< GaugeLinkField > UmuEven
GridBase * FermionRedBlackGrid(void)
ComplexField MassFieldOdd
void DhopDirCalc(const FermionField &in, FermionField &out, int dirdisp, int gamma, int dag)
void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, PropagatorField &phys_src, Current curr_type, unsigned int mu, unsigned int tmin, unsigned int tmax, ComplexField &lattice_cmplx)
void Meooe(const FermionField &in, FermionField &out)
void DhopDirU(const FermionField &in, const GaugeLinkField &U5e, const GaugeLinkField &U5o, FermionField &out, int mu, int dag)
void Dhop5(const FermionField &in, FermionField &out, ComplexField &massE, ComplexField &massO, int dag)
virtual void MomentumSpacePropagator(FermionField &out, const FermionField &in, RealD _mass, std::vector< double > twist)
void DhopDir(const FermionField &in, FermionField &out, int dir, int disp)
void Mdir(const FermionField &in, FermionField &out, int dir, int disp)
void MeooeDag(const FermionField &in, FermionField &out)
void ImportGauge(const GaugeField &_Umu4)
DWFSlowFermion(GaugeField &_Umu, GridCartesian &Fgrid, GridRedBlackCartesian &Hgrid, RealD _mass, RealD _M5)
void ContractConservedCurrent(PropagatorField &q_in_1, PropagatorField &q_in_2, PropagatorField &q_out, PropagatorField &phys_src, Current curr_type, unsigned int mu)
virtual void M(const FermionField &in, FermionField &out)
void DhopEO(const FermionField &in, FermionField &out, int dag)
virtual void MooeeInvDag(const FermionField &in, FermionField &out)
GridBase * GaugeGrid(void)
GridBase * GaugeRedBlackGrid(void)
virtual void Mdag(const FermionField &in, FermionField &out)
virtual void MooeeInv(const FermionField &in, FermionField &out)
void DhopOE(const FermionField &in, FermionField &out, int dag)
void DhopDirAll(const FermionField &in, std::vector< FermionField > &out)
GridBase * FermionGrid(void)
virtual void MooeeDag(const FermionField &in, FermionField &out)
void MdirAll(const FermionField &in, std::vector< FermionField > &out)
void DhopDerivEO(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
std::vector< GaugeLinkField > UmuOdd
void Dhop(const FermionField &in, FermionField &out, int dag)
FermionOperator(const ImplParams &p=ImplParams())