Bridge++  Ver.2.1.3
action_F_Rational_SF.cpp
Go to the documentation of this file.
1 
12 
13 const std::string Action_F_Rational_SF::class_name = "Action_F_Rational_SF";
14 
15 //====================================================================
17 {
19 
21 
22  vout.general(m_vl, "%s: construction\n", class_name.c_str());
23  //vout.increase_indent();
24 
25 
26  //vout.decrease_indent();
27  vout.general(m_vl, "%s: construction finished.\n",
28  class_name.c_str());
29 
30 }
31 
32 
33 //====================================================================
35 {
37 
39 
40  vout.general(m_vl, "%s: construction\n", class_name.c_str());
42 
43  set_parameters(params);
44 
46  vout.general(m_vl, "%s: construction finished.\n",
47  class_name.c_str());
48 
49 }
50 
51 
52 //====================================================================
54 {
55  // do nothing.
56 }
57 
58 //====================================================================
60 {
61  std::string vlevel;
62  if (!params.fetch_string("verbose_level", vlevel)) {
63  m_vl = vout.set_verbose_level(vlevel);
64  }
65 }
66 
67 
68 //====================================================================
70 {
71  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
72 }
73 
74 
75 //====================================================================
77 {
78  m_U = U;
79 
80 #pragma omp parallel
81  {
83  m_fopr_H->set_config(U);
85  }
86 
87 }
88 
89 
90 //====================================================================
92 {
93  const int NinF = m_fopr_langev->field_nin();
94  const int NvolF = m_fopr_langev->field_nvol();
95  const int NexF = m_fopr_langev->field_nex();
96  const int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
97 
98  m_psf.reset(NinF, NvolF, NexF);
99 
100  vout.general(m_vl, "%s: %s\n", class_name.c_str(), m_label.c_str());
101 
102  Field xi(NinF, NvolF, NexF);
103  rand->gauss_lex_global(xi);
104 
105  double H_psf = 0.0;
106 
107 #pragma omp parallel
108  {
110  m_fopr_langev->mult(m_psf, xi);
111 
113 
114  const double xi2 = xi.norm();
115 
116  int ith = ThreadManager::get_thread_id();
117  if (ith == 0) H_psf = xi2 * xi2;
118  }
119 
120  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
121  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
122 
123  return H_psf;
124 }
125 
126 
127 //====================================================================
129 {
130  const int NinF = m_fopr_H->field_nin();
131  const int NvolF = m_fopr_H->field_nvol();
132  const int NexF = m_fopr_H->field_nex();
133  const int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
134 
135  vout.general(m_vl, "%s: %s\n", class_name.c_str(), m_label.c_str());
136 
137  Field v1(NinF, NvolF, NexF);
138 
139  double H_psf = 0.0;
140 
141 #pragma omp parallel
142  {
144  m_fopr_H->mult(v1, m_psf);
145 
146  const double H_psf1 = dot(v1, m_psf);
147 
148  int ith = ThreadManager::get_thread_id();
149  if (ith == 0) H_psf = H_psf1;
150  }
151 
152  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
153  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
154 
155  return H_psf;
156 }
157 
158 
159 //====================================================================
161 {
162  const int Nvol = m_U->nvol();
163  const int Nex = m_U->nex();
164 
165  vout.general(m_vl, "%s: %s\n", class_name.c_str(), m_label.c_str());
167 
168  Field_G force1(Nvol, Nex);
169 
170 #pragma omp parallel
171  {
173  m_forceF_MD->force_core(force1, m_psf);
174 
176 
177  copy(force, force1);
178 
179  double Fave, Fmax, Fdev;
180  force.stat(Fave, Fmax, Fdev);
181  vout.general(m_vl, " Fave = %12.6f Fmax = %12.6f Fdev = %12.6f\n",
182  Fave, Fmax, Fdev);
183  }
184 
186 
187 }
188 
189 
190 //============================================================END=====
Action_F_Rational_SF::m_vl
Bridge::VerboseLevel m_vl
Definition: action_F_Rational_SF.h:38
fopr_thread-inc.h
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
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
Action_F_Rational_SF::m_psf
Field m_psf
Definition: action_F_Rational_SF.h:48
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_SF::set_parameters
void set_parameters(const Parameters &params)
setting parameters and creating class instances.
Definition: action_F_Rational_SF.cpp:59
RandomNumbers
Base class of random number generators.
Definition: randomNumbers.h:43
Action_F_Rational_SF::m_label
std::string m_label
Definition: action_F_Rational_SF.h:40
Action_F_Rational_SF::tidyup
void tidyup()
Definition: action_F_Rational_SF.cpp:53
Action_F_Rational_SF::langevin
double langevin(RandomNumbers *)
Langevin step called at the beginning of HMC.
Definition: action_F_Rational_SF.cpp:91
Action_F_Rational_SF::set_config
void set_config(Field *U)
setting gauge configuration.
Definition: action_F_Rational_SF.cpp:76
dot
double dot(const Field &y, const Field &x)
Definition: field.cpp:577
Action_F_Rational_SF::m_fopr_langev
Fopr * m_fopr_langev
Definition: action_F_Rational_SF.h:42
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:213
Action_F_Rational_SF::class_name
static const std::string class_name
Definition: action_F_Rational_SF.h:35
AFopr::set_config
virtual void set_config(Field *)=0
sets the gauge configuration.
Field_SF::set_boundary_zero
void set_boundary_zero(Field_G &u)
Definition: field_SF.cpp:96
Action_F_Rational_SF::init
void init()
Definition: action_F_Rational_SF.cpp:16
AFopr::field_nvol
virtual int field_nvol()=0
returns the volume of the fermion field.
Field::norm
double norm() const
Definition: field.h:226
Field::nvol
int nvol() const
Definition: field.h:127
Action_F_Rational_SF::calcH
double calcH()
calculation of Hamiltonian.
Definition: action_F_Rational_SF.cpp:128
CommonParameters::NPE
static int NPE()
Definition: commonParameters.h:101
Action_F_Rational_SF::force
void force(Field &)
returns force for updating conjugate momentum.
Definition: action_F_Rational_SF.cpp:160
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.
Field_SF::set_boundary_spatial_link_zero
void set_boundary_spatial_link_zero(Field_G &u)
Definition: field_SF.cpp:151
AForce_F::force_core
virtual void force_core(AFIELD &, const AFIELD &)
Action_F_Rational_SF::get_parameters
void get_parameters(Parameters &params) const
getting parameters
Definition: action_F_Rational_SF.cpp:69
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
Action_F_Rational_SF::m_fopr_H
Fopr * m_fopr_H
Definition: action_F_Rational_SF.h:43
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
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.
ThreadManager::get_thread_id
static int get_thread_id()
returns thread id.
Definition: threadManager.cpp:253
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
Action_F_Rational_SF::m_U
Field * m_U
Definition: action_F_Rational_SF.h:46
action_F_Rational_SF.h
ThreadManager::assert_single_thread
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
Definition: threadManager.cpp:372
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
Action_F_Rational_SF::m_forceF_MD
Force * m_forceF_MD
Definition: action_F_Rational_SF.h:44
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:216