8 using namespace QDP::Hints;
23 const Real& WilsonMass_,
const Real& m_q_,
int N5_)
25 WilsonMass = WilsonMass_;
34 c5InvTwoKappa = 1.0 - (
Nd-WilsonMass) ;
35 c5TwoKappa = 1.0 / c5InvTwoKappa ;
37 b5InvTwoKappa = 1.0 + (
Nd-WilsonMass) ;
38 b5TwoKappa = 1.0 / b5InvTwoKappa ;
40 TwoKappa = c5InvTwoKappa/b5InvTwoKappa ;
41 Kappa = TwoKappa/2.0 ;
43 invDfactor =1.0/(1.0 + m_q*pow(TwoKappa,
N5)) ;
59 EvenOddPrecOvDWLinOpArray::applyDiag(multi1d<LatticeFermion>&
chi,
60 const multi1d<LatticeFermion>&
psi,
72 for(
int s(1);
s<
N5-1;
s++)
74 (0.5*c5InvTwoKappa)*(
psi[
s+1] +
psi[
s-1] + GammaConst<Ns,Ns*Ns-1>()*(
psi[
s-1] -
psi[
s+1]) ) ;
78 chi[0][rb[
cb]] = b5InvTwoKappa*
psi[0] -
79 (0.5*c5InvTwoKappa)*(
psi[1] - m_q*
psi[N5m1] - GammaConst<Ns,Ns*Ns-1>()*(m_q*
psi[N5m1] +
psi[1]) ) ;
83 chi[N5m1][rb[
cb]] = b5InvTwoKappa*
psi[N5m1] -
84 (0.5*c5InvTwoKappa)*(
psi[N5m2] - m_q *
psi[0] + GammaConst<Ns,Ns*Ns-1>()*(
psi[N5m2] + m_q *
psi[0]) );
90 for(
int s(1);
s<
N5-1;
s++)
92 (0.5*c5InvTwoKappa)*(
psi[
s+1] +
psi[
s-1] + GammaConst<Ns,Ns*Ns-1>()*(
psi[
s+1] -
psi[
s-1]) ) ;
96 chi[0][rb[
cb]] = b5InvTwoKappa*
psi[0] -
97 (0.5*c5InvTwoKappa)*(
psi[1] - m_q*
psi[N5m1] + GammaConst<Ns,Ns*Ns-1>()*(
psi[1]+m_q*
psi[N5m1]) ) ;
101 chi[N5m1][rb[
cb]] = b5InvTwoKappa*
psi[N5m1] -
102 (0.5*c5InvTwoKappa)*(
psi[N5m2] - m_q *
psi[0] - GammaConst<Ns,Ns*Ns-1>()*(
psi[N5m2] + m_q *
psi[0]) );
122 EvenOddPrecOvDWLinOpArray::applyDiagInv(multi1d<LatticeFermion>&
chi,
123 const multi1d<LatticeFermion>&
psi,
132 for(
int s(0);
s<
N5;
s++)
142 Real fact(0.5*m_q*TwoKappa) ;
143 for(
int s(0);
s<
N5-1;
s++){
144 chi[
N5-1][rb[
cb]] -= fact * (
chi[
s] - GammaConst<Ns,Ns*Ns-1>()*
chi[
s]) ;
149 for(
int s(1);
s<
N5;
s++)
150 chi[
s][rb[
cb]] += Kappa*(
chi[
s-1] + GammaConst<Ns,Ns*Ns-1>()*
chi[
s-1]) ;
153 chi[
N5-1][rb[
cb]] *= invDfactor ;
157 for(
int s(
N5-2);
s>-1;
s--)
158 chi[
s][rb[
cb]] += Kappa*(
chi[
s+1] - GammaConst<Ns,Ns*Ns-1>()*
chi[
s+1]) ;
161 LatticeFermion tt; moveToFastMemoryHint(tt);
162 fact = 0.5*m_q*TwoKappa;
163 tt[rb[
cb]] = fact*(
chi[
N5-1] + GammaConst<Ns,Ns*Ns-1>()*
chi[
N5-1]);
164 for(
int s(0);
s<
N5-1;
s++){
166 tt[rb[
cb]] *= TwoKappa ;
175 Real fact(0.5*m_q*TwoKappa) ;
176 for(
int s(0);
s<
N5-1;
s++){
177 chi[
N5-1][rb[
cb]] -= fact * (
chi[
s] + GammaConst<Ns,Ns*Ns-1>()*
chi[
s]) ;
182 for(
int s(1);
s<
N5;
s++)
183 chi[
s][rb[
cb]] += Kappa*(
chi[
s-1] - GammaConst<Ns,Ns*Ns-1>()*
chi[
s-1]) ;
186 chi[
N5-1][rb[
cb]] *= invDfactor ;
190 for(
int s(
N5-2);
s>-1;
s--)
191 chi[
s][rb[
cb]] += Kappa*(
chi[
s+1] + GammaConst<Ns,Ns*Ns-1>()*
chi[
s+1]) ;
194 LatticeFermion tt; moveToFastMemoryHint(tt);
195 tt[rb[
cb]] = (0.5*m_q*TwoKappa)*(
chi[
N5-1] - GammaConst<Ns,Ns*Ns-1>()*
chi[
N5-1]);
196 for(
int s(0);
s<
N5-1;
s++){
198 tt[rb[
cb]] *= TwoKappa ;
219 EvenOddPrecOvDWLinOpArray::applyOffDiag(multi1d<LatticeFermion>&
chi,
220 const multi1d<LatticeFermion>&
psi,
233 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
234 int otherCB = (
cb + 1)%2 ;
235 for(
int s(1);
s<
N5-1;
s++)
239 GammaConst<Ns,Ns*Ns-1>()*(
psi[
s-1] -
psi[
s+1]));
245 tmp[rb[otherCB]] =
psi[0] +
246 0.5*(
psi[1] - m_q*
psi[N5m1]
247 - GammaConst<Ns,Ns*Ns-1>()*(m_q*
psi[N5m1] +
psi[1]));
249 chi[0][rb[
cb]] *= (-0.5);
252 tmp[rb[otherCB]] =
psi[N5m1] +
253 0.5*(
psi[N5m2] - m_q *
psi[0]
254 + GammaConst<Ns,Ns*Ns-1>()*(
psi[N5m2] + m_q *
psi[0]));
257 chi[N5m1][rb[
cb]] *= (-0.5);
264 multi1d<LatticeFermion>
tmp(
N5) ; moveToFastMemoryHint(
tmp);
265 for(
int s(0);
s<
N5;
s++){
267 tmp[
s][rb[
cb]] *= (-0.5) ;
269 for(
int s(1);
s<
N5-1;
s++){
272 GammaConst<Ns,Ns*Ns-1>()*(
tmp[
s-1]-
tmp[
s+1]));
276 0.5*(
tmp[1] - m_q*
tmp[N5m1] +
277 GammaConst<Ns,Ns*Ns-1>()*(m_q*
tmp[N5m1] +
tmp[1]));
282 0.5*(
tmp[N5m2] - m_q *
tmp[0] -
283 GammaConst<Ns,Ns*Ns-1>()*(
tmp[N5m2] + m_q *
tmp[0]));
296 EvenOddPrecOvDWLinOpArray::Dminus(LatticeFermion&
chi,
297 const LatticeFermion&
psi,
301 LatticeFermion tt ; moveToFastMemoryHint(tt);
304 chi = c5InvTwoKappa*
psi +0.5*tt ;
Primary include file for CHROMA library code.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
4D Even Odd preconditioned Overlap-DWF (Borici) linear operator
Asqtad Staggered-Dirac operator.