Bridge++  Ver.2.1.3
director_Smear.cpp
Go to the documentation of this file.
1 
12 
13 const std::string Director_Smear::class_name = "Director_Smear";
14 
15 //====================================================================
17 {
19 
21 
22  vout.general(m_vl, "%s: construction\n", class_name.c_str());
24 
25  m_Nsmear = 0;
26  m_U = 0;
27  m_status_linkv = 0;
28 
30  vout.general(m_vl, "%s: construction finished.\n",
31  class_name.c_str());
32 
33 }
34 
35 //====================================================================
36 void Director_Smear::init(const Parameters& params)
37 {
39 
40  std::string vlevel;
41  if (!params.fetch_string("verbose_level", vlevel)) {
42  m_vl = vout.set_verbose_level(vlevel);
43  } else {
45  }
46 
47  vout.general(m_vl, "%s: construction\n", class_name.c_str());
49 
50  m_Nsmear = 0;
51  m_U = 0;
52  m_status_linkv = 0;
53 
54  set_parameters(params);
55 
57  vout.general(m_vl, "%s: construction finished.\n",
58  class_name.c_str());
59 
60 }
61 
62 //====================================================================
64 {
65  std::string vlevel;
66  if (!params.fetch_string("verbose_level", vlevel)) {
67  m_vl = vout.set_verbose_level(vlevel);
68  }
69 
70  //- fetch and check input parameters
71  int Nsmear;
72 
73  int err = 0;
74  err += params.fetch_int("number_of_smearing", Nsmear);
75 
76  if (err) {
77  vout.crucial(m_vl, "Error at %s: input parameter not found.\n",
78  class_name.c_str());
79  exit(EXIT_FAILURE);
80  }
81 
82  set_parameters(Nsmear);
83 }
84 
85 
86 //====================================================================
87 void Director_Smear::set_parameters(const int Nsmear)
88 {
89  const int Nvol = CommonParameters::Nvol();
90  const int Ndim = CommonParameters::Ndim();
91 
92  int ith = ThreadManager::get_thread_id();
93  if (ith == 0) {
94  m_Nsmear = Nsmear;
95 
96  m_Usmear.resize(m_Nsmear);
97  if (m_Nsmear > 0) {
98  for (int ismear = 0; ismear < m_Nsmear; ++ismear) {
99  m_Usmear[ismear].reset(Nvol, Ndim);
100  vout.detailed(m_vl, " size of Usmear[ismear] was set.\n");
101  }
102  }
103  }
104 #pragma omp barrier
105 
106  vout.general(m_vl, "%s: parameters\n", class_name.c_str());
107  vout.general(m_vl, " Nsmear = %d\n", Nsmear);
108 
109 }
110 
111 
112 //====================================================================
114 {
115  params.set_int("number_of_smearing", m_Nsmear);
116 
117  params.set_string("verbose_level", vout.get_verbose_level(m_vl));
118 }
119 
120 
121 //====================================================================
123 {
124  m_U = (Field_G *)U;
125 
126  if (m_status_linkv == 0) smear();
127 }
128 
129 
130 //====================================================================
132 {
133  assert(m_U != 0);
134 
135  if (ismear == 0) {
136  return m_U;
137  } else {
138  return &m_Usmear[ismear-1];
139  }
140 }
141 
142 
143 //====================================================================
145 {
146  return m_Nsmear == 0 ? m_U : &m_Usmear[m_Nsmear - 1];
147 }
148 
149 
150 //====================================================================
152 {
153  if (ismear == 0) return m_U;
154 
155  return &m_Usmear[ismear-1];
156 
157 }
158 
159 //====================================================================
161 {
162  if (m_Nsmear > 0) {
163  for (int ismear = 0; ismear < m_Nsmear; ++ismear) {
164  if (ismear == 0) {
165  m_smear->smear(m_Usmear[ismear], *m_U);
166  } else {
167  m_smear->smear(m_Usmear[ismear], m_Usmear[ismear-1]);
168  }
169 
170  }
171  }
172 
173  ++m_status_linkv;
174 }
175 
176 //============================================================END=====
director_Smear.h
Director_Smear::m_U
Field_G * m_U
original thin link var.
Definition: director_Smear.h:42
Parameters::set_string
void set_string(const string &key, const string &value)
Definition: parameters.cpp:39
CommonParameters::Ndim
static int Ndim()
Definition: commonParameters.h:117
Parameters
Class for parameters.
Definition: parameters.h:46
Director_Smear::m_Usmear
std::vector< Field_G > m_Usmear
smeared configs.
Definition: director_Smear.h:43
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.cpp:518
Director_Smear::m_status_linkv
int m_status_linkv
set to zero when link var. is updated
Definition: director_Smear.h:44
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.cpp:508
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition: bridgeIO.cpp:281
CommonParameters::Nvol
static int Nvol()
Definition: commonParameters.h:109
Director_Smear::getptr_smearedConfig
Field * getptr_smearedConfig(const int i_smear)
get pointer to i-th smeared config (0th is original thin link)
Definition: director_Smear.cpp:131
Director_Smear::set_parameters
void set_parameters(const Parameters &params)
set parameters, must be called before set_config
Definition: director_Smear.cpp:63
Director_Smear::smear
void smear()
smearing is performed by calling a function of Smear object
Definition: director_Smear.cpp:160
Director_Smear::class_name
static const std::string class_name
Definition: director_Smear.h:35
Director_Smear::init
void init()
Definition: director_Smear.cpp:16
threadManager.h
Director_Smear::get_parameters
void get_parameters(Parameters &params) const
get parameters
Definition: director_Smear.cpp:113
ASmear::smear
virtual void smear(Field_G &, const Field_G &)=0
CommonParameters::Vlevel
static Bridge::VerboseLevel Vlevel()
Definition: commonParameters.h:122
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
Parameters::set_int
void set_int(const string &key, const int value)
Definition: parameters.cpp:36
Director_Smear::get_config
Field_G * get_config()
Definition: director_Smear.cpp:144
Parameters::fetch_string
int fetch_string(const string &key, string &value) const
Definition: parameters.cpp:378
Director_Smear::m_vl
Bridge::VerboseLevel m_vl
Definition: director_Smear.h:38
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
Field
Container of Field-type object.
Definition: field.h:46
ThreadManager::get_thread_id
static int get_thread_id()
returns thread id.
Definition: threadManager.cpp:253
Director_Smear::m_Nsmear
int m_Nsmear
number of smearing to be applied
Definition: director_Smear.h:40
Director_Smear::set_config
void set_config(Field *U)
set pointer to original thin link variable
Definition: director_Smear.cpp:122
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Parameters::fetch_int
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:346
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
Director_Smear::m_smear
Smear * m_smear
smearing operator
Definition: director_Smear.h:41
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
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:216