29#ifndef GRID_QCD_IMPR_STAG_FERMION_H
30#define GRID_QCD_IMPR_STAG_FERMION_H
62 void M(
const FermionField &in, FermionField &out);
63 void Mdag(
const FermionField &in, FermionField &out);
68 void Meooe(
const FermionField &in, FermionField &out);
69 void MeooeDag(
const FermionField &in, FermionField &out);
70 void Mooee(
const FermionField &in, FermionField &out);
71 void MooeeDag(
const FermionField &in, FermionField &out);
72 void MooeeInv(
const FermionField &in, FermionField &out);
79 void DhopDeriv (GaugeField &mat,
const FermionField &
U,
const FermionField &V,
int dag);
80 void DhopDerivOE(GaugeField &mat,
const FermionField &
U,
const FermionField &V,
int dag);
81 void DhopDerivEO(GaugeField &mat,
const FermionField &
U,
const FermionField &V,
int dag);
86 void Dhop (
const FermionField &in, FermionField &out,
int dag);
87 void DhopOE(
const FermionField &in, FermionField &out,
int dag);
88 void DhopEO(
const FermionField &in, FermionField &out,
int dag);
93 void Mdir(
const FermionField &in, FermionField &out,
int dir,
int disp);
94 void MdirAll(
const FermionField &in, std::vector<FermionField> &out);
95 void DhopDir(
const FermionField &in, FermionField &out,
int dir,
int disp);
101 DoubledGaugeField &
U,DoubledGaugeField &UUU,
103 const FermionField &A,
const FermionField &
B,
int dag);
105 void DhopInternal(StencilImpl &st, DoubledGaugeField &
U,DoubledGaugeField &UUU,
106 const FermionField &in, FermionField &out,
int dag);
108 const FermionField &in, FermionField &out,
int dag);
110 const FermionField &in, FermionField &out,
int dag);
118 const ImplParams &p = ImplParams());
125 const ImplParams &p = ImplParams());
129 void ImportGauge(
const GaugeField &_Uthin,
const GaugeField &_Ufat);
132 DoubledGaugeField &
GetU(
void) {
return Umu ; } ;
159 Stencil.SetSloppyComms(sloppy);
178 PropagatorField &q_in_2,
179 PropagatorField &q_out,
180 PropagatorField &src,
184 PropagatorField &q_out,
185 PropagatorField &srct,
190 ComplexField &lattice_cmplx);
ImprovedStaggeredFermion< StaggeredImplD > ImprovedStaggeredFermionD
ImprovedStaggeredFermion< StaggeredImplF > ImprovedStaggeredFermionF
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
static const std::vector< int > displacements
static const std::vector< int > directions
void ImportGauge(const GaugeField &_Uthin)
DoubledGaugeField UUUmuEven
void M(const FermionField &in, FermionField &out)
DoubledGaugeField & GetU(void)
void Meooe(const FermionField &in, FermionField &out)
void ImportGauge(const GaugeField &_Uthin, const GaugeField &_Ufat)
void MooeeInvDag(const FermionField &in, FermionField &out)
void DhopDerivEO(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void MooeeInv(const FermionField &in, FermionField &out)
void DhopDir(const FermionField &in, FermionField &out, int dir, int disp)
ImprovedStaggeredFermion(GridCartesian &Fgrid, GridRedBlackCartesian &Hgrid, RealD _mass, RealD _c1=1.0, RealD _c2=1.0, RealD _u0=1.0, const ImplParams &p=ImplParams())
void Mdag(const FermionField &in, FermionField &out)
void SloppyComms(int sloppy)
void MdirAll(const FermionField &in, std::vector< FermionField > &out)
void Mdir(const FermionField &in, FermionField &out, int dir, int disp)
DoubledGaugeField & GetUUU(void)
void ImportGaugeSimple(const DoubledGaugeField &_UUU, const DoubledGaugeField &_U)
DoubledGaugeField UmuEven
virtual int isTrivialEE(void)
void Mooee(const FermionField &in, FermionField &out)
void ImportGaugeSimple(const GaugeField &_UUU, const GaugeField &_U)
void SeqConservedCurrent(PropagatorField &q_in, PropagatorField &q_out, PropagatorField &srct, Current curr_type, unsigned int mu, unsigned int tmin, unsigned int tmax, ComplexField &lattice_cmplx)
void MooeeDag(const FermionField &in, FermionField &out)
void DhopDerivOE(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
void Dhop(const FermionField &in, FermionField &out, int dag)
void DhopOE(const FermionField &in, FermionField &out, int dag)
void DerivInternal(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, GaugeField &mat, const FermionField &A, const FermionField &B, int dag)
GridBase * FermionRedBlackGrid(void)
void DhopDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag)
GridBase * GaugeGrid(void)
GridBase * GaugeRedBlackGrid(void)
void DhopEO(const FermionField &in, FermionField &out, int dag)
void DhopInternalSerialComms(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag)
void MeooeDag(const FermionField &in, FermionField &out)
GridBase * FermionGrid(void)
void DhopInternal(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag)
DoubledGaugeField UUUmuOdd
void DhopInternalOverlappedComms(StencilImpl &st, DoubledGaugeField &U, DoubledGaugeField &UUU, const FermionField &in, FermionField &out, int dag)
StaggeredKernels< StaggeredImplF > Kernels
ImprovedStaggeredFermion(GaugeField &_Uthin, GaugeField &_Ufat, GridCartesian &Fgrid, GridRedBlackCartesian &Hgrid, RealD _mass, RealD _c1, RealD _c2, RealD _u0, const ImplParams &p=ImplParams())
void CopyGaugeCheckerboards(void)
void ContractConservedCurrent(PropagatorField &q_in_1, PropagatorField &q_in_2, PropagatorField &q_out, PropagatorField &src, Current curr_type, unsigned int mu)
StaggeredKernels(const ImplParams &p=ImplParams())