128 const double &k)
const = 0;
145 virtual double Mu()
const {
return 0.; }
148 unsigned long long Flops()
const {
unsigned long long rtn =
flops;
flops = 0;
return rtn; }
465 double a,
double b,
double c,
double d)
const;
469 double a,
double b,
double c,
double d)
const;
473 double a,
double b,
double c,
double d)
const;
476 double a,
double b,
double c,
double d)
const;
494 double Mu()
const {
return mu; }
578 double Mu()
const {
return mu; }
764 double Mu()
const {
return mu; }
1002 std::string
Type()
const {
return typeid(*dirac).name(); }
1027 bool reset1 =
false;
1030 if (reset1) {
dirac->
tmp1 = NULL; reset1 =
false; }
1036 bool reset1 =
false;
1037 bool reset2 =
false;
1041 if (reset2) {
dirac->
tmp2 = NULL; reset2 =
false; }
1042 if (reset1) {
dirac->
tmp1 = NULL; reset1 =
false; }
1170 #endif // _DIRAC_QUDA_H
DiracImprovedStaggeredPC & operator=(const DiracImprovedStaggeredPC &dirac)
virtual void MdagMCD(ColorSpinorField &out, const ColorSpinorField &in, const int mu) const
Dirac(const DiracParam ¶m)
Even-odd preconditioned Gauge Laplace operator.
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
double c_5[QUDA_MAX_DWF_LS]
NEW: used by mobius domain wall only.
void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracImprovedStaggeredPC(const DiracParam ¶m)
void M(ColorSpinorField &out, const ColorSpinorField &in) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual ~DiracTwistedMassPC()
void setDiracSloppyParam(DiracParam &diracParam, QudaInvertParam *inv_param, bool pc)
DiracMobiusPC(const DiracParam ¶m)
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
DiracMatrix(const Dirac &d)
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &tmp) const
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual ~DiracImprovedStaggered()
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void Dslash5(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void Dslash5(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
DiracWilson(const DiracParam ¶m)
virtual ~DiracImprovedStaggeredPC()
int getStencilSteps() const
DiracDomainWall4DPC & operator=(const DiracDomainWall4DPC &dirac)
DiracWilsonPC & operator=(const DiracWilsonPC &dirac)
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
GaugeLaplacePC & operator=(const GaugeLaplacePC &laplace)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void TwistedDslash(ColorSpinorField &out, const ColorSpinorField &in, QudaParity parity, QudaTwistDslashType twistDslashType, double a, double b, double c, double d) const
GaugeLaplacePC(const DiracParam ¶m)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
DiracTwistedMassPC(const DiracTwistedMassPC &dirac)
DiracWilsonPC(const DiracParam ¶m)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
DiracStaggeredPC(const DiracParam ¶m)
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void CloverInv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
Apply the inverse coarse clover operator.
virtual ~DiracDomainWallPC()
virtual ~DiracStaggered()
DiracMdag(const Dirac &d)
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
double mu_factor[QUDA_MAX_MG_LEVEL]
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply the full operator.
void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
double b_5[QUDA_MAX_DWF_LS]
void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
Apply DslashXpay out = (D * in)
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
Create the coarse twisted-clover operator.
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
DiracMdagM(const Dirac *d)
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in) const
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
GaugeLaplace(const DiracParam ¶m)
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracTwistedMassPC & operator=(const DiracTwistedMassPC &dirac)
cudaColorSpinorField * tmp
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void deleteTmp(ColorSpinorField **, const bool &reset) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &Tmp1, ColorSpinorField &Tmp2) const
virtual ~DiracDomainWall4DPC()
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
QudaMatPCType getMatPCType() const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
Apply DslashXpay out = (D * in + A * x)
int getStencilSteps() const
DiracWilson & operator=(const DiracWilson &dirac)
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
GaugeCovDev(const DiracParam ¶m)
void Clover(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
Apply the coarse clover operator.
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracTwistedMass & operator=(const DiracTwistedMass &dirac)
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
Create the coarse even-odd preconditioned twisted-clover operator. Unlike the Wilson operator...
void M(ColorSpinorField &out, const ColorSpinorField &in) const
unsigned long long Flops() const
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
Create the coarse even-odd preconditioned twisted-mass operator.
virtual double Mu() const
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
Create the coarse operator from this coarse operator.
DiracTwistedCloverPC(const DiracTwistedCloverPC &dirac)
void Dslash5invXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const =0
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
__device__ __host__ void laplace(Arg &arg, int x_cb, int parity)
void Twist(ColorSpinorField &out, const ColorSpinorField &in) const
cudaGaugeField & fatGauge
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &Tmp1, ColorSpinorField &Tmp2) const
void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
Apply DslashXpay out = (D * in + A * x)
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
void M(ColorSpinorField &out, const ColorSpinorField &in) const
void setDiracParam(DiracParam &diracParam, QudaInvertParam *inv_param, bool pc)
DiracStaggered & operator=(const DiracStaggered &dirac)
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void TwistCloverInv(ColorSpinorField &out, const ColorSpinorField &in, const int parity) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
int commDim[QUDA_MAX_DIM]
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
Apply DslashXpay out = (D * in)
double shift
Shift term added onto operator (M^dag M + shift)
void Dslash4(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracDomainWallPC(const DiracParam ¶m)
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracClover & operator=(const DiracClover &dirac)
QudaInvertParam inv_param
DiracMobius(const DiracParam ¶m)
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
Create the coarse even-odd preconditioned coarse operator. Unlike the Wilson operator, the coarsening of the preconditioned coarse operator differs from that of the unpreconditioned coarse operator, so we need to specialize it.
DiracStaggeredPC & operator=(const DiracStaggeredPC &dirac)
int getStencilSteps() const
int getStencilSteps() const
const Transfer * transfer
void MMdag(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
void Dslash5inv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const double &kappa5) const
void Dslash5invXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const double &kappa5, const ColorSpinorField &x, const double &k) const
DiracDomainWall & operator=(const DiracDomainWall &dirac)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void Clover(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu=0., double mu_factor=0.) const
Create the coarse operator (virtual parent)
DiracMatrix(const Dirac *d)
DiracTwistedCloverPC & operator=(const DiracTwistedCloverPC &dirac)
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
DiracDomainWall4DPC(const DiracParam ¶m)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const =0
int commDim[QUDA_MAX_DIM]
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const =0
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void Dagger(QudaDagType dag) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
void TwistedDslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &x, QudaParity parity, QudaTwistDslashType twistDslashType, double a, double b, double c, double d) const
enum QudaMatPCType_s QudaMatPCType
int getStencilSteps() const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
DiracTwistedClover & operator=(const DiracTwistedClover &dirac)
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
DiracDomainWall(const DiracParam ¶m)
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
DiracMMdag(const Dirac &d)
enum QudaSolutionType_s QudaSolutionType
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
virtual ~DiracTwistedCloverPC()
double b_5[QUDA_MAX_DWF_LS]
NEW: used by domain wall and twisted mass.
DiracTwistedClover(const DiracTwistedClover &dirac)
virtual void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu=0., double mu_factor=0.) const
Create the coarse Wilson operator.
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void Dslash4Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void Dslash4pre(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
QudaMatPCType matpcType
NEW: used by mobius domain wall only.
enum QudaDagType_s QudaDagType
void Dslash4preXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
enum QudaParity_s QudaParity
GaugeCovDev & operator=(const GaugeCovDev &covDev)
virtual double MuFactor() const
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu=0., double mu_factor=0.) const
Create the coarse even-odd preconditioned clover operator. Unlike the Wilson operator, the coarsening of the preconditioned clover operator differs from that of the unpreconditioned clover operator, so we need to specialize it.
void TwistClover(ColorSpinorField &out, const ColorSpinorField &in, const int parity) const
void Dslash4Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
DiracCloverPC(const DiracParam ¶m)
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu=0., double mu_factor=0.) const
Create the coarse clover operator.
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &Tmp1, ColorSpinorField &Tmp2) const
void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
DiracDomainWallPC & operator=(const DiracDomainWallPC &dirac)
double shift
Shift term added onto operator (M^dag M + shift)
void setMass(double mass)
void operator()(ColorSpinorField &out, const ColorSpinorField &in) const
void Dslash4(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void NdegTwistedDslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &x, QudaParity parity, QudaTwistDslashType twistDslashType, double a, double b, double c, double d) const
void axpy(const double &a, ColorSpinorField &x, ColorSpinorField &y)
QudaMatPCType getMatPCType() const
virtual ~DiracTwistedClover()
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
enum QudaTwistDslashType_s QudaTwistDslashType
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracClover(const DiracParam ¶m)
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const =0
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void Dslash5Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
Dirac & operator=(const Dirac &dirac)
double c_5[QUDA_MAX_DWF_LS]
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
cpuColorSpinorField * out
void M(ColorSpinorField &out, const ColorSpinorField &in) const
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &tmp) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &tmp) const
unsigned long long flops() const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
#define QUDA_MAX_DWF_LS
Maximum length of the Ls dimension for domain-wall fermions.
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
DiracMdagM(const Dirac &d)
Full Gauge Laplace operator. Although not a Dirac operator per se, it's a linear operator so it's con...
virtual void operator()(ColorSpinorField &out, const ColorSpinorField &in) const =0
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
cudaGaugeField * fatGauge
void M(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
DiracMMdag(const Dirac *d)
virtual void DslashCD(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const int mu) const
void NdegTwistedDslash(ColorSpinorField &out, const ColorSpinorField &in, QudaParity parity, QudaTwistDslashType twistDslashType, double a, double b, double c, double d) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
cudaGaugeField & longGauge
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual int getStencilSteps() const =0
void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void createCoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, const Transfer &T, double kappa, double mu, double mu_factor=0.) const
Create the coarse twisted-mass operator.
void Dslash5Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
cudaGaugeField * longGauge
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
GaugeLaplace & operator=(const GaugeLaplace &laplace)
void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
enum QudaTwistGamma5Type_s QudaTwistGamma5Type
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual ~GaugeLaplacePC()
#define QUDA_MAX_DIM
Maximum number of dimensions supported by QUDA. In practice, no routines make use of more than 5...
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &tmp) const
DiracTwistedMass(const DiracTwistedMass &dirac)
static Dirac * create(const DiracParam ¶m)
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
void TwistInv(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply the full operator.
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
DiracStaggered(const DiracParam ¶m)
DiracCloverPC & operator=(const DiracCloverPC &dirac)
void Dslash5inv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void twistedCloverApply(ColorSpinorField &out, const ColorSpinorField &in, const QudaTwistGamma5Type twistType, const int parity) const
void CloverInv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual ~DiracDomainWall()
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const =0
void operator()(ColorSpinorField &out, const ColorSpinorField &in, ColorSpinorField &Tmp1, ColorSpinorField &Tmp2) const
static __inline__ size_t size_t d
virtual ~DiracStaggeredPC()
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const =0
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
DiracMobiusPC & operator=(const DiracMobiusPC &dirac)
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
Full Covariant Derivative operator. Although not a Dirac operator per se, it's a linear operator so i...
DiracCoarse(const DiracParam ¶m, bool enable_gpu=true)
DiracMdag(const Dirac *d)
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracImprovedStaggered(const DiracParam ¶m)
virtual ~DiracTwistedMass()
DiracMobius & operator=(const DiracMobius &dirac)
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracCoarsePC(const DiracParam ¶m, bool enable_gpu=true)
virtual void MCD(ColorSpinorField &out, const ColorSpinorField &in, const int mu) const
enum QudaDiracType_s QudaDiracType
void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
void covDev(cudaColorSpinorField *out, cudaGaugeField &gauge, const cudaColorSpinorField *in, const int parity, const int mu, TimeProfile &profile)
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void twistedApply(ColorSpinorField &out, const ColorSpinorField &in, const QudaTwistGamma5Type twistType) const
DiracImprovedStaggered & operator=(const DiracImprovedStaggered &dirac)
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const