CHROMA
unprec_ovdwf_fermact_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned Overlap-DWF (Borici) action
4  */
5 
6 #ifndef __unprec_ovdwf_fermact_array_w_h__
7 #define __unprec_ovdwf_fermact_array_w_h__
8 
11 
12 
13 namespace Chroma
14 {
15  //! Name and registration
16  namespace UnprecOvDWFermActArrayEnv
17  {
18  extern const std::string name;
19  bool registerAll();
20  }
21 
22 
23  //! Params for OvDWF
25  {
27  UnprecOvDWFermActArrayParams(XMLReader& in, const std::string& path);
28 
29  Real OverMass;
30  Real Mass;
31  Real a5;
32  int N5;
33  };
34 
35 
36  // Reader/writers
37  void read(XMLReader& xml, const std::string& path, UnprecOvDWFermActArrayParams& param);
38  void write(XMLWriter& xml, const std::string& path, const UnprecOvDWFermActArrayParams& param);
39 
40 
41 
42  //! Unpreconditioned Overlap-style (Borici) OvDWF fermion action
43  /*! \ingroup fermacts
44  *
45  * Unprecondition domain-wall fermion action. The conventions used here
46  * are specified in Phys.Rev.D63:094505,2001 (hep-lat/0005002).
47  */
48  class UnprecOvDWFermActArray : public UnprecDWFermActBaseArray<LatticeFermion,
49  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
50  {
51  public:
52  // Typedefs to save typing
53  typedef LatticeFermion T;
54  typedef multi1d<LatticeColorMatrix> P;
55  typedef multi1d<LatticeColorMatrix> Q;
56 
57  //! General FermBC
59  const Real& OverMass_, const Real& Mass_, int N5_) :
60  cfs(cfs_), OverMass(OverMass_), Mass(Mass_), N5(N5_) {a5=1;}
61 
62  //! General FermBC
64  const UnprecOvDWFermActArrayParams& param) :
65  cfs(cfs_), OverMass(param.OverMass), Mass(param.Mass), a5(param.a5), N5(param.N5) {}
66 
67  //! Copy constructor
69  cfs(a.cfs), OverMass(a.OverMass), Mass(a.Mass), a5(a.a5), N5(a.N5) {}
70 
71  //! Length of DW flavor index/space
72  int size() const {return N5;}
73 
74  //! Return the quark mass
75  Real getQuarkMass() const {return Mass;}
76 
77  //! Produce an unpreconditioned linear operator for this action with arbitrary quark mass
79  const Real& m_q) const;
80 
81  //! Destructor is automatic
83 
84  protected:
85  //! Return the fermion BC object for this action
86  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
87 
88  private:
89  UnprecOvDWFermActArray() {} //! General FermBC
90  void operator=(const UnprecOvDWFermActArray& a) {} //! Hide =
91 
92  private:
94  Real OverMass;
95  Real Mass;
96  Real a5;
97  int N5;
98  };
99 
100 }
101 
102 #endif
Create a fermion connection state.
Definition: create_state.h:69
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Base class for unpreconditioned domain-wall-like fermion actions.
Unpreconditioned domain-wall Dirac operator.
Unpreconditioned Overlap-style (Borici) OvDWF fermion action.
void operator=(const UnprecOvDWFermActArray &a)
General FermBC.
~UnprecOvDWFermActArray()
Destructor is automatic.
UnprecDWLikeLinOpBaseArray< T, P, Q > * unprecLinOp(Handle< FermState< T, P, Q > > state, const Real &m_q) const
Produce an unpreconditioned linear operator for this action with arbitrary quark mass.
Real getQuarkMass() const
Return the quark mass.
Handle< CreateFermState< T, P, Q > > cfs
Hide =.
UnprecOvDWFermActArray(Handle< CreateFermState< T, P, Q > > cfs_, const UnprecOvDWFermActArrayParams &param)
General FermBC.
UnprecOvDWFermActArray(Handle< CreateFermState< T, P, Q > > cfs_, const Real &OverMass_, const Real &Mass_, int N5_)
General FermBC.
UnprecOvDWFermActArray(const UnprecOvDWFermActArray &a)
Copy constructor.
int size() const
Length of DW flavor index/space.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams &param)
Read parameters.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams &param)
Writer parameters.
const std::string name
Name to be used.
bool registerAll()
Register all the factories.
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
Complex a
Definition: invbicg.cc:95
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
static QDP_ColorVector * in
::std::string string
Definition: gtest.h:1979
Base class for unpreconditioned domain-wall-like fermion actions.
Wilson-like fermion actions.