CHROMA
eoprec_ovlap_contfrac5d_linop_array_opt_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Optimized Even-odd prec. 5D continued fraction linop
4  */
5 
6 #ifndef __prec_ovlap_contfrac5d_linop_array_opt_w_h__
7 #define __prec_ovlap_contfrac5d_linop_array_opt_w_h__
8 
10 
11 namespace Chroma
12 {
13  //! Optimized Even-odd prec. 5D continued fraction linop
14  /*!
15  * \ingroup linop
16  *
17  * This operator applies the extended version of the hermitian overlap operator
18  * Chi = ((1+m_q)/(1-m_q)*gamma_5 + B) . Psi
19  * where B is the continued fraction of the pole approx. to eps(H(m))
20  *
21  * The details of this operator are in some lattice proceedings
22  * by Joo,Kennedy,Wenger
23  */
24 
26  {
27  public:
28 
29  //! Full constructor
30  /*! Pretty darn the same as for the unprec case
31  except that the auxiliary linop M is no longer supplied,
32  but is created here
33  */
35  const Real& _m_q,
36  const Real& _OverMass,
37  int _N5,
38  const Real& _scale_fac,
39  const multi1d<Real>& _alpha,
40  const multi1d<Real>& _beta,
41  const bool _isLastZeroP ) :
43  _m_q,
44  _OverMass,
45  _N5,
46  _scale_fac,
47  _alpha,
48  _beta,
49  _isLastZeroP)
50  {}
51 
52  //! Destructor is automatic
54 
55  protected:
56 
57 #if 0
58  //! Apply the even-even (odd-odd) coupling piece of the domain-wall fermion operator
59  /*!
60  * \param chi result (Modify)
61  * \param psi source (Read)
62  * \param isign Flag ( PLUS | MINUS ) (Read)
63  * \param cb checkerboard ( 0 | 1 ) (Read)
64  *
65  * Override with more optimized version for scalar-like machines
66  */
67  virtual
68  void applyDiag(multi1d<LatticeFermion>& chi,
69  const multi1d<LatticeFermion>& psi,
70  enum PlusMinus isign,
71  const int cb) const;
72 #endif
73 
74  //! Apply the inverse even-even (odd-odd) coupling piece of the domain-wall fermion operator
75  /*!
76  * \param chi result (Modify)
77  * \param psi source (Read)
78  * \param isign Flag ( PLUS | MINUS ) (Read)
79  * \param cb checkerboard ( 0 | 1 ) (Read)
80  *
81  * Override with more optimized version for scalar-like machines
82  */
83  void applyDiagInv(multi1d<LatticeFermion>& chi,
84  const multi1d<LatticeFermion>& psi,
85  enum PlusMinus isign,
86  const int cb) const;
87  };
88 
89 } // End Namespace Chroma
90 
91 
92 #endif
Base class Even-odd prec. 5D continued fraction linop.
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Optimized Even-odd prec. 5D continued fraction linop.
OptEvenOddPrecOvlapContFrac5DLinOpArray(Handle< FermState< T, P, Q > > state, const Real &_m_q, const Real &_OverMass, int _N5, const Real &_scale_fac, const multi1d< Real > &_alpha, const multi1d< Real > &_beta, const bool _isLastZeroP)
Full constructor.
Base class for Even-odd prec. 5D continued fraction linop.
void applyDiagInv(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the inverse even-even (odd-odd) coupling piece of the domain-wall fermion operator.
virtual void applyDiag(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign, const int cb) const
Apply the even-even (odd-odd) coupling piece of the domain-wall fermion operator.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
multi1d< LatticeFermion > chi(Ncb)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
int cb
Definition: invbicg.cc:120
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28