CHROMA
unprec_ovlap_contfrac5d_pv_linop_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned Pauli-Villars Continued Fraction 5D
4  */
5 
6 #ifndef __unprec_ovlap_contfrac5d_pv_linop_array_w_h__
7 #define __unprec_ovlap_contfrac5d_pv_linop_array_w_h__
8 
9 #include "linearop.h"
11 
12 
13 namespace Chroma
14 {
15  //! Unpreconditioned Pauli-Villars Continued Fraction 5D
16  /*!
17  * \ingroup linop
18  *
19  * Paulli-Villars cont. frac.
20  */
21 
23  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
24  {
25  public:
26  // Typedefs to save typing
27  typedef LatticeFermion T;
28  typedef multi1d<LatticeColorMatrix> P;
29  typedef multi1d<LatticeColorMatrix> Q;
30 
31  //! Full constructor
34  const Real& _m_q,
35  int _N5,
36  const Real& _scale_fac,
37  const multi1d<Real>& _alpha,
38  const multi1d<Real>& _beta,
39  int _NEig,
40  const multi1d<Real>& _EigValFunc,
41  const multi1d<LatticeFermion>& _EigVec,
42  const bool _isLastZeroP ) :
43  M(S_aux.linOp(state)), fbc(state->getFermBC()),
44  m_q(_m_q), N5(_N5), scale_fac(_scale_fac), alpha(_alpha),
45  beta(_beta), NEig(_NEig), EigVec(_EigVec), EigValFunc(_EigValFunc),
46  isLastZeroP(_isLastZeroP)
47  {
48  QDPIO::cout << "LinOpPV isLastZeroP = " << isLastZeroP << std::endl;
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  //! Derivative
69  void deriv(multi1d<LatticeColorMatrix>& ds_u,
70  const multi1d<LatticeFermion>& chi, const multi1d<LatticeFermion>& psi,
71  enum PlusMinus isign) const;
72 
73  private:
74  Handle< DiffLinearOperator<T,P,Q> > M; // Wilson(esque) Op
76  const Real m_q;
77  const int N5; // Size of the 5th dimension
78  const Real scale_fac;
79  const multi1d<Real> alpha;
80  const multi1d<Real> beta;
81  const int NEig;
82  const multi1d<LatticeFermion> EigVec;
83  const multi1d<Real> EigValFunc;
84  const bool isLastZeroP;
85  };
86 
87 } // End Namespace Chroma
88 
89 
90 #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 Pauli-Villars Continued Fraction 5D.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
void deriv(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Derivative.
UnprecOvlapContFrac5DPVLinOpArray(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.
void operator()(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
const Subset & subset() const
Only defined on the entire lattice.
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.