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