Bridge++  Ver. 1.3.x
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 "shiftField_lex.h"
18 
19 #include "bridgeIO.h"
20 using Bridge::vout;
21 
23 
32 //- parameters class
33 class Parameters_Smear_HYP : virtual public Parameters
34 {
35  public:
37 };
38 //- end
39 
40 class Smear_HYP : public Smear
41 {
42  public:
43  static const std::string class_name;
44 
45  private:
46  int m_Ndim, m_Nvol;
47  double m_alpha1, m_alpha2, m_alpha3; // HYP smearing parameters
49  std::vector<Field_G> m_U;
50  std::vector<Field_G> m_v1;
51  std::vector<Field_G> m_v2;
53 
54  public:
56  : Smear(), m_proj(proj)
57  {
58  init();
59  }
60 
62  : Smear(), m_proj(proj.get())
63  {
64  init();
65  }
66 
68 
69  void init();
70 
71  void set_parameters(const Parameters& params);
72  void set_parameters(double alpha1, double alpha2, double alpha3);
73 
74  void smear(Field_G& Usmear, const Field_G& U);
75 
76  private:
77  void staple(Field_G&, const Field_G&, const Field_G&,
78  int mu, int nu);
79 
80  void step1();
81  void step2();
82  void step3(Field_G&);
83 
84  int index_v1(int mu, int nu, int rho)
85  {
86  int sig = 6 - mu - nu - rho;
87 
88  if (sig > mu) --sig;
89  return mu + m_Ndim * sig;
90  }
91 
92  int index_v2(int mu, int nu)
93  {
94  if (nu > mu) --nu;
95  return mu + m_Ndim * nu;
96  }
97 
98  int size_v1()
99  {
100  return m_Ndim * (m_Ndim - 1);
101  }
102 
103  int size_v2()
104  {
105  return m_Ndim * (m_Ndim - 1);
106  }
107 };
108 #endif
BridgeIO vout
Definition: bridgeIO.cpp:278
std::vector< Field_G > m_v2
Definition: smear_HYP.h:51
void init()
Definition: smear_HYP.cpp:101
double m_alpha2
Definition: smear_HYP.h:47
int index_v2(int mu, int nu)
Definition: smear_HYP.h:92
int m_Nvol
Definition: smear_HYP.h:46
void set_parameters(const Parameters &params)
Definition: smear_HYP.cpp:57
Class for parameters.
Definition: parameters.h:38
Smear_HYP(unique_ptr< Projection > &proj)
Definition: smear_HYP.h:61
void step3(Field_G &)
Definition: smear_HYP.cpp:184
static const std::string class_name
Definition: smear_HYP.h:43
int size_v1()
Definition: smear_HYP.h:98
Projection * m_proj
Definition: smear_HYP.h:48
int index_v1(int mu, int nu, int rho)
Definition: smear_HYP.h:84
int size_v2()
Definition: smear_HYP.h:103
HYP smearing of link variables.
Definition: smear_HYP.h:33
SU(N) gauge field.
Definition: field_G.h:38
void step1()
Definition: smear_HYP.cpp:135
std::vector< Field_G > m_U
Definition: smear_HYP.h:49
ShiftField_lex m_shift
Definition: smear_HYP.h:52
double m_alpha1
Definition: smear_HYP.h:47
base class for projection operator into gauge group.
Definition: projection.h:31
void step2()
Definition: smear_HYP.cpp:158
Smear_HYP(Projection *proj)
Definition: smear_HYP.h:55
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:113
void staple(Field_G &, const Field_G &, const Field_G &, int mu, int nu)
Definition: smear_HYP.cpp:208
double m_alpha3
Definition: smear_HYP.h:47
std::vector< Field_G > m_v1
Definition: smear_HYP.h:50
int m_Ndim
Definition: smear_HYP.h:46
~Smear_HYP()
Definition: smear_HYP.h:67