13 Handle< FermState<T,P,Q> >
state,
15 const Real& _OverMass,
17 const Real& _scale_fac,
18 const multi1d<Real>& _alpha,
19 const multi1d<Real>& _beta,
20 const bool _isLastZeroP ) :
21 m_q(_m_q),
OverMass(_OverMass),
N5(_N5), scale_fac(_scale_fac),
22 alpha(_alpha),
beta(_beta), isLastZeroP(_isLastZeroP)
26 Handle< DslashLinearOperator<LatticeFermion,
27 multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> > > Ds(
new WilsonDslash(
state));
31 Real
mass = ( Real(1) + m_q ) / (Real(1) - m_q);
39 beta_tilde.resize(
N5);
41 for(
int i=0;
i <
N5;
i++)
44 beta_tilde[
i] =
beta[
i]*Hsign*scale_fac;
58 QDPIO::cerr <<
"Something is wrong. At the end of this loop"
59 <<
" Hsign should be -ve" << std::endl;
64 for(
int i=0;
i <
N5-1;
i++) {
80 invd[0] = Real(1)/
d[0];
82 for(
int i=1;
i <
N5;
i++) {
84 invd[
i] = Real(1)/
d[
i];
96 for(
int i=0;
i <
N5-1;
i++) {
100 off_diag_coeff.resize(
N5);
101 for(
int i=0;
i <
N5;
i++) {
102 off_diag_coeff[
i] = -Real(0.5)*beta_tilde[
i];
129 QDPEvenOddPrecOvlapContFrac5DLinOpArray::applyDiag(multi1d<LatticeFermion>&
chi,
130 const multi1d<LatticeFermion>&
psi,
149 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
163 chi[0][rb[
cb]] =
a[0]*(GammaConst<Ns,Ns*Ns-1>()*
psi[0]);
167 for(
int i=1;
i <
N5;
i++) {
212 QDPEvenOddPrecOvlapContFrac5DLinOpArray::applyDiagInv(
213 multi1d<LatticeFermion>&
chi,
214 const multi1d<LatticeFermion>&
psi,
222 multi1d<LatticeFermion>
y(
N5); moveToFastMemoryHint(
y);
224 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
227 const int G5 = Ns*Ns-1;
233 for(
int i = 1;
i <
N5;
i++) {
236 y[
i][rb[
cb]] =
psi[
i] -
u[
i-1]*(GammaConst<Ns,Ns*Ns-1>()*
y[
i-1]);
248 chi[
N5-1][rb[
cb]] = invd[
N5-1]*(GammaConst<Ns,Ns*Ns-1>()*
y[
N5-1]);
251 for(
int i =
N5-2;
i >= 0;
i--) {
256 chi[
i][rb[
cb]] = GammaConst<Ns,Ns*Ns-1>()*(invd[
i]*
y[
i]-
u[
i]*
chi[
i+1]);
276 void QDPEvenOddPrecOvlapContFrac5DLinOpArray::applyOffDiag(
277 multi1d<LatticeFermion>&
chi,
278 const multi1d<LatticeFermion>&
psi,
286 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
294 for(
int i=0;
i <
N5-1;
i++) {
304 chi[
i][rb[
cb]] = off_diag_coeff[
i]*(GammaConst<Ns,Ns*Ns-1>()*
tmp);
315 chi[
N5-1][rb[
cb]] = off_diag_coeff[
N5-1]*(GammaConst<Ns,Ns*Ns-1>()*
tmp);
331 QDPEvenOddPrecOvlapContFrac5DLinOpArray::applyDerivOffDiag(multi1d<LatticeColorMatrix>& ds_u,
332 const multi1d<LatticeFermion>&
chi,
333 const multi1d<LatticeFermion>&
psi,
342 multi1d<LatticeColorMatrix> ds_tmp(
Nd);
344 LatticeFermion
tmp; moveToFastMemoryHint(
tmp);
352 for(
int i=0;
i <
N5;
i++)
354 if (
i ==
N5-1 && isLastZeroP)
continue;
361 coeff = -Real(0.5)*beta_tilde[
i];
364 tmp[rb[
cb]] *= coeff;
374 for(
int i=0;
i <
N5;
i++)
376 if (
i ==
N5-1 && isLastZeroP)
continue;
383 coeff = -Real(0.5)*beta_tilde[
i];
386 tmp[rb[1-
cb]] *= coeff;
QDPEvenOddPrecOvlapContFrac5DLinOpArray(Handle< FermState< T, P, Q > > state, const Real &_m_q, const Real &_OverMass, int _N5, const Real &_scale_fac, const multi1d< Real > &_alpha, const multi1d< Real > &_beta, const bool _isLastZeroP)
Full constructor.
Include possibly optimized Wilson dslash.
Even-odd prec. 5D continued fraction linop.
static const LatticeInteger & beta(const int dim)
static const LatticeInteger & alpha(const int dim)
Asqtad Staggered-Dirac operator.
QDPWilsonDslash WilsonDslash
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)
static multi1d< LatticeColorMatrix > u
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state