6 #ifndef __prec_dwf_linop_array_w_h__
7 #define __prec_dwf_linop_array_w_h__
23 multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
27 typedef LatticeFermion
T;
28 typedef multi1d<LatticeColorMatrix>
P;
29 typedef multi1d<LatticeColorMatrix>
Q;
33 const Real& WilsonMass_,
const Real&
m_q,
int N5_,
48 const multi1d<LatticeFermion>&
psi,
57 const multi1d<LatticeFermion>&
psi,
65 const multi1d<LatticeFermion>&
psi,
73 const multi1d<LatticeFermion>&
psi,
82 const multi1d<LatticeFermion>&
psi,
91 const multi1d<LatticeFermion>&
psi,
100 const LatticeFermion&
psi,
107 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
116 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
125 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
133 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
187 const multi1d<LatticeFermion>&
psi,
199 const multi1d<LatticeFermion>&
psi,
211 const multi1d<LatticeFermion>&
psi,
224 const multi1d<LatticeFermion>&
chi,
225 const multi1d<LatticeFermion>&
psi,
232 unsigned long cbsite_flops = (4*
N5+2)*Nc*Ns;
233 return cbsite_flops*(Layout::sitesOnNode()/2);
238 unsigned long cbsite_flops =
N5*(1320+2*Nc*Ns);
239 return cbsite_flops*(Layout::sitesOnNode()/2);
244 unsigned long cbsite_flops = (10*
N5-8)*Nc*Ns;
245 return cbsite_flops*(Layout::sitesOnNode()/2);
4D Even Odd preconditioned domain-wall Dirac operator
4D Even Odd preconditioned domain-wall Dirac operator
unsigned long oddOddNFlops(void) const
Return flops performed by the oddOddLinOp.
void derivOddOddLinOp(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
EvenOddPrecDWLinOpArray()
Partial constructor.
void oddOddInvLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the inverse of the odd-odd block onto a source std::vector.
void oddOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
unsigned long diagInvNFlops(void) const
Return flops performed by the diagonal part.
void applyOffDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the off diagonal block.
void derivEvenEvenLinOp(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the even-even block onto a source std::vector.
void evenEvenInvLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the inverse of the even-even block onto a source std::vector.
multi1d< LatticeColorMatrix > P
int size() const
Length of DW flavor index/space.
unsigned long nFlops() const
Return flops performed by the operator()
void evenEvenLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the even-even block onto a source std::vector.
~EvenOddPrecDWLinOpArray()
Destructor is automatic.
unsigned long oddEvenNFlops(void) const
Return flops performed by the oddEvenLinOp.
unsigned long offDiagNFlops(void) const
Return flops performed by the diagonal part.
void oddEvenLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-even block onto a source std::vector.
unsigned long diagNFlops(void) const
Return flops performed by the diagonal part.
void evenOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
void Dminus(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int s5) const
Apply the Dminus operator on a lattice fermion.
multi1d< LatticeColorMatrix > Q
unsigned long evenEvenInvNFlops(void) const
Return flops performed by the evenEvenInvLinOp.
void applyDerivOffDiag(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
Apply the even-odd (odd-even) coupling piece of the NEF operator.
void derivEvenOddLinOp(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
void derivOddEvenLinOp(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-even block onto a source std::vector.
unsigned long evenEvenNFlops(void) const
Return flops performed by the evenEvenLinOp.
unsigned long evenOddNFlops(void) const
Return flops performed by the evenOddLinOp.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
Base class for all fermion action boundary conditions.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
General Wilson-Dirac dslash of arrays.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
Include possibly optimized Wilson dslash.
Base class for even-odd preconditioned domain-wall-like linops.
Base class for even-odd preconditioned 4D and 5D Linop.
void applyDiagInv(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the inverse even-even (odd-odd) coupling piece of the domain-wall fermion operator.
void applyDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the even-even (odd-odd) coupling piece of the domain-wall fermion operator.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
Parameters for anisotropy.