Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
integrator_Leapfrog.cpp
Go to the documentation of this file.
1 
14 #include "integrator_Leapfrog.h"
15 
16 
17 
18 const std::string Integrator_Leapfrog::class_name = "Integrator_Leapfrog";
19 
20 //====================================================================
22 {
23  const string str_vlevel = params.get_string("verbose_level");
24 
25  m_vl = vout.set_verbose_level(str_vlevel);
26 
27  //- fetch and check input parameters
28  int level;
29  int Nstep;
30 
31  int err = 0;
32  err += params.fetch_int("level", level);
33  err += params.fetch_int("number_of_steps", Nstep);
34 
35  if (err) {
36  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
37  exit(EXIT_FAILURE);
38  }
39 
40  set_parameters(level, Nstep);
41 }
42 
43 
44 //====================================================================
45 void Integrator_Leapfrog::set_parameters(int level, int Nstep)
46 {
47  //- print input parameters
48  vout.general(m_vl, "%s:\n", class_name.c_str());
49  vout.general(m_vl, " Level: %4d\n", level);
50  vout.general(m_vl, " Nstep = %4d\n", Nstep);
51 
52  //- range check
53  // NB. level,Estep,Nstep == 0 is allowed.
54 
55  //- store values
56  m_Nstep = Nstep;
57  m_level = level;
58 }
59 
60 
61 //====================================================================
63 {
64  m_level = level;
65 }
66 
67 
68 //====================================================================
70 {
71  m_Nstep = Nstep;
72 }
73 
74 
75 //====================================================================
76 void Integrator_Leapfrog::set_parameter_Nsteps(const std::vector<int>& Nsteps)
77 {
78  if (Nsteps.size() > 0) {
79  set_parameter_Nstep(Nsteps[0]);
80 
81  // transfer to lower levels
82  if (m_update_U && (Nsteps.size() > 1)) {
83  std::vector<int> next_steps(Nsteps.begin() + 1, Nsteps.end());
84  m_update_U->set_parameter_Nsteps(next_steps);
85  }
86  }
87 }
88 
89 
90 //====================================================================
91 void Integrator_Leapfrog::evolve(const double step_size, Field_G& iP, Field_G& U)
92 {
93  int Nin = U.nin();
94  int Nvol = U.nvol();
95  int Nex = U.nex();
96  int Nc = CommonParameters::Nc();
97 
98  vout.general(m_vl, "Integration level-%d start.\n", m_level);
99 
100  if (m_Nstep > 0) {
101  double estep = step_size / m_Nstep;
102 
103  // initial half step
104  m_update_p->evolve(estep * 0.5, iP, U);
105 
106  for (int istep = 1; istep <= m_Nstep; ++istep) {
107  vout.general(m_vl, "istep = %d\n", istep);
108 
109  m_update_U->evolve(estep, iP, U);
110 
111  if (istep < m_Nstep) {
112  m_update_p->evolve(estep, iP, U);
113  }
114  }
115 
116  // last half step
117  m_update_p->evolve(estep * 0.5, iP, U);
118  } else {
119  vout.general(m_vl, "Nstep is zero. skip.\n");
120  }
121 
122  vout.general(m_vl, "Integration level-%d finished.\n", m_level);
123 }
124 
125 
126 //====================================================================
127 //============================================================END=====
BridgeIO vout
Definition: bridgeIO.cpp:495
void set_parameter_Nstep(const int Nstep)
void general(const char *format,...)
Definition: bridgeIO.cpp:195
void set_parameter_Nsteps(const std::vector< int > &Nsteps)
void set_parameters(const Parameters &params)
int nvol() const
Definition: field.h:116
virtual void set_parameter_Nsteps(const std::vector< int > &Nsteps)
Definition: integrator.h:47
Class for parameters.
Definition: parameters.h:46
int nin() const
Definition: field.h:115
SU(N) gauge field.
Definition: field_G.h:38
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:230
int nex() const
Definition: field.h:117
virtual void evolve(const double step_size, Field_G &iP, Field_G &U)=0
static const std::string class_name
Bridge::VerboseLevel m_vl
Definition: integrator.h:60
void crucial(const char *format,...)
Definition: bridgeIO.cpp:178
void set_parameter_level(const int level)
void evolve(const double step_size, Field_G &iP, Field_G &U)
string get_string(const string &key) const
Definition: parameters.cpp:116
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:131