27 #ifdef USE_PARAMETERS_FACTORY
42 std::vector<Director *> director,
50 for (
int i = 0; i < action_set.size(); ++i) {
54 for (
int i = 0; i < director.size(); ++i) {
68 std::vector<Director *> director,
76 for (
int i = 0; i < action_set.size(); ++i) {
80 for (
int i = 0; i < director.size(); ++i) {
102 for (
int i = 0; i < action_set.size(); ++i) {
123 for (
int i = 0; i < action_set.size(); ++i) {
147 const string str_vlevel = params.
get_string(
"verbose_level");
156 err += params.
fetch_double(
"trajectory_length", traj_length);
157 err += params.
fetch_int(
"Metropolis_test", Metropolis_test);
194 for (
int i = 0; i <
m_action.size(); ++i) {
231 double diff_H = H_total1 - H_total0;
232 double exp_minus_diff_H = exp(-diff_H);
241 if (rand <= exp_minus_diff_H) {
262 int NcA = Nc * Nc - 1;
264 int size_iP = NcA * Lvol * Ndim;
283 double H_actions = 0.0;
284 for (
int i = 0; i <
m_action.size(); ++i) {
288 double H_total = H_iP + H_actions;
303 int NcA = Nc * Nc - 1;
305 int size_iP = NcA * Lvol * Nex;
319 double H_actions = 0.0;
320 for (
int i = 0; i <
m_action.size(); ++i) {
324 double H_total = H_iP + H_actions;
332 double hn = iP.
norm();
333 double H_iP = 0.5 * hn * hn;
void Register_string(const string &, const string &)
double calc_Hamiltonian(Field_G &iP, Field_G &U)
void set_parameters(const Parameters ¶ms)
std::vector< Director * > m_director
directors
void general(const char *format,...)
int m_Metropolis_test
Metropolis test: Metropolis_test=0: no test, !=0: test.
void Register_int(const string &, const int)
static const std::string class_name
double set_iP(Field_G &iP)
Setting conjugate momenta and returns kinetic part of Hamiltonian.
Bridge::VerboseLevel m_vl
double plaquette(const Field_G &)
calculates plaquette value.
RandomNumbers * m_rand
random number generator
std::vector< Action * > m_action
actions
double calcH_P(Field_G &iP)
virtual void invalidate_cache()=0
Base class of Integrator class family.
double langevin(Field_G &iP, Field_G &U)
ActionSet get_actions() const
Common parameter class: provides parameters as singleton.
virtual void evolve(const double step_size, Field_G &iP, Field_G &U)=0
double m_trajectory_length
void crucial(const char *format,...)
Langevin_Momentum * m_Langevin_P
lists of actions at respective integrator levels.
static bool Register(const std::string &realm, const creator_callback &cb)
Base class of random number generators.
Integrator * m_integrator
MD integrator.
void Register_double(const string &, const double)
int fetch_double(const string &key, double &val) const
string get_string(const string &key) const
std::vector< Action * > ActionSet
int fetch_int(const string &key, int &val) const
static VerboseLevel set_verbose_level(const std::string &str)
HMC_General(const ActionList &action_list, std::vector< Director * > director, Integrator *integrator, RandomNumbers *rand)
constructor with action_list, directors, and random number generator
Langevin part of HMC for conjugate momentum to link variable.