6 namespace improvedstaggered {
7 #include <dslash_init.cuh>
11 Dirac(param), fatGauge(*(param.fatGauge)), longGauge(*(param.longGauge)),
12 face1(param.fatGauge->
X(), 4, 6, 3, param.fatGauge->Precision()),
13 face2(param.fatGauge->
X(), 4, 6, 3, param.fatGauge->Precision())
21 :
Dirac(dirac), fatGauge(dirac.fatGauge), longGauge(dirac.longGauge), face1(dirac.face1), face2(dirac.face2)
44 errorQuda(
"Input and output spinor precisions don't match in dslash_quda");
48 errorQuda(
"Input %d and output %d spinor strides don't match in dslash_quda", in.
Stride(), out.
Stride());
52 errorQuda(
"ColorSpinorFields are not single parity, in = %d, out = %d",
76 const double &k)
const
123 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
156 if (&dirac !=
this) {
165 errorQuda(
"DiracImprovedStaggeredPC::M() is not implemented\n");
DiracImprovedStaggeredPC & operator=(const DiracImprovedStaggeredPC &dirac)
DiracImprovedStaggeredPC(const DiracParam ¶m)
void initStaggeredConstants(const cudaGaugeField &fatgauge, const cudaGaugeField &longgauge, TimeProfile &profile)
virtual ~DiracImprovedStaggered()
virtual ~DiracImprovedStaggeredPC()
virtual void M(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
bool newTmp(cudaColorSpinorField **, const cudaColorSpinorField &) const
void improvedStaggeredDslashCuda(cudaColorSpinorField *out, const cudaGaugeField &fatGauge, const cudaGaugeField &longGauge, const cudaColorSpinorField *in, const int parity, const int dagger, const cudaColorSpinorField *x, const double &k, const int *commDim, TimeProfile &profile, const QudaDslashPolicy &dslashPolicy=QUDA_DSLASH2)
virtual void prepare(cudaColorSpinorField *&src, cudaColorSpinorField *&sol, cudaColorSpinorField &x, cudaColorSpinorField &b, const QudaSolutionType) const
cudaGaugeField & fatGauge
cudaColorSpinorField & Odd() const
int commDim[QUDA_MAX_DIM]
virtual void DslashXpay(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity, const cudaColorSpinorField &x, const double &k) const
virtual void checkParitySpinor(const cudaColorSpinorField &, const cudaColorSpinorField &) const
enum QudaSolutionType_s QudaSolutionType
virtual void MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
void deleteTmp(cudaColorSpinorField **, const bool &reset) const
enum QudaParity_s QudaParity
Dirac & operator=(const Dirac &dirac)
cpuColorSpinorField * out
cudaColorSpinorField * tmp1
QudaPrecision Precision() const
cudaGaugeField & longGauge
virtual void reconstruct(cudaColorSpinorField &x, const cudaColorSpinorField &b, const QudaSolutionType) const
virtual void Dslash(cudaColorSpinorField &out, const cudaColorSpinorField &in, const QudaParity parity) const
DiracImprovedStaggered(const DiracParam ¶m)
QudaSiteSubset SiteSubset() const
cudaColorSpinorField & Even() const
virtual void M(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
virtual void prepare(cudaColorSpinorField *&src, cudaColorSpinorField *&sol, cudaColorSpinorField &x, cudaColorSpinorField &b, const QudaSolutionType) const
virtual void reconstruct(cudaColorSpinorField &x, const cudaColorSpinorField &b, const QudaSolutionType) const
virtual void MdagM(cudaColorSpinorField &out, const cudaColorSpinorField &in) const
DiracImprovedStaggered & operator=(const DiracImprovedStaggered &dirac)