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
director_Smear.cpp
Go to the documentation of this file.
1
14
#include "
director_Smear.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_int
(
"number_of_smearing"
, 0);
25
26
param.
Register_string
(
"verbose_level"
,
"NULL"
);
27
}
28
29
30
#ifdef USE_PARAMETERS_FACTORY
31
bool
init_param =
ParametersFactory::Register
(
"Director_Smear"
, append_entry);
32
#endif
33
}
34
//- end
35
36
//- parameters class
37
Parameters_Director_Smear::Parameters_Director_Smear
() { append_entry(*
this
); }
38
//- end
39
40
//====================================================================
41
void
Director_Smear::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
int
Nsmear;
49
50
int
err = 0;
51
err += params.
fetch_int
(
"number_of_smearing"
, Nsmear);
52
53
if
(err) {
54
vout
.
crucial
(
m_vl
,
"Director_Smear: fetch error, input parameter not found.\n"
);
55
abort();
56
}
57
58
59
set_parameters
(Nsmear);
60
}
61
62
63
//====================================================================
64
void
Director_Smear::set_parameters
(
int
Nsmear)
65
{
66
int
Nvol =
CommonParameters::Nvol
();
67
int
Ndim =
CommonParameters::Ndim
();
68
69
//- print input parameters
70
vout
.
general
(
m_vl
,
"Parameters of Director_Smear:\n"
);
71
vout
.
general
(
m_vl
,
" Nsmear = %d\n"
, Nsmear);
72
73
//- range check
74
// NB. Nsmear == 0 is allowed.
75
76
//- store values
77
m_Nsmear
= Nsmear;
78
79
//- post-process
80
m_Usmear
.resize(
m_Nsmear
);
81
if
(
m_Nsmear
> 0) {
82
for
(
int
i_smear = 0; i_smear <
m_Nsmear
; ++i_smear) {
83
m_Usmear
[i_smear].reset(Nvol, Ndim);
84
}
85
vout
.
detailed
(
m_vl
,
" size of Usmear[i_smear] was set.\n"
);
86
}
87
}
88
89
90
//====================================================================
91
void
Director_Smear::set_config
(
Field
*U)
92
{
93
m_U
= (
Field_G
*)U;
94
95
if
(
m_status_linkv
== 0)
smear
();
96
}
97
98
99
//====================================================================
100
Field
*
Director_Smear::getptr_smearedConfig
(
int
i_smear)
101
{
102
assert(
m_U
!= 0);
103
104
if
(i_smear == 0) {
105
return
m_U
;
106
}
else
{
107
return
&
m_Usmear
[i_smear - 1];
108
}
109
}
110
111
112
//====================================================================
113
void
Director_Smear::smear
()
114
{
115
if
(
m_Nsmear
> 0) {
116
int
Nvol =
m_U
->
nvol
();
117
int
Nex =
m_U
->
nex
();
118
119
Field_G
Usmear(Nvol, Nex);
120
Field_G
Uprev(Nvol, Nex);
121
122
for
(
int
i_smear = 0; i_smear <
m_Nsmear
; ++i_smear) {
123
if
(i_smear == 0) {
124
Uprev = *
m_U
;
125
}
else
{
126
Uprev =
m_Usmear
[i_smear - 1];
127
}
128
m_smear
->
smear
(Usmear, Uprev);
129
m_Usmear
[i_smear] = (
Field
)Usmear;
130
}
131
}
132
133
++
m_status_linkv
;
134
}
135
136
137
//====================================================================
138
//============================================================END=====
src
Tools
director_Smear.cpp
Generated on Tue Jul 23 2013 10:48:50 for Bridge++ by
1.8.3.1