5 #include "qdp_config.h"
22 const CloverFermActParams& param_)
31 QDPIO::cerr <<
"UnprecW12 only supports Nd=4" << std::endl;
55 QDPIO::cerr <<
"W12: implementation restriction: j_decay must be Nd-1" << std::endl;
76 const LatticeFermion&
psi,
100 chi[0] = spinReconstructDir0Minus(
u[0] * shift(spinProjectDir0Minus(
psi),
FORWARD, 0))
101 + spinReconstructDir0Plus(shift(adj(
u[0]) * spinProjectDir0Plus(
psi),
BACKWARD, 0));
102 chi[1] = spinReconstructDir1Minus(
u[1] * shift(spinProjectDir1Minus(
psi),
FORWARD, 1))
103 + spinReconstructDir1Plus(shift(adj(
u[1]) * spinProjectDir1Plus(
psi),
BACKWARD, 1));
104 chi[2] = spinReconstructDir2Minus(
u[2] * shift(spinProjectDir2Minus(
psi),
FORWARD, 2))
105 + spinReconstructDir2Plus(shift(adj(
u[2]) * spinProjectDir2Plus(
psi),
BACKWARD, 2));
106 chi[3] = spinReconstructDir3Minus(
u[3] * shift(spinProjectDir3Minus(
psi),
FORWARD, 3))
107 + spinReconstructDir3Plus(shift(adj(
u[3]) * spinProjectDir3Plus(
psi),
BACKWARD, 3));
111 chi[0] = spinReconstructDir0Plus(
u[0] * shift(spinProjectDir0Plus(
psi),
FORWARD, 0))
112 + spinReconstructDir0Minus(shift(adj(
u[0]) * spinProjectDir0Minus(
psi),
BACKWARD, 0));
113 chi[1] = spinReconstructDir1Plus(
u[1] * shift(spinProjectDir1Plus(
psi),
FORWARD, 1))
114 + spinReconstructDir1Minus(shift(adj(
u[1]) * spinProjectDir1Minus(
psi),
BACKWARD, 1));
115 chi[2] = spinReconstructDir2Plus(
u[2] * shift(spinProjectDir2Plus(
psi),
FORWARD, 2))
116 + spinReconstructDir2Minus(shift(adj(
u[2]) * spinProjectDir2Minus(
psi),
BACKWARD, 2));
117 chi[3] = spinReconstructDir3Plus(
u[3] * shift(spinProjectDir3Plus(
psi),
FORWARD, 3))
118 + spinReconstructDir3Minus(shift(adj(
u[3]) * spinProjectDir3Minus(
psi),
BACKWARD, 3));
136 const multi1d<LatticeFermion>&
psi,
160 chi[0] = spinReconstructDir0Minus(
u[0] * shift(spinProjectDir0Minus(
psi[0]),
FORWARD, 0))
161 + spinReconstructDir0Plus(shift(adj(
u[0]) * spinProjectDir0Plus(
psi[0]),
BACKWARD, 0));
162 chi[1] = spinReconstructDir1Minus(
u[1] * shift(spinProjectDir1Minus(
psi[1]),
FORWARD, 1))
163 + spinReconstructDir1Plus(shift(adj(
u[1]) * spinProjectDir1Plus(
psi[1]),
BACKWARD, 1));
164 chi[2] = spinReconstructDir2Minus(
u[2] * shift(spinProjectDir2Minus(
psi[2]),
FORWARD, 2))
165 + spinReconstructDir2Plus(shift(adj(
u[2]) * spinProjectDir2Plus(
psi[2]),
BACKWARD, 2));
166 chi[3] = spinReconstructDir3Minus(
u[3] * shift(spinProjectDir3Minus(
psi[3]),
FORWARD, 3))
167 + spinReconstructDir3Plus(shift(adj(
u[3]) * spinProjectDir3Plus(
psi[3]),
BACKWARD, 3));
171 chi[0] = spinReconstructDir0Plus(
u[0] * shift(spinProjectDir0Plus(
psi[0]),
FORWARD, 0))
172 + spinReconstructDir0Minus(shift(adj(
u[0]) * spinProjectDir0Minus(
psi[0]),
BACKWARD, 0));
173 chi[1] = spinReconstructDir1Plus(
u[1] * shift(spinProjectDir1Plus(
psi[1]),
FORWARD, 1))
174 + spinReconstructDir1Minus(shift(adj(
u[1]) * spinProjectDir1Minus(
psi[1]),
BACKWARD, 1));
175 chi[2] = spinReconstructDir2Plus(
u[2] * shift(spinProjectDir2Plus(
psi[2]),
FORWARD, 2))
176 + spinReconstructDir2Minus(shift(adj(
u[2]) * spinProjectDir2Minus(
psi[2]),
BACKWARD, 2));
177 chi[3] = spinReconstructDir3Plus(
u[3] * shift(spinProjectDir3Plus(
psi[3]),
FORWARD, 3))
178 + spinReconstructDir3Minus(shift(adj(
u[3]) * spinProjectDir3Minus(
psi[3]),
BACKWARD, 3));
202 const LatticeFermion&
psi,
207 multi1d<LatticeFermion> tmp1(
Nd);
208 multi1d<LatticeFermion>
tmp2(
Nd);
241 unsigned long site_flops = 0;
242 return site_flops*(Layout::sitesOnNode());
257 const LatticeFermion&
chi,
const LatticeFermion&
psi,
Primary include file for CHROMA library code.
void deriv(multi1d< U > &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Take deriv of D.
void create(Handle< FermState< T, multi1d< U >, multi1d< U > > > fs, const CloverFermActParams ¶m_)
Creation routine.
unsigned long nFlops() const
Return flops performed by the operator()
multi1d< LatticeColorMatrix > u
CloverFermActParams param
void gamW(multi1d< LatticeFermion > &chi, const LatticeFermion &psi, int j_decay, enum PlusMinus isign) const
GAMWM.
void deriv(multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Derivative of unpreconditioned W12 dM/dU.
void create(Handle< FermState< T, P, Q > > fs, const CloverFermActParams ¶m_)
Creation routine.
void operator()(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
void gamWmu(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, int j_decay, enum PlusMinus isign) const
GAMWMUM.
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)
Unpreconditioned W12 action.