Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hmc_General.h
Go to the documentation of this file.
1 
14 #ifndef HMC_GENERAL_INCLUDED
15 #define HMC_GENERAL_INCLUDED
16 
17 #include "action.h"
18 #include "director.h"
19 #include "integrator.h"
20 #include "randomNumbers.h"
21 #include "staples.h"
22 #include "langevin_Momentum.h"
23 
24 #include "bridgeIO.h"
25 using Bridge::vout;
26 
27 using std::valarray;
28 
30 
31 /*
32  This class defines Hybrid Monte Carlo update algorithm
33  with a given molecular dynamics integrator.
34  To be improved:
35  - at present setting conjugate momenta explicitly assumes
36  SU(3) gauge group. This should be generalized, and for
37  SU(3) case assert is necessary.
38  [25 Dec 2011 H.Matsufuru]
39  (Coding history will be recovered from trac.)
40  YAML is implemented. [14 Nov 2012 Y.Namekawa]
41  Langevin step was moved to separate file.
42  [07 May 2014 H.Matsufuru]
43  */
44 
45 //- parameters class
46 class Parameters_HMC_General : virtual public Parameters
47 {
48  public:
50 };
51 //- end
52 
54 {
55  public:
56  static const std::string class_name;
57 
58  private:
60  valarray<Action *> m_action;
61  valarray<Director *> m_director;
67 
68  public:
70  HMC_General(std::valarray<Action *> action,
71  std::valarray<Director *> director,
72  Integrator *integrator,
73  RandomNumbers *rand)
74  : m_vl(CommonParameters::Vlevel())
75  {
76  m_action.resize(action.size());
77  for (int i = 0; i < action.size(); ++i) {
78  m_action[i] = action[i];
79  }
80  m_director.resize(director.size());
81  for (int i = 0; i < director.size(); ++i) {
82  m_director[i] = director[i];
83  }
84  m_integrator = integrator;
85  m_rand = rand;
86  m_staple = new Staples;
87  m_Mtpl_test = 0;
89  }
90 
92  HMC_General(std::valarray<Action *> action,
93  Integrator *integrator,
94  RandomNumbers *rand)
95  : m_vl(CommonParameters::Vlevel())
96  {
97  m_action.resize(action.size());
98  for (int i = 0; i < action.size(); ++i) {
99  m_action[i] = action[i];
100  }
101  m_integrator = integrator;
102  m_rand = rand;
103  m_staple = new Staples;
104  m_Mtpl_test = 0;
106  }
107 
110  {
111  delete m_Langevin_P;
112  delete m_staple;
113  }
114 
115  void set_parameters(const Parameters& params);
116  void set_parameters(int Mtpl_test);
117 
119 
120  double update(Field_G&);
121 
122  double langevin(Field_G& iP, Field_G& U);
123 
124  // double langevin_P(Field_G& iP); removed [07 May 2014]
125 
126  double calc_Hamiltonian(Field_G& iP, Field_G& U);
127  double calcH_P(Field_G& iP);
128 };
129 #endif
BridgeIO vout
Definition: bridgeIO.cpp:207
Staple construction.
Definition: staples.h:40
double calc_Hamiltonian(Field_G &iP, Field_G &U)
void set_parameters(const Parameters &params)
Definition: hmc_General.cpp:43
int m_Mtpl_test
Metropolis test: Mtpl_test=0: no test, !=0: test.
Definition: hmc_General.h:59
static const std::string class_name
Definition: hmc_General.h:56
HMC_General(std::valarray< Action * > action, Integrator *integrator, RandomNumbers *rand)
constructor when no director is necessary
Definition: hmc_General.h:92
Bridge::VerboseLevel m_vl
Definition: hmc_General.h:66
RandomNumbers * m_rand
random number generator
Definition: hmc_General.h:63
double calcH_P(Field_G &iP)
Class for parameters.
Definition: parameters.h:40
valarray< Action * > m_action
actions
Definition: hmc_General.h:60
Base class of Integrator class family.
Definition: integrator.h:31
double langevin(Field_G &iP, Field_G &U)
SU(N) gauge field.
Definition: field_G.h:36
~HMC_General()
destructor
Definition: hmc_General.h:109
Common parameter class: provides parameters as singleton.
Langevin_Momentum * m_Langevin_P
Definition: hmc_General.h:65
void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
Definition: hmc_General.h:118
Base class of random number generators.
Definition: randomNumbers.h:40
Bridge::VerboseLevel vl
Definition: checker.cpp:18
Integrator * m_integrator
MD integrator.
Definition: hmc_General.h:62
VerboseLevel
Definition: bridgeIO.h:25
General HMC update class.
Definition: hmc_General.h:46
valarray< Director * > m_director
directors
Definition: hmc_General.h:61
HMC_General(std::valarray< Action * > action, std::valarray< Director * > director, Integrator *integrator, RandomNumbers *rand)
constructor with actions, directors, and random number generator
Definition: hmc_General.h:70
double update(Field_G &)
Definition: hmc_General.cpp:81
Staples * m_staple
Definition: hmc_General.h:64
Langevin part of HMC for conjugate momentum to link variable.