Bridge++  Ver. 1.3.x
director_Smear.cpp
Go to the documentation of this file.
1 
14 #include "director_Smear.h"
15 
16 //- parameter entries
17 namespace {
18  void append_entry(Parameters& param)
19  {
20  param.Register_int("number_of_smearing", 0);
21 
22  param.Register_string("verbose_level", "NULL");
23  }
24 
25 
26 #ifdef USE_PARAMETERS_FACTORY
27  bool init_param = ParametersFactory::Register("Director_Smear", append_entry);
28 #endif
29 }
30 //- end
31 
32 //- parameters class
34 //- end
35 
36 const std::string Director_Smear::class_name = "Director_Smear";
37 
38 //====================================================================
40 {
41  const string str_vlevel = params.get_string("verbose_level");
42 
43  m_vl = vout.set_verbose_level(str_vlevel);
44 
45  //- fetch and check input parameters
46  int Nsmear;
47 
48  int err = 0;
49  err += params.fetch_int("number_of_smearing", Nsmear);
50 
51  if (err) {
52  vout.crucial(m_vl, "%s: fetch error, input parameter not found.\n", class_name.c_str());
53  exit(EXIT_FAILURE);
54  }
55 
56 
57  set_parameters(Nsmear);
58 }
59 
60 
61 //====================================================================
63 {
64  int Nvol = CommonParameters::Nvol();
65  int Ndim = CommonParameters::Ndim();
66 
67  //- print input parameters
68  vout.general(m_vl, "Parameters of %s:\n", class_name.c_str());
69  vout.general(m_vl, " Nsmear = %d\n", Nsmear);
70 
71  //- range check
72  // NB. Nsmear == 0 is allowed.
73 
74  //- store values
75  m_Nsmear = Nsmear;
76 
77  //- post-process
78  m_Usmear.resize(m_Nsmear);
79  if (m_Nsmear > 0) {
80  for (int i_smear = 0; i_smear < m_Nsmear; ++i_smear) {
81  m_Usmear[i_smear].reset(Nvol, Ndim);
82  }
83  vout.detailed(m_vl, " size of Usmear[i_smear] was set.\n");
84  }
85 }
86 
87 
88 //====================================================================
90 {
91  m_U = (Field_G *)U;
92 
93  if (m_status_linkv == 0) smear();
94 }
95 
96 
97 //====================================================================
99 {
100  set_config(U.get());
101 }
102 
103 
104 //====================================================================
106 {
107  assert(m_U != 0);
108 
109  if (i_smear == 0) {
110  return m_U;
111  } else {
112  return &m_Usmear[i_smear - 1];
113  }
114 }
115 
116 
117 //====================================================================
119 {
120  return m_Nsmear == 0 ? m_U : &m_Usmear[m_Nsmear - 1];
121 }
122 
123 
124 //====================================================================
126 {
127  if (i_smear == 0) return m_U;
128 
129  return &m_Usmear[i_smear - 1];
130 }
131 
132 
133 //====================================================================
135 {
136  if (m_Nsmear > 0) {
137  int Nvol = m_U->nvol();
138  int Nex = m_U->nex();
139 
140  Field_G Usmear(Nvol, Nex);
141  Field_G Uprev(Nvol, Nex);
142 
143  for (int i_smear = 0; i_smear < m_Nsmear; ++i_smear) {
144  if (i_smear == 0) {
145  Uprev = *m_U;
146  } else {
147  Uprev = m_Usmear[i_smear - 1];
148  }
149  m_smear->smear(Usmear, Uprev);
150  m_Usmear[i_smear] = (Field)Usmear;
151  }
152  }
153 
154  ++m_status_linkv;
155 }
156 
157 
158 //====================================================================
159 //============================================================END=====
void smear()
smearing is performed by calling a function of Smear object
BridgeIO vout
Definition: bridgeIO.cpp:278
void detailed(const char *format,...)
Definition: bridgeIO.cpp:82
void Register_string(const string &, const string &)
Definition: parameters.cpp:351
void general(const char *format,...)
Definition: bridgeIO.cpp:65
void Register_int(const string &, const int)
Definition: parameters.cpp:330
Container of Field-type object.
Definition: field.h:39
int nvol() const
Definition: field.h:116
Class for parameters.
Definition: parameters.h:38
SU(N) gauge field.
Definition: field_G.h:38
Field * getptr_smearedConfig(int i_smear)
get pointer to i-th smeared config (0th is original thin link)
Smear * m_smear
smearing operator
Bridge::VerboseLevel m_vl
Definition: director.h:40
pointer get() const
int nex() const
Definition: field.h:117
virtual void smear(Field_G &, const Field_G &)=0
std::vector< Field_G > m_Usmear
smeared configs.
void set_config(Field *U)
set pointer to original thin link variable
int m_status_linkv
set to zero when link var. is updated
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
static bool Register(const std::string &realm, const creator_callback &cb)
void set_parameters(const Parameters &params)
set parameters, must be called before set_config
static const std::string class_name
Field_G * get_config()
string get_string(const string &key) const
Definition: parameters.cpp:87
int fetch_int(const string &key, int &val) const
Definition: parameters.cpp:141
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:28
int m_Nsmear
number of smearing to be applied
Field_G * m_U
original thin link var.