62 const multi1d<Real>& coeffs_)
73 if (
fbc.operator->() == 0)
75 QDPIO::cerr <<
"QDPWilsonDslashArrayOpt: error: fbc is null" << std::endl;
83 for(
int mu=0;
mu <
u.size(); ++
mu)
105 const multi1d<LatticeFermion>&
psi,
112 for(
int n=0;
n <
N5; ++
n)
136 #if (QDP_NC == 2) || (QDP_NC == 3)
156 int otherCB = (
cb == 0 ? 1 : 0);
164 LatticeHalfFermion
tmp;
165 LatticeHalfFermion
tmp2;
167 tmp[rb[otherCB]] = spinProjectDir0Minus(
psi);
169 chi[rb[
cb]] = spinReconstructDir0Minus(
u[0]*
tmp2);
172 tmp[rb[otherCB]] = spinProjectDir1Minus(
psi);
174 chi[rb[
cb]] += spinReconstructDir1Minus(
u[1]*
tmp2);
176 tmp[rb[otherCB]] = spinProjectDir2Minus(
psi);
178 chi[rb[
cb]] += spinReconstructDir2Minus(
u[2]*
tmp2);
180 tmp[rb[otherCB]] = spinProjectDir3Minus(
psi);
182 chi[rb[
cb]] += spinReconstructDir3Minus(
u[3]*
tmp2);
185 tmp[rb[otherCB]] = adj(
u[0])*spinProjectDir0Plus(
psi);
187 chi[rb[
cb]] += spinReconstructDir0Plus(
tmp2);
189 tmp[rb[otherCB]] = adj(
u[1])*spinProjectDir1Plus(
psi);
191 chi[rb[
cb]] += spinReconstructDir1Plus(
tmp2);
193 tmp[rb[otherCB]] = adj(
u[2])*spinProjectDir2Plus(
psi);
195 chi[rb[
cb]] += spinReconstructDir2Plus(
tmp2);
197 tmp[rb[otherCB]] = adj(
u[3])*spinProjectDir3Plus(
psi);
199 chi[rb[
cb]] += spinReconstructDir3Plus(
tmp2);
210 LatticeHalfFermion
tmp;
211 LatticeHalfFermion
tmp2;
213 tmp[rb[otherCB]] = spinProjectDir0Plus(
psi);
215 chi[rb[
cb]] = spinReconstructDir0Plus(
u[0]*
tmp2);
217 tmp[rb[otherCB]] = spinProjectDir1Plus(
psi);
219 chi[rb[
cb]] += spinReconstructDir1Plus(
u[1]*
tmp2);
221 tmp[rb[otherCB]] = spinProjectDir2Plus(
psi);
223 chi[rb[
cb]] += spinReconstructDir2Plus(
u[2]*
tmp2);
225 tmp[rb[otherCB]] = spinProjectDir3Plus(
psi);
227 chi[rb[
cb]] += spinReconstructDir3Plus(
u[3]*
tmp2);
230 tmp[rb[otherCB]] = adj(
u[0])*spinProjectDir0Minus(
psi);
232 chi[rb[
cb]] += spinReconstructDir0Minus(
tmp2);
234 tmp[rb[otherCB]] = adj(
u[1])*spinProjectDir1Minus(
psi);
236 chi[rb[
cb]] += spinReconstructDir1Minus(
tmp2);
238 tmp[rb[otherCB]] = adj(
u[2])*spinProjectDir2Minus(
psi);
240 chi[rb[
cb]] += spinReconstructDir2Minus(
tmp2);
242 tmp[rb[otherCB]] = adj(
u[3])*spinProjectDir3Minus(
psi);
244 chi[rb[
cb]] += spinReconstructDir3Minus(
tmp2);
253 QDPIO::cerr<<
"lwldslash_array_qdpopt_w: not implemented for NC!=3\n";
Primary include file for CHROMA library code.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Handle< FermBC< T, P, Q > > fbc
multi1d< LatticeColorMatrix > u
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
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.
Wilson Dslash linear operator over arrays.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
multi1d< Real > makeFermCoeffs(const AnisoParam_t &aniso)
Make fermion coefficients.
Parameters for anisotropy.