27 for (
int i = 0; i < 4; i++) {
31 ApplyLaplace(out, in, *
gauge,
laplace3D, 1.0, 1.0, in,
parity,
dagger,
comm_dim,
profile);
37 const double &k)
const
43 for (
int i = 0; i < 4; i++) {
47 ApplyLaplace(out, in, *
gauge,
laplace3D, k, 1.0, x,
parity,
dagger,
comm_dim,
profile);
73 errorQuda(
"Preconditioned solution requires a preconditioned solve_type");
const ColorSpinorField & Odd() const
const ColorSpinorField & Even() const
bool newTmp(ColorSpinorField **, const ColorSpinorField &) const
void deleteTmp(ColorSpinorField **, const bool &reset) const
void checkSpinorAlias(const ColorSpinorField &, const ColorSpinorField &) const
check spinors do not alias
Dirac & operator=(const Dirac &dirac)
virtual void checkFullSpinor(const ColorSpinorField &, const ColorSpinorField &) const
check full spinors are compatible (check geometry ?)
void Mdag(ColorSpinorField &out, const ColorSpinorField &in) const
Apply Mdag (daggered operator of M.
Full Gauge Laplace operator. Although not a Dirac operator per se, it's a linear operator so it's con...
GaugeLaplace & operator=(const GaugeLaplace &laplace)
virtual void M(ColorSpinorField &out, const ColorSpinorField &in) const
Apply M for the dirac op. E.g. the Schur Complement operator.
virtual void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
GaugeLaplace(const DiracParam ¶m)
virtual void Dslash(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity) const
apply 'dslash' operator for the DiracOp. This may be e.g. AD
virtual void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
virtual void MdagM(ColorSpinorField &out, const ColorSpinorField &in) const
Apply MdagM operator which may be optimized.
virtual void DslashXpay(ColorSpinorField &out, const ColorSpinorField &in, const QudaParity parity, const ColorSpinorField &x, const double &k) const
Xpay version of Dslash.
Even-odd preconditioned Gauge Laplace operator.
virtual ~GaugeLaplacePC()
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.
GaugeLaplacePC & operator=(const GaugeLaplacePC &laplace)
void prepare(ColorSpinorField *&src, ColorSpinorField *&sol, ColorSpinorField &x, ColorSpinorField &b, const QudaSolutionType) const
void reconstruct(ColorSpinorField &x, const ColorSpinorField &b, const QudaSolutionType) const
GaugeLaplacePC(const DiracParam ¶m)
int comm_dim_partitioned(int dim)
enum QudaSolutionType_s QudaSolutionType
@ QUDA_MATPCDAG_MATPC_SOLUTION
enum QudaParity_s QudaParity
void ApplyLaplace(ColorSpinorField &out, const ColorSpinorField &in, const GaugeField &U, int dir, double a, double b, const ColorSpinorField &x, int parity, bool dagger, const int *comm_override, TimeProfile &profile)
Driver for applying the Laplace stencil.