Bridge++  Ver.2.1.3
action_F_Rational.cpp
Go to the documentation of this file.
1 
16 
17 const std::string Action_F_Rational::class_name = "Action_F_Rational";
18 
19 //====================================================================
21 {
22  std::string vlevel;
23  if (!params.fetch_string("verbose_level", vlevel)) {
24  m_vl = vout.set_verbose_level(vlevel);
25  }
26 }
27 
28 
29 //====================================================================
31 {
32  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
33 }
34 
35 
36 //====================================================================
38 {
39  m_U = U;
40 
41 #pragma omp parallel
42  {
44  m_fopr_H->set_config(U);
46  }
47 
48 }
49 
50 //====================================================================
52 {
53  vout.general(m_vl, "%s: %s\n", class_name.c_str(), m_label.c_str());
55 
56  m_timer.reset();
57  m_timer.start();
58 
59  const int NinF = m_fopr_langev->field_nin();
60  const int NvolF = m_fopr_langev->field_nvol();
61  const int NexF = m_fopr_langev->field_nex();
62  const int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
63 
64  m_psf.reset(NinF, NvolF, NexF);
65 
66  Field xi(NinF, NvolF, NexF);
67  rand->gauss_lex_global(xi);
68 
69  double H_psf = 0.0;
70 
71 #pragma omp parallel
72  {
74 
75  m_fopr_langev->mult(m_psf, xi);
76 
77  const double H_psf1 = xi.norm2();
78 
79  int ith = ThreadManager::get_thread_id();
80  if(ith == 0) H_psf = H_psf1;
81  }
82 
83  m_timer.stop();
84  double elapsed_time = m_timer.elapsed_sec();
85 
87  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
88  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
89  vout.general(m_vl, " Elapsed time = %14.6f sec\n", elapsed_time);
90 
91  return H_psf;
92 }
93 
94 
95 //====================================================================
97 {
98  vout.general(m_vl, "%s: %s\n", class_name.c_str(), m_label.c_str());
100 
101  m_timer.reset();
102  m_timer.start();
103 
104  const int NinF = m_fopr_H->field_nin();
105  const int NvolF = m_fopr_H->field_nvol();
106  const int NexF = m_fopr_H->field_nex();
107  const int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
108 
109  Field v1(NinF, NvolF, NexF);
110 
111  double H_psf = 0.0;
112 
113 #pragma omp parallel
114  {
116  m_fopr_H->mult(v1, m_psf);
117 
118  const double H_psf1 = dot(v1, m_psf);
119  int ith = ThreadManager::get_thread_id();
120  if(ith == 0) H_psf = H_psf1;
121  }
122 
123  m_timer.stop();
124  double elapsed_time = m_timer.elapsed_sec();
125 
127  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
128  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
129  vout.general(m_vl, " Elapsed time = %14.6f sec\n", elapsed_time);
130 
131  return H_psf;
132 }
133 
134 
135 //====================================================================
137 {
138  vout.general(m_vl, "%s: %s\n", class_name.c_str(), m_label.c_str());
140 
141  m_timer.reset();
142  m_timer.start();
143 
144  const int Nin = m_U->nin();
145  const int Nvol = m_U->nvol();
146  const int Nex = m_U->nex();
147 
148  assert(force.nin() == Nin);
149  assert(force.nvol() == Nvol);
150  assert(force.nex() == Nex);
151 
152 #pragma omp parallel
153  {
155 
157 
158  double Fave, Fmax, Fdev;
159  force.stat(Fave, Fmax, Fdev);
160 
161  vout.general(m_vl, "Fave = %12.6f Fmax = %12.6f Fdev = %12.6f\n",
162  Fave, Fmax, Fdev);
163  }
165 
166  m_timer.stop();
167  double elapsed_time = m_timer.elapsed_sec();
168  vout.general(m_vl, " Elapsed time = %14.6f sec\n", elapsed_time);
169 
170 }
171 
172 //============================================================END=====
action_F_Rational.h
Action_F_Rational::class_name
static const std::string class_name
Definition: action_F_Rational.h:40
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
Action_F_Rational::m_psf
Field m_psf
Definition: action_F_Rational.h:53
AFopr::mult
virtual void mult(AFIELD &, const AFIELD &)
multiplies fermion operator to a given field.
Definition: afopr.h:95
Parameters
Class for parameters.
Definition: parameters.h:46
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.cpp:518
AFopr::field_nex
virtual int field_nex()=0
returns the external degree of freedom of the fermion field.
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.cpp:508
Field::nex
int nex() const
Definition: field.h:128
Action_F_Rational::force
void force(Field &)
returns the force for updating conjugate momentum.
Definition: action_F_Rational.cpp:136
RandomNumbers
Base class of random number generators.
Definition: randomNumbers.h:43
Action_F_Rational::get_parameters
void get_parameters(Parameters &params) const
Definition: action_F_Rational.cpp:30
dot
double dot(const Field &y, const Field &x)
Definition: field.cpp:577
Action_F_Rational::m_U
Field * m_U
Definition: action_F_Rational.h:51
Action_F_Rational::m_fopr_langev
Fopr * m_fopr_langev
Definition: action_F_Rational.h:47
Field::nin
int nin() const
Definition: field.h:126
AFopr::set_config
virtual void set_config(Field *)=0
sets the gauge configuration.
Field::norm2
double norm2() const
Definition: field.cpp:114
Action_F_Rational::m_label
std::string m_label
Definition: action_F_Rational.h:45
Action_F_Rational::m_timer
Timer m_timer
Definition: action_F_Rational.h:55
Timer::start
void start()
Definition: timer.cpp:44
Action_F_Rational::m_fopr_H
Fopr * m_fopr_H
Definition: action_F_Rational.h:48
AFopr::field_nvol
virtual int field_nvol()=0
returns the volume of the fermion field.
Action_F_Rational::set_parameters
void set_parameters(const Parameters &params)
Definition: action_F_Rational.cpp:20
threadManager.h
Field::nvol
int nvol() const
Definition: field.h:127
Action_F_Rational::set_config
void set_config(Field *U)
setting gauge configuration.
Definition: action_F_Rational.cpp:37
CommonParameters::NPE
static int NPE()
Definition: commonParameters.h:101
Field::reset
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=Element_type::COMPLEX)
Definition: field.h:95
AForce_F::set_config
virtual void set_config(Field *)=0
sets verbose level.
AForce_F::force_core
virtual void force_core(AFIELD &, const AFIELD &)
Action_F_Rational::m_fopr_force_MD
Force * m_fopr_force_MD
Definition: action_F_Rational.h:49
Action_F_Rational::m_vl
Bridge::VerboseLevel m_vl
Definition: action_F_Rational.h:43
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
Action_F_Rational::langevin
double langevin(RandomNumbers *)
Langevin step called at the beginning of HMC.
Definition: action_F_Rational.cpp:51
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
Action_F_Rational::calcH
double calcH()
calculation of Hamiltonian.
Definition: action_F_Rational.cpp:96
Field
Container of Field-type object.
Definition: field.h:46
RandomNumbers::gauss_lex_global
virtual void gauss_lex_global(Field &)
gaussian random number defined on global lattice.
Definition: randomNumbers.cpp:95
AFopr::field_nin
virtual int field_nin()=0
returns the on-site degree of freedom of the fermion field.
Timer::elapsed_sec
double elapsed_sec() const
Definition: timer.cpp:107
ThreadManager::get_thread_id
static int get_thread_id()
returns thread id.
Definition: threadManager.cpp:253
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
Timer::stop
void stop()
Definition: timer.cpp:69
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:216
Timer::reset
void reset()
Definition: timer.cpp:97