57 out, in, *
gauge, 0.0, 2 *
mu *
kappa, -2 * kappa *
epsilon, in, parity,
dagger,
commDim,
profile);
72 ApplyNdegTwistedMass(out, in, *
gauge, k, 2 *
mu *
kappa, -2 * kappa *
epsilon, x, parity,
dagger,
commDim,
profile);
113 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
128 double a = 2.0 * kappa *
mu;
144 if (&dirac !=
this) {
170 double b = 1.0 / (1.0 + a * a);
174 ApplyTwistedMassPreconditioned(out, in, *
gauge, b, a,
false, in, parity,
dagger, asymmetric,
commDim,
profile);
179 double c = 1.0 / (1.0 + a * a - b * b);
202 double b = k / (1.0 + a * a);
206 ApplyTwistedMassPreconditioned(out, in, *
gauge, b, a,
true, x, parity,
dagger, asymmetric,
commDim,
profile);
211 double c = 1.0 / (1.0 + a * a - b * b);
266 src = odd_bit ? &(x.
Even()) : &(x.
Odd());
267 sol = odd_bit ? &(x.
Odd()) : &(x.
Even());
320 if (symmetric)
TwistInv(*src, *tmp1);
374 double a = -2.0 * kappa *
mu;
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
virtual ~DiracTwistedMassPC()
DiracTwistedMassPC(const DiracTwistedMassPC &dirac)
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
DiracTwistedMassPC & operator=(const DiracTwistedMassPC &dirac)
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
const ColorSpinorField & Even() const
void deleteTmp(ColorSpinorField **, const bool &reset) const
void CoarseOp(GaugeField &Y, GaugeField &X, const Transfer &T, const cudaGaugeField &gauge, const cudaCloverField *clover, double kappa, double mu, double mu_factor, QudaDiracType dirac, QudaMatPCType matpc)
Coarse operator construction from a fine-grid operator (Wilson / Clover)
const ColorSpinorField & Odd() const
void createCoarseOp(GaugeField &Y, GaugeField &X, const Transfer &T, double kappa, double mass, double mu, double mu_factor=0.) const
Create the coarse twisted-mass operator.
DiracWilson & operator=(const DiracWilson &dirac)
DiracTwistedMass & operator=(const DiracTwistedMass &dirac)
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void Twist(ColorSpinorField &out, const ColorSpinorField &in) const
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
void createCoarseOp(GaugeField &Y, GaugeField &X, const Transfer &T, double kappa, double mass, double mu, double mu_factor=0.) const
Create the coarse even-odd preconditioned twisted-mass operator.
int commDim[QUDA_MAX_DIM]
void ApplyNdegTwistedMass(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, double c, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the non-degenerate twisted-mass stencil.
void ApplyTwistGamma(ColorSpinorField &out, const ColorSpinorField &in, int d, double kappa, double mu, double epsilon, int dagger, QudaTwistGamma5Type type)
Apply the twisted-mass gamma operator to a color-spinor field.
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, QudaParity parity, const ColorSpinorField &x, const double &k) const
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) 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
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
enum QudaSolutionType_s QudaSolutionType
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
enum QudaParity_s QudaParity
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
cpuColorSpinorField * out
void M(ColorSpinorField &out, const ColorSpinorField &in) const
void ApplyTwistedMass(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the twisted-mass stencil.
QudaTwistFlavorType TwistFlavor() const
double mu_factor[QUDA_MAX_MG_LEVEL]
void ApplyTwistedMassPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, bool xpay, const ColorSpinorField &x, int parity, bool dagger, bool asymmetric, const int *comm_override, TimeProfile &profile)
Driver for applying the preconditioned twisted-mass stencil.
enum QudaTwistGamma5Type_s QudaTwistGamma5Type
DiracTwistedMass(const DiracTwistedMass &dirac)
void TwistInv(ColorSpinorField &out, const ColorSpinorField &in) const
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
void ApplyNdegTwistedMassPreconditioned(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double b, double c, bool xpay, const ColorSpinorField &x, int parity, bool dagger, bool asymmetric, const int *comm_override, TimeProfile &profile)
Driver for applying the preconditioned non-degenerate twisted-mass stencil.
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, QudaParity parity) const
virtual ~DiracTwistedMass()
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void twistedApply(ColorSpinorField &out, const ColorSpinorField &in, const QudaTwistGamma5Type twistType) const