29#ifndef GRID_CONJUGATE_RESIDUAL_H
30#define GRID_CONJUGATE_RESIDUAL_H
57 RealD rAr, rAAr, rArp;
62 Field r(grid), p(grid), Ap(grid), Ar(grid);
74 if (
verbose) std::cout<<
GridLogMessage<<
"ConjugateResidual: iteration " <<0<<
" residual "<<cp<<
" target"<< rsq<<std::endl;
93 if(
verbose) std::cout<<
GridLogMessage<<
"ConjugateResidual: iteration " <<k<<
" residual "<<cp<<
" target"<< rsq<<std::endl;
99 std::cout<<
GridLogMessage<<
"ConjugateResidual: Converged on iteration " <<k
100 <<
" computed residual "<<std::sqrt(cp/ssq)
101 <<
" true residual "<<std::sqrt(true_resid)
108 std::cout<<
GridLogMessage<<
"ConjugateResidual did NOT converge"<<std::endl;
RealD axpy_norm(Lattice< vobj > &ret, sobj a, const Lattice< vobj > &x, const Lattice< vobj > &y)
void axpy(Lattice< vobj > &ret, sobj a, const Lattice< vobj > &x, const Lattice< vobj > &y)
RealD norm2(const Lattice< vobj > &arg)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
#define NAMESPACE_BEGIN(A)
ConjugateResidual(RealD tol, Integer maxit)
void operator()(LinearOperatorBase< Field > &Linop, const Field &src, Field &psi)
virtual void HermOp(const Field &in, Field &out)=0
virtual void HermOpAndNorm(const Field &in, Field &out, RealD &n1, RealD &n2)=0