Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fopr_Rational_SF.h
Go to the documentation of this file.
1 
15 #ifndef FOPR_RATIONAL_SF_INCLUDED
16 #define FOPR_RATIONAL_SF_INCLUDED
17 
18 #include "fopr_Rational.h"
19 #include "field_F_SF.h"
20 
21 #include "bridgeIO.h"
22 using Bridge::vout;
23 
25 
40 //- parameters class
42 {
43  public:
45 };
46 //- end
47 
48 
49 class Fopr_Rational_SF : public Fopr
50 {
51  public:
52  static const std::string class_name;
53 
54  private:
55  int m_Np; // number of poles in rational approx.
56  int m_n_exp, m_d_exp; // numerator and denominator of the exponent
57  double m_x_min, m_x_max; // valid range of approximate sign function
58  int m_Niter; // max iteration of shiftsolver
59  double m_Stop_cond; // stopping condition of shift solver
60 
63 
64  double m_a0;
65  std::valarray<double> m_cl;
66  std::valarray<double> m_bl;
67  std::valarray<Field> m_xq;
68 
69  public:
70 
72  : Fopr(), m_fopr(fopr) {}
73 
75  {
76  delete m_solver;
77  }
78 
79  void set_parameters(const Parameters& params);
80  void set_parameters(int Np, int n_exp, int d_exp, double x_min, double x_max,
81  int Niter, double Stop_cond);
82 
83  void set_config(Field *U)
84  {
85  m_fopr->set_config(U);
86  }
87 
88  const Field mult(const Field& f);
89 
90  void mult(Field& v, const Field& f)
91  {
92  v = mult(f);
93  }
94 
95  const Field mult_dag(const Field& f)
96  {
97  return mult(f);
98  }
99 
100  void mult_dag(Field& v, const Field& f)
101  {
102  v = mult_dag(f);
103  }
104 
105  double func(double x);
106 
107  int field_nvol() { return m_fopr->field_nvol(); }
108  int field_nin() { return m_fopr->field_nin(); }
109  int field_nex() { return m_fopr->field_nex(); }
110 
111  private:
112  void init_parameters();
113 };
114 #endif
int field_nvol()
returns the volume for which the fermion operator is defined.
BridgeIO vout
Definition: bridgeIO.cpp:207
std::valarray< double > m_cl
virtual void set_config(Field *)=0
setting pointer to the gauge configuration.
Container of Field-type object.
Definition: field.h:37
Multishift Conjugate Gradient solver.
static const std::string class_name
Class for parameters.
Definition: parameters.h:40
Fopr_Rational_SF(Fopr *fopr)
virtual int field_nin()=0
returns the on-site d.o.f. for which the fermion operator is defined.
void set_parameters(const Parameters &params)
int field_nin()
returns the on-site d.o.f. for which the fermion operator is defined.
std::valarray< Field > m_xq
void mult(Field &v, const Field &f)
multiplies fermion operator to a given field (2nd argument)
const Field mult_dag(const Field &f)
hermitian conjugate of mult(const Field&amp;).
virtual int field_nex()=0
returns the external d.o.f. for which the fermion operator is defined.
Shiftsolver_CG * m_solver
Fermion operator for rational approximation.
const Field mult(const Field &f)
void set_config(Field *U)
setting pointer to the gauge configuration.
void mult_dag(Field &v, const Field &f)
hermitian conjugate of mult(Field&amp;, const Field&amp;).
std::valarray< double > m_bl
double func(double x)
Base class of fermion operator family.
Definition: fopr.h:39
virtual int field_nvol()=0
returns the volume for which the fermion operator is defined.
int field_nex()
returns the external d.o.f. for which the fermion operator is defined.