Bridge++  Ver.2.1.3
forceSmear_HYP.h
Go to the documentation of this file.
1 
10 #ifndef FORCESMEAR_HYP_INCLUDED
11 #define FORCESMEAR_HYP_INCLUDED
12 
13 #include "lib/Smear/forceSmear.h"
15 #include "lib/IO/bridgeIO.h"
16 using Bridge::vout;
17 
19 
29 class ForceSmear_HYP : public ForceSmear
30 {
31  public:
32  static const std::string class_name;
33 
34  private:
35  int m_Ndim;
36  int m_Nvol;
37  double m_alpha1;
38  double m_alpha2;
39  double m_alpha3;
41 
43 
45 
46  std::vector<Field_G> m_U;
47  std::vector<Field_G> m_v1, m_v2;
48  std::vector<Field_G> m_Sigma3, m_Sigma2;
49  std::vector<Field_G> m_iTheta3, m_iTheta2, m_iTheta1;
50 
57 
58  public:
59 
60  ForceSmear_HYP(Projection *proj, const Parameters& params)
61  : m_proj(proj)
62  { init(params); }
63 
65 
66  void set_parameters(const Parameters& params);
67  void set_parameters(const double alpha1,
68  const double alpha2,
69  const double alpha3);
70 
71  void get_parameters(Parameters& params) const;
72 
73  void force_udiv(Field_G& Sigma,
74  const Field_G& Sigma_p, const Field_G& U);
75 
76  private:
77 
78  void init(const Parameters& params);
79 
80  void tidyup();
81 
82  void force_step3(Field_G&, const Field_G&);
83  void force_step2(Field_G&);
84  void force_step1(Field_G&);
85 
86  void force_each(Field_G&, const Field_G&, const Field_G&,
87  const Field_G&, const Field_G&,
88  const int mu, const int nu);
89 
90  void smear_step1();
91  void smear_step2();
92 
93  void staple(Field_G&, const Field_G&, const Field_G&,
94  const int mu, const int nu);
95 
96  int idx1(const int mu, const int nu, const int rho)
97  {
98  int sig = 6 - mu - nu - rho;
99 
100  if (sig > mu) --sig;
101  return mu + m_Ndim * sig;
102  }
103 
104  int idx1b(const int mu, int nu, int rho)
105  {
106  if (nu > mu) --nu;
107  if (rho > mu) --rho;
108  if (rho > nu) --rho;
109  return mu + m_Ndim * (nu + (m_Ndim - 1) * rho);
110  }
111 
112  int idx2(const int mu, int nu)
113  {
114  if (nu > mu) --nu;
115  return mu + m_Ndim * nu;
116  }
117 
118  int size1(){ return m_Ndim * (m_Ndim - 1); }
119 
120  int size1b(){ return m_Ndim * (m_Ndim - 1) * (m_Ndim - 2); }
121 
122  int size2(){ return m_Ndim * (m_Ndim - 1); }
123 
124 #ifdef USE_FACTORY
125 
126  private:
127 
128  static ForceSmear *create_object_with_params(Projection *proj,
129  const Parameters& params)
130  { return new ForceSmear_HYP(proj, params); }
131 
132  public:
133  static bool register_factory()
134  {
135  bool init = true;
136  init &= ForceSmear::Factory_params::Register("HYP",
137  create_object_with_params);
138  return init;
139  }
140 #endif
141 
142 };
143 #endif
ForceSmear_HYP::m_vl
Bridge::VerboseLevel m_vl
Definition: forceSmear_HYP.h:40
ForceSmear_HYP::force_udiv
void force_udiv(Field_G &Sigma, const Field_G &Sigma_p, const Field_G &U)
Definition: forceSmear_HYP.cpp:143
bridgeIO.h
ForceSmear_HYP::smear_step2
void smear_step2()
Definition: forceSmear_HYP.cpp:401
ForceSmear_HYP::m_Ndim
int m_Ndim
spacetime dimension
Definition: forceSmear_HYP.h:35
ForceSmear_HYP::m_iTheta2
std::vector< Field_G > m_iTheta2
Definition: forceSmear_HYP.h:49
ForceSmear_HYP::smear_step1
void smear_step1()
Definition: forceSmear_HYP.cpp:378
Parameters
Class for parameters.
Definition: parameters.h:46
ForceSmear_HYP::force_step1
void force_step1(Field_G &)
Definition: forceSmear_HYP.cpp:272
ForceSmear_HYP::m_iTheta3
std::vector< Field_G > m_iTheta3
Definition: forceSmear_HYP.h:49
ForceSmear_HYP::m_vt1
Field_G * m_vt1
Definition: forceSmear_HYP.h:51
shiftField_lex.h
ForceSmear_HYP::m_v1
std::vector< Field_G > m_v1
Definition: forceSmear_HYP.h:47
ForceSmear_HYP::force_step3
void force_step3(Field_G &, const Field_G &)
Definition: forceSmear_HYP.cpp:181
ForceSmear_HYP::idx2
int idx2(const int mu, int nu)
Definition: forceSmear_HYP.h:112
ForceSmear_HYP::ForceSmear_HYP
ForceSmear_HYP(Projection *proj, const Parameters &params)
Definition: forceSmear_HYP.h:60
ForceSmear_HYP::m_vt2
Field_G * m_vt2
Definition: forceSmear_HYP.h:52
ForceSmear_HYP::size2
int size2()
Definition: forceSmear_HYP.h:122
ForceSmear_HYP::m_Sigma3
std::vector< Field_G > m_Sigma3
Definition: forceSmear_HYP.h:48
ForceSmear_HYP::class_name
static const std::string class_name
Definition: forceSmear_HYP.h:32
ForceSmear_HYP::get_parameters
void get_parameters(Parameters &params) const
Definition: forceSmear_HYP.cpp:132
ForceSmear_HYP::m_Nvol
int m_Nvol
spacetime volume
Definition: forceSmear_HYP.h:36
ForceSmear_HYP::m_alpha3
double m_alpha3
HYP smearing parameter (level-3)
Definition: forceSmear_HYP.h:39
forceSmear.h
ForceSmear_HYP::set_parameters
void set_parameters(const Parameters &params)
Definition: forceSmear_HYP.cpp:83
ForceSmear_HYP
Recursive calculation of HYP smeared fermion force.
Definition: forceSmear_HYP.h:29
ForceSmear_HYP::m_v2
std::vector< Field_G > m_v2
Definition: forceSmear_HYP.h:47
ForceSmear_HYP::init
void init(const Parameters &params)
Definition: forceSmear_HYP.cpp:22
ForceSmear_HYP::idx1
int idx1(const int mu, const int nu, const int rho)
Definition: forceSmear_HYP.h:96
ForceSmear_HYP::m_alpha1
double m_alpha1
HYP smearing parameter (level-1)
Definition: forceSmear_HYP.h:37
ForceSmear_HYP::idx1b
int idx1b(const int mu, int nu, int rho)
Definition: forceSmear_HYP.h:104
ForceSmear_HYP::size1b
int size1b()
Definition: forceSmear_HYP.h:120
ForceSmear_HYP::~ForceSmear_HYP
~ForceSmear_HYP()
Definition: forceSmear_HYP.h:64
AForceSmear
Base class for force calculation of smeared operators.
Definition: aforceSmear.h:33
ForceSmear_HYP::force_step2
void force_step2(Field_G &)
Definition: forceSmear_HYP.cpp:224
AProjection
Base template class for projection operator into gauge group.
Definition: aprojection.h:31
ForceSmear_HYP::m_Sigma2
std::vector< Field_G > m_Sigma2
Definition: forceSmear_HYP.h:48
ShiftField_lex
Methods to shift a field in the lexical site index.
Definition: shiftField_lex.h:39
ForceSmear_HYP::m_shift
ShiftField_lex * m_shift
Definition: forceSmear_HYP.h:44
ForceSmear_HYP::m_ct1
Field_G * m_ct1
Definition: forceSmear_HYP.h:54
ForceSmear_HYP::m_ct3
Field_G * m_ct3
Definition: forceSmear_HYP.h:56
ForceSmear_HYP::tidyup
void tidyup()
Definition: forceSmear_HYP.cpp:70
ForceSmear_HYP::m_alpha2
double m_alpha2
HYP smearing parameter (level-2)
Definition: forceSmear_HYP.h:38
ForceSmear_HYP::m_ct2
Field_G * m_ct2
Definition: forceSmear_HYP.h:55
ForceSmear_HYP::size1
int size1()
Definition: forceSmear_HYP.h:118
ForceSmear_HYP::m_iTheta1
std::vector< Field_G > m_iTheta1
Definition: forceSmear_HYP.h:49
ForceSmear_HYP::staple
void staple(Field_G &, const Field_G &, const Field_G &, const int mu, const int nu)
Definition: forceSmear_HYP.cpp:427
ForceSmear_HYP::m_U
std::vector< Field_G > m_U
Definition: forceSmear_HYP.h:46
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
Field_G
SU(N) gauge field.
Definition: field_G.h:38
ForceSmear_HYP::m_proj
Projection * m_proj
Definition: forceSmear_HYP.h:42
ForceSmear_HYP::m_vt3
Field_G * m_vt3
Definition: forceSmear_HYP.h:53
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572
ForceSmear_HYP::force_each
void force_each(Field_G &, const Field_G &, const Field_G &, const Field_G &, const Field_G &, const int mu, const int nu)
Definition: forceSmear_HYP.cpp:320