Bridge++  Ver. 1.1.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  private:
39 
41  int m_Niter;
42  double m_Stop_cond;
43 
44  std::valarray<Field> x, p;
45  Field r, s;
46  std::valarray<double> zeta1, zeta2, csh2, pp;
47  double snorm, alpha_p, beta_p;
48  int Nshift2;
49 
50  public:
51 
53  : Shiftsolver(), m_fopr(fopr) {}
54 
55  Shiftsolver_CG(Fopr *fopr, int niter, double stop_cond)
56  : Shiftsolver(), m_fopr(fopr)
57  {
58  set_parameters(niter, stop_cond);
59  }
60 
62 
63  void set_parameters(const Parameters& params);
64  void set_parameters(const int niter, const double stop_cond);
65 
66  void solve(
67  std::valarray<Field>& solution,
68  std::valarray<double> shift,
69  const Field& source,
70  int& Nconv, double& diff);
71 
72  private:
73 
74  void solve_init(double&);
75  void solve_step(double&, const std::valarray<double>&);
76 };
77 #endif