CHROMA
asqtad_mdagm_s.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned Wilson fermion linear operator
4  */
5 // NEW $Id: asqtad_linop_s.h 2003/11/13 steve
6 // Asqtad Staggered fermion linear operator
7 
8 #ifndef __asqtad_mdagm_s_h__
9 #define __asqtad_mdagm_s_h__
10 
11 #include "linearop.h"
13 
14 
15 
16 namespace Chroma
17 {
18  //! Asqtad Staggered-Dirac operator
19  /*!
20  * \ingroup linop
21  *
22  * This routine is specific to Staggered fermions!
23  *
24  * +
25  * This subroutine applies the matrix or (M M) to the std::vector
26  * E,E
27  * Psi,
28  *
29  * { ~
30  * { M(U) . Psi if ISign = PLUS
31  * Chi = {
32  * { ~ +
33  * { M(U) . Psi if ISign = MINUS
34  * NEED TO THINK MORE ABOUT THE ISIGN HERE AS IS IT NOT REALLY NEEDED!!!
35  * FOR NOW JUST CALL THIS ROUTINE WITH A PLUS!!
36 
37  * Algorithm:
38 
39  * The kernel for Staggered fermions is
40  * +
41  * (M M) = 4m**2 - D D
42  * E EO OE
43  */
44 
45  class AsqtadMdagM : public DiffLinearOperator<LatticeStaggeredFermion,
46  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
47  {
48  public:
49  //! Partial constructor
51 
52  //! Full constructor
54  {create(state, Mass_);}
55 
56  //! Creation routine
57  void create(Handle<AsqtadConnectStateBase> state, const Real& Mass_);
58 
59  //! Destructor is automatic
61 
62  //! Only defined on the even subset
63  const Subset& subset() const {return rb[0];}
64 
65  //! Return the fermion BC object for this linear operator
66  const FermBC<LatticeStaggeredFermion,
67  multi1d<LatticeColorMatrix>,
68  multi1d<LatticeColorMatrix> >& getFermBC() const {return D.getFermBC();}
69 
70  //! Apply the operator onto a source std::vector
71  void operator() (LatticeStaggeredFermion& chi, const LatticeStaggeredFermion& psi, enum PlusMinus isign) const;
72 
73  private:
74  Real Mass;
76  };
77 
78 
79 } // End Namespace Chroma
80 
81 
82 #endif
Include possibly optimized Asqtad dslash.
Asqtad Staggered-Dirac operator.
const Subset & subset() const
Only defined on the even subset.
AsqtadMdagM()
Partial constructor.
const FermBC< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > & getFermBC() const
Return the fermion BC object for this linear operator.
AsqtadMdagM(Handle< AsqtadConnectStateBase > state, const Real &Mass_)
Full constructor.
~AsqtadMdagM()
Destructor is automatic.
Differentiable Linear Operator.
Definition: linearop.h:98
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
void create(Handle< AsqtadConnectStateBase > state, const Real &Mass_)
Creation routine.
void operator()(LatticeStaggeredFermion &chi, const LatticeStaggeredFermion &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
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