16 #ifdef USE_PARAMETERS_FACTORY
34 #ifdef USE_PARAMETERS_FACTORY
47 const string str_vlevel = params.
get_string(
"verbose_level");
52 valarray<int> source_position;
61 vout.
crucial(
m_vl,
"Source_4spinor_Exp: fetch error, input parameter not found.\n");
72 double slope,
double power)
76 valarray<int> Lsize(Ndim);
83 vout.
general(
m_vl,
"Source for 4-spinor field - exponential smeared:\n");
84 for (
int mu = 0; mu < Ndim; ++mu) {
86 mu, source_position[mu]);
93 for (
int mu = 0; mu < Ndim; ++mu) {
100 vout.
crucial(
m_vl,
"Source_4spinor_Exp: parameter range check failed.\n");
104 assert(source_position.size() == Ndim);
108 for (
int mu = 0; mu < Ndim; ++mu) {
117 int Lvol3 = Lsize[0] * Lsize[1] * Lsize[2];
121 for (
int z = -Lsize[2] + 1; z < Lsize[2]; ++z) {
122 for (
int y = -Lsize[1] + 1; y < Lsize[1]; ++y) {
123 for (
int x = -Lsize[0] + 1; x < Lsize[0]; ++x) {
127 int sites = x2 + Lsize[0] * (y2 + Lsize[1] * z2);
128 double r = sqrt((
double)(x * x + y * y + z * z));
130 double expf = exp(-
m_slope * ex);
138 for (
int i = 0; i < Lvol3; i++) {
147 for (
int i = 0; i < Lvol3; i++) {
151 if (!(abs(sqrt(Fnorm) - 1.0) < epsilon_criterion)) {
164 valarray<int> Lsize(Ndim);
170 valarray<int> Nsize(Ndim);
182 assert(src.
nvol() == Nvol);
183 assert(src.
nex() == 1);
187 valarray<int> site_src(Ndim);
188 valarray<int> node_src(Ndim);
189 for (
int mu = 0; mu < Ndim; ++mu) {
197 for (
int z = 0; z < Nsize[2]; ++z) {
198 int z2 = z + Nsize[2] * IPEz;
199 for (
int y = 0; y < Nsize[1]; ++y) {
200 int y2 = y + Nsize[1] * IPEy;
201 for (
int x = 0; x < Nsize[0]; ++x) {
202 int x2 = x + Nsize[0] * IPEx;
203 int sites = x2 + Lsize[0] * (y2 + Lsize[1] * z2);
205 src.set_ri(ic,
id, site, 0,
m_src_func.
cmp(0, sites, 0), 0.0);