CHROMA
syssolver_linop_clover_mg_proto_qphix_eo.h
Go to the documentation of this file.
1 /*
2  * syssolver_linop_clover_mg_proto.h
3  *
4  * Created on: Mar 23, 2017
5  * Author: bjoo
6  */
7 
8 #ifndef LIB_ACTIONS_FERM_INVERT_MG_PROTO_SYSSOLVER_LINOP_CLOVER_MG_PROTO_QPHIX_EO_H_
9 #define LIB_ACTIONS_FERM_INVERT_MG_PROTO_SYSSOLVER_LINOP_CLOVER_MG_PROTO_QPHIX_EO_H_
10 
11 #include "chromabase.h"
12 #include "handle.h"
13 #include "state.h"
14 #include "syssolver.h"
15 #include "linearop.h"
19 #include "lattice/solver.h"
20 #include "lattice/fgmres_common.h"
21 #include "lattice/qphix/invfgmres_qphix.h"
22 #include "lattice/qphix/qphix_qdp_utils.h"
23 #include "lattice/qphix/qphix_eo_clover_linear_operator.h"
25 
26 #include <memory>
27 
28 using namespace QDP;
29 
30 namespace Chroma {
31 
32 //! Registration and other yuckies
33  namespace LinOpSysSolverMGProtoQPhiXEOCloverEnv
34  {
35  //! Register the syssolver
36  bool registerAll();
37 
38 
39  }
40 
41  using EoFGMRES = const MG::FGMRESSolverQPhiX;
42 
44  {
45  public:
46  using T = LatticeFermion;
47  using Q = multi1d<LatticeColorMatrix>;
48 
50  Handle< FermState<T,Q,Q> > state_,
51  const MGProtoSolverParams& invParam_);
52 
54 
55 
56  //! Return the subset on which the operator acts
57  const Subset& subset() const;
58 
59  //! Solve It!
60  SystemSolverResults_t operator()(T& psi, const T& chi) const;
61 
62  private:
67  std::shared_ptr<MGProtoHelpersQPhiX::MGPreconditionerEO> mg_pointer;
68  std::shared_ptr<MG::QPhiXWilsonCloverEOLinearOperator > M_ptr;
69 
70  // Shorthand for the UnprecWrapper
71  using UnprecFGMRES = MG::UnprecFGMRESSolverQPhiXWrapper;
72 
73 
74  std::shared_ptr<UnprecFGMRES> wrapped;
75  std::shared_ptr<EoFGMRES> eo_solver;
76 
77  };
78 
79 };
80 
81 
82 
83 
84 #endif /* LIB_ACTIONS_FERM_INVERT_MG_PROTO_SYSSOLVER_LINOP_CLOVER_MG_PROTO_H_ */
Primary include file for CHROMA library code.
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
std::shared_ptr< MGProtoHelpersQPhiX::MGPreconditionerEO > mg_pointer
std::shared_ptr< MG::QPhiXWilsonCloverEOLinearOperator > M_ptr
SystemSolver disambiguator.
Linear Operator.
Definition: linearop.h:27
Class for counted reference semantics.
Linear Operators.
bool registerAll()
Register all the factories.
multi1d< Hadron2PtContraction_t > operator()(const multi1d< LatticeColorMatrix > &u)
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
const MG::FGMRESSolverQPhiX EoFGMRES
::std::string string
Definition: gtest.h:1979
chi
Definition: pade_trln_w.cc:24
psi
Definition: pade_trln_w.cc:191
Support class for fermion actions and linear operators.
Holds return info from SystemSolver call.
Definition: syssolver.h:17
Linear system solvers.
Disambiguator for LinOp system solvers.