Bridge++  Ver.2.1.3
ashiftsolver_CG.h
Go to the documentation of this file.
1 
14 #ifndef ASHIFTSOLVER_CG_INCLUDED
15 #define ASHIFTSOLVER_CG_INCLUDED
16 
19 
20 #include "lib/IO/bridgeIO.h"
21 using Bridge::vout;
22 
23 
25 
32 template<typename FIELD, typename FOPR>
33 class AShiftsolver_CG : public AShiftsolver<FIELD>
34 {
35  public:
36  typedef typename FIELD::real_t real_t;
37 
38  static const std::string class_name;
39 
40  private:
41  int m_Nshift;
42  int m_Niter;
43  double m_Stop_cond;
45 
46  FOPR *m_fopr;
47 
48  std::vector<FIELD> m_x, m_p;
49  FIELD m_r, m_s;
50  std::vector<double> m_zeta1, m_zeta2, m_csh2, m_pp;
51 
53  int m_Nshift2;
54 
55  double m_sigma0;
56 
57  public:
59  AShiftsolver_CG(FOPR *fopr)
60  : m_vl(CommonParameters::Vlevel()),
61  m_fopr(fopr) {}
62 
63  //DEPRECATED
64  //AShiftsolver_CG(FOPR *fopr, int niter, double stop_cond)
65  // : m_vl(CommonParameters::Vlevel()),
66  // m_fopr(fopr)
67  //{ set_parameters(niter, stop_cond); }
68 
69  AShiftsolver_CG(FOPR *fopr, const Parameters& params)
70  : m_fopr(fopr)
71  { init(params); }
72 
74 
75  void set_parameters(const Parameters& params);
76 
77  void set_parameters(const int Nshift,
78  const int Niter,
79  const double stop_cond);
80 
81  void get_parameters(Parameters& params) const;
82 
83  void solve(
84  std::vector<FIELD>& solution,
85  const std::vector<double>& shift,
86  const FIELD& source,
87  int& Nconv,
88  double& diff);
89 
90  double flop_count();
91 
92  private:
93 
94  void init(const Parameters& params);
95 
96  void tidyup();
97 
98  void solve_init(double&);
99 
100  void solve_step(double&);
101 
102  void reset_field();
103 
104  void reset_params(const std::vector<double>& sigma);
105 };
106 #endif
AShiftsolver_CG::get_parameters
void get_parameters(Parameters &params) const
Definition: ashiftsolver_CG-tmpl.h:82
AShiftsolver
Shiftsolver class as an abstract base class for multi-shift solvers.
Definition: ashiftsolver.h:26
bridgeIO.h
AShiftsolver_CG::m_Niter
int m_Niter
Definition: ashiftsolver_CG.h:42
AShiftsolver_CG::reset_params
void reset_params(const std::vector< double > &sigma)
Definition: ashiftsolver_CG-tmpl.h:367
CommonParameters
Common parameter class: provides parameters as singleton.
Definition: commonParameters.h:42
AShiftsolver_CG::set_parameters
void set_parameters(const Parameters &params)
Definition: ashiftsolver_CG-tmpl.h:53
AShiftsolver_CG::m_vl
Bridge::VerboseLevel m_vl
Definition: ashiftsolver_CG.h:44
AShiftsolver_CG::reset_field
void reset_field()
Definition: ashiftsolver_CG-tmpl.h:136
AShiftsolver_CG::AShiftsolver_CG
DEPRECATED AShiftsolver_CG(FOPR *fopr)
Definition: ashiftsolver_CG.h:59
Parameters
Class for parameters.
Definition: parameters.h:46
AShiftsolver_CG::solve_init
void solve_init(double &)
Definition: ashiftsolver_CG-tmpl.h:266
ashiftsolver.h
AShiftsolver_CG::m_alpha_p
double m_alpha_p
Definition: ashiftsolver_CG.h:52
AShiftsolver_CG::m_p
std::vector< FIELD > m_p
Definition: ashiftsolver_CG.h:48
AShiftsolver_CG::~AShiftsolver_CG
~AShiftsolver_CG()
Definition: ashiftsolver_CG.h:73
AShiftsolver_CG::m_r
FIELD m_r
Definition: ashiftsolver_CG.h:49
AShiftsolver_CG::tidyup
void tidyup()
Definition: ashiftsolver_CG-tmpl.h:46
AShiftsolver_CG::solve_step
void solve_step(double &)
Definition: ashiftsolver_CG-tmpl.h:292
AShiftsolver_CG::m_pp
std::vector< double > m_pp
Definition: ashiftsolver_CG.h:50
AShiftsolver_CG::m_x
std::vector< FIELD > m_x
Definition: ashiftsolver_CG.h:48
AShiftsolver_CG::init
void init(const Parameters &params)
Definition: ashiftsolver_CG-tmpl.h:23
AShiftsolver_CG::m_Nshift2
int m_Nshift2
Definition: ashiftsolver_CG.h:53
AShiftsolver_CG::flop_count
double flop_count()
Definition: ashiftsolver_CG-tmpl.h:390
AShiftsolver_CG::m_csh2
std::vector< double > m_csh2
Definition: ashiftsolver_CG.h:50
AShiftsolver_CG::solve
void solve(std::vector< FIELD > &solution, const std::vector< double > &shift, const FIELD &source, int &Nconv, double &diff)
Definition: ashiftsolver_CG-tmpl.h:165
AShiftsolver_CG::class_name
static const std::string class_name
Definition: ashiftsolver_CG.h:38
AShiftsolver_CG::m_beta_p
double m_beta_p
Definition: ashiftsolver_CG.h:52
AShiftsolver_CG::m_zeta2
std::vector< double > m_zeta2
Definition: ashiftsolver_CG.h:50
parameters.h
real_t
double real_t
Definition: bridgeACC_AField_double.cpp:14
AShiftsolver_CG::m_Stop_cond
double m_Stop_cond
Definition: ashiftsolver_CG.h:43
AShiftsolver_CG::m_zeta1
std::vector< double > m_zeta1
Definition: ashiftsolver_CG.h:50
AShiftsolver_CG::AShiftsolver_CG
AShiftsolver_CG(FOPR *fopr, const Parameters &params)
Definition: ashiftsolver_CG.h:69
AShiftsolver_CG::m_Nshift
int m_Nshift
number of shifts
Definition: ashiftsolver_CG.h:41
AShiftsolver_CG::real_t
FIELD::real_t real_t
Definition: ashiftsolver_CG.h:36
AShiftsolver_CG::m_sigma0
double m_sigma0
Definition: ashiftsolver_CG.h:55
AShiftsolver_CG::m_snorm
double m_snorm
Definition: ashiftsolver_CG.h:52
AShiftsolver_CG
Multishift Conjugate Gradient solver.
Definition: ashiftsolver_CG.h:33
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
AShiftsolver_CG::m_s
FIELD m_s
Definition: ashiftsolver_CG.h:49
DEPRECATED
#define DEPRECATED
Definition: configure.h:28
AShiftsolver_CG::m_fopr
FOPR * m_fopr
Definition: ashiftsolver_CG.h:46
Test_Gauge::shift
int shift(void)
Definition: test_Gauge_Shift.cpp:58
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572