42template<
class Impl,
class CloverHelpers>
80 const RealD _csw_r = 0.0,
81 const RealD _csw_t = 0.0,
82 const RealD _cF = 1.0,
83 const ImplParams& impl_p = ImplParams());
95 void Dhop(
const FermionField& in, FermionField& out,
int dag)
override;
97 void DhopOE(
const FermionField& in, FermionField& out,
int dag)
override;
99 void DhopEO(
const FermionField& in, FermionField& out,
int dag)
override;
101 void DhopDir(
const FermionField& in, FermionField& out,
int dir,
int disp)
override;
103 void DhopDirAll(
const FermionField& in, std::vector<FermionField>& out) ;
105 void M(
const FermionField& in, FermionField& out)
override;
107 void Mdag(
const FermionField& in, FermionField& out)
override;
109 void Meooe(
const FermionField& in, FermionField& out)
override;
111 void MeooeDag(
const FermionField& in, FermionField& out)
override;
113 void Mooee(
const FermionField& in, FermionField& out)
override;
115 void MooeeDag(
const FermionField& in, FermionField& out)
override;
117 void MooeeInv(
const FermionField& in, FermionField& out)
override;
119 void MooeeInvDag(
const FermionField& in, FermionField& out)
override;
121 void Mdir(
const FermionField& in, FermionField& out,
int dir,
int disp)
override;
123 void MdirAll(
const FermionField& in, std::vector<FermionField>& out)
override;
125 void MDeriv(GaugeField& force,
const FermionField& X,
const FermionField& Y,
int dag)
override;
127 void MooDeriv(GaugeField& mat,
const FermionField&
U,
const FermionField& V,
int dag)
override;
129 void MeeDeriv(GaugeField& mat,
const FermionField&
U,
const FermionField& V,
int dag)
override;
137 const CloverDiagonalField& diagonal,
138 const CloverTriangleField& triangle);
152 template<
class Field>
154 if(in.Grid()->_isCheckerBoarded) {
155 if(in.Checkerboard() ==
Odd) {
165 template<
class Field>
168 assert(m !=
nullptr);
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
CloverDiagonalField DiagonalEven
CloverDiagonalField DiagonalInv
void MooeeInternal(const FermionField &in, FermionField &out, const CloverDiagonalField &diagonal, const CloverTriangleField &triangle)
CloverDiagonalField DiagonalInvOdd
CloverTriangleField TriangleOdd
CloverTriangleField TriangleInvOdd
CloverTriangleField Triangle
void MdirAll(const FermionField &in, std::vector< FermionField > &out) override
void MooeeInvDag(const FermionField &in, FermionField &out) override
void MooeeInv(const FermionField &in, FermionField &out) override
int isTrivialEE() override
MaskField BoundaryMaskOdd
void MeeDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag) override
void Mdir(const FermionField &in, FermionField &out, int dir, int disp) override
CloverTriangleField TriangleEven
INHERIT_IMPL_TYPES(WImpl)
INHERIT_COMPACT_CLOVER_TYPES(WImpl)
void DhopDir(const FermionField &in, FermionField &out, int dir, int disp) override
CompactWilsonCloverFermion5D(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, const RealD _mass, const RealD _csw_r=0.0, const RealD _csw_t=0.0, const RealD _cF=1.0, const ImplParams &impl_p=ImplParams())
WilsonFermion5D< Impl > WilsonBase
void MooDeriv(GaugeField &mat, const FermionField &U, const FermionField &V, int dag) override
void Mooee(const FermionField &in, FermionField &out) override
void MeooeDag(const FermionField &in, FermionField &out) override
void M(const FermionField &in, FermionField &out) override
CompactWilsonCloverHelpers< Impl > CompactHelpers
virtual void Instantiatable()
void Dhop(const FermionField &in, FermionField &out, int dag) override
INHERIT_COMPACT_CLOVER_SIZES(WImpl)
void MooeeDag(const FermionField &in, FermionField &out) override
CloverDiagonalField Diagonal
CloverTriangleField TriangleInv
void ApplyBoundaryMask(Field &f)
void Meooe(const FermionField &in, FermionField &out) override
void Mdag(const FermionField &in, FermionField &out) override
const MaskField * getCorrectMaskField(const Field &in) const
void MDeriv(GaugeField &force, const FermionField &X, const FermionField &Y, int dag) override
CloverDiagonalField DiagonalInvEven
MaskField BoundaryMaskEven
INHERIT_CLOVER_TYPES(WImpl)
WilsonCloverHelpers< Impl > Helpers
void DhopOE(const FermionField &in, FermionField &out, int dag) override
void ImportGauge(const GaugeField &_Umu) override
CloverTriangleField TriangleInvEven
void DhopEO(const FermionField &in, FermionField &out, int dag) override
void DhopDirAll(const FermionField &in, std::vector< FermionField > &out)
CloverDiagonalField DiagonalOdd
static strong_inline void ApplyBoundaryMask(Field &f, const Mask &m)
WilsonFermion5D(GaugeField &_Umu, GridCartesian &FiveDimGrid, GridRedBlackCartesian &FiveDimRedBlackGrid, GridCartesian &FourDimGrid, GridRedBlackCartesian &FourDimRedBlackGrid, double _M5, const ImplParams &p=ImplParams())