CHROMA
unprec_ovext_linop_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned extended-Overlap (5D) (Naryanan&Neuberger) linear operator
4  */
5 
6 #ifndef __unprec_ovext_linop_array_w_h__
7 #define __unprec_ovext_linop_array_w_h__
8 
9 #include "chromabase.h"
10 #include "handle.h"
11 #include "linearop.h"
13 
14 using namespace QDP;
15 
16 namespace Chroma
17 {
18  //! Unpreconditioned Extended-Overlap (N&N) linear operator
19  /*!
20  * \ingroup linop
21  *
22  * This operator applies the extended version of the hermitian overlap operator
23  * Chi = ((1+m_q)/(1-m_q)*gamma_5 + B) . Psi
24  * where B is the continued fraction of the pole approx. to eps(H(m))
25  *
26  * This operator implements hep-lat/0005004
27  */
28 
29  class UnprecOvExtLinOpArray : public UnprecLinearOperatorArray<LatticeFermion,
30  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
31  {
32  public:
33  // Typedefs to save typing
34  typedef LatticeFermion T;
35  typedef multi1d<LatticeColorMatrix> P;
36  typedef multi1d<LatticeColorMatrix> Q;
37 
38  //! Full constructor
40  const int Npoles_,
41  const Real& coeffP_,
42  const multi1d<Real>& resP_,
43  const multi1d<Real>& rootQ_,
44  const multi1d<Real>& beta_,
45  const Real& OverMass_,
46  const Real& Mass_,
47  const Real& b5_,
48  const Real& c5_)
49 
50  {create(fs,Npoles_, coeffP_, resP_, rootQ_, beta_,
51  OverMass_,Mass_,b5_,c5_);}
52 
53  //! Creation routine
54  void create(Handle< FermState<T,P,Q> > fs,
55  const int Npoles_,
56  const Real& coeffP_,
57  const multi1d<Real>& resP_,
58  const multi1d<Real>& rootQ_,
59  const multi1d<Real>& beta_,
60  const Real& OverMass_,
61  const Real& m_q_,
62  const Real& b5_,
63  const Real& c5_);
64 
65  //! Length of DW flavor index/space
66  int size() const {return N5;}
67 
68  //! Destructor is automatic
70 
71  //! Only defined on the entire lattice
72  const Subset& subset() const {return all;}
73 
74  //! Apply the operator onto a source std::vector
75  void operator() (multi1d<LatticeFermion>& chi, const multi1d<LatticeFermion>& psi,
76  enum PlusMinus isign) const;
77 
78  //! Derivative
79  void deriv(multi1d<LatticeColorMatrix>& ds_u,
80  const multi1d<LatticeFermion>& chi, const multi1d<LatticeFermion>& psi,
81  enum PlusMinus isign) const;
82 
83  //! Return the fermion BC object for this linear operator
84  const FermBC<T,P,Q>& getFermBC() const {return *fbc;}
85 
86  protected:
87  //! Partial constructor
89  //! Hide =
91 
92  private:
95  int Npoles;
96  int N5;
97  Real R;
98  Real alpha;
99  Real a5;
100  Real coeffP;
101  multi1d<Real> p_by_beta_sqrt;
102  multi1d<Real> q_sqrt;
103  multi1d<Real> beta;
104  };
105 
106 } // End Namespace Chroma
107 
108 
109 #endif
Primary include file for CHROMA library code.
Base class for all fermion action boundary conditions.
Definition: fermbc.h:20
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Unpreconditioned linear operator including derivatives.
Definition: linearop.h:203
Unpreconditioned Extended-Overlap (N&N) linear operator.
~UnprecOvExtLinOpArray()
Destructor is automatic.
void operator=(const UnprecOvExtLinOpArray &)
Hide =.
UnprecOvExtLinOpArray(Handle< FermState< T, P, Q > > fs, const int Npoles_, const Real &coeffP_, const multi1d< Real > &resP_, const multi1d< Real > &rootQ_, const multi1d< Real > &beta_, const Real &OverMass_, const Real &Mass_, const Real &b5_, const Real &c5_)
Full constructor.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
multi1d< LatticeColorMatrix > Q
int size() const
Length of DW flavor index/space.
const Subset & subset() const
Only defined on the entire lattice.
multi1d< LatticeColorMatrix > P
Unpreconditioned Wilson-Dirac operator.
Class for counted reference semantics.
Linear Operators.
multi1d< Hadron2PtContraction_t > operator()(const multi1d< LatticeColorMatrix > &u)
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
chi
Definition: pade_trln_w.cc:24
psi
Definition: pade_trln_w.cc:191
multi1d< LatticeColorMatrix > deriv(const EvenOddPrecLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > &AP, const LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign)
Apply the operator onto a source std::vector.
Unpreconditioned Wilson fermion linear operator.