22 if (in.
Ndim() != 5 || out.
Ndim() != 5) {
23 errorQuda(
"Staggered dslash requires 5-d fermion fields");
27 errorQuda(
"Input and output spinor precisions don't match in dslash_quda");
31 errorQuda(
"Input %d and output %d spinor strides don't match in dslash_quda", in.
Stride(), out.
Stride());
35 errorQuda(
"ColorSpinorFields are not single parity, in = %d, out = %d",
57 const double &k)
const 120 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
135 errorQuda(
"Cannot coarsen a staggered operator (yet!), we're just getting the functions in place.");
159 if (&dirac !=
this) {
199 errorQuda(
"MdagM is no longer defined for DiracStaggeredPC. Use M instead.\n");
void ax(double a, ColorSpinorField &x)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
DiracStaggeredPC(const DiracParam ¶m)
virtual ~DiracStaggered()
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
const ColorSpinorField & Even() const
void deleteTmp(ColorSpinorField **, const bool &reset) const
const ColorSpinorField & Odd() const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
DiracStaggered & operator=(const DiracStaggered &dirac)
int commDim[QUDA_MAX_DIM]
DiracStaggeredPC & operator=(const DiracStaggeredPC &dirac)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
QudaSiteSubset SiteSubset() const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
enum QudaSolutionType_s QudaSolutionType
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
enum QudaParity_s QudaParity
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
Dirac & operator=(const Dirac &dirac)
cpuColorSpinorField * out
void createCoarseOp(GaugeField &Y, GaugeField &X, const Transfer &T, double kappa, double mass, double mu=0., double mu_factor=0.) const
Create the coarse staggered operator. Unlike the Wilson operator, we assume a mass normalization...
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void ApplyStaggered(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Apply the staggered dslash operator to a color-spinor field.
double mu_factor[QUDA_MAX_MG_LEVEL]
DiracStaggered(const DiracParam ¶m)
QudaPrecision Precision() const
virtual ~DiracStaggeredPC()
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const