38 const int G5 = Ns * Ns - 1;
41 Real
mass = ( Real(1) +
m_q ) / ( Real(1) -
m_q );
42 Real init_fac = (Real(1)/
mass) +
mass;
44 LatticeFermion psi_proj =
psi;
60 psi_proj -= cconsts *
EigVec[
i];
75 std::ostringstream error_message;
76 error_message <<
"Should not use lovddag unless the chirality is either CH_PLUS or CH_MINUS" << std::endl;
77 throw error_message.str();
87 chi += cconsts * tmp1;
96 (*M)( ltmp, psi_proj,
PLUS);
97 tmp1 = Gamma(
G5)*ltmp;
102 if ( toBool(
c == Real(0)) ) {
129 #ifdef LOVDDAG_RSD_CHK
131 LatticeFermion b_vec=tmp1;
132 LatticeFermion
x =
zero;
172 Real epsilon_target = epsilon_normalise/(Real(2)+epsilon_normalise);
175 Real rsdcg_sq = epsilon_target*epsilon_target;
204 for(
k = 0;
k <=
MaxCG && ! convP ; ++
k)
224 d = innerProductReal(
p[
isz], Ap);
247 if (
s !=
isz && !convsP[
s]) {
252 z[
iz][
s] = z0*z1*bp ;
254 bs[
s] =
b *
z[
iz][
s] / z0;
290 if(
s !=
isz && !convsP[
s]) {
300 tmp1 = Gamma(
G5)*ltmp;
318 #ifdef LOVDDAG_RSD_CHK
396 bool btmp = toBool(ztmp <
rsd_sq);
397 convP = convP & btmp;
402 #ifdef LOVDDAG_RSD_CHK
404 LatticeFermion tmp_normcheck;
405 (*MdagM)(tmp_normcheck,
x,
PLUS);
407 tmp_normcheck -= b_vec;
408 Double norm2check = norm2(tmp_normcheck);
410 QDPIO::cout <<
"|| b - (Q_isz + MM)x || = " << norm2check <<
" accum = " << check_ztmp << std::endl;
429 if (
k > 0 && !convP) {
435 chi_sq_diff = norm2(tmp1);
438 bool btmp = toBool(chi_sq_diff < chi_sq_new);
441 if (! btmp && convP) {
455 ftmp = Real(0.25) * (Real(1) -
m_q*
m_q);
457 QDPIO::cout <<
"Overlap Inner Solve (lovddag(" <<
ichiral <<
")) = " <<
n_count <<
" iterations" << std::endl;
Primary include file for CHROMA library code.
const multi1d< LatticeFermion > EigVec
const multi1d< Real > rootQ
const multi1d< Real > resP
const multi1d< Real > EigValFunc
Gramm-Schmidt orthogonolization.
void GramSchm(multi1d< LatticeFermion > &psi, const int Npsi, const multi1d< LatticeFermion > &vec, const int Nvec, const Subset &sub)
Gramm-Schmidt orthogonolization.
void operator()(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
Internal Overlap-pole operator.
int epsilon(int i, int j, int k)
BinaryReturn< C1, C2, FnInnerProduct >::Type_t innerProduct(const QDPSubType< T1, C1 > &s1, const QDPType< T2, C2 > &s2)
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)
multi1d< LatticeFermion > s(Ncb)
FloatingPoint< double > Double