16 #ifdef USE_PARAMETERS_FACTORY
32 #ifdef USE_PARAMETERS_FACTORY
47 const string str_vlevel = params.
get_string(
"verbose_level");
52 double c_plaq, c_rect;
92 static const double PI = 4.0 * atan(1.0);
93 static const double PI2 = PI * PI;
96 std::vector<Field_G> Fmunu_1x1(6), Fmunu_1x2(6);
102 for (
int mu = 0; mu < Ndim; ++mu) {
103 for (
int nu = mu + 1; nu < Ndim; ++nu) {
139 Q_1x1 / (32.0 * PI2),
140 Q_1x2 / (2.0 * (32.0 * PI2)));
151 const int mu,
const int nu,
Field_G& U)
157 Field_G Cup(Nvol, 1), Cdn(Nvol, 1);
159 Field_G v(Nvol, 1), v2(Nvol, 1);
167 staple.
upper(Cup, U, mu, nu);
173 staple.
lower(Cdn, U, mu, nu);
208 axpy(Fmunu_1x1, 1.0, v2);
212 scal(Fmunu_1x1, -0.25);
219 const int mu,
const int nu,
Field_G& U)
225 Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
226 Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
227 Field_G Umu(Nvol, 1), Unu(Nvol, 1);
228 Field_G Umu_nu(Nvol, 1), Unu_mu(Nvol, 1);
230 Field_G v(Nvol, 1), w(Nvol, 1), c(Nvol, 1);
237 staple.
upper(Cup1, U, mu, nu);
243 staple.
upper(Cup2, U, nu, mu);
249 staple.
lower(Cdn1, U, mu, nu);
255 staple.
lower(Cdn2, U, nu, mu);
257 Umu.setpart_ex(0, U, mu);
298 axpy(Fmunu_1x2, 1.0, v);
318 axpy(Fmunu_1x2, 1.0, v);
339 axpy(Fmunu_1x2, 1.0, v);
360 axpy(Fmunu_1x2, 1.0, rect);
384 axpy(Fmunu_1x2, 1.0, v);
408 axpy(Fmunu_1x2, 1.0, v);
433 axpy(Fmunu_1x2, 1.0, v);
438 scal(Fmunu_1x2, -0.25);
450 for (
int site = 0; site < Nvol; ++site) {
451 Q_topo +=
ReTr(Fmunu_1.
mat(site) * Fmunu_2.
mat(site));
void scal(Field &x, const double a)
scal(x, a): x = a * x
void Register_string(const string &, const string &)
void mult_Field_Gdn(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
static const std::string class_name
void general(const char *format,...)
double measure(Field_G &U)
main function to measure Topological Charge.
Parameters_TopologicalCharge()
void construct_Fmunu_1x2(Field_G &Fmunu, int mu, int nu, Field_G &U)
void construct_Fmunu_1x1(Field_G &Fmunu, int mu, int nu, Field_G &U)
void mult_Field_Gdd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
double contract_epsilon_tensor(Field_G &Fmunu_1, Field_G &Fmunu_2)
void ah_Field_G(Field_G &w, const int ex)
void multadd_Field_Gdn(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2, const double ff)
void mult_Field_Gnd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
void mult_Field_Gnn(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
void backward(Field &, const Field &, const int mu)
void paranoiac(const char *format,...)
void multadd_Field_Gnd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2, const double ff)
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
void crucial(const char *format,...)
void lower(Field_G &, const Field_G &, const int mu, const int nu)
constructs lower staple in mu-nu plane.
static bool Register(const std::string &realm, const creator_callback &cb)
Bridge::VerboseLevel m_vl
virtual void set_parameters(const Parameters ¶ms)
setting parameters.
static int reduce_sum(int count, double *recv_buf, double *send_buf, int pattern=0)
make a global sum of an array of double over the communicator. pattern specifies the dimensions to be...
void Register_double(const string &, const double)
void setpart_ex(int ex, const Field &w, int exw)
int fetch_double(const string &key, double &val) const
string get_string(const string &key) const
Mat_SU_N mat(const int site, const int mn=0) const
void upper(Field_G &, const Field_G &, const int mu, const int nu)
constructs upper staple in mu-nu plane.
static VerboseLevel set_verbose_level(const std::string &str)
double ReTr(const Mat_SU_N &m)
void forward(Field &, const Field &, const int mu)