12 warningQuda(
"Dynamic clover generation/inversion is currently not supported for pure Wilson-Clover dslash.\n");
20 warningQuda(
"Dynamic clover generation/inversion is currently not supported for pure Wilson-Clover dslash.\n");
40 errorQuda(
"Parity spinor volume %d doesn't match clover checkboard volume %d",
48 const double &k)
const 125 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
140 CoarseOp(Y,
X, Xinv, Yhat, T, *
gauge, &
clover,
kappa,
a,
mu_factor,
QUDA_CLOVER_DIRAC,
QUDA_MATPC_INVALID);
156 if (&
dirac !=
this) {
194 const double &k)
const 332 CoarseOp(Y,
X, Xinv, Yhat, T, *
gauge, &
clover,
kappa,
a, -
mu_factor,
QUDA_CLOVERPC_DIRAC,
matpcType);
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
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
const ColorSpinorField & Even() const
void deleteTmp(ColorSpinorField **, const bool &reset) const
const ColorSpinorField & Odd() const
static ColorSpinorField * Create(const ColorSpinorParam ¶m)
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
DiracWilson & operator=(const DiracWilson &dirac)
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
void cloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover &cloverInv, const cudaColorSpinorField *in, const int oddBit, const int daggerBit, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile)
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
int commDim[QUDA_MAX_DIM]
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
DiracClover & operator=(const DiracClover &dirac)
const ColorSpinorField & Vectors(QudaFieldLocation location=QUDA_CPU_FIELD_LOCATION) const
VOLATILE spinorFloat kappa
void asymCloverDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &gauge, const FullClover &cloverInv, const cudaColorSpinorField *in, const int oddBit, const int daggerBit, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile)
void Clover(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
#define checkLocation(...)
enum QudaSolutionType_s QudaSolutionType
enum QudaParity_s QudaParity
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.
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 DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
DiracClover(const DiracParam ¶m)
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
QudaFieldLocation location
cpuColorSpinorField * out
void ApplyClover(ColorSpinorField &out, const ColorSpinorField &in, const CloverField &clover, bool inverse, int parity)
Apply clover-matrix field to a color-spinor field.
void M(ColorSpinorField &out, const ColorSpinorField &in) const
QudaTwistFlavorType TwistFlavor() const
void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void CoarseOp(GaugeField &Y, GaugeField &X, GaugeField &Xinv, GaugeField &Yhat, 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)
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
DiracCloverPC & operator=(const DiracCloverPC &dirac)
void CloverInv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const