Bridge++  Ver. 1.3.x
force_F_Rational.h
Go to the documentation of this file.
1 
14 #ifndef FORCE_F_RATIONAL_INCLUDED
15 #define FORCE_F_RATIONAL_INCLUDED
16 
17 #include "force.h"
18 #include "fopr_Rational.h"
19 #include "math_Rational.h"
20 #include "field_F.h"
21 
22 #include "bridgeIO.h"
23 using Bridge::vout;
24 
26 
37 //- parameters class
39 {
40  public:
42 };
43 //- end
44 
45 class Force_F_Rational : public Force
46 {
47  public:
48  static const std::string class_name;
49 
50  private:
51  int m_Np; // number of poles in rational approx.
52  int m_n_exp, m_d_exp; // numerator and denominator of the exponent
53  double m_x_min, m_x_max; // valid range of approximate sign function
54  int m_Niter; // max iteration of shiftsolver
55  double m_Stop_cond; // stopping condition of shift solver
56 
60 
61  // rational approx. coefficients
62  double m_a0;
63  std::vector<double> m_bl;
64  std::vector<double> m_cl;
65 
66  public:
67  Force_F_Rational(Fopr *fopr, Force *force)
68  : Force(), m_fopr(fopr), m_force(force) {}
69 
71  : Force(), m_fopr(fopr.get()), m_force(force.get()) {}
72 
74 
75  void set_parameters(const Parameters& params);
76  void set_parameters(int Np, int n_exp, int d_exp, double x_min, double x_max,
77  int Niter, double Stop_cond);
78 
79  void set_config(Field *U)
80  {
81  m_U = (Field_G *)U;
82  m_fopr->set_config(U);
83  m_force->set_config(U);
84  }
85 
86  void force_udiv(Field&, const Field&);
87 
88  void force_core1(Field&, const Field&, const Field&); // dummy entry
89  void force_udiv1(Field&, const Field&, const Field&); // dummy entry
90 
91  private:
92  void force_udiv_impl(Field_G&, const Field_F&);
93 };
94 #endif
BridgeIO vout
Definition: bridgeIO.cpp:278
virtual void set_config(Field *)=0
setting pointer to the gauge configuration.
Container of Field-type object.
Definition: field.h:39
virtual void set_config(Field *)=0
std::vector< double > m_bl
Base class of fermion force calculation.
Definition: force.h:31
Class for parameters.
Definition: parameters.h:38
Force calculation for smeared fermion operators.
Force_F_Rational(Fopr *fopr, Force *force)
std::vector< double > m_cl
Wilson-type fermion field.
Definition: field_F.h:37
SU(N) gauge field.
Definition: field_G.h:38
void set_config(Field *U)
void force_core1(Field &, const Field &, const Field &)
static const std::string class_name
void force_udiv_impl(Field_G &, const Field_F &)
void force_udiv1(Field &, const Field &, const Field &)
void force_udiv(Field &, const Field &)
Base class of fermion operator family.
Definition: fopr.h:49
void set_parameters(const Parameters &params)
Force_F_Rational(unique_ptr< Fopr > &fopr, unique_ptr< Force > &force)