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
smear_APE_spatial.cpp
Go to the documentation of this file.
1
14
#include "
smear_APE_spatial.h
"
15
16
#ifdef USE_PARAMETERS_FACTORY
17
#include "
parameters_factory.h
"
18
#endif
19
20
#ifdef USE_FACTORY
21
namespace
{
22
Smear
*create_object(
Projection
*proj)
23
{
24
return
new
Smear_APE_spatial
(proj);
25
}
26
27
28
bool
init = Smear::Factory::Register(
"APE_spatial"
, create_object);
29
}
30
#endif
31
32
//- parameter entries
33
namespace
{
34
void
append_entry(
Parameters
& param)
35
{
36
param.
Register_double
(
"rho"
, 0.0);
37
38
param.
Register_string
(
"verbose_level"
,
"NULL"
);
39
}
40
41
42
#ifdef USE_PARAMETERS_FACTORY
43
bool
init_param =
ParametersFactory::Register
(
"Smear.APE_Spatial"
, append_entry);
44
#endif
45
}
46
//- end
47
48
//- parameters class
49
Parameters_Smear_APE_spatial::Parameters_Smear_APE_spatial
() { append_entry(*
this
); }
50
//- end
51
52
//====================================================================
53
void
Smear_APE_spatial::set_parameters
(
const
Parameters
& params)
54
{
55
const
string
str_vlevel = params.
get_string
(
"verbose_level"
);
56
57
m_vl
=
vout
.
set_verbose_level
(str_vlevel);
58
59
//- fetch and check input parameters
60
double
rho;
61
62
int
err = 0;
63
err += params.
fetch_double
(
"rho"
, rho);
64
65
if
(err) {
66
vout
.
crucial
(
m_vl
,
"Smear_APE_Spatial: fetch error, input parameter not found.\n"
);
67
abort();
68
}
69
70
71
set_parameters
(rho);
72
}
73
74
75
//====================================================================
76
void
Smear_APE_spatial::set_parameters
(
const
double
rho)
77
{
78
//- print input parameters
79
vout
.
general
(
m_vl
,
"APE spatial link smearing parameters:\n"
);
80
vout
.
general
(
m_vl
,
" rho = %10.6F\n"
, rho);
81
82
//- range check
83
// NB. rho == 0 is allowed.
84
85
//- store values
86
m_rho
= rho;
87
}
88
89
90
//====================================================================
91
void
Smear_APE_spatial::smear
(
Field_G
& Usmear,
const
Field_G
& U)
92
{
93
int
Nvol =
CommonParameters::Nvol
();
94
95
assert(U.
nvol
() == Nvol);
96
assert(U.
nex
() ==
m_Ndim
);
97
98
assert(Usmear.
nvol
() == Nvol);
99
assert(Usmear.
nex
() ==
m_Ndim
);
100
101
int
Ndim_spc =
m_Ndim
- 1;
102
103
Field_G
c_tmp(Nvol, 1), u_tmp(Nvol, 1), u_tmp2(Nvol, 1);
104
105
Staples
staple
;
106
107
double
plaq = staple.
plaq_s
(U);
108
vout
.
general
(
m_vl
,
" plaq_s(org ) = %12.8f\n"
, plaq);
109
plaq = staple.
plaq_t
(U);
110
vout
.
general
(
m_vl
,
" plaq_t(org ) = %12.8f\n"
, plaq);
111
112
Usmear = 0.0;
113
114
for
(
int
mu = 0; mu < Ndim_spc; ++mu) {
115
c_tmp = 0.0;
116
u_tmp.
setpart_ex
(0, U, mu);
117
118
for
(
int
nu = 0; nu < Ndim_spc; ++nu) {
119
if
(nu != mu) {
120
u_tmp2 = staple.
upper
(U, mu, nu);
121
c_tmp.
addpart_ex
(0, u_tmp2, 0,
m_rho
);
122
123
u_tmp2 = staple.
lower
(U, mu, nu);
124
c_tmp.
addpart_ex
(0, u_tmp2, 0,
m_rho
);
125
}
126
}
127
128
m_proj
->
project
(u_tmp2,
m_rho
, c_tmp, u_tmp);
129
Usmear.
setpart_ex
(mu, u_tmp2, 0);
130
}
131
132
int
mu =
m_Ndim
- 1;
// temporal link: unsmeared.
133
Usmear.
setpart_ex
(mu, U, mu);
134
135
plaq = staple.
plaq_s
(Usmear);
136
vout
.
general
(
m_vl
,
" plaq_s(smear) = %12.8f\n"
, plaq);
137
plaq = staple.
plaq_t
(Usmear);
138
vout
.
general
(
m_vl
,
" plaq_t(smear) = %12.8f\n"
, plaq);
139
}
140
141
142
//====================================================================
143
//============================================================END=====
src
Smear
smear_APE_spatial.cpp
Generated on Tue Jul 23 2013 10:48:49 for Bridge++ by
1.8.3.1