25 bool init = Action::Factory::Register(
"Action_G_Plaq_SF", create_object);
47 #ifdef USE_PARAMETERS_FACTORY
62 const string str_vlevel = params.
get_string(
"verbose_level");
67 double beta, ct0, ct1, ct2;
68 std::vector<double> phi, phipr;
84 double gg = 6.0 / beta;
85 double ct = ct0 + ct1 * gg + ct2 * gg * gg;
131 int NinG = 2 * Nc * Nc;
138 double H_U =
calcH();
166 double H_U = -1.0 / Nc *
m_beta * plaq;
193 assert(force.
nin() == Nin);
194 assert(force.
nvol() == Nvol);
195 assert(force.
nex() == Nex);
199 double betaNc =
m_beta / Nc;
202 Field_G st(Nvol, 1), force1(Nvol, 1);
206 for (
int mu = 0; mu < Nex; ++mu) {
208 for (
int site = 0; site < Nvol; ++site) {
209 ut =
m_U->
mat(site, mu) * st.mat_dag(site);
213 axpy(force, mu, -betaNc, force1, 0);
216 double Fave, Fmax, Fdev;
217 force.
stat(Fave, Fmax, Fdev);
246 for (
int t = 0; t < Nt; t++) {
247 for (
int x = 0; x < Nx; x++) {
248 for (
int y = 0; y < Ny; y++) {
249 for (
int z = 0; z < Nz; z++) {
250 ix = idx.
site(x, y, z, t);
252 for (
int mu = 0; mu < 4; mu++) {
253 Tmp = U->
mat(ix, mu);
254 for (
int c = 0; c < Nc * Nc; ++c) {
256 x, y, z, t, mu, c, Tmp.
r(c), Tmp.
i(c));
void Register_string(const string &, const string &)
void set(const int jin, const int site, const int jex, double v)
void set_parameters(const Parameters ¶ms)
int site(const int &x, const int &y, const int &z, const int &t) const
void general(const char *format,...)
void set_parameters(const Parameters ¶ms)
Container of Field-type object.
Mat_SU_N & at()
antihermitian traceless
Base class of HMC action class family.
void staple_ct(Field_G &, const Field_G &, const int, double ct)
HMC action class for plaquette gauge action with SF BC.
double m_ct
SF boundary improvement coefficient for the plaquatte action.
Parameters_Action_G_Plaq_SF()
double * m_phipr
SF boundary condition at t=Nt.
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y
void print_force(const Field_G *)
Print out the gauge force for the boundary spatial links (for debugging).
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.
void Register_double_vector(const string &, const std::vector< double > &)
static const std::string class_name
void stat(double &Fave, double &Fmax, double &Fdev) const
determines the statistics of the field. average, maximum value, and deviation is determined over glob...
int fetch_double_vector(const string &key, std::vector< double > &val) const
void Register_double(const string &, const double)
double plaquette_ct(const Field_G &, double ct)
double langevin(RandomNumbers *)
Langevis step.
int fetch_double(const string &key, double &val) const
string get_string(const string &key) const
void set_mat(const int site, const int mn, const Mat_SU_N &U)
Mat_SU_N mat(const int site, const int mn=0) const
static VerboseLevel set_verbose_level(const std::string &str)
double * m_phi
SF boundary condition at t=0.