6 #ifndef __syssolver_linop_rel_cg_multiprec_h__
7 #define __syssolver_linop_rel_cg_multiprec_h__
28 namespace LinOpSysSolverReliableCGCloverEnv
44 typedef LatticeFermion
T;
45 typedef LatticeColorMatrix
U;
46 typedef multi1d<LatticeColorMatrix>
Q;
48 typedef LatticeFermionF
TF;
49 typedef LatticeColorMatrixF
UF;
50 typedef multi1d<LatticeColorMatrixF>
QF;
52 typedef LatticeFermionD
TD;
53 typedef LatticeColorMatrixD
UD;
54 typedef multi1d<LatticeColorMatrixD>
QD;
68 QF links_single; links_single.resize(
Nd);
69 QD links_double; links_double.resize(
Nd);
71 const Q& links = state_->getLinks();
73 links_single[
mu] = links[
mu];
74 links_double[
mu] = links[
mu];
96 const Subset&
subset()
const {
return A->subset();}
125 TD chi_d = M_dag_chi;
144 r[
A->subset()] -=
tmp;
145 res.
resid = sqrt(norm2(
r,
A->subset()));
147 QDPIO::cout <<
"RELIABLE_CGNE_SOLVER: " << res.
n_count <<
" iterations. Rsd = " << res.
resid <<
" Relative Rsd = " << res.
resid/sqrt(norm2(
chi,
A->subset())) << std::endl;
Even-odd preconditioned Clover-Dirac operator.
Even-odd preconditioned Clover-Dirac operator.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Solve a system using Richardson iteration.
LinOpSysSolverReliableCGClover(Handle< LinearOperator< T > > A_, Handle< FermState< T, Q, Q > > state_, const SysSolverReliableCGCloverParams &invParam_)
Constructor.
~LinOpSysSolverReliableCGClover()
Destructor is automatic.
multi1d< LatticeColorMatrix > Q
SystemSolverResults_t operator()(T &psi, const T &chi) const
Solver the linear system.
Handle< LinearOperator< TD > > M_double
multi1d< LatticeColorMatrixF > QF
Handle< LinearOperator< T > > A
Handle< FermState< TD, QD, QD > > fstate_double
multi1d< LatticeColorMatrixD > QD
Handle< LinearOperator< TF > > M_single
Handle< FermState< TF, QF, QF > > fstate_single
LinOpSysSolverReliableCGClover()
const SysSolverReliableCGCloverParams invParam
const Subset & subset() const
Return the subset on which the operator acts.
SystemSolver disambiguator.
Periodic version of FermState.
Parameters for Clover fermion action.
Even-odd preconditioned Clover fermion linear operator.
SystemSolverResults_t InvCGReliable(const LinearOperator< LatticeFermionF > &A, const LatticeFermionF &chi, LatticeFermionF &psi, const Real &RsdCG, const Real &Delta, int MaxCG)
Bi-CG stabilized.
Class for counted reference semantics.
M^dag*M composition of a linear operator.
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > chi(Ncb)
Periodic ferm state and a creator.
BiCGStab Solver with reliable updates.
Support class for fermion actions and linear operators.
CloverFermActParams clovParams
Holds return info from SystemSolver call.
Factory for solving M*psi=chi where M is not hermitian or pos. def.