CHROMA
eoprec_ovext_fermact_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned extended-Overlap (5D) (Naryanan&Neuberger) action
4  */
5 
6 #ifndef __prec_ovext_fermact_array_w_h__
7 #define __prec_ovext_fermact_array_w_h__
8 
10 #include "handle.h"
11 #include "eoprec_constdet_linop.h"
13 
15 
16 namespace Chroma
17 {
18  //! Name and registration
19  namespace EvenOddPrecOvExtFermActArrayEnv
20  {
21  extern const std::string name;
22  bool registerAll();
23  }
24 
25 
26  //! Params for NEFF
28  {
30  EvenOddPrecOvExtFermActArrayParams(XMLReader& in, const std::string& path);
31 
32  Real OverMass;
33  Real b5;
34  Real c5;
35  Real Mass;
37  Real ApproxMin;
38  Real ApproxMax;
41  };
42 
43 
44  // Reader/writers
45  void read(XMLReader& xml, const std::string& path, EvenOddPrecOvExtFermActArrayParams& param);
46  void write(XMLWriter& xml, const std::string& path, const EvenOddPrecOvExtFermActArrayParams& param);
47 
48 
49  //! EvenOddPreconditioned Extended-Overlap (N&N) linear operator
50  /*!
51  * \ingroup fermacts
52  *
53  * This operator applies the extended version of the hermitian overlap operator
54  * Chi = ((1+Mass)/(1-Mass)*gamma_5 + B) . Psi
55  * where B is the continued fraction of the pole approx. to eps(H(m))
56  */
58  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
59  {
60  public:
61  // Typedefs to save typing
62  typedef LatticeFermion T;
63  typedef multi1d<LatticeColorMatrix> P;
64  typedef multi1d<LatticeColorMatrix> Q;
65 
66  //! General FermBC
69 
70  //! Copy constructor
73 
74  //! Length of DW flavor index/space
75  int size() const {return getN5FromRatPolyDeg(param.RatPolyDeg);}
76 
77  //! Return the quark mass
78  Real getQuarkMass() const {return param.Mass;}
79 
80  //! Produce a linear operator for this action
82 
83  //! Produce a Pauli-Villars linear operator for this action
85  {
86  QDPIO::cerr << "Ovext::linOpPV not implemented" << std::endl;
87  QDP_abort(1);
88  return 0;
89  }
90 
91  //! Produce a hermitian version of the linear operator
93  {
94  QDPIO::cerr << "EvenOddPrecOvExtFermActArray::gamma5HermLinOp not implemented" << std::endl;
95  QDP_abort(1);
96  return 0;
97  }
98 
99  //! Produce an unpreconditioned linear operator projecting 5D to 4D (the inverse of qprop below)
101  const Real& m_q,
102  const GroupXML_t& invParam) const
103  {
104  QDPIO::cerr << "linOp4D not implemented" << std::endl;
105  QDP_abort(1);
106  return 0;
107  }
108 
109 
110  //! Produce a DeltaLs = 1-epsilon^2(H) operator
112  const GroupXML_t& invParam) const
113  {
114  Handle< LinearOperator<T> > lin(linOp4D(state,Real(0),invParam));
115  QDPIO::cout << "NOt yet implemented" << std::endl;
116  QDP_abort(1);
117  return 0x0;
118  }
119 
120 
121  //! Compute quark propagator over base type
123  const GroupXML_t& invParam) const;
124 
125  //! Destructor is automatic
127 
128  protected:
129  //! Return the fermion BC object for this action
130  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
131 
132  //! Default constructor
134  //! Hide =
136 
137  private:
138  //! Part of initializer
139  int getN5FromRatPolyDeg(const int& RatPolyDeg) const;
140 
141  void init(int& Npoles,
142  Real& coeffP,
143  multi1d<Real>& resP,
144  multi1d<Real>& rootQ) const;
145 
146  private:
150  };
151 
152 }
153 
154 
155 
156 #endif
Create a fermion connection state.
Definition: create_state.h:69
Even-odd preconditioned linear operator including derivatives for arrays.
Even-odd preconditioned Wilson-like fermion actions including derivatives.
EvenOddPreconditioned Extended-Overlap (N&N) linear operator.
int size() const
Length of DW flavor index/space.
void operator=(const EvenOddPrecOvExtFermActArray &a)
Hide =.
LinearOperatorArray< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
Produce a hermitian version of the linear operator.
Handle< CreateFermState< T, P, Q > > cfs
void init(int &Npoles, Real &coeffP, multi1d< Real > &resP, multi1d< Real > &rootQ) const
Get the rational approximation coefficients.
SystemSolver< LatticeFermion > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Compute quark propagator over base type.
Real getQuarkMass() const
Return the quark mass.
LinearOperator< T > * DeltaLs(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Produce a DeltaLs = 1-epsilon^2(H) operator.
EvenOddPrecOvExtFermActArrayParams param
LinearOperator< T > * linOp4D(Handle< FermState< T, P, Q > > state, const Real &m_q, const GroupXML_t &invParam) const
Produce an unpreconditioned linear operator projecting 5D to 4D (the inverse of qprop below)
EvenOddPrecOvExtFermActArray(const EvenOddPrecOvExtFermActArray &a)
Copy constructor.
int getN5FromRatPolyDeg(const int &RatPolyDeg) const
Part of initializer.
EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const
Produce a Pauli-Villars linear operator for this action.
Handle< AbsOvExtTuningStrategy > theTuningStrategy
EvenOddPrecConstDetLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
Support class for fermion actions and linear operators.
Definition: state.h:94
Class for counted reference semantics.
Definition: handle.h:33
Linear Operator to arrays.
Definition: linearop.h:61
Linear Operator.
Definition: linearop.h:27
int RatPolyDeg
Coeffs enum.
Preconditioned 4D Linop with Gauge Independent Even-Even part.
Even-odd const determinant Wilson-like fermact.
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.
CoeffType
Coeffs type.
Class for counted reference semantics.
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
Ovext tuning strategy.
Hold group xml and type id.