16 #ifdef USE_PARAMETERS_FACTORY
32 #ifdef USE_PARAMETERS_FACTORY
47 const string str_vlevel = params.
get_string(
"verbose_level");
52 double beta, c_plaq, c_rect;
71 double c_plaq,
double c_rect)
91 int NinG = 2 * Nc * Nc;
103 double H_U =
calcH();
117 int Ndim2 = Ndim * (Ndim - 1) / 2;
118 int size_U = Lvol * Ndim2;
120 Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
121 Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
122 Field_G Umu(Nvol, 1), Unu(Nvol, 1);
123 Field_G v(Nvol, 1), w(Nvol, 1), c(Nvol, 1);
130 for (
int mu = 0; mu < Ndim; ++mu) {
131 for (
int nu = mu + 1; nu < Ndim; ++nu) {
136 for (
int site = 0; site < Nvol; ++site) {
137 plaqF +=
ReTr(
m_U->
mat(site, mu) * Cup1.mat_dag(site));
146 Umu.setpart_ex(0, *
m_U, mu);
154 for (
int site = 0; site < Nvol; ++site) {
169 for (
int site = 0; site < Nvol; ++site) {
178 double plaq = plaqF / Nc;
181 double H_U =
m_c_plaq * (Ndim2 * Lvol - plaqF / Nc)
182 +
m_c_rect * (Ndim2 * Lvol * 2 - rectF / Nc);
201 assert(
m_U->
nin() == Nc * Nc * 2);
203 assert(
m_U->
nex() == Ndim);
205 double betaNc =
m_beta / Nc;
211 Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
212 Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
213 Field_G Umu(Nvol, 1), Unu(Nvol, 1);
214 Field_G v(Nvol, 1), w(Nvol, 1), c(Nvol, 1);
218 for (
int mu = 0; mu < Ndim; ++mu) {
220 for (
int nu = 0; nu < Ndim; ++nu) {
221 if (nu == mu)
continue;
234 Umu.setpart_ex(0, *
m_U, mu);
326 double Fave, Fmax, Fdev;
328 vout.
general(
m_vl,
" Frectangle_ave = %12.6f Frectangle_max = %12.6f Frectangle_dev = %12.6f\n",
double langevin(RandomNumbers *)
Langevis step.
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)
Field_G upper(const Field_G &, const int mu, const int nu)
constructs upper staple in mu-nu plane (wrapping void version).
void general(const char *format,...)
Container of Field-type object.
void addpart_ex(int ex, const Field &w, int exw)
double calcH()
calculate Hamiltonian of this action term.
static const std::string class_name
void mult_Field_Gnd(Field_G &w, const int ex, const Field_G &u1, const int ex1, const Field_G &u2, const int ex2)
Parameters_Action_G_Rectangle()
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
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 set_parameters(const Parameters ¶ms)
void at_Field_G(Field_G &w, const int ex)
void crucial(const char *format,...)
static bool Register(const std::string &realm, const creator_callback &cb)
Bridge::VerboseLevel m_vl
Base class of random number generators.
const Field force()
returns force for molcular dynamical update of conjugate momenta.
Field_G lower(const Field_G &, const int mu, const int nu)
constructs lower staple in mu-nu plane (wrapping void version).
void stat(double &Fave, double &Fmax, double &Fdev) const
determines the statistics of the field. average, maximum value, and deviation is determined over glob...
Mat_SU_N mat_dag(const int site, const int mn=0) const
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
static VerboseLevel set_verbose_level(const std::string &str)
double ReTr(const Mat_SU_N &m)
void forward(Field &, const Field &, const int mu)