Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
solver.h
Go to the documentation of this file.
1 
14 #ifndef SOLVER_INCLUDED
15 #define SOLVER_INCLUDED
16 
17 #include "defs.h"
18 #include "fopr.h"
19 
20 #include "threadManager_OpenMP.h"
21 
22 #ifdef USE_FACTORY
23 #include "factory.h"
24 #endif
25 
26 #ifdef USE_PARAMETERS_FACTORY
27 #include "parameters_factory.h"
28 #endif
29 
30 
32 
37 class Solver
38 {
39  public:
41  : m_vl(CommonParameters::Vlevel()) {}
42 
43  virtual ~Solver() {}
44 
45  virtual void set_parameters(const Parameters& params) = 0;
46  virtual void set_parameters(const int Niter, const double Stop_cond) = 0;
47 
49 
50  virtual void solve(Field& solution, const Field& source,
51  int& Nconv, double& diff) = 0;
52 
53  virtual Fopr *get_fopr() = 0;
54 
55  protected:
57 
58 #ifdef USE_FACTORY
59  public:
60  typedef Solver *(*ProductCreator)(Fopr *);
62 
63  static Solver *New(const IdentifierType& subtype, Fopr *fopr)
64  {
65  ProductCreator p = Factory::Find(subtype);
66 
67  return p ? (*p)(fopr) : 0;
68  }
69 
70 #endif
71 };
72 #endif
Container of Field-type object.
Definition: field.h:37
virtual Fopr * get_fopr()=0
virtual ~Solver()
Definition: solver.h:43
Class for parameters.
Definition: parameters.h:40
virtual void set_parameters(const Parameters &params)=0
Solver()
Definition: solver.h:40
Common parameter class: provides parameters as singleton.
Base class for linear solver class family.
Definition: solver.h:37
Bridge::VerboseLevel vl
Definition: checker.cpp:18
VerboseLevel
Definition: bridgeIO.h:25
std::string IdentifierType
Factory template class.
Definition: factory.h:32
Base class of fermion operator family.
Definition: fopr.h:39
void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
Definition: solver.h:48
virtual void solve(Field &solution, const Field &source, int &Nconv, double &diff)=0
Bridge::VerboseLevel m_vl
Definition: solver.h:56