22 const multi1d<Real>& resP_,
23 const multi1d<Real>& rootQ_,
24 const multi1d<Real>& beta_,
25 const Real& OverMass_,
32 R = (Real(1) + Mass_)/(Real(1)-Mass_);
63 const multi1d<LatticeFermion>&
psi,
71 LatticeFermion tmp4; moveToFastMemoryHint(tmp4);
73 Real q_sqrt_afive, two_q_sqrt, ftmp, Two;
79 multi1d<LatticeFermion> tmp5(
N5);
80 moveToFastMemoryHint(tmp5);
84 for(
int i=0;
i <
N5;
i++) {
97 tmp4 = Gamma(
G5)*tmp5[
N5-1];
101 chi[
N5-1] += ftmp*tmp4;
108 for(
int i=0;
i <
N5-2;
p++,
i+=2) {
122 chi[
i] = two_q_sqrt*
psi[
i+1] + q_sqrt_afive * tmp5[
i+1];
126 tmp4 = Gamma(
G5)*tmp5[
i];
147 chi[
i+1] += q_sqrt_afive*tmp5[
i];
149 chi[
i+1] += ftmp*tmp5[
N5-1];
153 tmp4 = Gamma(
G5)*tmp5[
i+1];
154 chi[
i+1] += ftmp*tmp4;
163 chi[
N5-1] -= ftmp*tmp5[
i+1];
171 multi1d<LatticeFermion> tmp5_1(
N5);
172 multi1d<LatticeFermion> tmp5_2(
N5);
174 moveToFastMemoryHint(tmp5_1);
175 moveToFastMemoryHint(tmp5_2);
189 tmp5_2[
N5-1] = tmp5_1[
N5-1];
191 tmp5_1[
N5-1] *= ftmp;
193 tmp5_2[
N5-1] *= ftmp;
196 for(
int i=0;
i <
N5-1;
i+=2,
p++) {
213 tmp5_1[
i] = two_q_sqrt*
psi[
i+1];
217 tmp5_2[
i] = q_sqrt_afive*
psi[
i+1] - ftmp*tmp4;
236 tmp5_1[
i+1] = two_q_sqrt *
psi[
i] - ftmp *
psi[
N5-1];
239 tmp5_2[
i+1] = q_sqrt_afive*
psi[
i] - ftmp*
psi[
N5-1];
240 tmp4 = Gamma(
G5)*
psi[
i+1];
242 tmp5_2[
i+1] += ftmp*tmp4;
252 tmp5_1[
N5-1] += ftmp*
psi[
i+1];
255 tmp5_2[
N5-1] += ftmp *
psi[
i+1];
259 for(
int i=0;
i <
N5;
i++) {
267 QDPIO::cerr <<
"Unknown value for PLUS /MINUS: " <<
isign << std::endl;
280 const multi1d<LatticeFermion>&
chi,
const multi1d<LatticeFermion>&
psi,
284 QDPIO::cout <<
"Not yet implemented " << std::endl;
Primary include file for CHROMA library code.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
void deriv(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Derivative.
multi1d< Real > p_by_beta_sqrt
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
Handle< FermBC< T, P, Q > > fbc
void operator()(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
void create(Handle< FermState< T, P, Q > > fs, const Real &Mass_)
Creation routine.
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.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Unpreconditioned extended-Overlap (5D) (Naryanan&Neuberger) linear operator.
Unpreconditioned Wilson fermion linear operator.