27 ApplyDomainWall4D(out, in, *
gauge, 0.0, 0.0,
nullptr,
nullptr, in,
parity,
dagger,
commDim,
profile);
39 long long Ls = in.
X(4);
42 flops += 96LL*bulk + 120LL*wall;
53 ApplyDomainWall4D(out, in, *
gauge, k, 0.0,
nullptr,
nullptr, x,
parity,
dagger,
commDim,
profile);
67 long long Ls = in.
X(4);
70 flops += (48LL)*(
long long)in.
Volume() + 96LL*bulk + 120LL*wall;
77 ApplyDomainWall4D(out, in, *
gauge, 0.0, 0.0,
nullptr,
nullptr, in,
QUDA_INVALID_PARITY,
dagger,
commDim,
profile);
80 long long Ls = in.
X(4);
81 long long bulk = (
Ls - 2) * (in.
Volume() /
Ls);
82 long long wall = 2 * in.
Volume() /
Ls;
83 flops += (48LL) * (
long long)in.
Volume() + 96LL * bulk + 120LL * wall;
104 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
140 long long Ls = in.
X(4);
154 long long Ls = in.
X(4);
161 if ( in.
Ndim() != 5 || out.
Ndim() != 5)
errorQuda(
"Wrong number of dimensions\n");
170 if (symmetric && !
dagger) {
176 }
else if (symmetric &&
dagger) {
const ColorSpinorField & Odd() const
const ColorSpinorField & Even() const
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
Apply MdagM operator which may be optimized.
void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply M for the dirac op. E.g. the Schur Complement operator.
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
DiracDomainWall4D(const DiracParam ¶m)
DiracDomainWall4D & operator=(const DiracDomainWall4D &dirac)
void Dslash4Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
virtual ~DiracDomainWall4D()
void Dslash5(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
void Dslash4(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
Apply the local MdagM operator: equivalent to applying zero Dirichlet boundary condition to MdagM on ...
void Dslash5Xpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
DiracDomainWall4DPC & operator=(const DiracDomainWall4DPC &dirac)
void Dslash5invXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const double &kappa5, const ColorSpinorField &x, const double &k) const
DiracDomainWall4DPC(const DiracParam ¶m)
void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply M for the dirac op. E.g. the Schur Complement operator.
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
virtual ~DiracDomainWall4DPC()
void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
Apply MdagM operator which may be optimized.
void Dslash5inv(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const double &kappa5) const
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
DiracDomainWall & operator=(const DiracDomainWall &dirac)
void checkDWF(const ColorSpinorField &out, const ColorSpinorField &in) const
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
void deleteTmp(ColorSpinorField **, const bool &reset) const
virtual void checkParitySpinor(const ColorSpinorField &, const ColorSpinorField &) const
Check parity spinors are usable (check geometry ?)
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
check spinors do not alias
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
check full spinors are compatible (check geometry ?)
int commDim[QUDA_MAX_DIM]
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
Apply Mdag (daggered operator of M.
enum QudaSolutionType_s QudaSolutionType
@ QUDA_MATPC_ODD_ODD_ASYMMETRIC
@ QUDA_MATPC_EVEN_EVEN_ASYMMETRIC
@ QUDA_MATPCDAG_MATPC_SOLUTION
enum QudaParity_s QudaParity
void xpay(ColorSpinorField &x, double a, ColorSpinorField &y)
void ApplyDomainWall4D(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, double a, double m_5, const Complex *b_5, const Complex *c_5, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the batched Wilson 4-d stencil to a 5-d vector with 4-d preconditioned data order...
void ApplyDslash5(ColorSpinorField &out, const ColorSpinorField &in, const ColorSpinorField &x, double m_f, double m_5, const Complex *b_5, const Complex *c_5, double a, bool dagger, Dslash5Type type)
Apply either the domain-wall / mobius Dslash5 operator or the M5 inverse operator....