16 #ifdef USE_PARAMETERS_FACTORY
32 #ifdef USE_PARAMETERS_FACTORY
45 const string str_vlevel = params.
get_string(
"verbose_level");
50 double beta, c_plaq, c_rect;
58 vout.
crucial(
m_vl,
"Action_G_Rectangle: fetch error, input parameter not found.\n");
69 double c_plaq,
double c_rect)
89 int NinG = 2 * Nc * Nc;
101 double H_U =
calcH();
115 int Ndim2 = Ndim * (Ndim - 1) / 2;
116 int size_U = Lvol * Ndim2;
118 Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
119 Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
120 Field_G Umu(Nvol, 1), Unu(Nvol, 1);
121 Field_G v(Nvol, 1), w(Nvol, 1), c(Nvol, 1);
128 for (
int mu = 0; mu < Ndim; ++mu) {
129 for (
int nu = mu + 1; nu < Ndim; ++nu) {
134 for (
int site = 0; site < Nvol; ++site) {
135 plaqF +=
ReTr(
m_U->
mat(site, mu) * Cup1.mat_dag(site));
144 Umu.setpart_ex(0, *
m_U, mu);
150 w.mult_Field_Gnd(0, c, 0, v, 0);
152 for (
int site = 0; site < Nvol; ++site) {
165 w.mult_Field_Gnd(0, c, 0, v, 0);
167 for (
int site = 0; site < Nvol; ++site) {
176 double plaq = plaqF / Nc;
179 double H_U =
m_c_plaq * (Ndim2 * Lvol - plaqF / Nc)
180 +
m_c_rect * (Ndim2 * Lvol * 2 - rectF / Nc);
199 assert(
m_U->
nin() == Nc * Nc * 2);
201 assert(
m_U->
nex() == Ndim);
203 double betaNc =
m_beta / Nc;
209 Field_G Cup1(Nvol, 1), Cup2(Nvol, 1);
210 Field_G Cdn1(Nvol, 1), Cdn2(Nvol, 1);
211 Field_G Umu(Nvol, 1), Unu(Nvol, 1);
212 Field_G v(Nvol, 1), w(Nvol, 1), c(Nvol, 1);
216 for (
int mu = 0; mu < Ndim; ++mu) {
218 for (
int nu = 0; nu < Ndim; ++nu) {
219 if (nu == mu)
continue;
232 Umu.setpart_ex(0, *
m_U, mu);
242 w.mult_Field_Gnd(0, c, 0, v, 0);
256 w.mult_Field_Gnd(0, c, 0, v, 0);
268 w.mult_Field_Gnd(0, c, 0, v, 0);
279 w.mult_Field_Gnn(0, Umu, 0, v, 0);
280 v.mult_Field_Gdn(0, Unu, 0, w, 0);
294 w.mult_Field_Gnn(0, Cdn1, 0, v, 0);
295 v.mult_Field_Gdn(0, Unu, 0, w, 0);
307 w.mult_Field_Gnn(0, Umu, 0, v, 0);
308 v.mult_Field_Gdn(0, Cdn2, 0, w, 0);
324 double Fave, Fmax, Fdev;
326 vout.
general(
m_vl,
" Frectangle_ave = %12.6f Frectangle_max = %12.6f Frectangle_dev = %12.6f\n",