Bridge++  Version 1.5.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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_F.h"
18 
19 #include "Field/field_F.h"
20 #include "Fopr/fopr_Rational.h"
21 #include "Tools/math_Rational.h"
22 
23 #include "IO/bridgeIO.h"
24 using Bridge::vout;
25 
27 
39 class Force_F_Rational : public Force
40 {
41  public:
42  static const std::string class_name;
43 
44  private:
45  int m_Np; // number of poles in rational approx.
46  int m_n_exp, m_d_exp; // numerator and denominator of the exponent
47  double m_x_min, m_x_max; // valid range of approximate sign function
48  int m_Niter; // max iteration of shiftsolver
49  double m_Stop_cond; // stopping condition of shift solver
50 
54 
55  // rational approx. coefficients
56  double m_a0;
57  std::vector<double> m_bl;
58  std::vector<double> m_cl;
59 
60  public:
61  Force_F_Rational(Fopr *fopr, Force *force)
62  : Force(), m_fopr(fopr), m_force(force) {}
63 
65  : Force(), m_fopr(fopr.get()), m_force(force.get()) {}
66 
68 
69  void set_parameters(const Parameters& params);
70  void set_parameters(const int Np, const int n_exp, const int d_exp, const double x_min, const double x_max,
71  const int Niter, const double Stop_cond);
72 
73  void set_config(Field *U)
74  {
75  m_U = (Field_G *)U;
76  m_fopr->set_config(U);
77  m_force->set_config(U);
78  }
79 
80  void force_udiv(Field&, const Field&);
81 
82  void force_core1(Field&, const Field&, const Field&); // dummy entry
83  void force_udiv1(Field&, const Field&, const Field&); // dummy entry
84 
85  private:
86  void force_udiv_impl(Field_G&, const Field_F&);
87 };
88 #endif
BridgeIO vout
Definition: bridgeIO.cpp:503
virtual void set_config(Field *)=0
setting pointer to the gauge configuration.
Container of Field-type object.
Definition: field.h:45
virtual void set_config(Field *)=0
std::vector< double > m_bl
Base class of fermion force calculation.
Definition: force_F.h:31
Class for parameters.
Definition: parameters.h:46
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:46
void set_parameters(const Parameters &params)
Force_F_Rational(unique_ptr< Fopr > &fopr, unique_ptr< Force > &force)
Force calculation for smeared fermion operators.