6 #ifndef __prec_ht_contfrac5d_linop_array_w_h__
7 #define __prec_ht_contfrac5d_linop_array_w_h__
30 multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
34 typedef LatticeFermion
T;
35 typedef multi1d<LatticeColorMatrix>
P;
36 typedef multi1d<LatticeColorMatrix>
Q;
45 const Real& _OverMass,
47 const Real& _scale_fac,
48 const multi1d<Real>& _alpha,
49 const multi1d<Real>& _beta,
52 const bool _isLastZeroP );
68 const multi1d<LatticeFermion>&
psi,
77 const multi1d<LatticeFermion>&
psi,
86 const multi1d<LatticeFermion>&
psi,
94 const multi1d<LatticeFermion>&
psi,
103 const multi1d<LatticeFermion>&
psi,
112 const multi1d<LatticeFermion>&
psi,
120 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
129 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
138 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
146 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
196 const multi1d<LatticeFermion>&
psi,
208 const multi1d<LatticeFermion>&
psi,
220 const multi1d<LatticeFermion>&
psi,
233 const multi1d<LatticeFermion>&
chi,
234 const multi1d<LatticeFermion>&
psi,
240 unsigned long cbsite_flops = (10*
N5-8)*Nc*Ns;
241 return cbsite_flops*(Layout::sitesOnNode()/2);
246 unsigned long cbsite_flops = (10*
N5-8)*Nc*Ns +
N5*1320;
247 return cbsite_flops*(Layout::sitesOnNode()/2);
252 unsigned long cbsite_flops = (10*
N5-14)*Nc*Ns;
253 return cbsite_flops*(Layout::sitesOnNode()/2);
Even-odd preconditioned linear operator including derivatives for arrays.
Even odd preconditioned Continued Fraction with H=H_t (Shamir Kernel)
unsigned long oddEvenNFlops(void) const
Return flops performed by the oddEvenLinOp.
unsigned long evenEvenNFlops(void) const
Return flops performed by the evenEvenLinOp.
multi1d< Real > beta_tilde
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.
EvenOddPrecHtContFrac5DLinOpArray(Handle< FermState< T, P, Q > > fs, const Real &_m_q, const Real &_OverMass, int _N5, const Real &_scale_fac, const multi1d< Real > &_alpha, const multi1d< Real > &_beta, const Real &_b5, const Real &_c5, const bool _isLastZeroP)
Full constructor.
multi1d< LatticeColorMatrix > P
unsigned long diagInvNFlops(void) const
Return flops performed by the diagonal part.
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 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.
unsigned long oddOddNFlops(void) const
Return flops performed by the oddOddLinOp.
int size() const
Length of DW flavor index/space.
void oddOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
void operator=(const EvenOddPrecHtContFrac5DLinOpArray &)
Hide partial constructor.
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 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.
multi1d< LatticeColorMatrix > Q
const multi1d< Real > beta
unsigned long evenOddNFlops(void) const
Return flops performed by the evenOddLinOp.
void applyOffDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the off diagonal block.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
unsigned long offDiagNFlops(void) const
Return flops performed by the diagonal part.
~EvenOddPrecHtContFrac5DLinOpArray()
Destructor is automatic.
multi1d< Real > alpha_tilde
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 evenEvenInvNFlops(void) const
Return flops performed by the evenEvenInvLinOp.
const multi1d< Real > alpha
void evenOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
unsigned long diagNFlops(void) const
Return flops performed by the diagonal part.
unsigned long nFlops() const
Return flops performed by the operator()
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 evenEvenLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Only defined on the entire lattice.
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.
Preconditioned 4D Linop with Gauge Independent Even-Even part.
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)
Support class for fermion actions and linear operators.