6 #ifndef __lwldslash_h__
7 #define __lwldslash_h__
46 template<
typename T,
typename P,
typename Q>
63 const multi1d<Real>& coeffs_);
74 const multi1d<Real>& coeffs_);
133 template<
typename T,
typename P,
typename Q>
137 template<
typename T,
typename P,
typename Q>
144 template<
typename T,
typename P,
typename Q>
148 create(
state, aniso_);
152 template<
typename T,
typename P,
typename Q>
154 const multi1d<Real>& coeffs_)
156 create(
state, coeffs_);
160 template<
typename T,
typename P,
typename Q>
163 multi1d<Real> cf(
Nd);
169 template<
typename T,
typename P,
typename Q>
181 template<
typename T,
typename P,
typename Q>
183 const multi1d<Real>& coeffs_)
191 fbc =
state->getFermBC();
194 if (fbc.operator->() == 0)
196 QDPIO::cerr <<
"QDPWilsonDslash: error: fbc is null" << std::endl;
203 for(
int mu=0;
mu <
u.size(); ++
mu) {
208 for(
int mu=0;
mu <
u.size(); ++
mu)
226 template<
typename T,
typename P,
typename Q>
232 #if (QDP_NC == 2) || (QDP_NC == 3)
255 chi[rb[
cb]] = spinReconstructDir0Minus(
u[0] * shift(spinProjectDir0Minus(
psi),
FORWARD, 0))
256 + spinReconstructDir0Plus(shift(adj(
u[0]) * spinProjectDir0Plus(
psi),
BACKWARD, 0))
258 + spinReconstructDir1Minus(
u[1] * shift(spinProjectDir1Minus(
psi),
FORWARD, 1))
259 + spinReconstructDir1Plus(shift(adj(
u[1]) * spinProjectDir1Plus(
psi),
BACKWARD, 1))
262 + spinReconstructDir2Minus(
u[2] * shift(spinProjectDir2Minus(
psi),
FORWARD, 2))
263 + spinReconstructDir2Plus(shift(adj(
u[2]) * spinProjectDir2Plus(
psi),
BACKWARD, 2))
266 + spinReconstructDir3Minus(
u[3] * shift(spinProjectDir3Minus(
psi),
FORWARD, 3))
267 + spinReconstructDir3Plus(shift(adj(
u[3]) * spinProjectDir3Plus(
psi),
BACKWARD, 3))
270 #error "Unsupported number of dimensions"
276 chi[rb[
cb]] = spinReconstructDir0Plus(
u[0] * shift(spinProjectDir0Plus(
psi),
FORWARD, 0))
277 + spinReconstructDir0Minus(shift(adj(
u[0]) * spinProjectDir0Minus(
psi),
BACKWARD, 0))
279 + spinReconstructDir1Plus(
u[1] * shift(spinProjectDir1Plus(
psi),
FORWARD, 1))
280 + spinReconstructDir1Minus(shift(adj(
u[1]) * spinProjectDir1Minus(
psi),
BACKWARD, 1))
283 + spinReconstructDir2Plus(
u[2] * shift(spinProjectDir2Plus(
psi),
FORWARD, 2))
284 + spinReconstructDir2Minus(shift(adj(
u[2]) * spinProjectDir2Minus(
psi),
BACKWARD, 2))
287 + spinReconstructDir3Plus(
u[3] * shift(spinProjectDir3Plus(
psi),
FORWARD, 3))
288 + spinReconstructDir3Minus(shift(adj(
u[3]) * spinProjectDir3Minus(
psi),
BACKWARD, 3))
291 #error "Unsupported number of dimensions"
299 QDPIO::cerr<<
"lwldslash_w: not implemented for NC!=3\n";
306 multi1d<LatticeColorMatrix>,
311 multi1d<LatticeColorMatrixF>,
315 multi1d<LatticeColorMatrixD>,
Base class for all fermion action boundary conditions.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
General Wilson-Dirac dslash.
~QDPWilsonDslashT()
No real need for cleanup here.
void create(Handle< FermState< T, P, Q > > state)
Creation routine.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
const multi1d< Real > & getCoeffs() const
Get the anisotropy parameters.
Handle< FermBC< T, P, Q > > fbc
General Wilson-Dirac dslash.
QDPWilsonDslashT()
Empty constructor. Must use create later.
void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const
General Wilson-Dirac dslash.
Wilson Dslash linear operator.
Asqtad Staggered-Dirac operator.
QDPWilsonDslashT< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > QDPWilsonDslash
static multi1d< LatticeColorMatrix > u
LinOpSysSolverMGProtoClover::Q Q
QDPWilsonDslashT< LatticeFermionD, multi1d< LatticeColorMatrixD >, multi1d< LatticeColorMatrixD > > QDPWilsonDslashD
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeFermion > chi(Ncb)
QDPWilsonDslashT< LatticeFermionF, multi1d< LatticeColorMatrixF >, multi1d< LatticeColorMatrixF > > QDPWilsonDslashF
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
multi1d< Real > makeFermCoeffs(const AnisoParam_t &aniso)
Make fermion coefficients.
Support class for fermion actions and linear operators.
Parameters for anisotropy.