16 #ifdef USE_PARAMETERS_FACTORY
34 #ifdef USE_PARAMETERS_FACTORY
49 const string str_vlevel = params.
get_string(
"verbose_level");
54 valarray<int> source_position;
74 double slope,
double power)
78 valarray<int> Lsize(Ndim);
85 vout.
general(
m_vl,
"Source for 4-spinor field - exponential smeared:\n");
86 for (
int mu = 0; mu < Ndim; ++mu) {
88 mu, source_position[mu]);
95 for (
int mu = 0; mu < Ndim; ++mu) {
106 assert(source_position.size() == Ndim);
110 for (
int mu = 0; mu < Ndim; ++mu) {
119 int Lvol3 = Lsize[0] * Lsize[1] * Lsize[2];
123 for (
int z = -Lsize[2] + 1; z < Lsize[2]; ++z) {
124 for (
int y = -Lsize[1] + 1; y < Lsize[1]; ++y) {
125 for (
int x = -Lsize[0] + 1; x < Lsize[0]; ++x) {
129 int sites = x2 + Lsize[0] * (y2 + Lsize[1] * z2);
130 double r = sqrt((
double)(x * x + y * y + z * z));
132 double expf = exp(-
m_slope * ex);
140 for (
int i = 0; i < Lvol3; i++) {
149 for (
int i = 0; i < Lvol3; i++) {
153 if (!(abs(sqrt(Fnorm) - 1.0) < epsilon_criterion)) {
166 valarray<int> Lsize(Ndim);
172 valarray<int> Nsize(Ndim);
184 assert(src.
nvol() == Nvol);
185 assert(src.
nex() == 1);
189 valarray<int> site_src(Ndim);
190 valarray<int> node_src(Ndim);
191 for (
int mu = 0; mu < Ndim; ++mu) {
199 for (
int z = 0; z < Nsize[2]; ++z) {
200 int z2 = z + Nsize[2] * IPEz;
201 for (
int y = 0; y < Nsize[1]; ++y) {
202 int y2 = y + Nsize[1] * IPEy;
203 for (
int x = 0; x < Nsize[0]; ++x) {
204 int x2 = x + Nsize[0] * IPEx;
205 int sites = x2 + Lsize[0] * (y2 + Lsize[1] * z2);
207 src.set_ri(ic,
id, site, 0,
m_src_func.
cmp(0, sites, 0), 0.0);
void Register_string(const string &, const string &)
static double epsilon_criterion()
int site(const int &x, const int &y, const int &z, const int &t) const
Parameters_Source_4spinor_Exp()
void general(const char *format,...)
double cmp(const int jin, const int site, const int jex) const
Bridge::VerboseLevel m_vl
static int ipe(const int dir)
logical coordinate of current proc.
int fetch_int_vector(const string &key, std::valarray< int > &val) const
Wilson-type fermion field.
void set_parameters(const Parameters ¶ms)
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
static const std::string class_name
void crucial(const char *format,...)
static bool Register(const std::string &realm, const creator_callback &cb)
void add(const int jin, const int site, const int jex, double v)
int non_negative(const int v)
void Register_double(const string &, const double)
std::valarray< int > m_source_position
void Register_int_vector(const string &, const std::valarray< int > &)
void set(Field_F &src, int ic, int id)
int fetch_double(const string &key, double &val) const
string get_string(const string &key) const
static VerboseLevel set_verbose_level(const std::string &str)