Bridge++  Ver. 1.1.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
action_F_Rational_Frame.cpp
Go to the documentation of this file.
1 
15 
16 #ifdef USE_PARAMETERS_FACTORY
17 #include "parameters_factory.h"
18 #endif
19 
20 //- parameter entries
21 namespace {
22  void append_entry(Parameters& param)
23  {
24  param.Register_string("verbose_level", "NULL");
25  }
26 
27 
28 #ifdef USE_PARAMETERS_FACTORY
29  bool init_param = ParametersFactory::Register("Action.F_Rational_Frame", append_entry);
30 #endif
31 }
32 //- end
33 
34 //- parameters class
36 //- end
37 
38 //====================================================================
40 {
41  const string str_vlevel = params.get_string("verbose_level");
42 
43  m_vl = vout.set_verbose_level(str_vlevel);
44 }
45 
46 
47 //====================================================================
49 {
50  int Nc = CommonParameters::Nc();
51  int Nvol = CommonParameters::Nvol();
52  int Ndim = CommonParameters::Ndim();
53  int NinG = 2 * Nc * Nc;
54 
55  m_force.reset(NinG, Nvol, Ndim);
56 
57  // link variable update flag
58  m_status_linkv = 0;
59 }
60 
61 
62 //====================================================================
64 {
65  int NinF = m_fopr_langev->field_nin();
66  int NvolF = m_fopr_langev->field_nvol();
67  int NexF = m_fopr_langev->field_nex();
68  int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
69 
70  m_psf.reset(NinF, NvolF, NexF);
71 
72  vout.general(m_vl, " Action_F_Rational: %s\n", m_label.c_str());
73 
74  Field xi(NinF, NvolF, NexF);
75  rand->gauss_lex_global(xi);
76 
78  m_psf = m_fopr_langev->mult(xi);
79 
80  double xi2 = xi.norm();
81  double H_psf = xi2 * xi2;
82 
83  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
84  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
85 
86  return H_psf;
87 }
88 
89 
90 //====================================================================
92 {
93  int NinF = m_fopr_H->field_nin();
94  int NvolF = m_fopr_H->field_nvol();
95  int NexF = m_fopr_H->field_nex();
96  int size_psf = NinF * NvolF * NexF * CommonParameters::NPE();
97 
98  Field v1(NinF, NvolF, NexF);
99 
100  vout.general(m_vl, " Action_F_Rational: %s\n", m_label.c_str());
101 
103  v1 = m_fopr_H->mult(m_psf);
104 
105  double H_psf = v1 * m_psf;
106 
107  vout.general(m_vl, " H_Frational = %18.8f\n", H_psf);
108  vout.general(m_vl, " H_F/dof = %18.8f\n", H_psf / size_psf);
109 
110  return H_psf;
111 }
112 
113 
114 //====================================================================
116 {
117  if (m_status_linkv == 0) {
118  int Nvol = m_U->nvol();
119  int Nex = m_U->nex();
120 
121  Field_G force(Nvol, Nex), force1(Nvol, Nex);
122 
123  vout.general(m_vl, " Action_F_Rational: %s\n", m_label.c_str());
124 
127 
128  m_force = (Field)force;
129  ++m_status_linkv;
130 
131  double Fave, Fmax, Fdev;
132  m_force.stat(Fave, Fmax, Fdev);
133  vout.general(m_vl, " Frational_frame_ave = %12.6f Frational_frame_max = %12.6f Frational_frame_dev = %12.6f\n",
134  Fave, Fmax, Fdev);
135 
136  return m_force;
137  } else {
138  vout.general(m_vl, " Frational returns previous force.\n");
139  return m_force;
140  }
141 }
142 
143 
144 //====================================================================
145 //============================================================END=====