Bridge++  Version 1.4.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
smear_HYP.h
Go to the documentation of this file.
1 
13 #ifndef SMEAR_HYP_INCLUDED
14 #define SMEAR_HYP_INCLUDED
15 
16 #include "smear.h"
17 #include "Field/shiftField_lex.h"
18 
19 #include "IO/bridgeIO.h"
20 using Bridge::vout;
21 
23 
33 class Smear_HYP : public Smear
34 {
35  public:
36  static const std::string class_name;
37 
38  private:
39  int m_Ndim, m_Nvol;
40  double m_alpha1, m_alpha2, m_alpha3; // HYP smearing parameters
42  std::vector<Field_G> m_U;
43  std::vector<Field_G> m_v1;
44  std::vector<Field_G> m_v2;
46 
47  public:
49  : Smear(), m_proj(proj)
50  {
51  init();
52  }
53 
55  : Smear(), m_proj(proj.get())
56  {
57  init();
58  }
59 
61 
62  void init();
63 
64  void set_parameters(const Parameters& params);
65  void set_parameters(double alpha1, double alpha2, double alpha3);
66 
67  void smear(Field_G& Usmear, const Field_G& U);
68 
69  private:
70  void staple(Field_G&, const Field_G&, const Field_G&,
71  int mu, int nu);
72 
73  void step1();
74  void step2();
75  void step3(Field_G&);
76 
77  int index_v1(int mu, int nu, int rho)
78  {
79  int sig = 6 - mu - nu - rho;
80 
81  if (sig > mu) --sig;
82  return mu + m_Ndim * sig;
83  }
84 
85  int index_v2(int mu, int nu)
86  {
87  if (nu > mu) --nu;
88  return mu + m_Ndim * nu;
89  }
90 
91  int size_v1()
92  {
93  return m_Ndim * (m_Ndim - 1);
94  }
95 
96  int size_v2()
97  {
98  return m_Ndim * (m_Ndim - 1);
99  }
100 };
101 #endif
BridgeIO vout
Definition: bridgeIO.cpp:495
std::vector< Field_G > m_v2
Definition: smear_HYP.h:44
void init()
Definition: smear_HYP.cpp:77
double m_alpha2
Definition: smear_HYP.h:40
int index_v2(int mu, int nu)
Definition: smear_HYP.h:85
HYP smearing of link variables.
Definition: smear_HYP.h:33
int m_Nvol
Definition: smear_HYP.h:39
void set_parameters(const Parameters &params)
Definition: smear_HYP.cpp:34
Class for parameters.
Definition: parameters.h:46
Smear_HYP(unique_ptr< Projection > &proj)
Definition: smear_HYP.h:54
void step3(Field_G &)
Definition: smear_HYP.cpp:160
static const std::string class_name
Definition: smear_HYP.h:36
int size_v1()
Definition: smear_HYP.h:91
Projection * m_proj
Definition: smear_HYP.h:41
int index_v1(int mu, int nu, int rho)
Definition: smear_HYP.h:77
int size_v2()
Definition: smear_HYP.h:96
SU(N) gauge field.
Definition: field_G.h:38
void step1()
Definition: smear_HYP.cpp:111
std::vector< Field_G > m_U
Definition: smear_HYP.h:42
ShiftField_lex m_shift
Definition: smear_HYP.h:45
double m_alpha1
Definition: smear_HYP.h:40
base class for projection operator into gauge group.
Definition: projection.h:31
void step2()
Definition: smear_HYP.cpp:134
Smear_HYP(Projection *proj)
Definition: smear_HYP.h:48
base class for smearing of link variables.
Definition: smear.h:36
Methods to shift a field in the lexical site index.
void smear(Field_G &Usmear, const Field_G &U)
Definition: smear_HYP.cpp:89
void staple(Field_G &, const Field_G &, const Field_G &, int mu, int nu)
Definition: smear_HYP.cpp:184
double m_alpha3
Definition: smear_HYP.h:40
std::vector< Field_G > m_v1
Definition: smear_HYP.h:43
int m_Ndim
Definition: smear_HYP.h:39
~Smear_HYP()
Definition: smear_HYP.h:60