8 #ifndef __prec_nef_general_linop_array_w_h__
9 #define __prec_nef_general_linop_array_w_h__
24 multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
28 typedef LatticeFermion
T;
29 typedef multi1d<LatticeColorMatrix>
P;
30 typedef multi1d<LatticeColorMatrix>
Q;
34 const Real& WilsonMass_,
35 const multi1d<Real>& b5_,
36 const multi1d<Real>& c5_,
39 {
create(fs, WilsonMass_, m_q_, b5_, c5_, N5_);}
50 const Real& WilsonMass_,
56 multi1d<Real> b5_arr(N5_);
57 multi1d<Real> c5_arr(N5_);
58 for(
int i=0;
i < N5_;
i++) {
63 create(fs,WilsonMass_,m_q_, b5_arr, c5_arr, N5_);
68 const Real& WilsonMass_,
70 const multi1d<Real>& b5_,
71 const multi1d<Real>& c5_,
90 const multi1d<LatticeFermion>&
psi,
99 const multi1d<LatticeFermion>&
psi,
107 const multi1d<LatticeFermion>&
psi,
115 const multi1d<LatticeFermion>&
psi,
124 const multi1d<LatticeFermion>&
psi,
133 const multi1d<LatticeFermion>&
psi,
142 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
151 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
160 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
168 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
185 const multi1d<LatticeFermion>&
psi,
197 const multi1d<LatticeFermion>&
psi,
213 const multi1d<LatticeFermion>&
psi,
219 const LatticeFermion&
psi,
234 const multi1d<LatticeFermion>&
chi,
235 const multi1d<LatticeFermion>&
psi,
4D Even Odd preconditioned domain-wall Dirac operator
4D Even Odd preconditioned NEF domain-wall Dirac operator
void Dminus(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int s5) const
Apply the Dminus operator on a lattice fermion. See my notes ;-)
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.
multi1d< LatticeColorMatrix > P
void operator=(const EvenOddPrecGenNEFDWLinOpArray &)
Partial constructor.
EvenOddPrecGenNEFDWLinOpArray(Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const multi1d< Real > &b5_, const multi1d< Real > &c5_, const Real &m_q_, int N5_)
void evenEvenLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the even-even block onto a source std::vector.
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.
void oddOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
~EvenOddPrecGenNEFDWLinOpArray()
Destructor is automatic.
EvenOddPrecGenNEFDWLinOpArray()
Partial constructor.
const FermBC< T, P, Q > & getFermBC() const
set b5 and c5 given kappa and a5
EvenOddPrecGenNEFDWLinOpArray(Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const Real &b5_, const Real &c5_, const Real &m_q_, int N5_)
multi1d< LatticeColorMatrix > Q
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 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 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 oddEvenLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-even 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.
void evenOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
int size() const
Length of DW flavor index/space.
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.
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.
void create(Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const Real &m_q_, const multi1d< Real > &b5_, const multi1d< Real > &c5_, int N5_)
Creation routine.
void applyOffDiag(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 applyDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
Apply the even-even (odd-odd) coupling piece of the domain-wall fermion operator.
void applyDiagInv(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
Apply the inverse even-even (odd-odd) coupling piece of the domain-wall fermion operator.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)