8 using namespace QDP::Hints;
26 const Real& WilsonMass_,
const Real &b5_,
27 const Real &c5_,
const Real& m_q_,
int N5_)
31 WilsonMass = WilsonMass_;
40 c5InvTwoKappa = 1.0 - c5*(
Nd-WilsonMass) ;
41 c5TwoKappa = 1.0 / c5InvTwoKappa ;
43 b5InvTwoKappa = 1.0 + b5*(
Nd-WilsonMass) ;
44 b5TwoKappa = 1.0 / b5InvTwoKappa ;
47 TwoKappa = c5InvTwoKappa/b5InvTwoKappa ;
48 Kappa = TwoKappa/2.0 ;
50 invDfactor =1.0/(1.0 + m_q*pow(TwoKappa,
N5)) ;
69 EvenOddPrecNEFDWLinOpArray::applyDiag(multi1d<LatticeFermion>&
chi,
70 const multi1d<LatticeFermion>&
psi,
80 Real c5InvTwoKappamf = m_q*c5InvTwoKappa;
88 for(
int s(1);
s<
N5-1;
s++) {
96 chi[
s][rb[
cb]] = b5InvTwoKappa*
psi[
s] - c5InvTwoKappa*chiralProjectPlus(
psi[
s-1]);
98 chi[
s][rb[
cb]] -= c5InvTwoKappa*chiralProjectMinus(
psi[
s+1]);
113 chi[0][rb[
cb]] = b5InvTwoKappa*
psi[0] - c5InvTwoKappa*chiralProjectMinus(
psi[1]);
115 chi[0][rb[
cb]] += c5InvTwoKappamf*chiralProjectPlus(
psi[
N5-1]);
125 chi[
N5-1][rb[
cb]] = b5InvTwoKappa*
psi[
N5-1] - c5InvTwoKappa*chiralProjectPlus(
psi[
N5-2]);
128 chi[
N5-1][rb[
cb]] += c5InvTwoKappamf*chiralProjectMinus(
psi[0]);
134 for(
int s(1);
s<
N5-1;
s++) {
139 chi[
s][rb[
cb]] = b5InvTwoKappa*
psi[
s] - c5InvTwoKappa*chiralProjectPlus(
psi[
s+1]);
140 chi[
s][rb[
cb]] -= c5InvTwoKappa*chiralProjectMinus(
psi[
s-1]);
146 chi[0][rb[
cb]] = b5InvTwoKappa*
psi[0] - c5InvTwoKappa*chiralProjectPlus(
psi[1]);
147 chi[0][rb[
cb]] += c5InvTwoKappamf * chiralProjectMinus(
psi[
N5-1]);
156 chi[
N5-1][rb[
cb]] = b5InvTwoKappa*
psi[
N5-1] - c5InvTwoKappa*chiralProjectMinus(
psi[
N5-2]);
157 chi[
N5-1][rb[
cb]] += c5InvTwoKappamf*chiralProjectPlus(
psi[0]);
178 EvenOddPrecNEFDWLinOpArray::applyDiagInv(multi1d<LatticeFermion>&
chi,
179 const multi1d<LatticeFermion>&
psi,
196 Real fact = m_q*TwoKappa*b5TwoKappa*invDfactor;
197 Real invDTwoKappa = invDfactor*TwoKappa;
198 Real invDb5TwoKappa = invDfactor*b5TwoKappa;
205 - fact * chiralProjectMinus(
psi[0]);
210 for(
int s = 1;
s <
N5-1;
s++) {
215 chi[
s][rb[
cb]] += TwoKappa*chiralProjectPlus(
chi[
s-1]);
217 chi[
N5-1][rb[
cb]] -= fact * chiralProjectMinus(
psi[
s]);
223 chi[
N5-1][rb[
cb]] += invDTwoKappa*chiralProjectPlus(
chi[
N5-2]);
228 for(
int s(
N5-2);
s>-1;
s--)
230 chi[
s][rb[
cb]] += TwoKappa*chiralProjectMinus(
chi[
s+1]);
236 for(
int s(0);
s<
N5-1;
s++){
238 chi[
s][rb[
cb]] -= fact*chiralProjectPlus(
chi[
N5-1]);
253 Real fact = m_q*TwoKappa*b5TwoKappa*invDfactor ;
254 Real invDTwoKappa = invDfactor*TwoKappa;
255 Real invDb5TwoKappa = invDfactor*b5TwoKappa;
259 chi[
N5-1][rb[
cb]] -= fact*chiralProjectPlus(
psi[0]);
262 for(
int s(1);
s<
N5-1;
s++) {
265 chi[
s][rb[
cb]] += TwoKappa*chiralProjectMinus(
chi[
s-1]);
266 chi[
N5-1][rb[
cb]] -= fact * chiralProjectPlus(
psi[
s]);
270 chi[
N5-1][rb[
cb]] += invDTwoKappa*chiralProjectMinus(
chi[
N5-2]);
275 for(
int s(
N5-2);
s>-1;
s--)
276 chi[
s][rb[
cb]] += TwoKappa*chiralProjectPlus(
chi[
s+1]);
281 for(
int s(0);
s<
N5-1;
s++){
282 chi[
s][rb[
cb]] -= fact*chiralProjectMinus(
chi[
N5-1]);
306 EvenOddPrecNEFDWLinOpArray::applyOffDiag(multi1d<LatticeFermion>&
chi,
307 const multi1d<LatticeFermion>&
psi,
313 Real fb5 = -Real(0.5)*b5 ;
317 Real fc5 = -Real(0.5)*c5 ;
318 Real fc5mf = fc5*m_q;
326 multi1d<LatticeFermion>
tmp(
N5); moveToFastMemoryHint(
tmp);
327 int otherCB = (
cb + 1)%2 ;
331 for(
int s = 1;
s <
N5-1;
s++){
338 tmp[
s][rb[otherCB]] = fb5*
psi[
s] + fc5*chiralProjectPlus(
psi[
s-1]);
341 tmp[
s][rb[otherCB]]+= fc5*chiralProjectMinus(
psi[
s+1]);
353 tmp[0][rb[otherCB]] = fb5*
psi[0] +fc5*chiralProjectMinus(
psi[1]);
355 tmp[0][rb[otherCB]] -= fc5mf*chiralProjectPlus(
psi[
N5-1]);
363 tmp[
N5-1][rb[otherCB]] = fb5*
psi[
N5-1] + fc5*chiralProjectPlus(
psi[
N5-2]);
365 tmp[
N5-1][rb[otherCB]] -= fc5mf*chiralProjectMinus(
psi[0]);
377 multi1d<LatticeFermion>
tmp(
N5) ; moveToFastMemoryHint(
tmp);
383 for(
int s(1);
s<
N5-1;
s++){
390 chi[
s][rb[
cb]] += fc5*chiralProjectMinus(
tmp[
s-1]);
398 chi[0][rb[
cb]] = fb5*
tmp[0] + fc5*chiralProjectPlus(
tmp[1]);
399 chi[0][rb[
cb]] -= fc5mf*chiralProjectMinus(
tmp[
N5-1]);
406 chi[
N5-1][rb[
cb]] -= fc5mf*chiralProjectPlus(
tmp[0]);
421 EvenOddPrecNEFDWLinOpArray::Dminus(LatticeFermion&
chi,
422 const LatticeFermion&
psi,
426 LatticeFermion tt ; moveToFastMemoryHint(tt);
429 chi = c5InvTwoKappa*
psi + (0.5*c5)*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 NEF domain-wall fermion linear operator
Asqtad Staggered-Dirac operator.