6 #ifndef __prec_ovlap_contfrac5d_linop_base_array_w_h__
7 #define __prec_ovlap_contfrac5d_linop_base_array_w_h__
28 LatticeFermion, multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
32 typedef LatticeFermion
T;
33 typedef multi1d<LatticeColorMatrix>
P;
34 typedef multi1d<LatticeColorMatrix>
Q;
43 const Real& _OverMass,
45 const Real& _scale_fac,
46 const multi1d<Real>& _alpha,
47 const multi1d<Real>& _beta,
48 const bool _isLastZeroP );
67 const multi1d<LatticeFermion>&
psi,
76 const multi1d<LatticeFermion>&
psi,
85 const multi1d<LatticeFermion>&
psi,
93 const multi1d<LatticeFermion>&
psi,
102 const multi1d<LatticeFermion>&
psi,
111 const multi1d<LatticeFermion>&
psi,
119 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
128 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
137 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
145 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
186 + (2*Nc*Ns*
N5*(Layout::sitesOnNode()/2));
202 const multi1d<LatticeFermion>&
psi,
215 const multi1d<LatticeFermion>&
psi,
228 const multi1d<LatticeFermion>&
psi,
242 const multi1d<LatticeFermion>&
chi,
243 const multi1d<LatticeFermion>&
psi,
249 unsigned long cbsite_flops = (10*
N5-8)*Nc*Ns;
250 return cbsite_flops*(Layout::sitesOnNode()/2);
255 unsigned long cbsite_flops;
262 cbsite_flops *= (1320+2*Nc*Ns);
263 return cbsite_flops*(Layout::sitesOnNode()/2);
268 unsigned long cbsite_flops = (10*
N5-8)*Nc*Ns;
269 return cbsite_flops*(Layout::sitesOnNode()/2);
Even-odd preconditioned linear operator including derivatives for arrays.
Base class Even-odd prec. 5D continued fraction linop.
unsigned long diagInvNFlops(void) const
Return flops performed by the diagonal part.
void oddOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the odd-odd block onto a source std::vector.
virtual void applyOffDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the off diagonal block.
multi1d< LatticeColorMatrix > Q
unsigned long evenEvenInvNFlops(void) const
Return flops performed by the evenEvenInvLinOp.
unsigned long evenEvenNFlops(void) const
Return flops performed by the evenEvenLinOp.
multi1d< LatticeColorMatrix > P
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
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.
multi1d< Real > beta_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 oddOddNFlops(void) const
Return flops performed by the oddOddLinOp.
const multi1d< Real > beta
EvenOddPrecOvlapContFrac5DLinOpBaseArray(Handle< FermState< T, P, Q > > state, const Real &_m_q, const Real &_OverMass, int _N5, const Real &_scale_fac, const multi1d< Real > &_alpha, const multi1d< Real > &_beta, const bool _isLastZeroP)
Full constructor.
int size() const
Length of DW flavor index/space.
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.
unsigned long nFlops() const
Return flops performed by the operator()
unsigned long diagNFlops(void) const
Return flops performed by the diagonal part.
unsigned long offDiagNFlops(void) const
Return flops performed by the diagonal part.
const multi1d< Real > alpha
virtual 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 oddEvenNFlops(void) const
Return flops performed by the oddEvenLinOp.
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 evenOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the even-odd block onto a source std::vector.
multi1d< Real > off_diag_coeff
~EvenOddPrecOvlapContFrac5DLinOpBaseArray()
Destructor is automatic.
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.
unsigned long evenOddNFlops(void) const
Return flops performed by the evenOddLinOp.
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.
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.
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.
virtual 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.
virtual 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)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Support class for fermion actions and linear operators.