22 const multi1d<Real>& resP_,
23 const multi1d<Real>& rootQ_,
24 const multi1d<Real>& beta_,
25 const Real& OverMass_,
39 Real R = (Real(1) + Mass_)/(Real(1)-Mass_);
40 Real
alpha = b5_ + c5_;
43 Real QQ =
Nd - OverMass_;
45 E = Real(2)*R + (R*
a5 +
alpha*coeffP_)*QQ;
58 B[
p] = sqrt( rootQ_[
p] * beta_[
p] )* ( Real(2) +
a5*QQ );
59 D[
p] = sqrt( resP_[
p] * beta_[
p] ) * ( Real(2) +
a5*QQ );
62 Bprime[
p] = -Real(0.5)*
a5*sqrt( rootQ_[
p] * beta_[
p] );
63 Dprime[
p] = -Real(0.5)*
a5*sqrt( resP_[
p] * beta_[
p] );
67 multi1d<Real> detBlock(
Npoles);
90 for(
int i=0;
i < 2*
Npoles;
i+=2, pole++) {
110 const multi1d<LatticeFermion>&
psi,
124 chi[
N5-1][rb[
cb]] =
E* ( GammaConst<Ns,Ns*Ns-1>()*
psi[
N5-1] );
129 for(
int i=0;
i <
N5-1;
i+=2,
p++) {
151 for(
int i=0;
i <
N5-1;
i+=2,
p++) {
166 QDPIO::cerr <<
"Unknown value for PLUS /MINUS: " <<
isign << std::endl;
177 const multi1d<LatticeFermion>&
psi,
189 multi1d<LatticeFermion> Dpsi(
N5); moveToFastMemoryHint(Dpsi);
201 for(
int i=0;
i <
N5-1;
i+=2,
p++) {
219 multi1d<LatticeFermion>
tmp(
N5); moveToFastMemoryHint(
tmp);
221 int otherCB = (
cb + 1)%2;
229 for(
int i=0;
i <
N5-1;
i+=2,
p++) {
248 QDPIO::cerr <<
"Unknown value for PLUS /MINUS: " <<
isign << std::endl;
267 const multi1d<LatticeFermion>&
chi,
273 multi1d<LatticeFermion> tmp5(
N5); moveToFastMemoryHint(tmp5);
276 LatticeFermion tmp4; moveToFastMemoryHint(tmp4);
325 tmp4[rb[
cb]] =ftmp *
chi[
i] -
ftmp2*(GammaConst<Ns,Ns*Ns-1>()*
chi[
i+1]);
328 tmp5[
N5-1][rb[
cb]] -= tmp4;
370 psi[
i][rb[
cb]] = ftmp*tmp5[
i+1] +
Ctilde[
p]*(GammaConst<Ns,Ns*Ns-1>()*tmp5[
i]);
373 psi[
i+1][rb[
cb]] = ftmp*tmp5[
i] +
Atilde[
p]*(GammaConst<Ns,Ns*Ns-1>()*tmp5[
i+1]);
380 psi[
N5-1][rb[
cb]] = ftmp*(GammaConst<Ns,Ns*Ns-1>()*tmp5[
N5-1]);
409 tmp4[rb[
cb]] = Real(1)*(GammaConst<Ns,Ns*Ns-1>()*
psi[
N5-1]);
432 const multi1d<LatticeFermion>&
chi,
433 const multi1d<LatticeFermion>&
psi,
439 QDPIO::cout <<
"Not yet implemented " << std::endl;
Primary include file for CHROMA library code.
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 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 applyOffDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the off diagonal block.
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.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Unpreconditioned extended-Overlap (5D) (Naryanan&Neuberger) linear operator.
void create(Handle< FermState< T, P, Q > > fs, const int Npoles_, const Real &coeffP_, const multi1d< Real > &resP_, const multi1d< Real > &rootQ_, const multi1d< Real > &beta_, const Real &OverMass_, const Real &m_q_, const Real &b5_, const Real &c5_)
Creation routine.
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.
static const LatticeInteger & alpha(const int dim)
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)