CHROMA
unprec_ovlap_contfrac5d_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_ovlap_contfrac5d_linop_array_w_h__
7 #define __unprec_ovlap_contfrac5d_linop_array_w_h__
8 
9 #include "linearop.h"
11 
12 namespace Chroma
13 {
14  //! Unpreconditioned Extended-Overlap (N&N) linear operator
15  /*!
16  * \ingroup linop
17  *
18  * This operator applies the extended version of the hermitian overlap operator
19  * Chi = ((1+m_q)/(1-m_q)*gamma_5 + B) . Psi
20  * where B is the continued fraction of the pole approx. to eps(H(m))
21  *
22  * This operator implements hep-lat/0005004
23  */
24 
26  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
27  {
28  public:
29  // Typedefs to save typing
30  typedef LatticeFermion T;
31  typedef multi1d<LatticeColorMatrix> P;
32  typedef multi1d<LatticeColorMatrix> Q;
33 
34  //! Full constructor
37  const Real& _m_q,
38  int _N5,
39  const Real& _scale_fac,
40  const multi1d<Real>& _alpha,
41  const multi1d<Real>& _beta,
42  int _NEig,
43  const multi1d<Real>& _EigValFunc,
44  const multi1d<LatticeFermion>& _EigVec,
45  const bool _isLastZeroP ) :
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  isLastZeroP(_isLastZeroP)
50  {
51  QDPIO::cout << "LinOp isLastZeroP = " << isLastZeroP << std::endl;
52  }
53 
54  //! Length of DW flavor index/space
55  int size() const {return N5;}
56 
57  //! Destructor is automatic
59 
60  //! Only defined on the entire lattice
61  const Subset& subset() const {return all;}
62 
63  //! Return the fermion BC object for this linear operator
64  const FermBC<T,P,Q>& getFermBC() const {return *fbc;}
65 
66  //! Apply the operator onto a source std::vector
67  void operator() (multi1d<LatticeFermion>& chi,
68  const multi1d<LatticeFermion>& psi,
69  enum PlusMinus isign) const;
70 
71  //! Derivative
72  void deriv(multi1d<LatticeColorMatrix>& ds_u,
73  const multi1d<LatticeFermion>& chi, const multi1d<LatticeFermion>& psi,
74  enum PlusMinus isign) const;
75 
76  private:
77  Handle< DiffLinearOperator<T,P,Q> > M; // Wilson(esque) Op
79  const Real m_q;
80  const int N5; // Size of the 5th dimension
81  const Real scale_fac;
82  const multi1d<Real> alpha;
83  const multi1d<Real> beta;
84  const int NEig;
85  const multi1d<LatticeFermion> EigVec;
86  const multi1d<Real> EigValFunc;
87  const bool isLastZeroP;
88 
89 
90  };
91 
92 } // End Namespace Chroma
93 
94 
95 #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.
void deriv(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Derivative.
int size() const
Length of DW flavor index/space.
void operator()(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
UnprecOvlapContFrac5DLinOpArray(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, const bool _isLastZeroP)
Full constructor.
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.