Bridge++  Ver. 2.0.2
hmc_Leapfrog.cpp
Go to the documentation of this file.
1 
14 #include "hmc_Leapfrog.h"
15 
16 const std::string HMC_Leapfrog::class_name = "HMC_Leapfrog";
17 
18 //====================================================================
20 HMC_Leapfrog::HMC_Leapfrog(std::vector<Action *> action,
21  RandomNumbers *rand)
22  : m_vl(CommonParameters::Vlevel())
23 {
24  m_action.resize(action.size());
25  for (int i = 0; i < action.size(); ++i) {
26  m_action[i] = action[i];
27  }
28  m_staple = new Staple_lex;
29  m_rand = rand;
30  m_Estep = 0.0;
31  m_Nmdc = 0;
32  m_Nprec = 0;
33  m_Metropolis_test = false;
35 }
36 
37 
38 //====================================================================
40 HMC_Leapfrog::HMC_Leapfrog(std::vector<Action *> action,
41  std::vector<Director *> director,
42  RandomNumbers *rand)
43  : m_vl(CommonParameters::Vlevel())
44 {
45  m_action.resize(action.size());
46  for (int i = 0; i < action.size(); ++i) {
47  m_action[i] = action[i];
48  }
49  m_director.resize(director.size());
50  for (int i = 0; i < director.size(); ++i) {
51  m_director[i] = director[i];
52  }
53  m_staple = new Staple_lex;
54  m_rand = rand;
55  m_Estep = 0.0;
56  m_Nmdc = 0;
57  m_Nprec = 0;
58  m_Metropolis_test = false;
60 }
61 
62 
63 //====================================================================
66  RandomNumbers *rand)
67  : m_vl(CommonParameters::Vlevel())
68 {
69  ActionSet action_set = action_list.get_actions();
70 
71  m_action.resize(action_set.size());
72  for (int i = 0; i < action_set.size(); ++i) {
73  m_action[i] = action_set[i];
74  }
75  m_staple = new Staple_lex;
76  m_rand = rand;
77  m_Estep = 0.0;
78  m_Nmdc = 0;
79  m_Nprec = 0;
80  m_Metropolis_test = false;
82 }
83 
84 
85 //====================================================================
88  std::vector<Director *> director,
89  RandomNumbers *rand)
90  : m_vl(CommonParameters::Vlevel())
91 {
92  ActionSet action_set = action_list.get_actions();
93 
94  m_action.resize(action_set.size());
95  for (int i = 0; i < action_set.size(); ++i) {
96  m_action[i] = action_set[i];
97  }
98  m_director.resize(director.size());
99  for (int i = 0; i < director.size(); ++i) {
100  m_director[i] = director[i];
101  }
102  m_staple = new Staple_lex;
103  m_rand = rand;
104  m_Estep = 0.0;
105  m_Nmdc = 0;
106  m_Nprec = 0;
107  m_Metropolis_test = false;
109 }
110 
111 
112 //====================================================================
114 HMC_Leapfrog::HMC_Leapfrog(std::vector<Action *> action,
115  RandomNumbers *rand,
116  const Parameters& params)
117  : m_vl(CommonParameters::Vlevel())
118 {
119  m_action.resize(action.size());
120  for (int i = 0; i < action.size(); ++i) {
121  m_action[i] = action[i];
122  }
123  m_staple = new Staple_lex;
124  m_rand = rand;
125  m_Estep = 0.0;
126  m_Nmdc = 0;
127  m_Nprec = 0;
128  m_Metropolis_test = false;
130 
131  set_parameters(params);
132 }
133 
134 
135 //====================================================================
137 HMC_Leapfrog::HMC_Leapfrog(std::vector<Action *> action,
138  std::vector<Director *> director,
139  RandomNumbers *rand,
140  const Parameters& params)
141  : m_vl(CommonParameters::Vlevel())
142 {
143  m_action.resize(action.size());
144  for (int i = 0; i < action.size(); ++i) {
145  m_action[i] = action[i];
146  }
147  m_director.resize(director.size());
148  for (int i = 0; i < director.size(); ++i) {
149  m_director[i] = director[i];
150  }
151  m_staple = new Staple_lex;
152  m_rand = rand;
153  m_Estep = 0.0;
154  m_Nmdc = 0;
155  m_Nprec = 0;
156  m_Metropolis_test = false;
158 
159  set_parameters(params);
160 }
161 
162 
163 //====================================================================
166  RandomNumbers *rand,
167  const Parameters& params)
168  : m_vl(CommonParameters::Vlevel())
169 {
170  ActionSet action_set = action_list.get_actions();
171 
172  m_action.resize(action_set.size());
173  for (int i = 0; i < action_set.size(); ++i) {
174  m_action[i] = action_set[i];
175  }
176  m_staple = new Staple_lex;
177  m_rand = rand;
178  m_Estep = 0.0;
179  m_Nmdc = 0;
180  m_Nprec = 0;
181  m_Metropolis_test = false;
183 
184  set_parameters(params);
185 }
186 
187 
188 //====================================================================
191  std::vector<Director *> director,
192  RandomNumbers *rand,
193  const Parameters& params)
194  : m_vl(CommonParameters::Vlevel())
195 {
196  ActionSet action_set = action_list.get_actions();
197 
198  m_action.resize(action_set.size());
199  for (int i = 0; i < action_set.size(); ++i) {
200  m_action[i] = action_set[i];
201  }
202  m_director.resize(director.size());
203  for (int i = 0; i < director.size(); ++i) {
204  m_director[i] = director[i];
205  }
206  m_staple = new Staple_lex;
207  m_rand = rand;
208  m_Estep = 0.0;
209  m_Nmdc = 0;
210  m_Nprec = 0;
211  m_Metropolis_test = false;
213 
214  set_parameters(params);
215 }
216 
217 
218 //====================================================================
221 {
222  delete m_staple;
223  delete m_Langevin_P;
224 }
225 
226 
227 //====================================================================
229 {
230  std::string vlevel;
231  if (!params.fetch_string("verbose_level", vlevel)) {
232  m_vl = vout.set_verbose_level(vlevel);
233  }
234 
235  //- fetch and check input parameters
236  double Estep;
237  int Nmdc, Nprec;
238  bool Metropolis_test;
239  double traj_length;
240 
241  int err = 0;
242  err += params.fetch_int("number_of_steps", Nmdc);
243  err += params.fetch_int("order_of_exp_iP", Nprec);
244  err += params.fetch_bool("Metropolis_test", Metropolis_test);
245 
246  //- step_size or trajectory_length: either, or both consistently
247  int isset_ssize = params.fetch_double("step_size", Estep);
248  int isset_trajlen = params.fetch_double("trajectory_length", traj_length);
249 
250  if ((isset_ssize != 0) && (isset_trajlen != 0)) {
251  // neither set. error.
252  ++err;
253  } else if ((isset_ssize == 0) && (isset_trajlen != 0)) {
254  // using Estep.
255  } else if ((isset_ssize != 0) && (isset_trajlen == 0)) {
256  // using trajectory_length.
257  Estep = traj_length / Nmdc;
258  } else {
259  // both set. check consistency.
260  double diff = Estep * Nmdc - traj_length;
261 
262  if (fabs(diff) >= CommonParameters::epsilon_criterion()) {
263  ++err;
264  }
265  }
266 
267  if (err) {
268  vout.crucial(m_vl, "Error at %s: input parameter not found or not appropriate.\n", class_name.c_str());
269  exit(EXIT_FAILURE);
270  }
271 
272 
273  set_parameters(Estep, Nmdc, Nprec, Metropolis_test);
274 }
275 
276 
277 //====================================================================
279 {
280  params.set_int("number_of_steps", m_Nmdc);
281  params.set_int("order_of_exp_iP", m_Nprec);
282  params.set_bool("Metropolis_test", m_Metropolis_test);
283 
284  params.set_double("step_size", m_Estep);
285  params.set_double("trajectory_length", m_Estep * m_Nmdc);
286 
287  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
288 }
289 
290 
291 //====================================================================
292 void HMC_Leapfrog::set_parameters(const double Estep, const int Nmdc, const int Nprec, const int Metropolis_test)
293 {
294  vout.crucial(m_vl, "%s: warning: integer variable for Metroplis_test is obsolete. use boolean parameter.\n", class_name.c_str());
295 
296  return set_parameters(Estep, Nmdc, Nprec, (Metropolis_test == 0 ? false : true));
297 }
298 
299 
300 //====================================================================
301 void HMC_Leapfrog::set_parameters(const double Estep, const int Nmdc, const int Nprec, const bool Metropolis_test)
302 {
303  //- print input parameters
304  vout.general(m_vl, "%s:\n", class_name.c_str());
305  vout.general(m_vl, " Number of actions: %d\n", m_action.size());
306  vout.general(m_vl, " Estep = %10.6f\n", Estep);
307  vout.general(m_vl, " Nmdc = %d\n", Nmdc);
308  vout.general(m_vl, " Nprec = %d\n", Nprec);
309  vout.general(m_vl, " Metropolis_test = %s\n", Metropolis_test ? "true" : "false");
310 
311  //- range check
312  // NB. Estep,Nmdc,Nprec,Metropolis_test == 0 is allowed.
313 
314  //- store values
315  m_Estep = Estep; // step size (SA)
316  m_Nmdc = Nmdc; // a number of steps (SA)
317  m_Nprec = Nprec; // order of approximation for e^{iP} (SA)
318  m_Metropolis_test = Metropolis_test; // Metropolis test on/off (SA)
319 }
320 
321 
322 //====================================================================
324 {
325  const int Nc = CommonParameters::Nc(); //color (SA)
326 
327  Field_G U(Uorg); // set original gauge conf. to U (SA)
328 
329  for (int i = 0; i < m_action.size(); ++i) {
330  m_action[i]->set_config(&U); // set gauge conf. for each action (SA)
331  }
332 
333  const int Nin = U.nin(); // 2x(complex) 3(color) x 3(color) part (SA)
334  const int Nvol = U.nvol(); // local volume (SA)
335  const int Nex = U.nex(); // direction mu (SA)
336 
337  Field_G iP(Nvol, Nex); // define momentum iP for gauge fields (SA)
338 
339 
340  vout.general(m_vl, "HMC (single leapfrog) start.\n");
341 
342  //- Langevin step
343  const double H_total0 = langevin(iP, U); // calculate initial hamiltonian (SA)
344  // H=p^2/s + S_G + all fermion contributions (SA)
345  vout.general(m_vl, " H_total(init) = %18.8f\n", H_total0);
346 
347  const double plaq0 = m_staple->plaquette(U); // calculate plaquette of old U (SA)
348  vout.general(m_vl, " plaq(init) = %18.8f\n", plaq0);
349 
350  //- initial Hamiltonian
351  // H_total0 = calc_Hamiltonian(iP,U);
352 
353  //- molecular dynamical integration
354  integrate(iP, U); // MD step (SA)
355 
356  //- trial Hamiltonian
357  const double H_total1 = calc_Hamiltonian(iP, U); // calculate final hamiltonian (SA)
358  vout.general(m_vl, " H_total(trial) = %18.8f\n", H_total1);
359 
360  const double plaq1 = m_staple->plaquette(U); // calculate plaquette of new U (SA)
361  vout.general(m_vl, " plaq(trial) = %18.8f\n", plaq1);
362 
363 
364  //- Metropolis test
365  vout.general(m_vl, "Metropolis test.\n");
366 
367  const double diff_H = H_total1 - H_total0; // Delta H (SA)
368  const double exp_minus_diff_H = exp(-diff_H); // e^{-Delta H} (SA)
369 
370  double rand = -1.0;
371  if (m_Metropolis_test) {
372  rand = m_rand->get(); // random number 0 <= rand < 1 (SA)
373  }
374  vout.general(m_vl, " H(diff) = %10.6f\n", diff_H);
375  vout.general(m_vl, " exp(-diff_H) = %10.6f\n", exp_minus_diff_H);
376  vout.general(m_vl, " Random number = %10.6f\n", rand);
377 
378  if (rand <= exp_minus_diff_H) { // accepted
379  vout.general(m_vl, " Accepted\n");
380  Uorg = U; // set new U to gauge conf. (SA)
381  } else { // rejected
382  vout.general(m_vl, " Rejected\n");
383  }
384 
385 
386  const double plaq_final = m_staple->plaquette(Uorg);
387  vout.general(m_vl, " plaq(final) = %18.8f\n", plaq_final);
388 
389  return plaq_final;
390 }
391 
392 
393 //====================================================================
395 {
396  const int Nc = CommonParameters::Nc();
397  const int Ndim = CommonParameters::Ndim();
398  const int NcA = Nc * Nc - 1; // Nc^2-1 (SA)
399 
400  const int Nvol = CommonParameters::Nvol();
401  const int NPE = CommonParameters::NPE();
402 
403  vout.general(m_vl, "Langevin step.\n");
404 
405  // discard caches
406  for (int i = 0; i < m_director.size(); ++i) {
407  m_director[i]->notify_linkv(); // tell director that gauge filed is modified.(SA)
408  }
409 
410  //- kinetic term
411  const double H_iP = m_Langevin_P->set_iP(iP);
412  // calculate hamiltonian of momenta iP. (SA)
413  vout.general(m_vl, " H_kin = %18.8f\n", H_iP);
414  vout.general(m_vl, " H_kin/dof = %18.8f\n", H_iP / NcA / Nvol / NPE / Ndim);
415 
416 
417  double H_actions = 0.0;
418  for (int i = 0; i < m_action.size(); ++i) {
419  H_actions += m_action[i]->langevin(m_rand);
420  // calculate contribution to hamiltonian from each action. (SA)
421  }
422 
423  const double H_total = H_iP + H_actions; // total hamiltonian. (SA)
424  return H_total;
425 }
426 
427 
428 //====================================================================
429 double HMC_Leapfrog::calc_Hamiltonian(const Field_G& iP, const Field_G& U)
430 {
431  const int Nin = U.nin(); // Local volume (SA)
432  const int Nvol = U.nvol();
433  const int Nex = U.nex();
434 
435  const int Nc = CommonParameters::Nc();
436  const int Nd = CommonParameters::Nd();
437  const int NcA = Nc * Nc - 1;
438 
439  const int NPE = CommonParameters::NPE();
440 
441  vout.general(m_vl, "Hamiltonian calculation.\n");
442 
443  // kinetic term
444  const double H_iP = calcH_P(iP); // calculate hamiltonian for iP (SA)
445  vout.general(m_vl, " H_kin = %18.8f\n", H_iP);
446  vout.general(m_vl, " H_kin/dof = %18.8f\n", H_iP / NcA / Nvol / NPE / Nex);
447 
448  double H_actions = 0.0;
449  for (int i = 0; i < m_action.size(); ++i) {
450  // calculate contribution to hamiltonian from each action (SA)
451  H_actions += m_action[i]->calcH();
452  }
453 
454  const double H_total = H_iP + H_actions;
455  return H_total;
456 }
457 
458 
459 //====================================================================
461 {
462  //calculate hamiltonian for iP: |iP|^2/2 (SA)
463  const double hn = iP.norm();
464  const double H_iP = 0.5 * hn * hn;
465 
466  return H_iP;
467 }
468 
469 
470 //====================================================================
472 {
473  vout.general(m_vl, "Integration.\n");
474 
475  const double estep = m_Estep;
476  const double estep2 = 0.5 * m_Estep;
477 
478  // Initial half step of update of h
479  if (m_Nmdc > 0) {
480  const int imdc = 0;
481  vout.general(m_vl, " imdc = %d\n", imdc);
482  update_P(estep2, iP, U); // update momentum iP at first half step (SA)
483  }
484 
485  // Molecular dynamics step
486  for (int imdc = 1; imdc < m_Nmdc + 1; imdc++) {
487  vout.general(m_vl, " imdc = %d\n", imdc);
488 
489  update_U(estep, iP, U); // update gauge field U at full step (SA)
490 
491  if (imdc < m_Nmdc) {
492  update_P(estep, iP, U); // update momentum iP at full step (SA)
493  } else {
494  update_P(estep2, iP, U); // update momentum iP at last half step (SA)
495  }
496  } // here imdc loop ends
497 }
498 
499 
500 //====================================================================
501 void HMC_Leapfrog::update_P(const double estep, Field_G& iP, const Field_G& U)
502 {
503  const int Nin = U.nin();
504  const int Nvol = U.nvol();
505  const int Nex = U.nex();
506  const int Nc = CommonParameters::Nc();
507 
508  Field force(Nin, Nvol, Nex);
509 
510  force.set(0.0);
511 
512  Field force1(Nin, Nvol, Nex);
513  // double H_actions = 0.0;
514  for (int i = 0; i < m_action.size(); ++i) {
515  m_action[i]->force(force1); // calculate force for each action (SA)
516  axpy(force, estep, force1);
517  }
518 
519  // iP = iP + step-size * force (SA)
520  axpy(iP, 1.0, force);
521 }
522 
523 
524 //====================================================================
525 void HMC_Leapfrog::update_U(const double estep, const Field_G& iP, Field_G& U)
526 {
527  const int Nvol = U.nvol();
528  const int Nex = U.nex();
529  const int Nc = CommonParameters::Nc();
530 
531  Mat_SU_N u0(Nc), u1(Nc), u2(Nc);
532  Mat_SU_N h1(Nc);
533 
534  for (int ex = 0; ex < Nex; ++ex) {
535  for (int site = 0; site < Nvol; ++site) {
536  u0 = U.mat(site, ex);
537  u1 = U.mat(site, ex);
538  h1 = iP.mat(site, ex);
539 
540  for (int iprec = 0; iprec < m_Nprec; ++iprec) {
541  double exf = estep / (m_Nprec - iprec); // step_size/(N-k) (SA)
542  u2 = h1 * u1; // iP* u1 (SA)
543  u2 *= exf; // step_size*iP*u1/(N-K) (SA)
544  u1 = u2;
545  u1 += u0; // U + step_size*iP*u1/(N-K) (SA)
546  }
547  // u1 =sum_{k=0}^{N-1} (step_size * iP)^k/k!, N=m_Nprec (SA)
548  u1.reunit(); // reunitarize u1 (SA)
549  U.set_mat(site, ex, u1); // U = u1 (SA)
550  }
551  }
552 
553  for (int i = 0; i < m_director.size(); ++i) {
554  m_director[i]->notify_linkv(); // notify all directors about update of U (SA)
555  }
556 }
557 
558 
559 //====================================================================
560 //============================================================END=====
Parameters::set_bool
void set_bool(const string &key, const bool value)
Definition: parameters.cpp:30
hmc_Leapfrog.h
Langevin_Momentum::set_iP
double set_iP(Field_G &iP)
Setting conjugate momenta and returns kinetic part of Hamiltonian.
Definition: langevin_Momentum.cpp:17
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
CommonParameters
Common parameter class: provides parameters as singleton.
Definition: commonParameters.h:42
HMC_Leapfrog::HMC_Leapfrog
HMC_Leapfrog(std::vector< Action * > action, RandomNumbers *rand)
constructor: with array of actions
Definition: hmc_Leapfrog.cpp:20
HMC_Leapfrog::m_vl
Bridge::VerboseLevel m_vl
Definition: hmc_Leapfrog.h:61
HMC_Leapfrog::class_name
static const std::string class_name
Definition: hmc_Leapfrog.h:47
CommonParameters::Ndim
static int Ndim()
Definition: commonParameters.h:117
Field::set
void set(const int jin, const int site, const int jex, double v)
Definition: field.h:175
Parameters
Class for parameters.
Definition: parameters.h:46
Staple_lex::plaquette
double plaquette(const Field_G &)
calculates plaquette value.
Definition: staple_lex.cpp:89
Parameters::set_double
void set_double(const string &key, const double value)
Definition: parameters.cpp:33
HMC_Leapfrog::m_rand
RandomNumbers * m_rand
Definition: hmc_Leapfrog.h:60
Field::nex
int nex() const
Definition: field.h:128
Field_G::set_mat
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Definition: field_G.h:160
RandomNumbers
Base class of random number generators.
Definition: randomNumbers.h:43
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
SU_N::Mat_SU_N::reunit
Mat_SU_N & reunit()
Definition: mat_SU_N.h:72
axpy
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:380
HMC_Leapfrog::m_staple
Staple_lex * m_staple
Definition: hmc_Leapfrog.h:56
Field::nin
int nin() const
Definition: field.h:126
Parameters::fetch_bool
int fetch_bool(const string &key, bool &value) const
Definition: parameters.cpp:391
ActionSet
std::vector< Action * > ActionSet
Definition: action_list.h:38
HMC_Leapfrog::calc_Hamiltonian
double calc_Hamiltonian(const Field_G &iP, const Field_G &U)
Definition: hmc_Leapfrog.cpp:429
ActionList
lists of actions at respective integrator levels.
Definition: action_list.h:40
HMC_Leapfrog::integrate
void integrate(Field_G &iP, Field_G &U)
Definition: hmc_Leapfrog.cpp:471
HMC_Leapfrog::m_Langevin_P
Langevin_Momentum * m_Langevin_P
Definition: hmc_Leapfrog.h:55
HMC_Leapfrog::m_Nmdc
int m_Nmdc
Definition: hmc_Leapfrog.h:50
CommonParameters::Nc
static int Nc()
Definition: commonParameters.h:115
RandomNumbers::get
virtual double get()=0
HMC_Leapfrog::update_U
void update_U(const double estep, const Field_G &iP, Field_G &U)
Definition: hmc_Leapfrog.cpp:525
Field::norm
double norm() const
Definition: field.h:226
SU_N::Mat_SU_N
Definition: mat_SU_N.h:36
Langevin_Momentum
Langevin part of HMC for conjugate momentum to link variable.
Definition: langevin_Momentum.h:38
Field::nvol
int nvol() const
Definition: field.h:127
CommonParameters::NPE
static int NPE()
Definition: commonParameters.h:101
HMC_Leapfrog::get_parameters
void get_parameters(Parameters &params) const
Definition: hmc_Leapfrog.cpp:278
HMC_Leapfrog::m_action
std::vector< Action * > m_action
Definition: hmc_Leapfrog.h:58
HMC_Leapfrog::langevin
double langevin(Field_G &iP, const Field_G &U)
Definition: hmc_Leapfrog.cpp:394
CommonParameters::Nd
static int Nd()
Definition: commonParameters.h:116
Staple_lex
Staple construction.
Definition: staple_lex.h:39
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:133
Parameters::set_int
void set_int(const string &key, const int value)
Definition: parameters.cpp:36
ActionList::get_actions
ActionSet get_actions() const
Definition: action_list.cpp:82
HMC_Leapfrog::m_director
std::vector< Director * > m_director
Definition: hmc_Leapfrog.h:59
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
Parameters::fetch_double
int fetch_double(const string &key, double &value) const
Definition: parameters.cpp:327
HMC_Leapfrog::calcH_P
double calcH_P(const Field_G &iP)
Definition: hmc_Leapfrog.cpp:460
HMC_Leapfrog::update
double update(Field_G &)
Definition: hmc_Leapfrog.cpp:323
HMC_Leapfrog::m_Estep
double m_Estep
Definition: hmc_Leapfrog.h:53
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:180
Field
Container of Field-type object.
Definition: field.h:46
Field_G::mat
Mat_SU_N mat(const int site, const int mn=0) const
Definition: field_G.h:114
HMC_Leapfrog::update_P
void update_P(const double estep, Field_G &iP, const Field_G &U)
Definition: hmc_Leapfrog.cpp:501
Field_G
SU(N) gauge field.
Definition: field_G.h:38
HMC_Leapfrog::m_Nprec
int m_Nprec
Definition: hmc_Leapfrog.h:51
HMC_Leapfrog::m_Metropolis_test
bool m_Metropolis_test
Definition: hmc_Leapfrog.h:52
Parameters::fetch_int
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:346
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:200
HMC_Leapfrog::~HMC_Leapfrog
~HMC_Leapfrog()
destructor
Definition: hmc_Leapfrog.cpp:220
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:512
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:154
HMC_Leapfrog::set_parameters
void set_parameters(const Parameters &params)
Definition: hmc_Leapfrog.cpp:228
CommonParameters::epsilon_criterion
static double epsilon_criterion()
Definition: commonParameters.h:119