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