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
source_Staggered_Wall.cpp
Go to the documentation of this file.
1
14
#include "
source_Staggered_Wall.h
"
15
16
#ifdef USE_PARAMETERS_FACTORY
17
#include "
parameters_factory.h
"
18
#endif
19
20
using
Bridge::vout
;
21
22
//- parameter entry
23
namespace
{
24
void
append_entry(
Parameters
& param)
25
{
26
param.
Register_int
(
"source_position"
, 0);
27
28
param.
Register_string
(
"verbose_level"
,
"NULL"
);
29
}
30
31
32
#ifdef USE_PARAMETERS_FACTORY
33
bool
init_param =
ParametersFactory::Register
(
"Source_Staggered_Wall"
, append_entry);
34
#endif
35
}
36
//- end
37
38
//- parameters class
39
Parameters_Source_Staggered_Wall::Parameters_Source_Staggered_Wall
() { append_entry(*
this
); }
40
//- end
41
42
//====================================================================
43
void
Source_Staggered_Wall::set_parameters
(
const
Parameters
& params)
44
{
45
const
string
str_vlevel = params.
get_string
(
"verbose_level"
);
46
47
m_vl
=
vout
.
set_verbose_level
(str_vlevel);
48
49
//- fetch and check input parameters
50
int
source_position;
51
52
int
err = 0;
53
err += params.
fetch_int
(
"source_position"
, source_position);
54
55
if
(err) {
56
vout
.
crucial
(
m_vl
,
"Source_Staggered_Wall: fetch error, input parameter not found.\n"
);
57
abort();
58
}
59
60
61
set_parameters
(source_position);
62
}
63
64
65
//====================================================================
66
void
Source_Staggered_Wall::set_parameters
(
const
int
source_position)
67
{
68
int
Lt =
CommonParameters::Lt
();
69
70
//- print input parameters
71
vout
.
general
(
m_vl
,
"Source for staggered spinor field - Wall:\n"
);
72
vout
.
general
(
m_vl
,
" source_position[t] = %d\n"
, source_position);
73
74
//- range check
75
int
err = 0;
76
// NB. Lt > abs(source_position)
77
err +=
ParameterCheck::non_negative
(Lt - abs(source_position));
78
79
if
(err) {
80
vout
.
crucial
(
m_vl
,
"Source_Staggered_Wall: parameter range check failed.\n"
);
81
abort();
82
}
83
84
//- store values
85
m_t_src
= source_position;
86
87
//- post-process
88
init
();
89
}
90
91
92
//====================================================================
93
void
Source_Staggered_Wall::init
()
94
{
95
int
Nvol =
CommonParameters::Nvol
();
96
97
int
Nx =
CommonParameters::Nx
();
98
int
Ny =
CommonParameters::Ny
();
99
int
Nz =
CommonParameters::Nz
();
100
int
Nt =
CommonParameters::Nt
();
101
102
int
ipex =
Communicator::ipe
(0);
103
int
ipey =
Communicator::ipe
(1);
104
int
ipez =
Communicator::ipe
(2);
105
int
ipet =
Communicator::ipe
(3);
106
107
src_wall_1
.
reset
(1, Nvol, 1);
108
src_wall_2
.
reset
(1, Nvol, 1);
109
src_wall_1
= 0.0;
110
src_wall_2
= 0.0;
111
112
int
tl_src =
m_t_src
% Nt;
113
int
ex = 0;
114
if
(
m_t_src
/ Nt == ipet) {
115
for
(
int
z = 0; z < Nz; ++z) {
116
int
z2 = z + ipez * Nz;
117
for
(
int
y = 0; y < Ny; ++y) {
118
int
y2 = y + ipey * Ny;
119
for
(
int
x = 0; x < Nx; ++x) {
120
int
x2 = x + ipex * Nx;
121
122
int
site =
m_index
.
site
(x, y, z, tl_src);
123
124
if
(((x2 + y2 + z2) % 2) == 0) {
125
src_wall_1
.
set
(0, site, ex, 1.0);
126
src_wall_2
.
set
(0, site, ex, 1.0);
127
}
else
{
128
src_wall_1
.
set
(0, site, ex, 1.0);
129
src_wall_2
.
set
(0, site, ex, -1.0);
130
}
131
}
132
}
133
}
134
}
135
}
136
137
138
//====================================================================
139
void
Source_Staggered_Wall::set
(
Field_F_1spinor
& src,
140
const
int
ic,
const
int
i_src)
141
{
142
int
Nvol =
CommonParameters::Nvol
();
143
144
src = 0.0;
145
146
int
ex = 0;
147
if
(i_src == 0) {
148
for
(
int
site = 0; site < Nvol; ++site) {
149
src.
set_r
(ic, site, ex,
src_wall_1
.
cmp
(0, site, ex));
150
}
151
}
else
if
(i_src == 1) {
152
for
(
int
site = 0; site < Nvol; ++site) {
153
src.
set_r
(ic, site, ex,
src_wall_2
.
cmp
(0, site, ex));
154
}
155
}
else
{
156
vout
.
general
(
m_vl
,
"Source_Staggered_Wall: illegal source index.\n"
);
157
abort();
158
}
159
}
160
161
162
//====================================================================
163
//============================================================END=====
src
Measurements
Fermion
source_Staggered_Wall.cpp
Generated on Tue Jul 23 2013 10:48:49 for Bridge++ by
1.8.3.1