CHROMA
eoprec_ovdwf_fermact_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief 4D style even-odd preconditioned Overlap-DWF (Borici) action
4  */
5 
6 #ifndef __prec_ovdwf_fermact_array_w_h__
7 #define __prec_ovdwf_fermact_array_w_h__
8 
10 
11 
12 namespace Chroma
13 {
14  //! Name and registration
15  namespace EvenOddPrecOvDWFermActArrayEnv
16  {
17  extern const std::string name;
18  bool registerAll();
19  }
20 
21 
22  //! Params for DWF
24  {
25  EvenOddPrecOvDWFermActArrayParams(XMLReader& in, const std::string& path);
26 
27  Real OverMass;
28  Real Mass;
29  Real a5;
30  int N5;
31  };
32 
33 
34  // Reader/writers
35  void read(XMLReader& xml, const std::string& path, EvenOddPrecOvDWFermActArrayParams& param);
36  void write(XMLWriter& xml, const std::string& path, const EvenOddPrecOvDWFermActArrayParams& param);
37 
38 
39  //! 4D style even-odd preconditioned Overlap-DWF (Borici) action
40  /*! \ingroup fermacts
41  *
42  * 4D style even-odd preconditioned Overlap-DWF (Borici) action
43  * Follows notes of Brower (10/2003)
44  *
45  * Hopefully, the conventions used here
46  * are specified in Phys.Rev.D63:094505,2001 (hep-lat/0005002).
47  */
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_)
61  {
62  a5=1;
63  QDPIO::cout << "Construct EvenOddPrecOvDWFermActArray: OverMass = " << OverMass
64  << " Mass = " << Mass
65  << " N5 = " << N5
66  << " a5 = " << a5
67  << std::endl;
68  }
69 
70  //! General FermBC
72  const EvenOddPrecOvDWFermActArrayParams& param) :
73  cfs(cfs_), OverMass(param.OverMass), Mass(param.Mass), a5(param.a5), N5(param.N5) {}
74 
75  //! Copy constructor
77  cfs(a.cfs), OverMass(a.OverMass), Mass(a.Mass), a5(a.a5), N5(a.N5) {}
78 
79  //! Length of DW flavor index/space
80  int size() const {return N5;}
81 
82  //! Return the quark mass
83  Real getQuarkMass() const {return Mass;}
84 
85  //! Produce an unpreconditioned linear operator for this action with arbitrary quark mass
87  const Real& m_q) const;
88 
89  //! Produce an even-odd preconditioned linear operator for this action with arbitrary quark mass
91  const Real& m_q) const;
92 
93  //! Destructor is automatic
95 
96  protected:
97  //! Return the fermion BC object for this action
98  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
99 
100  //! Partial constructor
102  //! Hide =
104 
105  private:
107  Real OverMass;
108  Real Mass;
109  Real a5;
110  int N5;
111  };
112 
113 }
114 
115 #endif
Create a fermion connection state.
Definition: create_state.h:69
Base class for unpreconditioned domain-wall-like fermion actions.
4D Even Odd preconditioned domain-wall Dirac operator
4D style even-odd preconditioned Overlap-DWF (Borici) action
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
Handle< CreateFermState< T, P, Q > > cfs
~EvenOddPrecOvDWFermActArray()
Destructor is automatic.
EvenOddPrecDWLikeLinOpBaseArray< T, P, Q > * precLinOp(Handle< FermState< T, P, Q > > state, const Real &m_q) const
Produce an even-odd preconditioned linear operator for this action with arbitrary quark mass.
Real getQuarkMass() const
Return the quark mass.
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.
EvenOddPrecOvDWFermActArray(Handle< CreateFermState< T, P, Q > > cfs_, const EvenOddPrecOvDWFermActArrayParams &param)
General FermBC.
int size() const
Length of DW flavor index/space.
void operator=(const EvenOddPrecOvDWFermActArray &a)
Hide =.
EvenOddPrecOvDWFermActArray(const EvenOddPrecOvDWFermActArray &a)
Copy constructor.
EvenOddPrecOvDWFermActArray(Handle< CreateFermState< T, P, Q > > cfs_, const Real &OverMass_, const Real &Mass_, int N5_)
General FermBC.
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Unpreconditioned domain-wall Dirac operator.
Base class for even-odd preconditioned domain-wall-like fermion actions.
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.
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
EvenOddPrecOvDWFermActArrayParams(XMLReader &in, const std::string &path)
Read parameters.