6 #ifndef __lwldslash_base_h__
7 #define __lwldslash_base_h__
42 template <
typename T,
typename P,
typename Q>
52 const Subset&
subset()
const {
return all;}
111 template<
typename T,
typename P,
typename Q>
132 template<
typename T,
typename P,
typename Q>
142 const multi1d<Real>& anisoWeights = getCoeffs();
158 tmp_h[rb[1-
cb]] = spinProjectDir0Minus(
psi);
159 temp_ferm1[rb[1-
cb]] = spinReconstructDir0Minus(tmp_h);
162 tmp_h[rb[1-
cb]] = spinProjectDir1Minus(
psi);
163 temp_ferm1[rb[1-
cb]] = spinReconstructDir1Minus(tmp_h);
166 tmp_h[rb[1-
cb]] = spinProjectDir2Minus(
psi);
167 temp_ferm1[rb[1-
cb]] = spinReconstructDir2Minus(tmp_h);
170 tmp_h[rb[1-
cb]] = spinProjectDir3Minus(
psi);
171 temp_ferm1[rb[1-
cb]] = spinReconstructDir3Minus(tmp_h);
187 tmp_h[rb[1-
cb]] = spinProjectDir0Plus(
psi);
188 temp_ferm1[rb[1-
cb]] = spinReconstructDir0Plus(tmp_h);
191 tmp_h[rb[1-
cb]] = spinProjectDir1Plus(
psi);
192 temp_ferm1[rb[1-
cb]] = spinReconstructDir1Plus(tmp_h);
195 tmp_h[rb[1-
cb]] = spinProjectDir2Plus(
psi);
196 temp_ferm1[rb[1-
cb]] = spinReconstructDir2Plus(tmp_h);
199 tmp_h[rb[1-
cb]] = spinProjectDir3Plus(
psi);
200 temp_ferm1[rb[1-
cb]] = spinReconstructDir3Plus(tmp_h);
213 T temp_ferm2 = shift(temp_ferm1,
FORWARD,
mu);
218 (temp_mat[0])[rb[
cb]] = traceSpin(outerProduct(temp_ferm2,
chi));
221 ds_u[
mu][rb[
cb]] = anisoWeights[
mu] * temp_mat[0];
224 (*this).getFermBC().zero(ds_u);
231 template<
typename T,
typename P,
typename Q>
237 class WilsonDslashBaseF :
239 multi1d<LatticeColorMatrixF>,
240 multi1d<LatticeColorMatrixF> >
243 typedef LatticeFermionF
T;
244 typedef multi1d<LatticeColorMatrixF>
P;
245 typedef multi1d<LatticeColorMatrixF>
Q;
248 virtual ~WilsonDslashBaseF() {}
251 const Subset& subset()
const {
return all;}
261 virtual void deriv(
P& ds_u,
264 QDPIO::cout <<
"Not implemented" << std::endl;
277 virtual void deriv(
P& ds_u,
280 QDPIO::cout <<
"Not Implemented" << std::endl;
284 unsigned long nFlops()
const;
288 virtual const multi1d<Real>& getCoeffs()
const = 0;
Dslash-like Linear Operator.
LatticeHalfFermionD Type_t
LatticeHalfFermionF Type_t
General Wilson-Dirac dslash.
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign, int cb) const
Take deriv of D.
virtual ~WilsonDslashBase()
No real need for cleanup here.
virtual void deriv(P &ds_u, const T &chi, const T &psi, enum PlusMinus isign) const
Take deriv of D.
virtual const multi1d< Real > & getCoeffs() const =0
Get the anisotropy parameters.
unsigned long nFlops() const
Return flops performed by the operator()
const Subset & subset() const
Subset is all here.
multi1d< LatticeColorMatrix > P
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)
LinOpSysSolverMGProtoClover::Q Q
LinOpSysSolverMGProtoClover::T T
multi1d< LatticeFermion > chi(Ncb)
multi1d< LatticeColorMatrix > P
multi1d< LatticeColorMatrix > deriv(const EvenOddPrecLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > &AP, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign)
Apply the operator onto a source std::vector.