CHROMA
unprec_ht_contfrac5d_fermact_array_w.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Unpreconditioned H_T kernel continued fraction (5D) action
4  */
5 
6 #ifndef __unprec_ht_contfrac5d_fermact_array_w_h__
7 #define __unprec_ht_contfrac5d_fermact_array_w_h__
8 
11 
12 
13 namespace Chroma
14 {
15  //! Name and registration
16  namespace UnprecHTContFrac5DFermActArrayEnv
17  {
18  extern const std::string name;
19  bool registerAll();
20  }
21 
22 
23  //! Params for 5D overlap ferm acts
25  {
26  //! Default empty construction
28 
29  //! Read params from XML
30  UnprecHTContFrac5DFermActParams(XMLReader& in, const std::string& path);
31 
32  Real OverMass; //!< Wilson-operator mass
33  Real Mass; //!< Fermion Mass
34  Real b5; //!< Mobius b5
35  Real c5; //!< Mobius c5
36  Real ApproxMin; //!< Approximate min eigenvalue of H_T
37  Real ApproxMax; //!< Approximate max eigenvalue of H_T
38  int RatPolyDeg; //!< Degree of the Rational Poly
39  CoeffType approximation_type; //!< ZOLOTAREV | TANH | Other approximation coeffs
40  };
41 
42 
43  // Reader/writers
44 
45  //! Read the Continued Fraction parameters
46  void read(XMLReader& xml, const std::string& path, UnprecHTContFrac5DFermActParams& param);
47 
48  //! Write the Continued Fraction parameters
49  void write(XMLWriter& xml, const std::string& path, const UnprecHTContFrac5DFermActParams& param);
50 
51 
52  //! 5D continued fraction overlap action using H_T kernel
53  /*!
54  * \ingroup fermacts
55  *
56  * This operator applies the extended version of the hermitian overlap operator
57  * Chi = ((1+Mass)/(1-Mass)*gamma_5 + B) . Psi
58  * where B is the continued fraction of the zolotarev approx. to eps(H_T(m))
59  */
61  multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> >
62  {
63  public:
64  // Typedefs to save typing
65  typedef LatticeFermion T;
66  typedef multi1d<LatticeColorMatrix> P;
67  typedef multi1d<LatticeColorMatrix> Q;
68 
69  // Construct the action out of a parameter structure
71  const UnprecHTContFrac5DFermActParams& param);
72 
73  //! Copy constructor
76 
77  int size(void) const { return N5; }
78 
79  //! Return the quark mass
80  Real getQuarkMass() const {return params.Mass;}
81 
82  //! Produce a linear operator for this action
84 
85  //! Produce a Pauli-Villars linear operator for this action
87  {
88  QDPIO::cerr << "UnprecHTCFZ::linOpPV not implemented" << std::endl;
89  QDP_abort(1);
90  return 0;
91  }
92 
93  //! produce gamma_5 times M
95  {
96  // The matrix itself is apparently hermitian
97  return linOp(state);
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  //! Produce a DeltaLs = 1-epsilon^2(H) operator
112  const GroupXML_t& invParam) const
113  {
114  QDPIO::cerr << "DeltaLs not implemented" << std::endl;
115  QDP_abort(1);
116  return 0;
117  }
118 
119  //! Compute quark propagator over base type
121  const GroupXML_t& invParam) const;
122 
123  //! Destructor is automatic
125 
126  protected:
127  //! Return the fermion BC object for this action
128  const CreateFermState<T,P,Q>& getCreateState() const {return *cfs;}
129 
130  //! Helper in construction
131  void init(multi1d<Real>& alpha,
132  multi1d<Real>& beta) const;
133 
134  private:
135  // Hide partial constructor
138 
139  private:
142  int N5;
144  };
145 
146 }
147 
148 #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
5D continued fraction overlap action using H_T kernel
UnprecLinearOperatorArray< T, P, Q > * linOpPV(Handle< FermState< T, P, Q > > state) const
Produce a Pauli-Villars linear operator for this action.
void operator=(const UnprecHTContFrac5DFermActArray &a)
SystemSolver< LatticeFermion > * qprop(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Compute quark propagator over base type.
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)
LinearOperator< T > * DeltaLs(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Produce a DeltaLs = 1-epsilon^2(H) operator.
const CreateFermState< T, P, Q > & getCreateState() const
Return the fermion BC object for this action.
void init(multi1d< Real > &alpha, multi1d< Real > &beta) const
Helper in construction.
UnprecLinearOperatorArray< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
int size(void) const
Expected length of array index.
UnprecHTContFrac5DFermActArray(const UnprecHTContFrac5DFermActArray &a)
Copy constructor.
LinearOperatorArray< T > * hermitianLinOp(Handle< FermState< T, P, Q > > state) const
produce gamma_5 times M
Unpreconditioned linear operator including derivatives.
Definition: linearop.h:203
Unpreconditioned Wilson-like fermion actions in extra dims with derivatives.
Definition: fermact.orig.h:571
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.
static const LatticeInteger & beta(const int dim)
Definition: stag_phases_s.h:47
static const LatticeInteger & alpha(const int dim)
Definition: stag_phases_s.h:43
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
Hold group xml and type id.
CoeffType approximation_type
ZOLOTAREV | TANH | Other approximation coeffs.
Wilson-like fermion actions.