16 #ifdef USE_PARAMETERS_FACTORY
39 #ifdef USE_PARAMETERS_FACTORY
54 const string str_vlevel = params.
get_string(
"verbose_level");
59 string str_integrator_type;
62 valarray<int> Naction;
65 double lambda_Omelyan;
68 err += params.
fetch_string(
"integrator", str_integrator_type);
70 err += params.
fetch_int(
"number_of_levels", Nlevel);
73 err += params.
fetch_int(
"order_of_exp_iP", Nprec);
74 err += params.
fetch_double(
"lambda_Omelyan", lambda_Omelyan);
82 set_parameters(str_integrator_type, Estep, Nlevel, Naction, Nstep, Nprec, lambda_Omelyan);
88 double Estep,
int Nlevel,
89 const valarray<int>& Naction,
90 const valarray<int>& Nstep,
92 const double lambda_Omelyan)
99 for (
int lv = 0; lv < Nlevel; ++lv) {
101 lv, Naction[lv], Nstep[lv]);
110 for (
int lv = 0; lv < Nlevel; ++lv) {
131 for (
int lv = 0; lv <
m_Nlevel; ++lv) {
167 for (
int lv = 1; lv <
m_Nlevel; ++lv) {
168 estep_lowest *= 1.0 / ((double)
m_Nstep[lv]);
175 double estep = estep_lowest;
178 for (
int lv = m_Nlevel - 1; lv >= 0; --lv) {
179 valarray<Action *> actions(
m_Naction[lv]);
182 for (
int lv2 = 0; lv2 <
m_Naction[lv]; ++lv2) {
183 actions[lv2] =
m_action[jaction + lv2];
191 estep *= ((double)
m_Nstep[lv]);
205 for (
int lv = 1; lv <
m_Nlevel; ++lv) {
206 estep_lowest *= 0.5 / ((double)
m_Nstep[lv]);
213 double estep = estep_lowest;
216 for (
int lv = m_Nlevel - 1; lv >= 0; --lv) {
217 valarray<Action *> actions(
m_Naction[lv]);
220 for (
int lv2 = 0; lv2 <
m_Naction[lv]; ++lv2) {
221 actions[lv2] =
m_action[jaction + lv2];
229 estep *= 2.0 * ((double)
m_Nstep[lv]);
239 for (
int lv = 0; lv <
m_Nlevel + 1; ++lv) {
Integrator * build_leapfrog()
void Register_string(const string &, const string &)
void set_parameters(const Parameters ¶ms)
void general(const char *format,...)
void Register_int(const string &, const int)
double m_Estep
step size of each molecular dynamical evolution
std::valarray< Action * > m_action
Bridge::VerboseLevel m_vl
void set_parameters(const Parameters ¶ms)
void set_parameters(const Parameters ¶ms)
int m_Nprec
precision parameter of exponentiation
int fetch_int_vector(const string &key, std::valarray< int > &val) const
std::valarray< int > m_Nstep
Number of steps at each level.
Base class of Integrator class family.
std::valarray< Integrator * > m_integs
Integrator to be constructed.
Parameters_Builder_Integrator()
int m_Nlevel
Number of levels.
std::valarray< int > m_Naction
Number of actions at each level.
void set_parameters(const Parameters ¶ms)
std::string m_str_integrator_type
static const std::string class_name
Integrator * build_omelyan()
int fetch_string(const string &key, string &val) const
int non_NULL(const std::string v)
void crucial(const char *format,...)
static bool Register(const std::string &realm, const creator_callback &cb)
int non_zero(const double v)
void Register_double(const string &, const double)
void Register_int_vector(const string &, const std::valarray< int > &)
int fetch_double(const string &key, double &val) const
string get_string(const string &key) const
int fetch_int(const string &key, int &val) const
std::valarray< Director * > m_director
static VerboseLevel set_verbose_level(const std::string &str)