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