Bridge++
Ver. 1.1.x
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
action_G_Plaq.cpp
Go to the documentation of this file.
1
14
#include "
action_G_Plaq.h
"
15
16
#ifdef USE_PARAMETERS_FACTORY
17
#include "
parameters_factory.h
"
18
#endif
19
20
//- parameter entries
21
namespace
{
22
void
append_entry(
Parameters
& param)
23
{
24
param.
Register_double
(
"beta"
, 0.0);
25
26
param.
Register_string
(
"verbose_level"
,
"NULL"
);
27
}
28
29
30
#ifdef USE_PARAMETERS_FACTORY
31
bool
init_param =
ParametersFactory::Register
(
"Action.G_Plaq"
, append_entry);
32
#endif
33
}
34
//- end
35
36
//- parameters class
37
Parameters_Action_G_Plaq::Parameters_Action_G_Plaq
() { append_entry(*
this
); }
38
//- end
39
40
//====================================================================
41
void
Action_G_Plaq::set_parameters
(
const
Parameters
& params)
42
{
43
const
string
str_vlevel = params.
get_string
(
"verbose_level"
);
44
45
m_vl
=
vout
.
set_verbose_level
(str_vlevel);
46
47
//- fetch and check input parameters
48
double
beta;
49
50
int
err = 0;
51
err += params.
fetch_double
(
"beta"
, beta);
52
53
if
(err) {
54
vout
.
crucial
(
m_vl
,
"Action_G_Plaq: fetch error, input parameter not found.\n"
);
55
abort();
56
}
57
58
59
set_parameters
(beta);
60
}
61
62
63
//====================================================================
64
void
Action_G_Plaq::set_parameters
(
double
beta)
65
{
66
//- print input parameters
67
vout
.
general
(
m_vl
,
"Action_G_Plaq:\n"
);
68
vout
.
general
(
m_vl
,
" beta = %8.4f\n"
, beta);
69
70
//- range check
71
// NB. beta == 0 is allowed.
72
73
//- store values
74
m_beta
= beta;
75
76
//- post-process
77
int
Nc =
CommonParameters::Nc
();
78
int
Nvol =
CommonParameters::Nvol
();
79
int
Ndim =
CommonParameters::Ndim
();
80
int
NinG = 2 * Nc * Nc;
81
m_force
.
reset
(NinG, Nvol, Ndim);
82
83
m_status_linkv
= 0;
84
}
85
86
87
//====================================================================
88
double
Action_G_Plaq::langevin
(
RandomNumbers
*rand)
89
{
90
double
H_U =
calcH
();
// calculate action H_U=beta*(1-Plaq)*Lvol*6 (SA)
91
92
m_status_linkv
= 0;
93
94
return
H_U;
95
}
96
97
98
//====================================================================
99
double
Action_G_Plaq::calcH
()
100
{
101
int
Lvol =
CommonParameters::Lvol
();
102
int
Ndim =
CommonParameters::Ndim
();
103
104
int
Ndim2 = Ndim * (Ndim - 1) / 2;
105
int
size_U = Lvol * Ndim2;
106
107
double
plaq =
m_staple
.
plaquette
(*
m_U
);
// calculate plaquette (SA)
108
double
H_U =
m_beta
* (1.0 - plaq) * Lvol * Ndim2;
// action (SA)
109
110
vout
.
general
(
m_vl
,
"H_Gplaq = %18.8f\n"
, H_U);
// total action (SA)
111
vout
.
general
(
m_vl
,
"H_G/dof = %18.8f\n"
, H_U / size_U);
// action per dof (SA)
112
113
return
H_U;
114
}
115
116
117
//====================================================================
118
const
Field
Action_G_Plaq::force
()
119
{
120
// Gauge conf m_U (SA)
121
if
(
m_status_linkv
== 0) {
122
int
Nin =
m_U
->
nin
();
123
int
Nvol =
m_U
->
nvol
();
124
int
Nex =
m_U
->
nex
();
125
int
Nc =
CommonParameters::Nc
();
126
127
double
betaNc =
m_beta
/ Nc;
128
Mat_SU_N
ut(Nc);
// Nc x Nc complex matrix (SA)
129
130
Field_G
force
(Nvol, Nex);
131
Field_G
st(Nvol, 1);
132
133
vout
.
general
(
m_vl
,
" Action_G_Plaq: %s\n"
,
m_label
.c_str());
134
135
for
(
int
mu = 0; mu < Nex; ++mu) {
136
m_staple
.
staple
(st, *
m_U
, mu);
137
// Calculate staple for m_U(all site,\mu) (SA)
138
139
/* -->--
140
| |
141
| |
142
U_mu
143
*/
144
for
(
int
site = 0; site < Nvol; ++site) {
145
ut =
m_U
->
mat
(site, mu) * st.
mat_dag
(site);
// U_\mu * (staple)^\dagger (SA)
146
ut.
at
();
// anti-hermitian and traceless (SA)
147
ut *= -betaNc;
148
// force = -beta*{U_\mu *staple^\dagger}_{traceless & anti-hermitian) (SA)
149
force.
set_mat
(site, mu, ut);
150
}
151
}
152
153
m_force
= (
Field
)force;
// set all force at m_force (SA)
154
++
m_status_linkv
;
// frag showing that force is calculated
155
156
double
Fave, Fmax, Fdev;
157
m_force
.
stat
(Fave, Fmax, Fdev);
158
159
//- calculate average, max, deviation of force over (site, mu)
160
vout
.
general
(
m_vl
,
" Fplaq_ave = %12.6f Fplaq_max = %12.6f Fplaq_dev = %12.6f\n"
,
161
Fave, Fmax, Fdev);
162
163
return
m_force
;
164
}
else
{
165
vout
.
general
(
m_vl
,
" Action_G_Plaq returns previous force.\n"
);
166
return
m_force
;
167
}
168
}
169
170
171
//====================================================================
172
//============================================================END=====
src
Action
action_G_Plaq.cpp
Generated on Tue Jul 23 2013 10:48:48 for Bridge++ by
1.8.3.1