Bridge++  Ver.2.1.3
forceSmear_APE.h
Go to the documentation of this file.
1 
10 #ifndef FORCESMEAR_APE_INCLUDED
11 #define FORCESMEAR_APE_INCLUDED
12 
13 #include "lib/Smear/forceSmear.h"
15 #include "lib/Smear/projection.h"
16 #include "lib/Smear/smear_APE.h"
17 #include "lib/IO/bridgeIO.h"
18 using Bridge::vout;
19 
21 
31 class ForceSmear_APE : public ForceSmear
32 {
33  public:
34  static const std::string class_name;
35 
36  private:
37 
38  int m_Ndim, m_Nvol;
39  std::vector<double> m_rho;
41 
43 
45 
46  std::vector<Field_G> m_U;
47  std::vector<Field_G> m_iTheta;
48 
54 
58 
59  public:
60 
61  ForceSmear_APE(Projection *proj, const Parameters& params)
62  : m_proj(proj)
63  { init(params); }
64 
65  // Setting parameters with Parameters object.
66  void set_parameters(const Parameters& params);
67 
68  // Setting parameters with uniform smearing parameter.
69  void set_parameters(const double rho1);
70 
71  // Setting parameters with anisotropic smearing parameter.
72  void set_parameters(const std::vector<double>& rho);
73 
74  // Getting parameters by Parameters object.
75  void get_parameters(Parameters& params) const;
76 
77  // Force computation.
78  void force_udiv(Field_G& Sigma, const Field_G& Sigma_p, const Field_G& U);
79 
80  private:
81  void init(const Parameters& params);
82 
83  void tidyup();
84 
85  int index(int mu, int nu){ return (mu + nu * m_Ndim); }
86 
87  void force_each(Field_G&,
88  const Field_G&, const Field_G&,
89  const Field_G&, const Field_G&, const int mu, const int nu);
90 
91  void staple(Field_G&,
92  const Field_G&, const Field_G&,
93  const int mu, const int nu);
94 
95 #ifdef USE_FACTORY
96  private:
97 
98  static ForceSmear *create_object_with_params(
99  Projection *proj, const Parameters& params)
100  { return new ForceSmear_APE(proj, params); }
101 
102  public:
103  static bool register_factory()
104  {
105  bool init = true;
106  init &= ForceSmear::Factory_params::Register("APE",
107  create_object_with_params);
108  return init;
109  }
110 #endif
111 
112 };
113 #endif
ForceSmear_APE::ForceSmear_APE
ForceSmear_APE(Projection *proj, const Parameters &params)
Definition: forceSmear_APE.h:61
ForceSmear_APE::m_vt2
Field_G * m_vt2
Definition: forceSmear_APE.h:52
bridgeIO.h
ForceSmear_APE::m_shift
ShiftField_lex * m_shift
Definition: forceSmear_APE.h:44
ForceSmear_APE::m_v1
Field_G * m_v1
Definition: forceSmear_APE.h:49
Parameters
Class for parameters.
Definition: parameters.h:46
ForceSmear_APE::m_ct2
Field_G * m_ct2
Definition: forceSmear_APE.h:56
shiftField_lex.h
ForceSmear_APE::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_APE.cpp:215
ForceSmear_APE::get_parameters
void get_parameters(Parameters &params) const
Definition: forceSmear_APE.cpp:152
ForceSmear_APE::m_xi
Field_G * m_xi
Definition: forceSmear_APE.h:57
ForceSmear_APE::m_rho
std::vector< double > m_rho
Definition: forceSmear_APE.h:39
ForceSmear_APE::m_Nvol
int m_Nvol
spacetime dimension and volume
Definition: forceSmear_APE.h:38
ForceSmear_APE::tidyup
void tidyup()
Definition: forceSmear_APE.cpp:70
ForceSmear_APE::set_parameters
void set_parameters(const Parameters &params)
Definition: forceSmear_APE.cpp:86
projection.h
forceSmear.h
ForceSmear_APE::index
int index(int mu, int nu)
Definition: forceSmear_APE.h:85
ForceSmear_APE::m_vl
Bridge::VerboseLevel m_vl
Definition: forceSmear_APE.h:40
ForceSmear_APE::m_v2
Field_G * m_v2
Definition: forceSmear_APE.h:50
ForceSmear_APE::m_U
std::vector< Field_G > m_U
Definition: forceSmear_APE.h:46
ForceSmear_APE::m_proj
Projection * m_proj
Definition: forceSmear_APE.h:42
ForceSmear_APE::m_ct1
Field_G * m_ct1
Definition: forceSmear_APE.h:55
ForceSmear_APE::init
void init(const Parameters &params)
Definition: forceSmear_APE.cpp:22
AForceSmear
Base class for force calculation of smeared operators.
Definition: aforceSmear.h:33
ForceSmear_APE::m_vt1
Field_G * m_vt1
Definition: forceSmear_APE.h:51
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_APE::force_udiv
void force_udiv(Field_G &Sigma, const Field_G &Sigma_p, const Field_G &U)
Definition: forceSmear_APE.cpp:161
ForceSmear_APE::m_vt3
Field_G * m_vt3
Definition: forceSmear_APE.h:53
ForceSmear_APE::m_iTheta
std::vector< Field_G > m_iTheta
Definition: forceSmear_APE.h:47
smear_APE.h
ForceSmear_APE::staple
void staple(Field_G &, const Field_G &, const Field_G &, const int mu, const int nu)
Definition: forceSmear_APE.cpp:267
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
Field_G
SU(N) gauge field.
Definition: field_G.h:38
ForceSmear_APE
Recursive calculation for APE smeared fermion force.
Definition: forceSmear_APE.h:31
ForceSmear_APE::m_Ndim
int m_Ndim
Definition: forceSmear_APE.h:38
ForceSmear_APE::class_name
static const std::string class_name
Definition: forceSmear_APE.h:34
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:572