Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
shiftsolver_CG.h
Go to the documentation of this file.
1 
14 #ifndef SHIFTSOLVER_CG_INCLUDED
15 #define SHIFTSOLVER_CG_INCLUDED
16 
17 #include "shiftsolver.h"
18 
19 #include "bridgeIO.h"
20 using Bridge::vout;
21 
22 //- parameters class
23 class Parameters_Shiftsolver_CG : virtual public Parameters
24 {
25  public:
27 };
28 //- end
29 
31 
37 {
38  public:
39  static const std::string class_name;
40 
41  private:
42 
44  int m_Niter;
45  double m_Stop_cond;
46 
47  std::valarray<Field> x, p;
48  Field r, s;
49  std::valarray<double> zeta1, zeta2, csh2, pp;
50  double snorm, alpha_p, beta_p;
51  int Nshift2;
52 
53  public:
54 
56  : Shiftsolver(), m_fopr(fopr) {}
57 
58  Shiftsolver_CG(Fopr *fopr, int niter, double stop_cond)
59  : Shiftsolver(), m_fopr(fopr)
60  {
61  set_parameters(niter, stop_cond);
62  }
63 
65 
66  void set_parameters(const Parameters& params);
67  void set_parameters(const int niter, const double stop_cond);
68 
69  void solve(
70  std::valarray<Field>& solution,
71  std::valarray<double> shift,
72  const Field& source,
73  int& Nconv, double& diff);
74 
75  private:
76 
77  void solve_init(double&);
78  void solve_step(double&, const std::valarray<double>&);
79 };
80 #endif
BridgeIO vout
Definition: bridgeIO.cpp:207
Shiftsolver_CG(Fopr *fopr, int niter, double stop_cond)
static const std::string class_name
void solve_init(double &)
std::valarray< Field > p
int shift(void)
Container of Field-type object.
Definition: field.h:37
Multishift Conjugate Gradient solver.
void set_parameters(const Parameters &params)
Shiftsolver class as an abstract base class for multi-shift solvers.
Definition: shiftsolver.h:26
void solve_step(double &, const std::valarray< double > &)
Class for parameters.
Definition: parameters.h:40
std::valarray< double > pp
std::valarray< Field > x
Shiftsolver_CG(Fopr *fopr)
void solve(std::valarray< Field > &solution, std::valarray< double > shift, const Field &source, int &Nconv, double &diff)
std::valarray< double > zeta1
std::valarray< double > zeta2
Base class of fermion operator family.
Definition: fopr.h:39
std::valarray< double > csh2