6 #ifndef __prec_ovlap_contfrac5d_pv_linop_array_w_h__
7 #define __prec_ovlap_contfrac5d_pv_linop_array_w_h__
23 LatticeFermion, multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
27 typedef LatticeFermion
T;
28 typedef multi1d<LatticeColorMatrix>
P;
29 typedef multi1d<LatticeColorMatrix>
Q;
38 const Real& _OverMass,
40 const Real& _scale_fac,
41 const multi1d<Real>& _alpha,
42 const multi1d<Real>& _beta,
43 const bool _isLastZeroP );
58 const multi1d<LatticeFermion>&
psi,
67 const multi1d<LatticeFermion>&
psi,
76 const multi1d<LatticeFermion>&
psi,
84 const multi1d<LatticeFermion>&
psi,
93 const multi1d<LatticeFermion>&
psi,
102 const multi1d<LatticeFermion>&
psi,
110 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
119 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
128 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
136 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
177 + (2*Nc*Ns*
N5*(Layout::sitesOnNode()/2));
192 const multi1d<LatticeFermion>&
psi,
204 const multi1d<LatticeFermion>&
psi,
216 const multi1d<LatticeFermion>&
psi,
229 const multi1d<LatticeFermion>&
chi,
230 const multi1d<LatticeFermion>&
psi,
236 unsigned long cbsite_flops = (10*
N5-18)*Nc*Ns;
237 return cbsite_flops*(Layout::sitesOnNode()/2);
242 unsigned long cbsite_flops;
243 cbsite_flops = (
N5-1)*(1320+2*Nc*Ns);
244 return cbsite_flops*(Layout::sitesOnNode()/2);
249 unsigned long cbsite_flops = (10*
N5-18)*Nc*Ns;
250 return cbsite_flops*(Layout::sitesOnNode()/2);
Even-odd preconditioned linear operator including derivatives for arrays.
Even-odd preconditioned Pauli-Villars Continued Fraction 5D.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
multi1d< Real > off_diag_coeff
multi1d< LatticeColorMatrix > Q
multi1d< LatticeColorMatrix > P
void evenEvenLinOp(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()
~EvenOddPrecOvlapContFrac5DPVLinOpArray()
Destructor is automatic.
void applyOffDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the off diagonal block.
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.
unsigned long oddOddNFlops(void) const
Return flops performed by the oddOddLinOp.
unsigned long evenEvenInvNFlops(void) const
Return flops performed by the evenEvenInvLinOp.
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.
int size() const
Length of DW flavor index/space.
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 evenOddLinOp(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the the even-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.
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 diagInvNFlops(void) const
Return flops performed by the diagonal part.
unsigned long offDiagNFlops(void) const
Return flops performed by the diagonal part.
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 oddEvenNFlops(void) const
Return flops performed by the oddEvenLinOp.
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 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.
const multi1d< Real > beta
multi1d< Real > beta_tilde
const multi1d< Real > alpha
EvenOddPrecOvlapContFrac5DPVLinOpArray(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.
void operator=(const EvenOddPrecOvlapContFrac5DPVLinOpArray &)
Hide partial constructor.
unsigned long diagNFlops(void) const
Return flops performed by the diagonal part.
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 evenEvenNFlops(void) const
Return flops performed by the evenEvenLinOp.
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 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.
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.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Support class for fermion actions and linear operators.