Bridge++  Ver.2.1.3
smear_APE_spatial.cpp
Go to the documentation of this file.
1 
12 
13 #ifdef USE_FACTORY_AUTOREGISTER
14 namespace {
15  bool init = Smear_APE_spatial::register_factory();
16 }
17 #endif
18 
19 const std::string Smear_APE_spatial::class_name = "Smear_APE_spatial";
20 
21 //====================================================================
23 {
25 
26  std::string vlevel;
27  if (!params.fetch_string("verbose_level", vlevel)) {
28  m_vl = vout.set_verbose_level(vlevel);
29  } else {
31  }
32 
33  vout.general(m_vl, "%s: construction\n", class_name.c_str());
35 
38 
39  set_parameters(params);
40 
41  m_staple = new Staple_lex();
42 
43  m_ct = new Field_G(m_Nvol, 1);
44  m_ut1 = new Field_G(m_Nvol, 1);
45  m_ut2 = new Field_G(m_Nvol, 1);
46 
48  vout.general(m_vl, "%s: construction finished.\n",
49  class_name.c_str());
50 
51 }
52 
53 //====================================================================
55 {
56  delete m_staple;
57 
58  delete m_ct;
59  delete m_ut1;
60  delete m_ut2;
61 }
62 
63 //====================================================================
65 {
66  std::string vlevel;
67  if (!params.fetch_string("verbose_level", vlevel)) {
68  m_vl = vout.set_verbose_level(vlevel);
69  }
70 
71  //- fetch and check input parameters
72  double rho;
73 
74  int err = 0;
75  err += params.fetch_double("rho", rho);
76 
77  if (err) {
78  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
79  exit(EXIT_FAILURE);
80  }
81 
82  set_parameters(rho);
83 }
84 
85 
86 //====================================================================
88 {
89  params.set_double("rho", m_rho);
90 
91  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
92 }
93 
94 
95 //====================================================================
96 void Smear_APE_spatial::set_parameters(const double rho)
97 {
98  //- print input parameters
99  vout.general(m_vl, "%s:\n", class_name.c_str());
100  vout.general(m_vl, " rho = %10.6F\n", rho);
101 
102  //- range check
103  // NB. rho == 0 is allowed.
104 
105  //- store values
106  m_rho = rho;
107 }
108 
109 
110 //====================================================================
111 void Smear_APE_spatial::smear(Field_G& Usmear, const Field_G& U)
112 {
113  assert(U.nvol() == m_Nvol);
114  assert(U.nex() == m_Ndim);
115  assert(Usmear.nvol() == m_Nvol);
116  assert(Usmear.nex() == m_Ndim);
117 
118  const int Ndim_spc = m_Ndim - 1;
119 
120  // Staple_lex staple;
121 
122  double plaq = m_staple->plaq_s(U);
123  vout.general(m_vl, " plaq_s(org) = %12.8f\n", plaq);
124 
125  plaq = m_staple->plaq_t(U);
126  vout.general(m_vl, " plaq_t(org) = %12.8f\n", plaq);
127 
128  Usmear.set(0.0);
129 
130  for (int mu = 0; mu < Ndim_spc; ++mu) {
131  //Field_G c_tmp;
132  m_ct->set(0.0);
133 
134  //Field_G u_tmp;
135  copy(*m_ut1, 0, U, mu);
136 
137  //Field_G u_tmp2;
138 
139  for (int nu = 0; nu < Ndim_spc; ++nu) {
140  if (nu != mu) {
141  m_staple->upper(*m_ut2, U, mu, nu);
142  axpy(*m_ct, 0, m_rho, *m_ut2, 0);
143 
144  m_staple->lower(*m_ut2, U, mu, nu);
145  axpy(*m_ct, 0, m_rho, *m_ut2, 0);
146  }
147  }
148 
150  copy(Usmear, mu, *m_ut2, 0);
151  }
152 
153  const int mu = m_Ndim - 1; // temporal link: unsmeared.
154  copy(Usmear, mu, U, mu);
155 
156  plaq = m_staple->plaq_s(Usmear);
157  vout.general(m_vl, " plaq_s(smear) = %12.8f\n", plaq);
158 
159  plaq = m_staple->plaq_t(Usmear);
160  vout.general(m_vl, " plaq_t(smear) = %12.8f\n", plaq);
161 }
162 
163 
164 //============================================================END=====
smear_APE_spatial.h
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
Staple_lex::plaq_t
double plaq_t(const Field_G &)
calculates temporal plaquette value.
Definition: staple_lex.cpp:129
Smear_APE_spatial::get_parameters
void get_parameters(Parameters &params) const
Getting parameters by Parameters object.
Definition: smear_APE_spatial.cpp:87
CommonParameters::Ndim
static int Ndim()
Definition: commonParameters.h:117
Smear_APE_spatial::m_ut2
Field_G * m_ut2
Definition: smear_APE_spatial.h:51
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
Parameters::set_double
void set_double(const string &key, const double value)
Definition: parameters.cpp:33
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.cpp:518
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.cpp:508
Field::nex
int nex() const
Definition: field.h:128
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
Smear_APE_spatial::m_proj
Projection * m_proj
projector to group element.
Definition: smear_APE_spatial.h:45
Staple_lex::lower
void lower(Field_G &, const Field_G &, const int mu, const int nu)
constructs lower staple in mu-nu plane.
Definition: staple_lex.cpp:283
axpy
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
Definition: field.cpp:381
copy
void copy(Field &y, const Field &x)
copy(y, x): y = x
Definition: field.cpp:213
Smear_APE_spatial::m_ct
Field_G * m_ct
Definition: smear_APE_spatial.h:49
Smear_APE_spatial::m_vl
Bridge::VerboseLevel m_vl
verbose level
Definition: smear_APE_spatial.h:43
Smear_APE_spatial::m_Nvol
int m_Nvol
spacetime volume
Definition: smear_APE_spatial.h:41
Smear_APE_spatial::class_name
static const std::string class_name
Definition: smear_APE_spatial.h:37
Smear_APE_spatial::m_ut1
Field_G * m_ut1
Definition: smear_APE_spatial.h:50
Smear_APE_spatial::m_Ndim
int m_Ndim
spacetime dimension
Definition: smear_APE_spatial.h:40
Smear_APE_spatial::tidyup
void tidyup()
Definition: smear_APE_spatial.cpp:54
Smear_APE_spatial::m_staple
Staple_lex * m_staple
Definition: smear_APE_spatial.h:47
Smear_APE_spatial::smear
void smear(Field_G &Usmear, const Field_G &U)
Smearing of a given gauge field.
Definition: smear_APE_spatial.cpp:111
Smear_APE_spatial::init
void init(const Parameters &params)
Definition: smear_APE_spatial.cpp:22
threadManager.h
Field::nvol
int nvol() const
Definition: field.h:127
Staple_lex::upper
void upper(Field_G &, const Field_G &, const int mu, const int nu)
constructs upper staple in mu-nu plane.
Definition: staple_lex.cpp:260
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
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:195
Smear_APE_spatial::set_parameters
void set_parameters(const Parameters &params)
Setting parameters with Parameters object.
Definition: smear_APE_spatial.cpp:64
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
Smear_APE_spatial::m_rho
double m_rho
smearing parameter
Definition: smear_APE_spatial.h:42
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
ThreadManager::assert_single_thread
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
Definition: threadManager.cpp:372
AProjection::project
virtual void project(Field_G &v, const double alpha, const Field_G &C, const Field_G &U)=0
projection V = P[alpha, C, U]
Staple_lex::plaq_s
double plaq_s(const Field_G &)
calculates spatial plaquette value.
Definition: staple_lex.cpp:112
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