Go to the documentation of this file.
38 err += params.
fetch_int(
"spatial_correlator_size", Nspc_size);
39 err += params.
fetch_int(
"number_of_correlator_type", Ntype);
97 m_Nvol_ext = m_Nx_ext * m_Ny_ext * m_Nz_ext * m_Nt_ext;
101 m_Nmax[0] = Nspc_size;
102 m_Nmax[1] = Nspc_size;
103 m_Nmax[2] = Nspc_size / 2;
104 m_Nmax[3] = Nspc_size;
105 m_Nmax[4] = Nspc_size / 2;
106 m_Nmax[5] = Nspc_size / 2;
123 const int Nvol_spc = Nx * Ny * Nz;
131 const int Ndim_spc = Ndim - 1;
133 m_Nunit.resize(m_Ntype_max);
134 m_Nmax.resize(m_Ntype_max);
136 for (
int i = 0; i < m_Ntype_max; ++i) {
137 m_Nunit[i].resize(Ndim_spc);
142 assert(m_Ntype_max >= 6);
184 if (ith == 0) ploop = ploop1;
188 std::ofstream log_file;
196 real(ploop), imag(ploop));
220 const int Nvol = U.
nvol();
221 assert(Nvol == Nx * Ny * Nz * Nt);
223 const int Nvol_spc =
m_P.
nvol();
224 assert(Nvol_spc == Nx * Ny * Nz);
229 int ith, nth, is, ns;
230 set_threadtask(ith, nth, is, ns, Nvol_spc);
233 const Index_lex index_spc(Nx, Ny, Nz, 1);
238 for (
int site2 = is; site2 < ns; ++site2) {
240 int y = (site2 % (Nx * Ny) - x) / Nx;
241 int z = (site2 - Nx * y - x) / (Nx * Ny);
243 int site = index.
site(x, y, z, t);
252 for (
int t = 1; t < Nt; ++t) {
253 for (
int site2 = is; site2 < ns; ++site2) {
255 int y = (site2 % (Nx * Ny) - x) / Nx;
256 int z = (site2 - Nx * y - x) / (Nx * Ny);
258 int site = index.
site(x, y, z, t);
277 const int size_cp =
m_P.
nin() * Nvol_spc;
279 for (
int ipe_t = 1; ipe_t < Npe_t; ++ipe_t) {
305 for (
int site = is; site < ns; ++site) {
317 const double re_ploop = real(tr) / (Nc * Lvol_spc * Npe_t);
318 const double im_ploop = imag(tr) / (Nc * Lvol_spc * Npe_t);
320 ploop = cmplx(re_ploop, im_ploop);
void init(const std::string &filename)
void set_string(const string &key, const string &value)
std::string m_filename_output
static const std::string class_name
void set_mat(const int site, const int mn, const Mat_SU_N &U)
int m_Nspc_size
parameters set by user
virtual void get_parameters(Parameters ¶ms) const
Bridge::VerboseLevel m_vl
int non_negative(const int v)
int m_Ntype
number of measured loop-type
void copy(Field &y, const Field &x)
copy(y, x): y = x
void calc_ploop(dcomplex &ploop, const Field_G &U)
Polyakov loop measurement (multi-threaded).
dcomplex Tr(const Mat_SU_N &m)
dcomplex measure_ploop(const Field_G &U)
Polyakov loop measurement.
static int npe(const int dir)
logical grid extent
static void reduce_sum_global(dcomplex &value, const int i_thread, const int Nthread)
global reduction with summation: dcomplex values are assumed thread local.
void reset(const int Nvol, const int Nex)
virtual void set_parameters(const Parameters ¶ms)
setting parameters: only for Polyakov loop correlators.
void mult_nn(const Mat_SU_N &u1, const Mat_SU_N &u2)
int site(const int &x, const int &y, const int &z, const int &t) const
const double * ptr(const int jin, const int site, const int jex) const
static VerboseLevel set_verbose_level(const std::string &str)
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 set_int(const string &key, const int value)
int fetch_string(const string &key, string &value) const
string get_string(const string &key) const
void crucial(const char *format,...)
void init()
Polyakov loop correlator measurement (to be implemented).
static int exchange(int count, dcomplex *recv_buf, dcomplex *send_buf, int idir, int ipm, int tag)
receive array of dcomplex from upstream specified by idir and ipm, and send array to downstream.
static int get_thread_id()
returns thread id.
Mat_SU_N mat(const int site, const int mn=0) const
std::ostream & getStream()
int fetch_int(const string &key, int &value) const
void general(const char *format,...)
static void assert_single_thread(const std::string &class_name)
assert currently running on single thread.
static std::string get_verbose_level(const VerboseLevel vl)