8 using namespace QDP::Hints;
12 EvenOddPrecOvlapContFrac5DPVLinOpArray::EvenOddPrecOvlapContFrac5DPVLinOpArray(
15 const Real& _OverMass,
17 const Real& _scale_fac,
18 const multi1d<Real>& _alpha,
19 const multi1d<Real>& _beta,
20 const bool _isLastZeroP ) :
21 m_q(_m_q),
OverMass(_OverMass),
N5(_N5), scale_fac(_scale_fac),
22 alpha(_alpha),
beta(_beta), isLastZeroP(_isLastZeroP)
37 for(
int i=0;
i <
N5;
i++)
53 QDPIO::cerr <<
"Something is wrong. At the end of this loop"
54 <<
" Hsign should be -ve" << std::endl;
59 for(
int i=0;
i <
N5-1;
i++) {
75 dinv[0] = Real(1)/
d[0];
80 for(
int i=1;
i <
N5-1;
i++) {
86 for(
int i=0;
i <
N5-1;
i++) {
99 for(
int i=0;
i <
N5-2;
i++) {
132 const multi1d<LatticeFermion>&
psi,
151 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
164 chi[0][rb[
cb]] =
a[0]*(GammaConst<Ns,Ns*Ns-1>()*
psi[0]);
169 for(
int i=1;
i <
N5-1;
i++)
208 multi1d<LatticeFermion>&
chi,
209 const multi1d<LatticeFermion>&
psi,
217 multi1d<LatticeFermion>
y(
N5); moveToFastMemoryHint(
y);
219 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
222 const int G5 = Ns*Ns-1;
228 for(
int i = 1;
i <
N5-1;
i++)
231 y[
i][rb[
cb]] =
psi[
i] -
u[
i-1]*(GammaConst<Ns,Ns*Ns-1>()*
y[
i-1]);
246 for(
int i =
N5-3;
i >= 0;
i--) {
266 multi1d<LatticeFermion>&
chi,
267 const multi1d<LatticeFermion>&
psi,
275 multi1d<LatticeFermion>
tmp(
N5); moveToFastMemoryHint(
tmp);
283 for(
int i=0;
i <
N5-1;
i++)
302 const multi1d<LatticeFermion>&
chi,
303 const multi1d<LatticeFermion>&
psi,
312 multi1d<LatticeColorMatrix> ds_tmp(
Nd);
314 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
322 for(
int i=0;
i <
N5-1;
i++)
342 for(
int i=0;
i <
N5-1;
i++)
multi1d< Real > off_diag_coeff
void applyOffDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the off diagonal block.
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.
const multi1d< Real > beta
multi1d< Real > beta_tilde
const multi1d< Real > alpha
Support class for fermion actions and linear operators.
Class for counted reference semantics.
virtual void deriv(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Take deriv of D.
Include possibly optimized Wilson dslash.
Even-odd preconditioned Pauli-Villars Continued Fraction 5D.
void apply(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, int cb) const
General Wilson-Dirac dslash.
void create(Handle< FermState< T, P, Q > > state, int N5_)
Creation routine.
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.
static const LatticeInteger & beta(const int dim)
static const LatticeInteger & alpha(const int dim)
Asqtad Staggered-Dirac operator.
QDP_error_exit("too many BiCG iterations", n_count, rsd_sq, cp, c, re_rvr, im_rvr, re_a, im_a, re_b, im_b)
multi1d< LatticeFermion > chi(Ncb)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state