CHROMA
eoprec_fermact_qprop_array.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Propagator solver for a generic even-odd preconditioned fermion operator
4  *
5  * Solve for the propagator of a even-odd non-preconditioned fermion operator
6  */
7 
8 #ifndef __prec_fermact_qprop_array_h__
9 #define __prec_fermact_qprop_array_h__
10 
12 #include "io/aniso_io.h"
13 
14 namespace Chroma
15 {
16  //! Propagator of a generic even-odd preconditioned 5D fermion linear operator
17  /*! \ingroup qprop
18  *
19  * This routine is actually generic to all even-odd 5D preconditioned fermions
20  */
21  template<typename T, typename P, typename Q>
23  {
24  public:
25  //! Constructor
26  /*!
27  * \param A_ Linear operator ( Read )
28  * \param invParam_ inverter parameters ( Read )
29  */
31  Handle< LinOpSystemSolverArray<T> > invA_) : A(A_), invA(invA_)
32  {}
33 
34  //! Another constructor for compatibility
35  /*!
36  * This constructor exists so this class can be compatible with
37  * optimized inverter constructors
38  *
39  * \param A_ Linear operator ( Read )
40  * \param invParam_ inverter parameters ( Read )
41  */
44  Handle< FermState<T,P,Q> > state_, // throw away
45  const Real& OverMass_, // throw away
46  const Real& Mass_, // throw away
47  const AnisoParam_t& anisoParam_, // throw away
48  const GroupXML_t& invParam_ // throw away
49  ) : A(A_), invA(invA_)
50  {}
51 
52  //! Destructor is automatic
54 
55  //! Expected length of array index
56  int size() const {return A->size();}
57 
58  //! Return the subset on which the operator acts
59  const Subset& subset() const {return all;}
60 
61  //! Solver the linear system
62  /*!
63  * \param psi quark propagator ( Modify )
64  * \param chi source ( Read )
65  * \return number of CG iterations
66  */
67  SystemSolverResults_t operator() (multi1d<T>& psi, const multi1d<T>& chi) const;
68 
69  protected:
70  //! Hide default constructor
72 
73  private:
76 
77  };
78 
79 
80 } // namespace Chroma
81 
82 
83 #endif
Anisotropy parameters.
Even-odd preconditioned linear operator including derivatives for arrays.
Definition: eoprec_linop.h:312
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
SystemSolver disambiguator.
Propagator of a generic even-odd preconditioned 5D fermion linear operator.
PrecFermAct5DQprop()
Hide default constructor.
PrecFermAct5DQprop(Handle< EvenOddPrecLinearOperatorArray< T, P, Q > > A_, Handle< LinOpSystemSolverArray< T > > invA_)
Constructor.
const Subset & subset() const
Return the subset on which the operator acts.
~PrecFermAct5DQprop()
Destructor is automatic.
PrecFermAct5DQprop(Handle< EvenOddPrecLinearOperatorArray< T, P, Q > > A_, Handle< LinOpSystemSolverArray< T > > invA_, Handle< FermState< T, P, Q > > state_, const Real &OverMass_, const Real &Mass_, const AnisoParam_t &anisoParam_, const GroupXML_t &invParam_)
Another constructor for compatibility.
Handle< EvenOddPrecLinearOperatorArray< T, P, Q > > A
SystemSolverResults_t operator()(multi1d< T > &psi, const multi1d< T > &chi) const
Solver the linear system.
int size() const
Expected length of array index.
Handle< LinOpSystemSolverArray< T > > invA
Linear system solvers of arrays.
Definition: syssolver.h:62
Even-odd preconditioned Wilson-like fermion actions.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
multi1d< LatticeFermion > chi(Ncb)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
Parameters for anisotropy.
Definition: aniso_io.h:24
Hold group xml and type id.
Holds return info from SystemSolver call.
Definition: syssolver.h:17