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