Bridge++  Ver.2.1.3
smear_HYP.h
Go to the documentation of this file.
1 
10 #ifndef SMEAR_HYP_INCLUDED
11 #define SMEAR_HYP_INCLUDED
12 
13 #include "smear.h"
14 
15 #include "Field/shiftField_lex.h"
16 
17 #include "IO/bridgeIO.h"
18 using Bridge::vout;
19 
21 
33 class Smear_HYP : public Smear
34 {
35  public:
36  static const std::string class_name;
37 
38  private:
39  int m_Ndim;
40  int m_Nvol;
41  double m_alpha1;
42  double m_alpha2;
43  double m_alpha3;
45 
47 
49 
50  std::vector<Field_G> m_U;
51  std::vector<Field_G> m_v1;
52  std::vector<Field_G> m_v2;
53 
60 
61  public:
63  : m_proj(proj)
64  { init(); }
65 
66  Smear_HYP(Projection *proj, const Parameters& params)
67  : m_proj(proj)
68  { init(params); }
69 
71 
72  void set_parameters(const Parameters& params);
73 
74  void set_parameters(const double alpha1,
75  const double alpha2,
76  const double alpha3);
77 
78  void get_parameters(Parameters& params) const;
79 
80  void smear(Field_G& Usmear, const Field_G& U);
81 
82  private:
83  void init();
84 
85  void init(const Parameters& params);
86 
87  void tidyup();
88 
89  void staple(Field_G&, const Field_G&, const Field_G&,
90  const int mu, const int nu);
91 
92  void step1();
93  void step2();
94  void step3(Field_G&);
95 
96  int index_v1(const int mu, const int nu, const int rho)
97  {
98  int sig = 6 - mu - nu - rho;
99  if (sig > mu) --sig;
100  return mu + m_Ndim * sig;
101  }
102 
103  int index_v2(const int mu, int nu)
104  {
105  if (nu > mu) --nu;
106  return mu + m_Ndim * nu;
107  }
108 
109  int size_v1(){ return m_Ndim * (m_Ndim - 1); }
110 
111  int size_v2(){ return m_Ndim * (m_Ndim - 1); }
112 
113 #ifdef USE_FACTORY
114  private:
115  static Smear *create_object(Projection *proj)
116  {
117  return new Smear_HYP(proj);
118  }
119 
120  static Smear *create_object_with_params(Projection *proj, const Parameters& params)
121  {
122  return new Smear_HYP(proj, params);
123  }
124 
125  public:
126  static bool register_factory()
127  {
128  bool init = true;
129  init &= Smear::Factory::Register("HYP", create_object);
130  init &= Smear::Factory_params::Register("HYP", create_object_with_params);
131  return init;
132  }
133 #endif
134 };
135 #endif
Smear_HYP::tidyup
void tidyup()
Definition: smear_HYP.cpp:93
Smear_HYP::m_v1
std::vector< Field_G > m_v1
Definition: smear_HYP.h:51
bridgeIO.h
Smear_HYP::m_vt2
Field_G * m_vt2
Definition: smear_HYP.h:59
Smear_HYP::step1
void step1()
Definition: smear_HYP.cpp:192
Parameters
Class for parameters.
Definition: parameters.h:46
Smear_HYP::m_Nvol
int m_Nvol
spacetime volume
Definition: smear_HYP.h:40
Smear_HYP::size_v2
int size_v2()
Definition: smear_HYP.h:111
Smear_HYP::m_alpha3
double m_alpha3
HYP smearing parameter (level-3)
Definition: smear_HYP.h:43
Smear_HYP::m_alpha2
double m_alpha2
HYP smearing parameter (level-2)
Definition: smear_HYP.h:42
shiftField_lex.h
Smear_HYP::index_v2
int index_v2(const int mu, int nu)
Definition: smear_HYP.h:103
Smear_HYP::staple
void staple(Field_G &, const Field_G &, const Field_G &, const int mu, const int nu)
Definition: smear_HYP.cpp:281
Smear_HYP::init
void init()
Definition: smear_HYP.cpp:61
Smear_HYP::m_c2
Field_G * m_c2
Definition: smear_HYP.h:55
Smear_HYP::m_Ndim
int m_Ndim
spacetime dimension
Definition: smear_HYP.h:39
Smear_HYP::Smear_HYP
Smear_HYP(Projection *proj, const Parameters &params)
Definition: smear_HYP.h:66
Smear_HYP::class_name
static const std::string class_name
Definition: smear_HYP.h:36
Smear_HYP::set_parameters
void set_parameters(const Parameters &params)
Definition: smear_HYP.cpp:109
Smear_HYP::size_v1
int size_v1()
Definition: smear_HYP.h:109
Smear_HYP::index_v1
int index_v1(const int mu, const int nu, const int rho)
Definition: smear_HYP.h:96
Smear_HYP::m_vt1
Field_G * m_vt1
Definition: smear_HYP.h:58
Smear_HYP
HYP smearing of link variables.
Definition: smear_HYP.h:33
Smear_HYP::get_parameters
void get_parameters(Parameters &params) const
Definition: smear_HYP.cpp:158
Smear_HYP::m_vl
Bridge::VerboseLevel m_vl
Definition: smear_HYP.h:44
Smear_HYP::m_ut
Field_G * m_ut
Definition: smear_HYP.h:57
Smear_HYP::step3
void step3(Field_G &)
Definition: smear_HYP.cpp:251
Smear_HYP::m_U
std::vector< Field_G > m_U
Definition: smear_HYP.h:50
ASmear
Base template class for smearing of link variables.
Definition: asmear.h:31
Smear_HYP::m_alpha1
double m_alpha1
HYP smearing parameter (level-1)
Definition: smear_HYP.h:41
AProjection
Base template class for projection operator into gauge group.
Definition: aprojection.h:31
Smear_HYP::m_proj
Projection * m_proj
Definition: smear_HYP.h:46
Smear_HYP::m_c3
Field_G * m_c3
Definition: smear_HYP.h:56
ShiftField_lex
Methods to shift a field in the lexical site index.
Definition: shiftField_lex.h:39
Smear_HYP::smear
void smear(Field_G &Usmear, const Field_G &U)
Definition: smear_HYP.cpp:169
smear.h
Smear_HYP::Smear_HYP
Smear_HYP(Projection *proj)
Definition: smear_HYP.h:62
Smear_HYP::m_v2
std::vector< Field_G > m_v2
Definition: smear_HYP.h:52
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
Smear_HYP::step2
void step2()
Definition: smear_HYP.cpp:219
Field_G
SU(N) gauge field.
Definition: field_G.h:38
Smear_HYP::m_c1
Field_G * m_c1
Definition: smear_HYP.h:54
Smear_HYP::m_shift
ShiftField_lex * m_shift
Definition: smear_HYP.h:48
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
Smear_HYP::~Smear_HYP
~Smear_HYP()
Definition: smear_HYP.h:70