17 UnprecPDWF4DLinOp<LatticeFermion,
18 multi1d<LatticeColorMatrix>,
19 multi1d<LatticeColorMatrix> >::operator()(LatticeFermion&
chi,
20 const LatticeFermion&
psi,
25 const int N5 = size();
29 multi1d<LatticeFermion> psi5(
N5);
35 multi1d<LatticeFermion> tmp5(
N5);
38 multi1d<LatticeFermion> chi5(
N5);
45 D->unprecLinOp(chi5, tmp5,
PLUS);
50 #if defined(HACK_USE_PREC)
53 multi1d<LatticeFermion> chi_tmp(
N5);
55 multi1d<LatticeFermion> tmp1(
N5);
56 multi1d<LatticeFermion>
tmp2(
N5);
58 PV->evenEvenInvLinOp(tmp1, chi5,
PLUS);
60 for(
int n=0;
n <
N5; ++
n)
61 chi_tmp[
n][rb[1]] = chi5[
n] -
tmp2[
n];
64 multi1d<LatticeFermion> chi_tmp(
N5);
71 (*PV)(tmp5, chi_tmp,
MINUS);
74 res =
InvCG2 (*PV, tmp5, psi5, invParam.RsdCG, invParam.MaxCG);
77 #if defined(HACK_USE_PREC)
81 multi1d<LatticeFermion> tmp1(
N5);
82 multi1d<LatticeFermion>
tmp2(
N5);
84 PV->evenOddLinOp(tmp1, psi5,
PLUS);
85 for(
int n=0;
n <
N5; ++
n)
86 tmp2[
n][rb[0]] = chi5[
n] - tmp1[
n];
87 PV->evenEvenInvLinOp(psi5,
tmp2,
PLUS);
101 res =
InvCG2(*PV, tmp5, psi5, invParam.RsdCG, invParam.MaxCG);
104 (*PV)(tmp5, psi5,
PLUS);
108 D->unprecLinOp(psi5, tmp5,
MINUS);
113 if ( res.
n_count == invParam.MaxCG )
Primary include file for CHROMA library code.
DWF parity/rotation operator.
SystemSolverResults_t InvCG2(const LinearOperator< LatticeFermionF > &M, const LatticeFermionF &chi, LatticeFermionF &psi, const Real &RsdCG, int MaxCG)
Conjugate-Gradient (CGNE) algorithm for a generic Linear Operator.
void DwfFld(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign)
DWF parity/rotation operator.
Conjugate-Gradient algorithm for a generic Linear Operator.
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)
multi1d< LatticeFermion > chi(Ncb)
Holds return info from SystemSolver call.
Unpreconditioned projected DWF operator to 4D using prec 5D bits.