25 bool init = Action::Factory::Register(
"Action_G_Rectangle", create_object);
36 const string str_vlevel = params.
get_string(
"verbose_level");
41 double beta, c_plaq, c_rect;
63 double c_plaq,
double c_rect)
102 int Ndim2 = Ndim * (Ndim - 1) / 2;
103 int size_U = Lvol * Ndim2;
105 Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
106 Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
107 Field_G Umu(Nvol, 1), Unu(Nvol, 1);
108 Field_G v(Nvol, 1), w(Nvol, 1), c(Nvol, 1);
116 for (
int mu = 0; mu < Ndim; ++mu) {
117 for (
int nu = mu + 1; nu < Ndim; ++nu) {
121 for (
int site = 0; site < Nvol; ++site) {
122 plaqF +=
ReTr(
m_U->
mat(site, mu) * Cup1.mat_dag(site));
143 for (
int site = 0; site < Nvol; ++site) {
158 for (
int site = 0; site < Nvol; ++site) {
168 double plaq = plaqF / Nc;
171 double H_U =
m_c_plaq * (Ndim2 * Lvol - plaqF / Nc)
172 +
m_c_rect * (Ndim2 * Lvol * 2 - rectF / Nc);
double langevin(RandomNumbers *)
Langevis step.
static double epsilon_criterion()
void set(const int jin, const int site, const int jex, double v)
void general(const char *format,...)
HMC action class for rectangular gauge action.
Container of Field-type object.
int fetch_double(const string &key, double &value) const
void copy(Field &y, const Field &x)
copy(y, x): y = x
virtual void force_core(Field &)=0
Base class of HMC action class family.
double calcH()
calculate Hamiltonian of this action term.
static const std::string class_name
void backward(Field &, const Field &, const int mu)
void upper(Field_G &, const Field_G &, const int mu, const int nu)
constructs upper staple in mu-nu plane.
void set_parameters(const Parameters ¶ms)
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 crucial(const char *format,...)
Bridge::VerboseLevel m_vl
Base class of random number generators.
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...
virtual void set_parameters(const Parameters &)=0
string get_string(const string &key) const
Mat_SU_N mat(const int site, const int mn=0) const
void force(Field &)
returns force for molcular dynamical update of conjugate momenta.
static VerboseLevel set_verbose_level(const std::string &str)
double ReTr(const Mat_SU_N &m)
void mult_Field_Gnd(Field_G &W, const int ex, const Field_G &U1, const int ex1, const Field_G &U2, const int ex2)