Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gaugeFixing_Coulomb.h
Go to the documentation of this file.
1 
14 #ifndef GAUGEFIXING_COULOMB_INCLUDED
15 #define GAUGEFIXING_COULOMB_INCLUDED
16 
17 #include "gaugeFixing.h"
18 
19 #include "index_eo.h"
20 #include "shiftField_eo.h"
21 
22 #include "randomNumbers.h"
23 
24 #include "bridgeIO.h"
25 using Bridge::vout;
26 
27 //- parameters class
29 {
30  public:
32 };
33 //- end
34 
36 
37 /*
38  This class fix the gauge of configuration to the Coulomb gauge.
39  The implementation assumes that the dimension is 4 and the
40  Coulomb gauge fixing is performed within each time slice.
41  The algorithm is that developed by the Los Alamos group [see the
42  implementation note].
43  Overrelaxation is incorporated.
44  To escape the Gribov copy, if convergence is not reached on some
45  timeslices within the iterations specified by Nreset, random
46  gauge transformation is performed to reset the configuration on
47  that timeslice.
48  This is the reason that random number generator is needed at the
49  construction of this class.
50 
51  The implementation is not complete:
52  - only applies to SU(3) case: because of specific implementation
53  of maxTr function (Cabibbo-Marinari maximization).
54  - unnecessary arithmetic operations exist for the timeslices
55  on which the gauge is already fixed to good precision.
56  These should be improved in the version beyond test phase.
57  [16 Feb 2012 H.Matsufuru]
58  (Coding history will be recovered from trac.)
59  YAML is implemented. [14 Nov 2012 Y.Namekawa]
60 */
61 
63 {
64  public:
65  static const std::string class_name;
66 
67  private:
68 
69  int m_Niter; // max iteration number
70  int m_Nnaive; // number of naive iterations
71  int m_Nmeas; // interval of measurements
72  int m_Nreset; // Number of iteration to reset the config.
73  double m_Enorm; // convergence criterion
74  double m_wp; // overrelaxation parameter
77 
78  public:
80  : GaugeFixing(), m_Niter(0), m_rand(rand) {}
81 
83 
84  void set_parameters(const Parameters& params);
85  void set_parameters(const int Niter, const int Nnaive,
86  const int Nmeas, const int Nreset,
87  const double Enorm, const double wp);
88 
89  void fix(Field_G& Ufix, const Field_G& Uorg);
90 
91  void gauge_trans_eo(Field_G& Ue, Field_G& Uo, Field_G& Geo, int Ieo);
92 
93  void set_randomGaugeTrans(std::valarray<double>& sg, Field_G& Geo);
94 
96  void gfix_step(std::valarray<double>& sg,
97  Field_G& Ue, Field_G& Uo, double wp);
98 
99  void calc_SG(std::valarray<double>& sg, std::valarray<double>& Fval,
100  Field_G& Ue, Field_G& Uo);
101  void calc_W(Field_G& Weo, Field_G& Ue, Field_G& Uo, int Ieo);
102  void calc_DLT(Field_G& Weo, Field_G& Ue, Field_G& Uo, int Ieo);
103 
104  void maxTr(Field_G&, Field_G&);
105  void maxTr1(Field_G&, Field_G&);
106  void maxTr2(Field_G&, Field_G&);
107  void maxTr3(Field_G&, Field_G&);
108 
109  void sum_global_t(std::valarray<double>& val_global,
110  std::valarray<double>& val_local);
111 };
112 #endif
BridgeIO vout
Definition: bridgeIO.cpp:207
void calc_DLT(Field_G &Weo, Field_G &Ue, Field_G &Uo, int Ieo)
Coulomb gauge fixing.
RandomNumbers * m_rand
Class for parameters.
Definition: parameters.h:40
Even-odd site index.
Definition: index_eo.h:39
void calc_W(Field_G &Weo, Field_G &Ue, Field_G &Uo, int Ieo)
void maxTr3(Field_G &, Field_G &)
void gfix_step(std::valarray< double > &sg, Field_G &Ue, Field_G &Uo, double wp)
one step of gauge fixing with overrelaxation parameter wp.
SU(N) gauge field.
Definition: field_G.h:36
void maxTr1(Field_G &, Field_G &)
void maxTr(Field_G &, Field_G &)
GaugeFixing_Coulomb(RandomNumbers *rand)
void fix(Field_G &Ufix, const Field_G &Uorg)
void maxTr2(Field_G &, Field_G &)
void gauge_trans_eo(Field_G &Ue, Field_G &Uo, Field_G &Geo, int Ieo)
void set_randomGaugeTrans(std::valarray< double > &sg, Field_G &Geo)
Base class of random number generators.
Definition: randomNumbers.h:40
void calc_SG(std::valarray< double > &sg, std::valarray< double > &Fval, Field_G &Ue, Field_G &Uo)
static const std::string class_name
gauge fixing.
Definition: gaugeFixing.h:34
void set_parameters(const Parameters &params)
void sum_global_t(std::valarray< double > &val_global, std::valarray< double > &val_local)