CHROMA
unprec_dwf_linop_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned domain-wall fermion linear operator
4  */
5 
6 #ifndef __unprec_dwf_linop_array_w_h__
7 #define __unprec_dwf_linop_array_w_h__
8 
9 #include "linearop.h"
12 #include "io/aniso_io.h"
13 
14 namespace Chroma
15 {
16  //! Unpreconditioned domain-wall Dirac operator
17  /*!
18  * \ingroup linop
19  *
20  * This routine is specific to Wilson fermions!
21  */
22  class UnprecDWLinOpArray : public UnprecDWLikeLinOpBaseArray<LatticeFermion,
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
33  const Real& WilsonMass_, const Real& m_q, int N5_,
34  const AnisoParam_t& aniso_);
35 
36  //! Destructor is automatic
38 
39  //! Length of DW flavor index/space
40  inline int size() const {return N5;}
41 
42  //! Only defined on the entire lattice
43  const Subset& subset() const {return all;}
44 
45  //! Return the fermion BC object for this linear operator
46  const FermBC<T,P,Q>& getFermBC() const {return *fbc;}
47 
48  //! Apply the operator onto a source std::vector
49  void operator() (multi1d<LatticeFermion>& chi,
50  const multi1d<LatticeFermion>& psi,
51  enum PlusMinus isign) const;
52 
53  //! Apply the Dminus operator on a lattice fermion.
54  inline
55  void Dminus(LatticeFermion& chi,
56  const LatticeFermion& psi,
57  enum PlusMinus isign,
58  int s5) const
59  {
60  QDPIO::cerr << "Dminus not implemented" << std::endl;
61  QDP_abort(1);
62  }
63 
64  //! Derivative
65  void deriv(multi1d<LatticeColorMatrix>& ds_u,
66  const multi1d<LatticeFermion>& chi, const multi1d<LatticeFermion>& psi,
67  enum PlusMinus isign) const;
68 
69 
70  protected:
71  //! Partial constructor
73  //! Hide =
74  void operator=(const UnprecDWLinOpArray&) {}
75 
76  private:
77  Real WilsonMass;
78  Real m_q;
79  Real a5;
80  int N5;
81 
82  Real fact1;
83  Real fact2;
84 
87  };
88 
89 } // End Namespace Chroma
90 
91 
92 
93 #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.
Definition: lwldslash_w.h:48
Unpreconditioned domain-wall Dirac operator.
Unpreconditioned domain-wall Dirac operator.
const Subset & subset() const
Only defined on the entire lattice.
int size() const
Length of DW flavor index/space.
Handle< FermBC< T, P, Q > > fbc
void Dminus(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int s5) const
Apply the Dminus operator on a lattice fermion.
UnprecDWLinOpArray()
Partial constructor.
~UnprecDWLinOpArray()
Destructor is automatic.
multi1d< LatticeColorMatrix > Q
void deriv(multi1d< LatticeColorMatrix > &ds_u, const multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Derivative.
multi1d< LatticeColorMatrix > P
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
void operator=(const UnprecDWLinOpArray &)
Hide =.
Include possibly optimized Wilson dslash.
void operator()(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &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
Parameters for anisotropy.
Definition: aniso_io.h:24
Base class for unpreconditioned domain-wall-like fermion linear operator.