16 #ifdef USE_PARAMETERS_FACTORY
39 #ifdef USE_PARAMETERS_FACTORY
52 const string str_vlevel = params.
get_string(
"verbose_level");
57 string str_integrator_type;
60 valarray<int> Naction;
63 double lambda_Omelyan;
66 err += params.
fetch_string(
"integrator", str_integrator_type);
68 err += params.
fetch_int(
"number_of_levels", Nlevel);
71 err += params.
fetch_int(
"order_of_exp_iP", Nprec);
72 err += params.
fetch_double(
"lambda_Omelyan", lambda_Omelyan);
75 vout.
crucial(
m_vl,
"Builder_Integrator: fetch error, input parameter not found.\n");
80 set_parameters(str_integrator_type, Estep, Nlevel, Naction, Nstep, Nprec, lambda_Omelyan);
86 double Estep,
int Nlevel,
87 const valarray<int>& Naction,
88 const valarray<int>& Nstep,
90 const double lambda_Omelyan)
97 for (
int lv = 0; lv < Nlevel; ++lv) {
99 lv, Naction[lv], Nstep[lv]);
108 for (
int lv = 0; lv < Nlevel; ++lv) {
116 vout.
crucial(
m_vl,
"Builder_Integrator: parameter range check failed.\n");
129 for (
int lv = 0; lv <
m_Nlevel; ++lv) {
150 vout.
crucial(
"Builder_Integrator::build : unsupported smear type \"%s\".\n",
166 for (
int lv = 1; lv <
m_Nlevel; ++lv) {
167 estep_lowest *= 1.0 / ((double)
m_Nstep[lv]);
174 double estep = estep_lowest;
177 for (
int lv = m_Nlevel - 1; lv >= 0; --lv) {
178 valarray<Action *> actions(
m_Naction[lv]);
181 for (
int lv2 = 0; lv2 <
m_Naction[lv]; ++lv2) {
182 actions[lv2] =
m_action[jaction + lv2];
190 estep *= ((double)
m_Nstep[lv]);
204 for (
int lv = 1; lv <
m_Nlevel; ++lv) {
205 estep_lowest *= 0.5 / ((double)
m_Nstep[lv]);
212 double estep = estep_lowest;
215 for (
int lv = m_Nlevel - 1; lv >= 0; --lv) {
216 valarray<Action *> actions(
m_Naction[lv]);
219 for (
int lv2 = 0; lv2 <
m_Naction[lv]; ++lv2) {
220 actions[lv2] =
m_action[jaction + lv2];
228 estep *= 2.0 * ((double)
m_Nstep[lv]);
238 for (
int lv = 0; lv <
m_Nlevel + 1; ++lv) {