CHROMA
unprec_ovdwf_linop_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned Overlap-DWF (Borici) linear operator
4  */
5 
6 #ifndef __unprec_ovdwf_linop_array_w_h__
7 #define __unprec_ovdwf_linop_array_w_h__
8 
9 #include "linearop.h"
12 
13 
14 namespace Chroma
15 {
16  //! Unpreconditioned Overlap-DWF (Borici) linear operator
17  /*!
18  * \ingroup linop
19  *
20  * This routine is specific to Wilson fermions!
21  */
22  class UnprecOvDWLinOpArray : 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  {create(fs,WilsonMass_,m_q,N5_);}
35 
36  //! Creation routine
37  void create(Handle< FermState<T,P,Q> > fs,
38  const Real& WilsonMass_, const Real& m_q_, int N5_);
39 
40  //! Length of DW flavor index/space
41  int size() const {return N5;}
42 
43  //! Destructor is automatic
45 
46  //! Return the fermion BC object for this linear operator
47  const FermBC<T,P,Q>& getFermBC() const {return *fbc;}
48 
49  //! Only defined on the entire lattice
50  const Subset& subset() const {return all;}
51 
52  //! Apply the operator onto a source std::vector
53  void operator() (multi1d<LatticeFermion>& chi, const multi1d<LatticeFermion>& psi,
54  enum PlusMinus isign) const;
55 
56  //! Apply the Dminus operator on a lattice fermion. See my notes ;-)
57  void Dminus(LatticeFermion& chi,
58  const LatticeFermion& psi,
59  enum PlusMinus isign,
60  int s5) const;
61 
62  protected:
63  //! Partial constructor
65  //! Hide =
67 
68  private:
69  Real WilsonMass;
70  Real m_q;
71  Real a5;
72  int N5;
75  };
76 
77 } // End Namespace Chroma
78 
79 
80 #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
General Wilson-Dirac dslash.
Definition: lwldslash_w.h:48
Unpreconditioned domain-wall Dirac operator.
Unpreconditioned Overlap-DWF (Borici) linear operator.
void operator=(const UnprecOvDWLinOpArray &)
Hide =.
void Dminus(LatticeFermion &chi, const LatticeFermion &psi, enum PlusMinus isign, int s5) const
Apply the Dminus operator on a lattice fermion. See my notes ;-)
void operator()(multi1d< LatticeFermion > &chi, const multi1d< LatticeFermion > &psi, enum PlusMinus isign) const
Apply the operator onto a source std::vector.
const FermBC< T, P, Q > & getFermBC() const
Return the fermion BC object for this linear operator.
~UnprecOvDWLinOpArray()
Destructor is automatic.
UnprecOvDWLinOpArray()
Partial constructor.
multi1d< LatticeColorMatrix > P
multi1d< LatticeColorMatrix > Q
const Subset & subset() const
Only defined on the entire lattice.
Handle< FermBC< T, P, Q > > fbc
UnprecOvDWLinOpArray(Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const Real &m_q, int N5_)
Full constructor.
int size() const
Length of DW flavor index/space.
Include possibly optimized Wilson dslash.
void create(Handle< FermState< T, P, Q > > fs, const Real &WilsonMass_, const Real &m_q_, int N5_)
Creation routine.
Linear Operators.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
multi1d< LatticeFermion > chi(Ncb)
LatticeFermion psi
Definition: mespbg5p_w.cc:35
Base class for unpreconditioned domain-wall-like fermion linear operator.