CHROMA
asq_dsl_s.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 // $Id: asq_dsl_s.h,v 3.3 2007-09-01 18:53:55 edwards Exp $
3 /*! \file
4  * \brief The "asq" or "asqtad" dslash operator D'
5  */
6 
7 #ifndef __asqdslash_h__
8 #define __asqdslash_h__
9 
10 #include "linearop.h"
12 
13 
14 namespace Chroma
15 {
16  //! The "asq" or "asqtad" dslash operator D'
17  /*!
18  * \ingroup linop
19  *
20  * This routine is specific to staggered fermions!
21  *
22  * Description:
23  *
24  * This routine applies the "asq" or "asqtad" operator D' to Psi,
25  * putting the result in Chi.
26  *
27  * Nd-1
28  * ---
29  * \ F
30  * chi(x) := > isign eta (x) [U (x) psi(x+mu)
31  * / mu mu
32  * ---
33  * mu=0
34  *
35  * + c_3 U (x) U (x+mu) U (x+2mu) psi(x+3mu) ]
36  * mu mu mu
37  *
38  * Nd-1
39  * ---
40  * \ +F
41  * - > isign eta (x) [U (x-mu) psi(x-mu)
42  * / mu mu
43  * ---
44  * mu=0
45  *
46  * + + +
47  * + c_3 U (x) U (x-2mu) U (x-3mu) psi(x-3mu) ]
48  * mu mu mu
49  * Note the KS phase factors are already included in the U's!
50  */
51 
53  LatticeStaggeredFermion, multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
54  {
55  public:
56  // Typedefs to save typing
57  typedef LatticeStaggeredFermion T;
58  typedef multi1d<LatticeColorMatrix> P;
59  typedef multi1d<LatticeColorMatrix> Q;
60 
61  //! Empty constructor. Must use create later
63 
64  //! Full constructor
66  {create(state_);}
67 
68  //! Creation routine
70 
71  //! No real need for cleanup here
73 
74  /*! Arguments:
75  *
76  * \param u_fat Fat7 links (Read)
77  * \param u_triple triple links (Read)
78  * \param psi Pseudofermion field - Source (Read)
79  * \param isign D' or D'^+ ( +1 | -1 ) respectively (Read)
80  * \param cb Checkerboard of OUTPUT std::vector (Read)
81  */
82  void apply (LatticeStaggeredFermion& chi, const LatticeStaggeredFermion& psi,
83  enum PlusMinus isign, int cb) const;
84 
85  //! Subset is all here
86  const Subset& subset() const {return all;}
87 
88  //! Return the fermion BC object for this linear operator
89  const FermBC<T,P,Q>& getFermBC() const {return state->getBC();}
90 
91  private:
93  };
94 
95 } // End Namespace Chroma
96 
97 
98 #endif
99 
100 
Asqtad state.
Dslash-like Linear Operator.
Definition: linearop.h:221
Base class for all fermion action boundary conditions.
Definition: fermbc.h:20
Class for counted reference semantics.
Definition: handle.h:33
The "asq" or "asqtad" dslash operator D'.
Definition: asq_dsl_s.h:54
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
Definition: asq_dsl_s.h:89
const Subset & subset() const
Subset is all here.
Definition: asq_dsl_s.h:86
void apply(LatticeStaggeredFermion &chi, const LatticeStaggeredFermion &psi, enum PlusMinus isign, int cb) const
Definition: asq_dsl_s.cc:74
Handle< AsqtadConnectStateBase > state
Definition: asq_dsl_s.h:92
LatticeStaggeredFermion T
Definition: asq_dsl_s.h:57
QDPStaggeredDslash(Handle< AsqtadConnectStateBase > state_)
Full constructor.
Definition: asq_dsl_s.h:65
~QDPStaggeredDslash()
No real need for cleanup here.
Definition: asq_dsl_s.h:72
multi1d< LatticeColorMatrix > P
Definition: asq_dsl_s.h:58
multi1d< LatticeColorMatrix > Q
Definition: asq_dsl_s.h:59
void create(Handle< AsqtadConnectStateBase > state_)
Creation routine
Definition: asq_dsl_s.cc:59
QDPStaggeredDslash()
Empty constructor. Must use create later.
Definition: asq_dsl_s.h:62
Linear Operators.
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