CHROMA
lwldslash_w_pab.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Wilson Dslash linear operator
4  */
5 
6 #ifndef __lwldslash_pab_h__
7 #define __lwldslash_pab_h__
8 
10 #include "io/aniso_io.h"
11 #include "state.h"
12 
13 #include <wfm.h>
14 
15 #undef CHROMA_WFM_NO_END
16 // #define CHROMA_WFM_NO_END 1
17 
18 namespace Chroma
19 {
20  typedef PColorMatrix < RComplex <REAL>, Nc > PrimitiveSU3Matrix;
21 
22  namespace PABDslashEnv {
23  extern int refcount;
24  }
25 
26  //! General Wilson-Dirac dslash
27  /*!
28  * \ingroup linop
29  *
30  * DSLASH
31  *
32  * This routine is specific to Wilson fermions!
33  *
34  * Description:
35  *
36  * This routine applies the operator D' to Psi, putting the result in Chi.
37  *
38  * Nd-1
39  * ---
40  * \
41  * chi(x) := > U (x) (1 - isign gamma ) psi(x+mu)
42  * / mu mu
43  * ---
44  * mu=0
45  *
46  * Nd-1
47  * ---
48  * \ +
49  * + > U (x-mu) (1 + isign gamma ) psi(x-mu)
50  * / mu mu
51  * ---
52  * mu=0
53  *
54  */
55 
56  class PABWilsonDslash : public WilsonDslashBase< LatticeFermion,
57  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
58  {
59  public:
60  typedef LatticeFermion T;
61  typedef multi1d<LatticeColorMatrix> Q;
62  typedef multi1d<LatticeColorMatrix> P;
63 
64  //! Empty constructor. Must use create later
66 
67  //! Full constructor
69 
70  //! Full constructor with anisotropy
72  const AnisoParam_t& aniso_);
73 
74  //! Full constructor with general coefficients
76  const multi1d<Real>& coeffs_);
77 
78  //! Creation routine
80 
81  //! Creation routine with anisotropy
83  const AnisoParam_t& aniso_);
84 
85  //! Full constructor with general coefficients
87  const multi1d<Real>& coeffs_);
88 
89  //! No real need for cleanup here
91 
92  /**
93  * Apply a dslash
94  *
95  * \param chi result (Write)
96  * \param psi source (Read)
97  * \param isign D'^dag or D' ( MINUS | PLUS ) resp. (Read)
98  * \param cb Checkerboard of OUTPUT std::vector (Read)
99  *
100  * \return The output of applying dslash on psi
101  */
102  void apply(LatticeFermion& chi, const LatticeFermion& psi,
103  enum PlusMinus isign, int cb) const;
104 
105  //! Return the fermion BC object for this linear operator
106  const FermBC<T,P,Q>& getFermBC() const {return *fbc;}
107 
108  protected:
109  //! Get the anisotropy parameters
110  const multi1d<Real>& getCoeffs() const {return coeffs;}
111 
112  private:
113  multi1d<Real> coeffs; /*!< Nd array of coefficients of terms in the action */
114  PrimitiveSU3Matrix* packed_gauge; // fold in anisotropy
115  WilsonArg wil;
116  unsigned long wil_cbsize;
118  };
119 
120 
121 } // End Namespace Chroma
122 
123 #endif
Anisotropy parameters.
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
General Wilson-Dirac dslash.
~PABWilsonDslash()
No real need for cleanup here.
multi1d< LatticeColorMatrix > Q
PABWilsonDslash()
Empty constructor. Must use create later.
const multi1d< Real > & getCoeffs() const
Get the anisotropy parameters.
void create(Handle< FermState< T, P, Q > > state)
Creation routine.
PrimitiveSU3Matrix * packed_gauge
Handle< FermBC< T, P, Q > > fbc
multi1d< LatticeColorMatrix > P
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
General Wilson-Dirac dslash.
void apply(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int cb) const
Apply Wilson-Dirac dslash.
Wilson Dslash linear operator.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
multi1d< LatticeFermion > chi(Ncb)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
PColorMatrix< RComplex< REAL >, Nc > PrimitiveSU3Matrix
int cb
Definition: invbicg.cc:120
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
Support class for fermion actions and linear operators.
Parameters for anisotropy.
Definition: aniso_io.h:24