CHROMA
unprec_ovlap_contfrac5d_nonhermop_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_ovlap_contfrac5d_nonhermop_array_w_h__
7 #define __unprec_ovlap_contfrac5d_nonhermop_array_w_h__
8 
9 #include "linearop.h"
11 
12 
13 namespace Chroma
14 {
15  //! Unpreconditioned Extended-Overlap (N&N) linear operator
16  /*!
17  * \ingroup linop
18  *
19  * This operator applies the extended version of the hermitian overlap operator
20  * Chi = ((1+m_q)/(1-m_q)*gamma_5 + B) . Psi
21  * where B is the continued fraction of the pole approx. to eps(H(m))
22  *
23  * This operator implements hep-lat/0005004
24  */
25 
27  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
28  {
29  public:
30  // Typedefs to save typing
31  typedef LatticeFermion T;
32  typedef multi1d<LatticeColorMatrix> P;
33  typedef multi1d<LatticeColorMatrix> Q;
34 
35  //! Full constructor
38  const Real& _m_q,
39  int _N5,
40  const Real& _scale_fac,
41  const multi1d<Real>& _alpha,
42  const multi1d<Real>& _beta,
43  int _NEig,
44  const multi1d<Real>& _EigValFunc,
45  const multi1d<LatticeFermion>& _EigVec) :
46  M(S_aux.linOp(state)), fbc(state->getFermBC()),
47  m_q(_m_q), N5(_N5), scale_fac(_scale_fac), alpha(_alpha),
48  beta(_beta), NEig(_NEig), EigVec(_EigVec), EigValFunc(_EigValFunc)
49  {}
50 
51  //! Length of DW flavor index/space
52  int size() const {return N5;}
53 
54  //! Destructor is automatic
56 
57  //! Return the fermion BC object for this linear operator
58  const FermBC<T,P,Q>& getFermBC() const {return *fbc;}
59 
60  //! Only defined on the entire lattice
61  const Subset& subset() const {return all;}
62 
63  //! Apply the operator onto a source std::vector
64  void operator() (multi1d<LatticeFermion>& chi,
65  const multi1d<LatticeFermion>& psi,
66  enum PlusMinus isign) const;
67 
68  private:
71  const Real m_q;
72  const int N5; // Size of the 5th dimension
73  const Real scale_fac;
74  const multi1d<Real> alpha;
75  const multi1d<Real> beta;
76  const int NEig;
77  const multi1d<LatticeFermion> EigVec;
78  const multi1d<Real> EigValFunc;
79  };
80 
81 } // End Namespace Chroma
82 
83 
84 #endif
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.
const Subset & subset() const
Only defined on the entire lattice.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
UnprecOvlapContFrac5DNonHermOpArray(const UnprecWilsonTypeFermAct< T, P, Q > &S_aux, Handle< FermState< T, P, Q > > state, const Real &_m_q, int _N5, const Real &_scale_fac, const multi1d< Real > &_alpha, const multi1d< Real > &_beta, int _NEig, const multi1d< Real > &_EigValFunc, const multi1d< LatticeFermion > &_EigVec)
Full constructor.
void operator()(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
Unpreconditioned Wilson-like fermion actions with derivatives.
Definition: fermact.orig.h:491
Linear Operators.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
multi1d< LatticeFermion > chi(Ncb)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
Wilson-like fermion actions.