Bridge++  Ver. 1.3.x
solver.h
Go to the documentation of this file.
1 
14 #ifndef SOLVER_INCLUDED
15 #define SOLVER_INCLUDED
16 
17 #include "fopr.h"
18 
19 #include "threadManager_OpenMP.h"
20 
21 #ifdef USE_FACTORY
22 #include "factory.h"
23 #endif
24 
25 #ifdef USE_PARAMETERS_FACTORY
26 #include "parameters_factory.h"
27 #endif
28 
29 
31 
38 class Solver
39 {
40  public:
42  : m_vl(CommonParameters::Vlevel()) {}
43 
44  virtual ~Solver() {}
45 
46  private:
47  Solver(const Solver&);
48  Solver& operator=(const Solver&);
49 
50  public:
51  virtual void set_parameters(const Parameters& params) = 0;
52  virtual void set_parameters(const int Niter, const double Stop_cond) = 0;
53 
55 
56  virtual void solve(Field& solution, const Field& source,
57  int& Nconv, double& diff) = 0;
58 
59  virtual Fopr *get_fopr() = 0;
60 
61  protected:
63 
64 #ifdef USE_FACTORY
65  public:
66  typedef Solver *(*ProductCreator)(Fopr *);
68 
69  static Solver *New(const IdentifierType& subtype, Fopr *fopr)
70  {
71  ProductCreator p = Factory::Find(subtype);
72 
73  return p ? (*p)(fopr) : 0;
74  }
75 
76  static Solver *New(const IdentifierType& subtype, unique_ptr<Fopr>& fopr)
77  {
78  ProductCreator p = Factory::Find(subtype);
79 
80  return p ? (*p)(fopr.get()) : 0;
81  }
82 #endif
83 };
84 #endif
Container of Field-type object.
Definition: field.h:39
virtual Fopr * get_fopr()=0
virtual ~Solver()
Definition: solver.h:44
Class for parameters.
Definition: parameters.h:38
virtual void set_parameters(const Parameters &params)=0
Solver()
Definition: solver.h:41
Solver & operator=(const Solver &)
pointer get() const
Common parameter class: provides parameters as singleton.
Base class for linear solver class family.
Definition: solver.h:38
Bridge::VerboseLevel vl
Definition: checker.cpp:18
VerboseLevel
Definition: bridgeIO.h:39
std::string IdentifierType
Factory template class.
Definition: factory.h:33
Base class of fermion operator family.
Definition: fopr.h:49
void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
Definition: solver.h:54
virtual void solve(Field &solution, const Field &source, int &Nconv, double &diff)=0
Bridge::VerboseLevel m_vl
Definition: solver.h:62