Bridge++  Ver. 1.3.x
action.h
Go to the documentation of this file.
1 
15 #ifndef ACTION_INCLUDED
16 #define ACTION_INCLUDED
17 
18 #include "defs.h"
19 #include "field.h"
20 #include "fopr.h"
21 #include "force.h"
22 #include "randomNumbers.h"
23 
24 #include "bridgeIO.h"
25 
26 #ifdef USE_FACTORY
27 #include "factory.h"
28 #endif
29 
30 #ifdef USE_PARAMETERS_FACTORY
31 #include "parameters_factory.h"
32 #endif
33 
35 
42 class Action
43 {
44  public:
45 
47  : m_vl(CommonParameters::Vlevel()) {}
48 
49  virtual ~Action() {}
50 
51  private:
52  // non-copyable
53  Action(const Action&);
54  Action& operator=(const Action&);
55 
56  public:
57  virtual void set_parameters(const Parameters& param) = 0;
58 
60 
62  virtual void set_config(Field *U) = 0;
63 
65  virtual double langevin(RandomNumbers *) = 0;
66 
68  virtual double calcH() = 0;
69 
71  //virtual const Field force() = 0;
72  virtual void force(Field&) = 0;
73 
74  virtual void force(Field& v, Field *U)
75  {
76  set_config(U);
77  force(v);
78  }
79 
80  protected:
82 
83 #ifdef USE_FACTORY
84  public:
85  typedef Action *(*ProductCreator)();
87 
88  static Action *New(const IdentifierType& subtype)
89  {
90  ProductCreator p = Factory::Find(subtype);
91 
92  return p ? (*p)() : 0;
93  }
94 #endif
95 };
96 #endif
Container of Field-type object.
Definition: field.h:39
Class for parameters.
Definition: parameters.h:38
Base class of HMC action class family.
Definition: action.h:42
virtual void set_parameters(const Parameters &param)=0
void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
Definition: action.h:59
virtual void set_config(Field *U)=0
setting pointer to the gauge configuration.
Action & operator=(const Action &)
virtual void force(Field &)=0
returns force for molcular dynamical update of conjugate momenta.
Common parameter class: provides parameters as singleton.
Bridge::VerboseLevel m_vl
Definition: action.h:81
Base class of random number generators.
Definition: randomNumbers.h:39
Bridge::VerboseLevel vl
Definition: checker.cpp:18
VerboseLevel
Definition: bridgeIO.h:39
Action()
Definition: action.h:46
virtual double langevin(RandomNumbers *)=0
Langevis step.
std::string IdentifierType
Factory template class.
Definition: factory.h:33
virtual ~Action()
Definition: action.h:49
virtual void force(Field &v, Field *U)
Definition: action.h:74
virtual double calcH()=0
calculate Hamiltonian of this action term.