Bridge++  Version 1.4.4
 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 
17 
18 const std::string Director_Smear::class_name = "Director_Smear";
19 
20 //====================================================================
22 {
23  const string str_vlevel = params.get_string("verbose_level");
24 
25  m_vl = vout.set_verbose_level(str_vlevel);
26 
27  //- fetch and check input parameters
28  int Nsmear;
29 
30  int err = 0;
31  err += params.fetch_int("number_of_smearing", Nsmear);
32 
33  if (err) {
34  vout.crucial(m_vl, "Error at %s: input parameter not found.\n", class_name.c_str());
35  exit(EXIT_FAILURE);
36  }
37 
38 
39  set_parameters(Nsmear);
40 }
41 
42 
43 //====================================================================
45 {
46  int Nvol = CommonParameters::Nvol();
47  int Ndim = CommonParameters::Ndim();
48 
49  //- print input parameters
50  vout.general(m_vl, "%s:\n", class_name.c_str());
51  vout.general(m_vl, " Nsmear = %d\n", Nsmear);
52 
53  //- range check
54  // NB. Nsmear == 0 is allowed.
55 
56  //- store values
57  m_Nsmear = Nsmear;
58 
59  //- post-process
60  m_Usmear.resize(m_Nsmear);
61  if (m_Nsmear > 0) {
62  for (int i_smear = 0; i_smear < m_Nsmear; ++i_smear) {
63  m_Usmear[i_smear].reset(Nvol, Ndim);
64  }
65  vout.detailed(m_vl, " size of Usmear[i_smear] was set.\n");
66  }
67 }
68 
69 
70 //====================================================================
72 {
73  m_U = (Field_G *)U;
74 
75  if (m_status_linkv == 0) smear();
76 }
77 
78 
79 //====================================================================
81 {
82  set_config(U.get());
83 }
84 
85 
86 //====================================================================
88 {
89  assert(m_U != 0);
90 
91  if (i_smear == 0) {
92  return m_U;
93  } else {
94  return &m_Usmear[i_smear - 1];
95  }
96 }
97 
98 
99 //====================================================================
101 {
102  return m_Nsmear == 0 ? m_U : &m_Usmear[m_Nsmear - 1];
103 }
104 
105 
106 //====================================================================
108 {
109  if (i_smear == 0) return m_U;
110 
111  return &m_Usmear[i_smear - 1];
112 }
113 
114 
115 //====================================================================
117 {
118  if (m_Nsmear > 0) {
119  int Nvol = m_U->nvol();
120  int Nex = m_U->nex();
121 
122  Field_G Usmear(Nvol, Nex);
123  Field_G Uprev(Nvol, Nex);
124 
125  for (int i_smear = 0; i_smear < m_Nsmear; ++i_smear) {
126  if (i_smear == 0) {
127  Uprev = *m_U;
128  } else {
129  Uprev = m_Usmear[i_smear - 1];
130  }
131  m_smear->smear(Usmear, Uprev);
132  m_Usmear[i_smear] = (Field)Usmear;
133  }
134  }
135 
136  ++m_status_linkv;
137 }
138 
139 
140 //====================================================================
141 //============================================================END=====
void smear()
smearing is performed by calling a function of Smear object
BridgeIO vout
Definition: bridgeIO.cpp:495
void detailed(const char *format,...)
Definition: bridgeIO.cpp:212
void general(const char *format,...)
Definition: bridgeIO.cpp:195
Container of Field-type object.
Definition: field.h:39
int nvol() const
Definition: field.h:116
Class for parameters.
Definition: parameters.h:46
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
int fetch_int(const string &key, int &value) const
Definition: parameters.cpp:230
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:178
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:116
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:131
int m_Nsmear
number of smearing to be applied
Field_G * m_U
original thin link var.