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