CHROMA
unprec_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 __unprec_ovext_fermact_array_w_h__
7 #define __unprec_ovext_fermact_array_w_h__
8 
10 #include "handle.h"
14 
16 
17 namespace Chroma
18 {
19  //! Name and registration
20  namespace UnprecOvExtFermActArrayEnv
21  {
22  extern const std::string name;
23  bool registerAll();
24  }
25 
26 
27  //! Params for NEFF
29  {
31  UnprecOvExtFermActArrayParams(XMLReader& in, const std::string& path);
32 
33  Real OverMass;
34  Real b5;
35  Real c5;
36  Real Mass;
38  Real ApproxMin;
39  Real ApproxMax;
42  };
43 
44 
45  // Reader/writers
46  void read(XMLReader& xml, const std::string& path, UnprecOvExtFermActArrayParams& param);
47  void write(XMLWriter& xml, const std::string& path, const UnprecOvExtFermActArrayParams& param);
48 
49 
50  //! Unpreconditioned Extended-Overlap (N&N) linear operator
51  /*!
52  * \ingroup fermacts
53  *
54  * This operator applies the extended version of the hermitian overlap operator
55  * Chi = ((1+Mass)/(1-Mass)*gamma_5 + B) . Psi
56  * where B is the continued fraction of the pole approx. to eps(H(m))
57  */
58  class UnprecOvExtFermActArray : public UnprecWilsonTypeFermAct5D<LatticeFermion,
59  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
60  {
61  public:
62  // Typedefs to save typing
63  typedef LatticeFermion T;
64  typedef multi1d<LatticeColorMatrix> P;
65  typedef multi1d<LatticeColorMatrix> Q;
66 
67  //! General FermBC
69  const UnprecOvExtFermActArrayParams& param_);
70 
71  //! Copy constructor
74 
75  //! Length of DW flavor index/space
76  int size() const {return getN5FromRatPolyDeg(param.RatPolyDeg);}
77 
78  //! Return the quark mass
79  Real getQuarkMass() const {return param.Mass;}
80 
81  //! Produce a linear operator for this action
83 
84  //! Produce a Pauli-Villars linear operator for this action
86  {
87  QDPIO::cerr << "Ovext::linOpPV not implemented" << std::endl;
88  QDP_abort(1);
89  return 0;
90  }
91 
92  //! Produce a hermitian version of the linear operator
94  {
95  QDPIO::cerr << "UnprecOvExtFermActArray::gamma5HermLinOp not implemented" << std::endl;
96  QDP_abort(1);
97  return 0;
98  }
99 
100  //! Produce an unpreconditioned linear operator projecting 5D to 4D (the inverse of qprop below)
102  const Real& m_q,
103  const GroupXML_t& invParam) const
104  {
105  QDPIO::cerr << "linOp4D not implemented" << std::endl;
106  QDP_abort(1);
107  return 0;
108  }
109 
110 
111  //! Produce a DeltaLs = 1-epsilon^2(H) operator
113  const GroupXML_t& invParam) const
114  {
115  Handle< const LinearOperator<T> > lin(linOp4D(state,Real(0),invParam));
116  QDPIO::cout << "NOt yet implemented" << std::endl;
117  QDP_abort(1);
118  return 0x0;
119  }
120 
121 
122  //! Compute quark propagator over base type
124  const GroupXML_t& invParam) const;
125 
126  //! Destructor is automatic
128 
129  protected:
130  //! Return the fermion create state for this action
131  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
132 
133  private:
134  //! Initializer
135  int getN5FromRatPolyDeg(const int& RatPolyDeg) const;
136 
137  void init(int& Npoles,
138  Real& coeffP,
139  multi1d<Real>& resP,
140  multi1d<Real>& rootQ) const;
141 
142  private:
143  // Hide partial constructor
145  //! Hide =
147 
148  private:
151 
153  };
154 
155 }
156 
157 
158 
159 #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
Linear Operator to arrays.
Definition: linearop.h:61
Linear Operator.
Definition: linearop.h:27
Unpreconditioned linear operator including derivatives.
Definition: linearop.h:203
Unpreconditioned Extended-Overlap (N&N) linear operator.
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)
Handle< CreateFermState< T, P, Q > > cfs
void operator=(const UnprecOvExtFermActArray &a)
Hide =.
UnprecLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const
Produce a Pauli-Villars linear operator for this action.
int getN5FromRatPolyDeg(const int &RatPolyDeg) const
Initializer.
UnprecLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
int size() const
Length of DW flavor index/space.
LinearOperator< T > * DeltaLs(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Produce a DeltaLs = 1-epsilon^2(H) operator.
Real getQuarkMass() const
Return the quark mass.
LinearOperatorArray< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
Produce a hermitian version of the linear operator.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion create state for this action.
void init(int &Npoles, Real &coeffP, multi1d< Real > &resP, multi1d< Real > &rootQ) const
Get the rational approximation coefficients.
Handle< AbsOvExtTuningStrategy > theTuningStrategy
UnprecOvExtFermActArray(const UnprecOvExtFermActArray &a)
Copy constructor.
~UnprecOvExtFermActArray()
Destructor is automatic.
SystemSolver< LatticeFermion > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Compute quark propagator over base type.
Unpreconditioned Wilson-like fermion actions in extra dims with derivatives.
Definition: fermact.orig.h:571
int RatPolyDeg
Coeffs enum.
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.
bool registerAll()
Register all the factories.
const std::string name
Name to be used.
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
Connection state holding eigenvectors.
Ovext tuning strategy.
Hold group xml and type id.
Unpreconditioned Wilson fermion linear operator.
Wilson-like fermion actions.