89template<
class Impl,
class CloverHelpers>
125 const RealD _csw_r = 0.0,
126 const RealD _csw_t = 0.0,
127 const RealD _cF = 1.0,
129 const ImplParams& impl_p = ImplParams());
141 void Dhop(
const FermionField& in, FermionField& out,
int dag)
override;
143 void DhopOE(
const FermionField& in, FermionField& out,
int dag)
override;
145 void DhopEO(
const FermionField& in, FermionField& out,
int dag)
override;
147 void DhopDir(
const FermionField& in, FermionField& out,
int dir,
int disp)
override;
149 void DhopDirAll(
const FermionField& in, std::vector<FermionField>& out) ;
151 void M(
const FermionField& in, FermionField& out)
override;
153 void Mdag(
const FermionField& in, FermionField& out)
override;
155 void Meooe(
const FermionField& in, FermionField& out)
override;
157 void MeooeDag(
const FermionField& in, FermionField& out)
override;
159 void Mooee(
const FermionField& in, FermionField& out)
override;
161 void MooeeDag(
const FermionField& in, FermionField& out)
override;
163 void MooeeInv(
const FermionField& in, FermionField& out)
override;
165 void MooeeInvDag(
const FermionField& in, FermionField& out)
override;
167 void Mdir(
const FermionField& in, FermionField& out,
int dir,
int disp)
override;
169 void MdirAll(
const FermionField& in, std::vector<FermionField>& out)
override;
171 void MDeriv(GaugeField& force,
const FermionField& X,
const FermionField& Y,
int dag)
override;
173 void MooDeriv(GaugeField& mat,
const FermionField&
U,
const FermionField& V,
int dag)
override;
175 void MeeDeriv(GaugeField& mat,
const FermionField&
U,
const FermionField& V,
int dag)
override;
183 const CloverDiagonalField& diagonal,
184 const CloverTriangleField& triangle);
198 template<
class Field>
200 if(in.Grid()->_isCheckerBoarded) {
201 if(in.Checkerboard() ==
Odd) {
211 template<
class Field>
214 assert(m !=
nullptr);
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
void Mdag(const FermionField &in, FermionField &out) override
INHERIT_IMPL_TYPES(WImpl)
int isTrivialEE() override
void Mdir(const FermionField &in, FermionField &out, int dir, int disp) override
void MeooeDag(const FermionField &in, FermionField &out) override
INHERIT_CLOVER_TYPES(WImpl)
CloverTriangleField TriangleInvOdd
MaskField BoundaryMaskOdd
void Dhop(const FermionField &in, FermionField &out, int dag) override
void MDeriv(GaugeField &force, const FermionField &X, const FermionField &Y, int dag) override
void ApplyBoundaryMask(Field &f)
INHERIT_COMPACT_CLOVER_TYPES(WImpl)
CloverTriangleField TriangleInvEven
void MdirAll(const FermionField &in, std::vector< FermionField > &out) override
void DhopEO(const FermionField &in, FermionField &out, int dag) override
void M(const FermionField &in, FermionField &out) override
CloverTriangleField TriangleInv
CompactWilsonCloverHelpers< Impl > CompactHelpers
WilsonFermion< Impl > WilsonBase
void MooDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag) override
void MooeeInternal(const FermionField &in, FermionField &out, const CloverDiagonalField &diagonal, const CloverTriangleField &triangle)
virtual void Instantiatable()
void ImportGauge(const GaugeField &_Umu) override
CloverDiagonalField DiagonalInv
void MeeDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag) override
CloverTriangleField TriangleEven
void DhopDirAll(const FermionField &in, std::vector< FermionField > &out)
CloverDiagonalField Diagonal
WilsonCloverHelpers< Impl > Helpers
CloverTriangleField TriangleOdd
void DhopOE(const FermionField &in, FermionField &out, int dag) override
CloverDiagonalField DiagonalInvOdd
void MooeeInv(const FermionField &in, FermionField &out) override
CloverTriangleField Triangle
void MooeeInvDag(const FermionField &in, FermionField &out) override
const MaskField * getCorrectMaskField(const Field &in) const
CloverDiagonalField DiagonalOdd
void Meooe(const FermionField &in, FermionField &out) override
void DhopDir(const FermionField &in, FermionField &out, int dir, int disp) override
void MooeeDag(const FermionField &in, FermionField &out) override
CompactWilsonCloverFermion(GaugeField &_Umu, GridCartesian &Fgrid, GridRedBlackCartesian &Hgrid, const RealD _mass, const RealD _csw_r=0.0, const RealD _csw_t=0.0, const RealD _cF=1.0, const WilsonAnisotropyCoefficients &clover_anisotropy=WilsonAnisotropyCoefficients(), const ImplParams &impl_p=ImplParams())
void Mooee(const FermionField &in, FermionField &out) override
INHERIT_COMPACT_CLOVER_SIZES(WImpl)
MaskField BoundaryMaskEven
CloverDiagonalField DiagonalEven
CloverDiagonalField DiagonalInvEven
static strong_inline void ApplyBoundaryMask(Field &f, const Mask &m)
WilsonFermion(GaugeField &_Umu, GridCartesian &Fgrid, GridRedBlackCartesian &Hgrid, RealD _mass, const ImplParams &p=ImplParams(), const WilsonAnisotropyCoefficients &anis=WilsonAnisotropyCoefficients())