Bridge++  Ver. 1.3.x
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 #include <valarray>
28 
29 //- parameters class
31 {
32  public:
34 };
35 //- end
36 
38 
39 /*
40  This class fix the gauge of configuration to the Coulomb gauge.
41  The implementation assumes that the dimension is 4 and the
42  Coulomb gauge fixing is performed within each time slice.
43  The algorithm is that developed by the Los Alamos group [see the
44  implementation note].
45  Overrelaxation is incorporated.
46  To escape the Gribov copy, if convergence is not reached on some
47  timeslices within the iterations specified by Nreset, random
48  gauge transformation is performed to reset the configuration on
49  that timeslice.
50  This is the reason that random number generator is needed at the
51  construction of this class.
52 
53  The implementation is not complete:
54  - only applies to SU(3) case: because of specific implementation
55  of maxTr function (Cabibbo-Marinari maximization).
56  - unnecessary arithmetic operations exist for the timeslices
57  on which the gauge is already fixed to good precision.
58  These should be improved in the version beyond test phase.
59  [16 Feb 2012 H.Matsufuru]
60  (Coding history will be recovered from trac.)
61  YAML is implemented. [14 Nov 2012 Y.Namekawa]
62 */
63 
65 {
66  public:
67  static const std::string class_name;
68 
69  private:
70 
71  int m_Niter; // max iteration number
72  int m_Nnaive; // number of naive iterations
73  int m_Nmeas; // interval of measurements
74  int m_Nreset; // Number of iteration to reset the config.
75  double m_Enorm; // convergence criterion
76  double m_wp; // overrelaxation parameter
79 
80  public:
82  : GaugeFixing(), m_Niter(0), m_rand(rand) {}
83 
85 
86  void set_parameters(const Parameters& params);
87  void set_parameters(const int Niter, const int Nnaive,
88  const int Nmeas, const int Nreset,
89  const double Enorm, const double wp);
90 
91  void fix(Field_G& Ufix, const Field_G& Uorg);
92 
93  void gauge_trans_eo(Field_G& Ue, Field_G& Uo, Field_G& Geo, int Ieo);
94 
95  void set_randomGaugeTrans(std::valarray<double>& sg, Field_G& Geo);
96 
98  void gfix_step(std::valarray<double>& sg,
99  Field_G& Ue, Field_G& Uo, double wp);
100 
101  void calc_SG(std::valarray<double>& sg, std::valarray<double>& Fval,
102  Field_G& Ue, Field_G& Uo);
103  void calc_W(Field_G& Weo, Field_G& Ue, Field_G& Uo, int Ieo);
104  void calc_DLT(Field_G& Weo, Field_G& Ue, Field_G& Uo, int Ieo);
105 
106  void maxTr(Field_G&, Field_G&);
107  void maxTr1(Field_G&, Field_G&);
108  void maxTr2(Field_G&, Field_G&);
109  void maxTr3(Field_G&, Field_G&);
110 
111  void sum_global_t(std::valarray<double>& val_global,
112  std::valarray<double>& val_local);
113 };
114 #endif
BridgeIO vout
Definition: bridgeIO.cpp:278
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:38
Even-odd site index.
Definition: index_eo.h:38
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:38
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:39
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:35
void set_parameters(const Parameters &params)
void sum_global_t(std::valarray< double > &val_global, std::valarray< double > &val_local)